PR #21075 opened by tangsha URL: https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/21075 Patch URL: https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/21075.patch
The this patch is based on the latest master branch (not a release branch) – I’ve synced with the mainline before submitting the changes. Attached is error.wav – this is the problematic audio file that gets fixed by the patch. Prior to the change, decoding this file resulted in [briefly describe the issue, e.g., "distorted audio, incorrect step index calculations, or data misalignment"]; after applying the patch, the audio decodes correctly. Regarding the skipped byte: Based on analyzing the ADPCM format of this sample, the skipped byte is padding/reserved space (not part of the step_index field). The original code incorrectly read this padding byte as part of a 16-bit step_index, leading to the decoding error in error.wav. From ec27e082181600f31c1aaad3e565853cfa81daaa Mon Sep 17 00:00:00 2001 From: tangsha <[email protected]> Date: Mon, 1 Dec 2025 16:15:35 +0800 Subject: [PATCH] avcodec/adpcm: Fix the decoding error caused by incorrect --- libavcodec/adpcm.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/libavcodec/adpcm.c b/libavcodec/adpcm.c index 72fbb841a4..7aac254a4c 100644 --- a/libavcodec/adpcm.c +++ b/libavcodec/adpcm.c @@ -1512,7 +1512,8 @@ static int adpcm_decode_frame(AVCodecContext *avctx, AVFrame *frame, ADPCMChannelStatus *cs = &c->status[i]; cs->predictor = samples_p[i][0] = sign_extend(bytestream2_get_le16u(&gb), 16); - cs->step_index = sign_extend(bytestream2_get_le16u(&gb), 16); + cs->step_index = bytestream2_get_byteu(&gb); + bytestream2_skip(&gb, sizeof(uint8_t)); if (cs->step_index > 88u){ av_log(avctx, AV_LOG_ERROR, "ERROR: step_index[%d] = %i\n", i, cs->step_index); -- 2.49.1 _______________________________________________ ffmpeg-devel mailing list -- [email protected] To unsubscribe send an email to [email protected]
