MumbleCommunicator.cpp 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  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. }
  37. void mumble::MumbleCommunicator::sendTextMessage(std::string message) {
  38. mum->sendTextMessage(message);
  39. }