#ifndef MUMSI_PJSUAMEDIAPORT_HPP #define MUMSI_PJSUAMEDIAPORT_HPP //todo wywalić i wrzucić do nagłówka z definicjami #include "AbstractCommunicator.hpp" #include #include #include #include #include namespace pjsua { constexpr int SAMPLING_RATE = 48000; inline pj_str_t toPjString(std::string str) { return pj_str(const_cast(str.c_str())); } class Exception : public std::runtime_error { public: Exception(const char *title, pj_status_t status) : std::runtime_error(title) { //todo status code } }; pj_status_t MediaPort_getFrame(pjmedia_port *port, pjmedia_frame *frame); pj_status_t MediaPort_putFrame(pjmedia_port *port, pjmedia_frame *frame); class PjsuaMediaPort { public: PjsuaMediaPort( SoundSampleQueue &inputQueue, SoundSampleQueue &outputQueue); ~PjsuaMediaPort(); pjmedia_port *create_pjmedia_port(); private: log4cpp::Category &logger; SoundSampleQueue &inputQueue; SoundSampleQueue &outputQueue; pjmedia_port *_pjmedia_port; SndfileHandle fileHandle; /** * For PJSUA implementation reasons, these callbacks have to be functions, not methods. * Since 'friend' usage. */ friend pj_status_t MediaPort_getFrame(pjmedia_port *port, pjmedia_frame *frame); friend pj_status_t MediaPort_putFrame(pjmedia_port *port, pjmedia_frame *frame); }; } #endif //MUMSI_PJSUAMEDIAPORT_HPP