MumbleCommunicator.cpp 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. #include "MumbleCommunicator.hpp"
  2. #include <cstring>
  3. #include <functional>
  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. int target,
  11. int sessionId,
  12. int sequenceNumber,
  13. int16_t *pcm_data,
  14. uint32_t pcm_data_size) override {
  15. communicator->onIncomingPcmSamples(sessionId, sequenceNumber, pcm_data, pcm_data_size);
  16. }
  17. };
  18. }
  19. mumble::MumbleCommunicator::MumbleCommunicator(boost::asio::io_service &ioService)
  20. : ioService(ioService),
  21. logger(log4cpp::Category::getInstance("MumbleCommunicator")) {
  22. }
  23. void mumble::MumbleCommunicator::connect(
  24. std::string user,
  25. std::string password,
  26. std::string host,
  27. int port) {
  28. callback.reset(new MumlibCallback());
  29. mum.reset(new mumlib::Mumlib(*callback, ioService));
  30. callback->communicator = this;
  31. callback->mum = mum;
  32. mum->connect(host, port, user, password);
  33. }
  34. void mumble::MumbleCommunicator::sendPcmSamples(int16_t *samples, unsigned int length) {
  35. mum->sendAudioData(samples, length);
  36. }
  37. mumble::MumbleCommunicator::~MumbleCommunicator() {
  38. mum->disconnect();
  39. }
  40. void mumble::MumbleCommunicator::sendTextMessage(std::string message) {
  41. mum->sendTextMessage(message);
  42. }