MumbleCommunicator.cpp 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. #include <cstring>
  2. #include <functional>
  3. #include "MumbleCommunicator.hpp"
  4. namespace mumble {
  5. class MumlibCallback : public mumlib::BasicCallback {
  6. public:
  7. std::shared_ptr<mumlib::Mumlib> mum;
  8. MumbleCommunicator *communicator;
  9. virtual void audio(
  10. int16_t *pcm_data,
  11. uint32_t pcm_data_size) {
  12. communicator->onIncomingPcmSamples(pcm_data, pcm_data_size);
  13. }
  14. };
  15. }
  16. mumble::MumbleCommunicator::MumbleCommunicator(boost::asio::io_service &ioService)
  17. : ioService(ioService),
  18. logger(log4cpp::Category::getInstance("MumbleCommunicator")) {
  19. }
  20. void mumble::MumbleCommunicator::connect(
  21. std::string user,
  22. std::string password,
  23. std::string host,
  24. int port) {
  25. callback.reset(new MumlibCallback());
  26. mum.reset(new mumlib::Mumlib(*callback, ioService));
  27. callback->communicator = this;
  28. callback->mum = mum;
  29. mum->connect(host, port, user, password);
  30. }
  31. void mumble::MumbleCommunicator::sendPcmSamples(int16_t *samples, unsigned int length) {
  32. mum->sendAudioData(samples, length);
  33. }
  34. mumble::MumbleCommunicator::~MumbleCommunicator() {
  35. mum->disconnect();
  36. }