From 64d2209b02150930f5ddf84c3cb5ed56102abcdc Mon Sep 17 00:00:00 2001 From: Dmytro Bogovych Date: Wed, 23 Jul 2025 14:13:30 +0300 Subject: [PATCH] - fix octet-aligned AMR-WB parsing & decoding --- src/engine/media/MT_AmrCodec.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/engine/media/MT_AmrCodec.cpp b/src/engine/media/MT_AmrCodec.cpp index d4eba761..191174dd 100644 --- a/src/engine/media/MT_AmrCodec.cpp +++ b/src/engine/media/MT_AmrCodec.cpp @@ -139,7 +139,7 @@ static AmrPayload parseAmrPayload(AmrPayloadInfo& input) // avoid the loss of data synchronization in the depacketization // process, which can result in a huge degradation in speech quality. bool discard = input.mWideband ? (f.mFrameType >= 10 && f.mFrameType <= 13) : (f.mFrameType >= 9 && f.mFrameType <= 14); - discard |= input.mWideband ? f.mFrameType >= 14 : f.mFrameType >= 15; + // discard |= input.mWideband ? f.mFrameType >= 14 : f.mFrameType >= 15; if (discard) { result.mDiscardPacket = true; @@ -163,7 +163,7 @@ static AmrPayload parseAmrPayload(AmrPayloadInfo& input) else { // It is octet aligned scheme, so we are on byte boundary now - size_t byteOffset = bit_reader.count() / 8; + size_t byteOffset = bit_reader.position() / 8; // Copy data of AMR frame if (byteOffset + byteLength <= input.mPayloadLength) @@ -568,8 +568,8 @@ int AmrWbCodec::encode(const void* input, int inputBytes, void* output, int outp #define AMR_BITRATE_DTX 15 int AmrWbCodec::decode(const void* input, int inputBytes, void* output, int outputCapacity) { - if (mConfig.mOctetAligned) - return 0; + // if (mConfig.mOctetAligned) + // return 0; if (mConfig.mIuUP) {