diff options
Diffstat (limited to 'media/libaah_rtp/aah_tx_packet.cpp')
| -rw-r--r-- | media/libaah_rtp/aah_tx_packet.cpp | 33 |
1 files changed, 23 insertions, 10 deletions
diff --git a/media/libaah_rtp/aah_tx_packet.cpp b/media/libaah_rtp/aah_tx_packet.cpp index 3f6e0e9..4cd6e47 100644 --- a/media/libaah_rtp/aah_tx_packet.cpp +++ b/media/libaah_rtp/aah_tx_packet.cpp @@ -142,12 +142,18 @@ void TRTPAudioPacket::setVolume(uint8_t val) { mVolume = val; } -void TRTPAudioPacket::setAccessUnitData(void* data, int len) { +void TRTPAudioPacket::setAccessUnitData(const void* data, size_t len) { CHECK(!mIsPacked); mAccessUnitData = data; mAccessUnitLen = len; } +void TRTPAudioPacket::setAuxData(const void* data, size_t len) { + CHECK(!mIsPacked); + mAuxData = data; + mAuxDataLen = len; +} + /*** TRTP control packet properties ***/ void TRTPControlPacket::setCommandID(TRTPCommandID val) { @@ -232,6 +238,7 @@ bool TRTPAudioPacket::pack() { } int packetLen = kRTPHeaderLen + + mAuxDataLen + mAccessUnitLen + TRTPHeaderLen(); @@ -249,16 +256,24 @@ bool TRTPAudioPacket::pack() { mPacketLen = packetLen; uint8_t* cur = mPacket; + bool hasAux = mAuxData && mAuxDataLen; + uint8_t flags = (static_cast<int>(hasAux) << 4) | + (static_cast<int>(mRandomAccessPoint) << 3) | + (static_cast<int>(mDropable) << 2) | + (static_cast<int>(mDiscontinuity) << 1) | + (static_cast<int>(mEndOfStream)); writeTRTPHeader(cur, true, packetLen); writeU8(cur, mCodecType); - writeU8(cur, - (static_cast<int>(mRandomAccessPoint) << 3) | - (static_cast<int>(mDropable) << 2) | - (static_cast<int>(mDiscontinuity) << 1) | - (static_cast<int>(mEndOfStream))); + writeU8(cur, flags); writeU8(cur, mVolume); + if (hasAux) { + writeU32(cur, mAuxDataLen); + memcpy(cur, mAuxData, mAuxDataLen); + cur += mAuxDataLen; + } + memcpy(cur, mAccessUnitData, mAccessUnitLen); mIsPacked = true; @@ -293,12 +308,10 @@ int TRTPAudioPacket::TRTPHeaderLen() const { } - // TODO : properly compute aux data length. Currently, nothing - // uses aux data, so its length is always 0. - int auxDataLength = 0; + int auxDataLenField = (NULL != mAuxData) ? sizeof(uint32_t) : 0; return TRTPPacket::TRTPHeaderLen() + 3 + - auxDataLength + + auxDataLenField + pcmParamLength; } |
