diff options
author | Zhao Zhili <zhilizhao@tencent.com> | 2023-12-27 23:30:16 +0800 |
---|---|---|
committer | Zhao Zhili <zhilizhao@tencent.com> | 2024-01-05 01:14:33 +0800 |
commit | 0f824d792d20783fda64279ab94e16676e48c2e6 (patch) | |
tree | e6fd674cda07fe4cd3146f66346db9afff8356b1 | |
parent | b7ac1f9856afc7bb907d58280fea4fc033502cc6 (diff) | |
download | ffmpeg-0f824d792d20783fda64279ab94e16676e48c2e6.tar.gz |
avcodec/hevc_parser: fix missing zero_byte at frame beginning
The start code is matched against 0x000001, zero_byte was treated
as last byte of last frame rather than the beginning of next frame.
Signed-off-by: Zhao Zhili <zhilizhao@tencent.com>
-rw-r--r-- | libavcodec/hevc_parser.c | 4 | ||||
-rw-r--r-- | tests/fate/hevc.mak | 2 |
2 files changed, 5 insertions, 1 deletions
diff --git a/libavcodec/hevc_parser.c b/libavcodec/hevc_parser.c index 87270cffb4..99a4272fad 100644 --- a/libavcodec/hevc_parser.c +++ b/libavcodec/hevc_parser.c @@ -278,6 +278,8 @@ static int hevc_find_frame_end(AVCodecParserContext *s, const uint8_t *buf, (nut >= 41 && nut <= 44) || (nut >= 48 && nut <= 55)) { if (pc->frame_start_found) { pc->frame_start_found = 0; + if (!((pc->state64 >> 6 * 8) & 0xFF)) + return i - 6; return i - 5; } } else if (nut <= HEVC_NAL_RASL_R || @@ -288,6 +290,8 @@ static int hevc_find_frame_end(AVCodecParserContext *s, const uint8_t *buf, pc->frame_start_found = 1; } else { // First slice of next frame found pc->frame_start_found = 0; + if (!((pc->state64 >> 6 * 8) & 0xFF)) + return i - 6; return i - 5; } } diff --git a/tests/fate/hevc.mak b/tests/fate/hevc.mak index b3c6792140..4889ee8237 100644 --- a/tests/fate/hevc.mak +++ b/tests/fate/hevc.mak @@ -222,7 +222,7 @@ FATE_HEVC-$(call ALLYES, HEVC_DEMUXER MOV_DEMUXER HEVC_PARSER HEVC_MP4TOANNEXB_B fate-hevc-bsf-mp4toannexb: tests/data/hevc-mp4.mov fate-hevc-bsf-mp4toannexb: CMD = md5 -i $(TARGET_PATH)/tests/data/hevc-mp4.mov -c:v copy -fflags +bitexact -f hevc fate-hevc-bsf-mp4toannexb: CMP = oneline -fate-hevc-bsf-mp4toannexb: REF = 1873662a3af1848c37e4eb25722c8df9 +fate-hevc-bsf-mp4toannexb: REF = 73019329ed7f81c24f9af67c34c640c0 fate-hevc-skiploopfilter: CMD = framemd5 -skip_loop_filter nokey -i $(TARGET_SAMPLES)/hevc-conformance/SAO_D_Samsung_5.bit -sws_flags bitexact FATE_HEVC-$(call FRAMEMD5, HEVC, HEVC, HEVC_PARSER) += fate-hevc-skiploopfilter |