diff options
author | DE-AI <[email protected]> | 2025-09-05 15:27:01 +0000 |
---|---|---|
committer | James Almer <[email protected]> | 2025-09-08 14:03:52 +0000 |
commit | fbbb2996d573844a2f4c901b704d8361a384766b (patch) | |
tree | 31b9eb0c0761aec6a4253cff6b0054b526bb57e8 | |
parent | 1f2de0f61888e4d16b9e124fc4b4728dd3642981 (diff) |
vc1_parser: Reset unesc_index after extracting header with complete frames
When PARSER_FLAG_COMPLETE_FRAMES is set (e.g. in Matroska),
unesc_index is not reset after the first frame, which causes
subsequent frames to inherit leftover header data.
This leads to incorrect keyframe marking and broken decoding.
See also this bug report: https://trac.ffmpeg.org/ticket/8515
Signed-off-by: DE-AI <[email protected]>
-rw-r--r-- | libavcodec/vc1_parser.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/libavcodec/vc1_parser.c b/libavcodec/vc1_parser.c index a536a7bcf8..124a7a771f 100644 --- a/libavcodec/vc1_parser.c +++ b/libavcodec/vc1_parser.c @@ -179,6 +179,7 @@ static int vc1_parse(AVCodecParserContext *s, // start codes if we know it contains a complete frame and // we've already unescaped all we need of the frame header vc1_extract_header(s, avctx, unesc_buffer, unesc_index); + unesc_index = 0; break; } if (unesc_index >= UNESCAPED_THRESHOLD && !start_code_found) { |