mirror of
https://github.com/f4exb/sdrangel.git
synced 2025-09-02 13:17:48 -04:00
Multiple audio support: RTP sink code cleanup
This commit is contained in:
parent
a0282dd3d9
commit
b7ed963ff7
@ -89,11 +89,6 @@ void AudioNetSink::deleteDestination(const QString& address, uint16_t port)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void AudioNetSink::setStereo(bool stereo)
|
|
||||||
{
|
|
||||||
m_rtpBufferAudio->setPayloadType(stereo ? RTPSink::PayloadL16Stereo : RTPSink::PayloadL16Mono);
|
|
||||||
}
|
|
||||||
|
|
||||||
void AudioNetSink::setParameters(bool stereo, int sampleRate)
|
void AudioNetSink::setParameters(bool stereo, int sampleRate)
|
||||||
{
|
{
|
||||||
m_rtpBufferAudio->setPayloadInformation(stereo ? RTPSink::PayloadL16Stereo : RTPSink::PayloadL16Mono, sampleRate);
|
m_rtpBufferAudio->setPayloadInformation(stereo ? RTPSink::PayloadL16Stereo : RTPSink::PayloadL16Mono, sampleRate);
|
||||||
|
@ -43,7 +43,6 @@ public:
|
|||||||
void setDestination(const QString& address, uint16_t port);
|
void setDestination(const QString& address, uint16_t port);
|
||||||
void addDestination(const QString& address, uint16_t port);
|
void addDestination(const QString& address, uint16_t port);
|
||||||
void deleteDestination(const QString& address, uint16_t port);
|
void deleteDestination(const QString& address, uint16_t port);
|
||||||
void setStereo(bool stereo);
|
|
||||||
void setParameters(bool stereo, int sampleRate);
|
void setParameters(bool stereo, int sampleRate);
|
||||||
|
|
||||||
void write(qint16 sample);
|
void write(qint16 sample);
|
||||||
|
@ -139,76 +139,6 @@ void RTPSink::setPayloadInformation(PayloadType payloadType, int sampleRate)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void RTPSink::setPayloadType(PayloadType payloadType)
|
|
||||||
{
|
|
||||||
uint32_t timestampinc;
|
|
||||||
QMutexLocker locker(&m_mutex);
|
|
||||||
|
|
||||||
qDebug("RTPSink::setPayloadType: %d", payloadType);
|
|
||||||
|
|
||||||
switch (payloadType)
|
|
||||||
{
|
|
||||||
case PayloadL16Stereo:
|
|
||||||
m_sampleRate = 48000;
|
|
||||||
m_sampleBytes = sizeof(AudioSample);
|
|
||||||
m_rtpSession.SetDefaultPayloadType(96);
|
|
||||||
timestampinc = m_sampleRate / 100;
|
|
||||||
break;
|
|
||||||
case PayloadL16Mono:
|
|
||||||
default:
|
|
||||||
m_sampleRate = 48000;
|
|
||||||
m_sampleBytes = sizeof(int16_t);
|
|
||||||
m_rtpSession.SetDefaultPayloadType(96);
|
|
||||||
timestampinc = m_sampleRate / 50;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
m_packetSamples = m_sampleRate/50; // 20ms packet samples
|
|
||||||
m_bufferSize = m_packetSamples * m_sampleBytes;
|
|
||||||
|
|
||||||
if (m_byteBuffer) {
|
|
||||||
delete[] m_byteBuffer;
|
|
||||||
}
|
|
||||||
|
|
||||||
m_byteBuffer = new uint8_t[m_bufferSize];
|
|
||||||
m_sampleBufferIndex = 0;
|
|
||||||
m_payloadType = payloadType;
|
|
||||||
|
|
||||||
int status = m_rtpSession.SetTimestampUnit(1.0 / (double) m_sampleRate);
|
|
||||||
|
|
||||||
if (status < 0) {
|
|
||||||
qCritical("RTPSink::setPayloadType: cannot set timestamp unit: %s", qrtplib::RTPGetErrorString(status).c_str());
|
|
||||||
} else {
|
|
||||||
qDebug("RTPSink::setPayloadType: timestamp unit set to %f: %s",
|
|
||||||
1.0 / (double) m_sampleRate,
|
|
||||||
qrtplib::RTPGetErrorString(status).c_str());
|
|
||||||
}
|
|
||||||
|
|
||||||
status = m_rtpSession.SetDefaultMark(false);
|
|
||||||
|
|
||||||
if (status < 0) {
|
|
||||||
qCritical("RTPSink::setPayloadType: cannot set default mark: %s", qrtplib::RTPGetErrorString(status).c_str());
|
|
||||||
} else {
|
|
||||||
qDebug("RTPSink::setPayloadType: set default mark to false: %s", qrtplib::RTPGetErrorString(status).c_str());
|
|
||||||
}
|
|
||||||
|
|
||||||
status = m_rtpSession.SetDefaultTimestampIncrement(timestampinc);
|
|
||||||
|
|
||||||
if (status < 0) {
|
|
||||||
qCritical("RTPSink::setPayloadType: cannot set default timestamp increment: %s", qrtplib::RTPGetErrorString(status).c_str());
|
|
||||||
} else {
|
|
||||||
qDebug("RTPSink::setPayloadType: set default timestamp increment to %d: %s", timestampinc, qrtplib::RTPGetErrorString(status).c_str());
|
|
||||||
}
|
|
||||||
|
|
||||||
status = m_rtpSession.SetMaximumPacketSize(m_bufferSize+40);
|
|
||||||
|
|
||||||
if (status < 0) {
|
|
||||||
qCritical("RTPSink::setPayloadType: cannot set maximum packet size: %s", qrtplib::RTPGetErrorString(status).c_str());
|
|
||||||
} else {
|
|
||||||
qDebug("RTPSink::setPayloadType: set maximum packet size to %d bytes: %s", m_bufferSize+40, qrtplib::RTPGetErrorString(status).c_str());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void RTPSink::setDestination(const QString& address, uint16_t port)
|
void RTPSink::setDestination(const QString& address, uint16_t port)
|
||||||
{
|
{
|
||||||
m_rtpSession.ClearDestinations();
|
m_rtpSession.ClearDestinations();
|
||||||
|
@ -48,7 +48,6 @@ public:
|
|||||||
~RTPSink();
|
~RTPSink();
|
||||||
|
|
||||||
bool isValid() const { return m_valid; }
|
bool isValid() const { return m_valid; }
|
||||||
void setPayloadType(PayloadType payloadType);
|
|
||||||
void setPayloadInformation(PayloadType payloadType, int sampleRate);
|
void setPayloadInformation(PayloadType payloadType, int sampleRate);
|
||||||
|
|
||||||
void setDestination(const QString& address, uint16_t port);
|
void setDestination(const QString& address, uint16_t port);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user