Loading apps/decoder.c +13 −11 Original line number Diff line number Diff line Loading @@ -2895,7 +2895,8 @@ static ivas_error printBitstreamInfoVoip( #ifdef IVAS_RTPDUMP bool evsIvasModeBit; uint16_t bitrateIndex; bool ivasIndicatorOrQBit; bool ivasIndicatorBit; bool isGoodFrame; #else bool isAMRWB_IOmode; uint16_t frameTypeIndex; Loading Loading @@ -2944,7 +2945,7 @@ static ivas_error printBitstreamInfoVoip( { error = BS_Reader_ReadVoipFrame_compact( hBsReader, au, &auSizeBits, &rtpSequenceNumber, &rtpTimeStamp, &nextPacketRcvTime_ms ); #ifdef IVAS_RTPDUMP ivasIndicatorOrQBit = 1; /* good q_bit for INPUT_FORMAT_G192 */ isGoodFrame = 1; /* good frame for INPUT_FORMAT_G192 */ #else qBit = 1; /* good q_bit for INPUT_FORMAT_G192 */ #endif Loading @@ -2953,7 +2954,7 @@ static ivas_error printBitstreamInfoVoip( { auPtr = au; /* might have been set to RTP packet in prev call */ #ifdef IVAS_RTPDUMP rtpdumpDepackerError = IVAS_RTPDUMP_DEPACKER_readNextFrame( &rtpdumpDepacker, &rtpSequenceNumber, &rtpTimeStamp, &nextPacketRcvTime_ms, &evsIvasModeBit, &bitrateIndex, &ivasIndicatorOrQBit, &auPtr, (uint16_t *) &auSizeBits ); rtpdumpDepackerError = IVAS_RTPDUMP_DEPACKER_readNextFrame( &rtpdumpDepacker, &rtpSequenceNumber, &rtpTimeStamp, &nextPacketRcvTime_ms, &evsIvasModeBit, &bitrateIndex, &ivasIndicatorBit, &isGoodFrame, &auPtr, (uint16_t *) &auSizeBits ); #else rtpdumpDepackerError = EVS_RTPDUMP_DEPACKER_readNextFrame( &rtpdumpDepacker, &rtpSequenceNumber, &rtpTimeStamp, &nextPacketRcvTime_ms, &isAMRWB_IOmode, &frameTypeIndex, &qBit, &auPtr, (uint16_t *) &auSizeBits ); #endif Loading @@ -2967,7 +2968,7 @@ static ivas_error printBitstreamInfoVoip( goto cleanup; } #ifdef IVAS_RTPDUMP } while ( !ivasIndicatorOrQBit || auSizeBits < MIN_NUM_BITS_ACTIVE_FRAME || auSizeBits == NUM_BITS_SID_IVAS_5K2 ); } while ( !isGoodFrame || auSizeBits < MIN_NUM_BITS_ACTIVE_FRAME || auSizeBits == NUM_BITS_SID_IVAS_5K2 ); #else } while ( !qBit || auSizeBits < MIN_NUM_BITS_ACTIVE_FRAME || auSizeBits == NUM_BITS_SID_IVAS_5K2 ); #endif Loading Loading @@ -3066,7 +3067,8 @@ static ivas_error decodeVoIP( #ifdef IVAS_RTPDUMP bool evsIvasModeBit; uint16_t bitrateIndex; bool ivasIndicatorOrQBit; bool ivasIndicatorBit; bool isGoodFrame; #else bool isAMRWB_IOmode; uint16_t frameTypeIndex; Loading Loading @@ -3177,7 +3179,7 @@ static ivas_error decodeVoIP( { error = BS_Reader_ReadVoipFrame_compact( hBsReader, au, &auSize, &rtpSequenceNumber, &rtpTimeStamp, &nextPacketRcvTime_ms ); #ifdef IVAS_RTPDUMP ivasIndicatorOrQBit = 1; /* good q_bit for INPUT_FORMAT_G192 */ isGoodFrame = 1; /* good frame for INPUT_FORMAT_G192 */ #else qBit = 1; /* good q_bit for INPUT_FORMAT_G192 */ #endif Loading @@ -3186,7 +3188,7 @@ static ivas_error decodeVoIP( { auPtr = au; /* might have been set to RTP packet in prev call */ #ifdef IVAS_RTPDUMP rtpdumpDepackerError = IVAS_RTPDUMP_DEPACKER_readNextFrame( &rtpdumpDepacker, &rtpSequenceNumber, &rtpTimeStamp, &nextPacketRcvTime_ms, &evsIvasModeBit, &bitrateIndex, &ivasIndicatorOrQBit, &auPtr, (uint16_t *) &auSize ); rtpdumpDepackerError = IVAS_RTPDUMP_DEPACKER_readNextFrame( &rtpdumpDepacker, &rtpSequenceNumber, &rtpTimeStamp, &nextPacketRcvTime_ms, &evsIvasModeBit, &bitrateIndex, &ivasIndicatorBit, &isGoodFrame, &auPtr, (uint16_t *) &auSize ); #else rtpdumpDepackerError = EVS_RTPDUMP_DEPACKER_readNextFrame( &rtpdumpDepacker, &rtpSequenceNumber, &rtpTimeStamp, &nextPacketRcvTime_ms, &isAMRWB_IOmode, &frameTypeIndex, &qBit, &auPtr, (uint16_t *) &auSize ); #endif Loading Loading @@ -3351,7 +3353,7 @@ static ivas_error decodeVoIP( { /* feed the previous read packet into the receiver now */ #ifdef IVAS_RTPDUMP error = IVAS_DEC_VoIP_FeedFrame( hIvasDec, auPtr, auSize, rtpSequenceNumber, rtpTimeStamp, nextPacketRcvTime_ms, ivasIndicatorOrQBit ); error = IVAS_DEC_VoIP_FeedFrame( hIvasDec, auPtr, auSize, rtpSequenceNumber, rtpTimeStamp, nextPacketRcvTime_ms, isGoodFrame ); #else error = IVAS_DEC_VoIP_FeedFrame( hIvasDec, auPtr, auSize, rtpSequenceNumber, rtpTimeStamp, nextPacketRcvTime_ms, qBit ); #endif Loading @@ -3368,7 +3370,7 @@ static ivas_error decodeVoIP( error = BS_Reader_ReadVoipFrame_compact( hBsReader, au, &auSize, &rtpSequenceNumber, &rtpTimeStamp, &nextPacketRcvTime_ms ); #ifdef IVAS_RTPDUMP ivasIndicatorOrQBit = 1; /* good q_bit for VOIP_G192_RTP */ isGoodFrame = 1; /* good frame for VOIP_G192_RTP */ #else qBit = 1; /* good q_bit for VOIP_G192_RTP */ #endif Loading @@ -3379,8 +3381,8 @@ static ivas_error decodeVoIP( #ifdef IVAS_RTPDUMP rtpdumpDepackerError = IVAS_RTPDUMP_DEPACKER_readNextFrame( &rtpdumpDepacker, &rtpSequenceNumber, &rtpTimeStamp, &nextPacketRcvTime_ms, &evsIvasModeBit, &bitrateIndex, &ivasIndicatorOrQBit, &auPtr, (uint16_t *) &auSize ); &evsIvasModeBit, &bitrateIndex, &ivasIndicatorBit, &isGoodFrame, &auPtr, (uint16_t *) &auSize ); /* IVAS RTP payload format has timescale 16000, JBM uses 1000 internally */ rtpTimeStamp = rtpTimeStamp / 16; Loading lib_dec/jbm_jb4sb.h +5 −0 Original line number Diff line number Diff line Loading @@ -63,8 +63,13 @@ struct JB4_DATAUNIT uint32_t rcvTime; /** true, if the data unit contains only silence */ bool silenceIndicator; #ifdef IVAS_RTPDUMP /** good frame indicator (Q bit for AMR-WB IO, otherwise set to true) */ Word16 isGoodFrame; #else /** Q bit for AMR-WB IO */ Word16 qBit; #endif /** the binary encoded access unit */ uint8_t *data; Loading lib_dec/lib_dec.c +12 −0 Original line number Diff line number Diff line Loading @@ -3232,7 +3232,11 @@ ivas_error IVAS_DEC_VoIP_FeedFrame( const uint16_t rtpSequenceNumber, /* i : RTP sequence number (16 bits) */ const uint32_t rtpTimeStamp, /* i : RTP timestamp (32 bits) */ const uint32_t rcvTime_ms, /* i : receive time of the RTP packet in milliseconds */ #ifdef IVAS_RTPDUMP const bool isGoodFrame /* i : Good frame indicator (Q bit for AMR-WB IO, otherwise set to true) */ #else const bool qBit /* i : Q bit for AMR-WB IO */ #endif ) { JB4_DATAUNIT_HANDLE dataUnit; Loading Loading @@ -3274,7 +3278,11 @@ ivas_error IVAS_DEC_VoIP_FeedFrame( dataUnit->timeStamp = rtpTimeStamp; dataUnit->partial_frame = 0; dataUnit->partialCopyOffset = partialCopyOffset; #ifdef IVAS_RTPDUMP dataUnit->isGoodFrame = isGoodFrame; #else dataUnit->qBit = qBit; #endif /* add the frame to the JBM */ result = JB4_PushDataUnit( hIvasDec->hVoIP->hJBM, dataUnit, rcvTime_ms ); Loading @@ -3297,7 +3305,11 @@ ivas_error IVAS_DEC_VoIP_FeedFrame( dataUnit->timeStamp = rtpTimeStamp - partialCopyOffset * dataUnit->duration; dataUnit->partial_frame = 1; dataUnit->partialCopyOffset = partialCopyOffset; #ifdef IVAS_RTPDUMP dataUnit->isGoodFrame = isGoodFrame; #else dataUnit->qBit = qBit; #endif /* add the frame to the JBM */ result = JB4_PushDataUnit( hIvasDec->hVoIP->hJBM, dataUnit, rcvTime_ms ); Loading lib_dec/lib_dec.h +5 −1 Original line number Diff line number Diff line Loading @@ -285,7 +285,11 @@ ivas_error IVAS_DEC_VoIP_FeedFrame( const uint16_t rtpSequenceNumber, /* i : RTP sequence number (16 bits) */ const uint32_t rtpTimeStamp, /* i : RTP timestamp (32 bits) */ const uint32_t rcvTime_ms, /* i : receive time of the RTP packet in milliseconds */ #ifdef IVAS_RTPDUMP const bool isGoodFrame /* i : Good frame indicator (Q bit for AMR-WB IO, otherwise set to true) */ #else const bool qBit /* i : Q bit for AMR-WB IO */ #endif ); ivas_error IVAS_DEC_VoIP_SetScale( Loading lib_util/evs_rtp_payload.c +24 −3 Original line number Diff line number Diff line Loading @@ -39,6 +39,7 @@ #include "evs_rtp_payload.h" #include "options.h" #ifndef IVAS_RTPDUMP static void evsPayload_unpackFrame_compact_amrWbIo( const char *payload, uint16_t payloadSizeBits, uint16_t iProtectedSize, unsigned char **framePtr, uint16_t *frameSizeInBits ) { uint16_t i, iBit0; Loading Loading @@ -123,12 +124,30 @@ bool evsPayload_unpackFrame( bool hf_only, char *payload, uint16_t payloadSizeBy return evsHeaderFullPayload_unpackFrame( payload, payloadSizeBytes, frameIndex, isAMRWB_IOmode, frameFollowing, frameTypeIndex, qBit, framePtr, frameSizeInBits ); } #endif #ifdef IVAS_RTPDUMP void evsHeaderFullPayload_parseToc( uint8_t toc, bool *isAMRWB_IOmode, bool *frameFollowing, uint16_t *frameTypeIndex, bool *qBit, int32_t *bitrate ) void evsHeaderFullPayload_parseToc( uint8_t toc, bool *isAMRWB_IOmode, bool *frameFollowing, uint16_t *frameTypeIndex, bool *qBit, bool *isGoodFrame, int32_t *bitrate ) { bool evsModeBit = ( toc & 0x20 ) != 0; *isAMRWB_IOmode = evsModeBit; *frameFollowing = ( toc & 0x40 ) != 0; *frameTypeIndex = toc & 0x0f; if ( *isAMRWB_IOmode ) { *qBit = ( toc & 0x10 ) != 0; *isGoodFrame = *qBit; *bitrate = AMRWB_IOmode2rate[*frameTypeIndex]; } else { *qBit = false; /* Q-bit is unused in EVS Primary mode */ *isGoodFrame = true; /* assume good frame for EVS Primary */ *bitrate = PRIMARYmode2rate[*frameTypeIndex]; } } #else static void evsHeaderFullPayload_parseToc( uint8_t toc, bool *isAMRWB_IOmode, bool *frameFollowing, uint16_t *frameTypeIndex, bool *qBit, int32_t *bitrate ) #endif { bool evsModeBit = ( toc & 0x20 ) != 0; *isAMRWB_IOmode = evsModeBit; Loading @@ -145,8 +164,9 @@ static void evsHeaderFullPayload_parseToc( uint8_t toc, bool *isAMRWB_IOmode, bo *bitrate = AMRWB_IOmode2rate[*frameTypeIndex]; } } #endif #ifndef IVAS_RTPDUMP bool evsHeaderFullPayload_unpackFrame( char *payload, uint16_t payloadSizeBytes, uint16_t frameIndex, bool *isAMRWB_IOmode, bool *frameFollowing, uint16_t *frameTypeIndex, bool *qBit, unsigned char **frame, uint16_t *frameSizeInBits ) { bool someIsAMRWB_IOmode, someFrameFollowing = true, someQBit; Loading Loading @@ -278,3 +298,4 @@ void EVS_RTPDUMP_DEPACKER_close( EVS_RTPDUMP_DEPACKER *self ) } RTPDUMP_Close( &self->rtpdump, 0 ); } #endif Loading
apps/decoder.c +13 −11 Original line number Diff line number Diff line Loading @@ -2895,7 +2895,8 @@ static ivas_error printBitstreamInfoVoip( #ifdef IVAS_RTPDUMP bool evsIvasModeBit; uint16_t bitrateIndex; bool ivasIndicatorOrQBit; bool ivasIndicatorBit; bool isGoodFrame; #else bool isAMRWB_IOmode; uint16_t frameTypeIndex; Loading Loading @@ -2944,7 +2945,7 @@ static ivas_error printBitstreamInfoVoip( { error = BS_Reader_ReadVoipFrame_compact( hBsReader, au, &auSizeBits, &rtpSequenceNumber, &rtpTimeStamp, &nextPacketRcvTime_ms ); #ifdef IVAS_RTPDUMP ivasIndicatorOrQBit = 1; /* good q_bit for INPUT_FORMAT_G192 */ isGoodFrame = 1; /* good frame for INPUT_FORMAT_G192 */ #else qBit = 1; /* good q_bit for INPUT_FORMAT_G192 */ #endif Loading @@ -2953,7 +2954,7 @@ static ivas_error printBitstreamInfoVoip( { auPtr = au; /* might have been set to RTP packet in prev call */ #ifdef IVAS_RTPDUMP rtpdumpDepackerError = IVAS_RTPDUMP_DEPACKER_readNextFrame( &rtpdumpDepacker, &rtpSequenceNumber, &rtpTimeStamp, &nextPacketRcvTime_ms, &evsIvasModeBit, &bitrateIndex, &ivasIndicatorOrQBit, &auPtr, (uint16_t *) &auSizeBits ); rtpdumpDepackerError = IVAS_RTPDUMP_DEPACKER_readNextFrame( &rtpdumpDepacker, &rtpSequenceNumber, &rtpTimeStamp, &nextPacketRcvTime_ms, &evsIvasModeBit, &bitrateIndex, &ivasIndicatorBit, &isGoodFrame, &auPtr, (uint16_t *) &auSizeBits ); #else rtpdumpDepackerError = EVS_RTPDUMP_DEPACKER_readNextFrame( &rtpdumpDepacker, &rtpSequenceNumber, &rtpTimeStamp, &nextPacketRcvTime_ms, &isAMRWB_IOmode, &frameTypeIndex, &qBit, &auPtr, (uint16_t *) &auSizeBits ); #endif Loading @@ -2967,7 +2968,7 @@ static ivas_error printBitstreamInfoVoip( goto cleanup; } #ifdef IVAS_RTPDUMP } while ( !ivasIndicatorOrQBit || auSizeBits < MIN_NUM_BITS_ACTIVE_FRAME || auSizeBits == NUM_BITS_SID_IVAS_5K2 ); } while ( !isGoodFrame || auSizeBits < MIN_NUM_BITS_ACTIVE_FRAME || auSizeBits == NUM_BITS_SID_IVAS_5K2 ); #else } while ( !qBit || auSizeBits < MIN_NUM_BITS_ACTIVE_FRAME || auSizeBits == NUM_BITS_SID_IVAS_5K2 ); #endif Loading Loading @@ -3066,7 +3067,8 @@ static ivas_error decodeVoIP( #ifdef IVAS_RTPDUMP bool evsIvasModeBit; uint16_t bitrateIndex; bool ivasIndicatorOrQBit; bool ivasIndicatorBit; bool isGoodFrame; #else bool isAMRWB_IOmode; uint16_t frameTypeIndex; Loading Loading @@ -3177,7 +3179,7 @@ static ivas_error decodeVoIP( { error = BS_Reader_ReadVoipFrame_compact( hBsReader, au, &auSize, &rtpSequenceNumber, &rtpTimeStamp, &nextPacketRcvTime_ms ); #ifdef IVAS_RTPDUMP ivasIndicatorOrQBit = 1; /* good q_bit for INPUT_FORMAT_G192 */ isGoodFrame = 1; /* good frame for INPUT_FORMAT_G192 */ #else qBit = 1; /* good q_bit for INPUT_FORMAT_G192 */ #endif Loading @@ -3186,7 +3188,7 @@ static ivas_error decodeVoIP( { auPtr = au; /* might have been set to RTP packet in prev call */ #ifdef IVAS_RTPDUMP rtpdumpDepackerError = IVAS_RTPDUMP_DEPACKER_readNextFrame( &rtpdumpDepacker, &rtpSequenceNumber, &rtpTimeStamp, &nextPacketRcvTime_ms, &evsIvasModeBit, &bitrateIndex, &ivasIndicatorOrQBit, &auPtr, (uint16_t *) &auSize ); rtpdumpDepackerError = IVAS_RTPDUMP_DEPACKER_readNextFrame( &rtpdumpDepacker, &rtpSequenceNumber, &rtpTimeStamp, &nextPacketRcvTime_ms, &evsIvasModeBit, &bitrateIndex, &ivasIndicatorBit, &isGoodFrame, &auPtr, (uint16_t *) &auSize ); #else rtpdumpDepackerError = EVS_RTPDUMP_DEPACKER_readNextFrame( &rtpdumpDepacker, &rtpSequenceNumber, &rtpTimeStamp, &nextPacketRcvTime_ms, &isAMRWB_IOmode, &frameTypeIndex, &qBit, &auPtr, (uint16_t *) &auSize ); #endif Loading Loading @@ -3351,7 +3353,7 @@ static ivas_error decodeVoIP( { /* feed the previous read packet into the receiver now */ #ifdef IVAS_RTPDUMP error = IVAS_DEC_VoIP_FeedFrame( hIvasDec, auPtr, auSize, rtpSequenceNumber, rtpTimeStamp, nextPacketRcvTime_ms, ivasIndicatorOrQBit ); error = IVAS_DEC_VoIP_FeedFrame( hIvasDec, auPtr, auSize, rtpSequenceNumber, rtpTimeStamp, nextPacketRcvTime_ms, isGoodFrame ); #else error = IVAS_DEC_VoIP_FeedFrame( hIvasDec, auPtr, auSize, rtpSequenceNumber, rtpTimeStamp, nextPacketRcvTime_ms, qBit ); #endif Loading @@ -3368,7 +3370,7 @@ static ivas_error decodeVoIP( error = BS_Reader_ReadVoipFrame_compact( hBsReader, au, &auSize, &rtpSequenceNumber, &rtpTimeStamp, &nextPacketRcvTime_ms ); #ifdef IVAS_RTPDUMP ivasIndicatorOrQBit = 1; /* good q_bit for VOIP_G192_RTP */ isGoodFrame = 1; /* good frame for VOIP_G192_RTP */ #else qBit = 1; /* good q_bit for VOIP_G192_RTP */ #endif Loading @@ -3379,8 +3381,8 @@ static ivas_error decodeVoIP( #ifdef IVAS_RTPDUMP rtpdumpDepackerError = IVAS_RTPDUMP_DEPACKER_readNextFrame( &rtpdumpDepacker, &rtpSequenceNumber, &rtpTimeStamp, &nextPacketRcvTime_ms, &evsIvasModeBit, &bitrateIndex, &ivasIndicatorOrQBit, &auPtr, (uint16_t *) &auSize ); &evsIvasModeBit, &bitrateIndex, &ivasIndicatorBit, &isGoodFrame, &auPtr, (uint16_t *) &auSize ); /* IVAS RTP payload format has timescale 16000, JBM uses 1000 internally */ rtpTimeStamp = rtpTimeStamp / 16; Loading
lib_dec/jbm_jb4sb.h +5 −0 Original line number Diff line number Diff line Loading @@ -63,8 +63,13 @@ struct JB4_DATAUNIT uint32_t rcvTime; /** true, if the data unit contains only silence */ bool silenceIndicator; #ifdef IVAS_RTPDUMP /** good frame indicator (Q bit for AMR-WB IO, otherwise set to true) */ Word16 isGoodFrame; #else /** Q bit for AMR-WB IO */ Word16 qBit; #endif /** the binary encoded access unit */ uint8_t *data; Loading
lib_dec/lib_dec.c +12 −0 Original line number Diff line number Diff line Loading @@ -3232,7 +3232,11 @@ ivas_error IVAS_DEC_VoIP_FeedFrame( const uint16_t rtpSequenceNumber, /* i : RTP sequence number (16 bits) */ const uint32_t rtpTimeStamp, /* i : RTP timestamp (32 bits) */ const uint32_t rcvTime_ms, /* i : receive time of the RTP packet in milliseconds */ #ifdef IVAS_RTPDUMP const bool isGoodFrame /* i : Good frame indicator (Q bit for AMR-WB IO, otherwise set to true) */ #else const bool qBit /* i : Q bit for AMR-WB IO */ #endif ) { JB4_DATAUNIT_HANDLE dataUnit; Loading Loading @@ -3274,7 +3278,11 @@ ivas_error IVAS_DEC_VoIP_FeedFrame( dataUnit->timeStamp = rtpTimeStamp; dataUnit->partial_frame = 0; dataUnit->partialCopyOffset = partialCopyOffset; #ifdef IVAS_RTPDUMP dataUnit->isGoodFrame = isGoodFrame; #else dataUnit->qBit = qBit; #endif /* add the frame to the JBM */ result = JB4_PushDataUnit( hIvasDec->hVoIP->hJBM, dataUnit, rcvTime_ms ); Loading @@ -3297,7 +3305,11 @@ ivas_error IVAS_DEC_VoIP_FeedFrame( dataUnit->timeStamp = rtpTimeStamp - partialCopyOffset * dataUnit->duration; dataUnit->partial_frame = 1; dataUnit->partialCopyOffset = partialCopyOffset; #ifdef IVAS_RTPDUMP dataUnit->isGoodFrame = isGoodFrame; #else dataUnit->qBit = qBit; #endif /* add the frame to the JBM */ result = JB4_PushDataUnit( hIvasDec->hVoIP->hJBM, dataUnit, rcvTime_ms ); Loading
lib_dec/lib_dec.h +5 −1 Original line number Diff line number Diff line Loading @@ -285,7 +285,11 @@ ivas_error IVAS_DEC_VoIP_FeedFrame( const uint16_t rtpSequenceNumber, /* i : RTP sequence number (16 bits) */ const uint32_t rtpTimeStamp, /* i : RTP timestamp (32 bits) */ const uint32_t rcvTime_ms, /* i : receive time of the RTP packet in milliseconds */ #ifdef IVAS_RTPDUMP const bool isGoodFrame /* i : Good frame indicator (Q bit for AMR-WB IO, otherwise set to true) */ #else const bool qBit /* i : Q bit for AMR-WB IO */ #endif ); ivas_error IVAS_DEC_VoIP_SetScale( Loading
lib_util/evs_rtp_payload.c +24 −3 Original line number Diff line number Diff line Loading @@ -39,6 +39,7 @@ #include "evs_rtp_payload.h" #include "options.h" #ifndef IVAS_RTPDUMP static void evsPayload_unpackFrame_compact_amrWbIo( const char *payload, uint16_t payloadSizeBits, uint16_t iProtectedSize, unsigned char **framePtr, uint16_t *frameSizeInBits ) { uint16_t i, iBit0; Loading Loading @@ -123,12 +124,30 @@ bool evsPayload_unpackFrame( bool hf_only, char *payload, uint16_t payloadSizeBy return evsHeaderFullPayload_unpackFrame( payload, payloadSizeBytes, frameIndex, isAMRWB_IOmode, frameFollowing, frameTypeIndex, qBit, framePtr, frameSizeInBits ); } #endif #ifdef IVAS_RTPDUMP void evsHeaderFullPayload_parseToc( uint8_t toc, bool *isAMRWB_IOmode, bool *frameFollowing, uint16_t *frameTypeIndex, bool *qBit, int32_t *bitrate ) void evsHeaderFullPayload_parseToc( uint8_t toc, bool *isAMRWB_IOmode, bool *frameFollowing, uint16_t *frameTypeIndex, bool *qBit, bool *isGoodFrame, int32_t *bitrate ) { bool evsModeBit = ( toc & 0x20 ) != 0; *isAMRWB_IOmode = evsModeBit; *frameFollowing = ( toc & 0x40 ) != 0; *frameTypeIndex = toc & 0x0f; if ( *isAMRWB_IOmode ) { *qBit = ( toc & 0x10 ) != 0; *isGoodFrame = *qBit; *bitrate = AMRWB_IOmode2rate[*frameTypeIndex]; } else { *qBit = false; /* Q-bit is unused in EVS Primary mode */ *isGoodFrame = true; /* assume good frame for EVS Primary */ *bitrate = PRIMARYmode2rate[*frameTypeIndex]; } } #else static void evsHeaderFullPayload_parseToc( uint8_t toc, bool *isAMRWB_IOmode, bool *frameFollowing, uint16_t *frameTypeIndex, bool *qBit, int32_t *bitrate ) #endif { bool evsModeBit = ( toc & 0x20 ) != 0; *isAMRWB_IOmode = evsModeBit; Loading @@ -145,8 +164,9 @@ static void evsHeaderFullPayload_parseToc( uint8_t toc, bool *isAMRWB_IOmode, bo *bitrate = AMRWB_IOmode2rate[*frameTypeIndex]; } } #endif #ifndef IVAS_RTPDUMP bool evsHeaderFullPayload_unpackFrame( char *payload, uint16_t payloadSizeBytes, uint16_t frameIndex, bool *isAMRWB_IOmode, bool *frameFollowing, uint16_t *frameTypeIndex, bool *qBit, unsigned char **frame, uint16_t *frameSizeInBits ) { bool someIsAMRWB_IOmode, someFrameFollowing = true, someQBit; Loading Loading @@ -278,3 +298,4 @@ void EVS_RTPDUMP_DEPACKER_close( EVS_RTPDUMP_DEPACKER *self ) } RTPDUMP_Close( &self->rtpdump, 0 ); } #endif