MumbleCommunicator.cpp 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  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->samplesBuffer.pushSamples(pcm_data, pcm_data_size);
  13. }
  14. };
  15. }
  16. mumble::MumbleCommunicator::MumbleCommunicator(
  17. boost::asio::io_service &ioService,
  18. ISamplesBuffer &samplesBuffer,
  19. std::string user,
  20. std::string password,
  21. std::string host,
  22. int port) : ioService(ioService),
  23. samplesBuffer(samplesBuffer),
  24. logger(log4cpp::Category::getInstance("MumbleCommunicator")) {
  25. quit = false;
  26. callback.reset(new MumlibCallback());
  27. mum.reset(new mumlib::Mumlib(*callback, ioService));
  28. callback->communicator = this;
  29. callback->mum = mum;
  30. mum->connect(host, port, user, password);
  31. }
  32. void mumble::MumbleCommunicator::sendAudioFrame(int16_t *samples, int length) {
  33. mum->sendAudioData(samples, length);
  34. }
  35. mumble::MumbleCommunicator::~MumbleCommunicator() {
  36. mum->disconnect();
  37. }