From a269462b5554501f0736727ef1b908114566f63d Mon Sep 17 00:00:00 2001 From: f4exb Date: Mon, 18 Feb 2019 07:57:03 +0100 Subject: [PATCH] Copy audio to UDP/RTP: Opus implementation (1) --- sdrbase/audio/audionetsink.cpp | 9 +++++++++ sdrbase/audio/audionetsink.h | 3 ++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/sdrbase/audio/audionetsink.cpp b/sdrbase/audio/audionetsink.cpp index 8410faa07..0d7e3a3b7 100644 --- a/sdrbase/audio/audionetsink.cpp +++ b/sdrbase/audio/audionetsink.cpp @@ -206,6 +206,10 @@ void AudioNetSink::write(qint16 isample) m_udpSocket->writeDatagram((const char*) m_data, (qint64 ) m_udpBlockSize, m_address, m_port); m_bufferIndex = 0; } + } + else if (m_codec == CodecOpus) + { + } else { @@ -242,6 +246,11 @@ void AudioNetSink::write(qint16 isample) if (m_bufferIndex == 2*m_udpBlockSize) { m_g722.encode((uint8_t *) m_data, (const int16_t*) &m_data[m_udpBlockSize], 2*m_udpBlockSize); } + } + break; + case CodecOpus: + { + } break; case CodecL16: diff --git a/sdrbase/audio/audionetsink.h b/sdrbase/audio/audionetsink.h index 97b283b4d..0d173352d 100644 --- a/sdrbase/audio/audionetsink.h +++ b/sdrbase/audio/audionetsink.h @@ -71,7 +71,7 @@ public: static const int m_udpBlockSize; static const int m_dataBlockSize = 65536; // room for G722 conversion (64000 = 12800*5 largest to date) static const int m_g722BlockSize = 12800; // number of resulting G722 bytes (80*20ms frames) - static const int m_opusBlockSize = 960*4; // provision for 20ms of 2 int16 channels at 48 kS/s + static const int m_opusBlockSize = 960*2; // provision for 20ms of 2 int16 channels at 48 kS/s protected: void setDecimationFilters(); @@ -87,6 +87,7 @@ protected: uint32_t m_decimation; uint32_t m_decimationCount; char m_data[m_dataBlockSize]; + uint16_t m_opusIn[m_opusBlockSize]; unsigned int m_bufferIndex; QHostAddress m_address; unsigned int m_port;