diff options
author | Brian Matherly <brian.matherly-at-yahoo.com@ffmpeg.org> | 2017-09-27 20:48:42 -0500 |
---|---|---|
committer | Michael Niedermayer <michael@niedermayer.cc> | 2017-09-30 03:44:59 +0200 |
commit | 876dada0b58b5ecc80b2a25eb5c33974a71c8eb2 (patch) | |
tree | ad1a967902d4771b2e221235266d4802fda3cdaa | |
parent | 3df437c2d1950239de1e20b213e7a24b78a6825a (diff) |
avcodec/hevc_sei: Support HEVC paired fields.
Correctly set the interlaced_frame and top_field_first fields when pic_struct
indicates paired fields.
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
-rw-r--r-- | libavcodec/hevc_sei.c | 4 | ||||
-rw-r--r-- | tests/fate/hevc.mak | 6 | ||||
-rw-r--r-- | tests/ref/fate/hevc-paired-fields | 16 |
3 files changed, 23 insertions, 3 deletions
diff --git a/libavcodec/hevc_sei.c b/libavcodec/hevc_sei.c index cd55d50212..d0f9966a29 100644 --- a/libavcodec/hevc_sei.c +++ b/libavcodec/hevc_sei.c @@ -137,10 +137,10 @@ static int decode_nal_sei_pic_timing(HEVCSEIContext *s, GetBitContext *gb, const if (sps->vui.frame_field_info_present_flag) { int pic_struct = get_bits(gb, 4); h->picture_struct = AV_PICTURE_STRUCTURE_UNKNOWN; - if (pic_struct == 2) { + if (pic_struct == 2 || pic_struct == 10 || pic_struct == 12) { av_log(logctx, AV_LOG_DEBUG, "BOTTOM Field\n"); h->picture_struct = AV_PICTURE_STRUCTURE_BOTTOM_FIELD; - } else if (pic_struct == 1) { + } else if (pic_struct == 1 || pic_struct == 9 || pic_struct == 11) { av_log(logctx, AV_LOG_DEBUG, "TOP Field\n"); h->picture_struct = AV_PICTURE_STRUCTURE_TOP_FIELD; } diff --git a/tests/fate/hevc.mak b/tests/fate/hevc.mak index d23d1ba9fe..140fa2a72e 100644 --- a/tests/fate/hevc.mak +++ b/tests/fate/hevc.mak @@ -225,6 +225,9 @@ $(foreach N,$(HEVC_SAMPLES_444_12BIT),$(eval $(call FATE_HEVC_TEST_444_12BIT,$(N fate-hevc-paramchange-yuv420p-yuv420p10: CMD = framecrc -vsync 0 -i $(TARGET_SAMPLES)/hevc/paramchange_yuv420p_yuv420p10.hevc -sws_flags area+accurate_rnd+bitexact FATE_HEVC += fate-hevc-paramchange-yuv420p-yuv420p10 +fate-hevc-paired-fields: CMD = probeframes -show_entries frame=interlaced_frame,top_field_first $(TARGET_SAMPLES)/hevc/paired_fields.hevc +FATE_HEVC_FFPROBE-$(call DEMDEC, HEVC, HEVC) += fate-hevc-paired-fields + tests/data/hevc-mp4.mov: TAG = GEN tests/data/hevc-mp4.mov: ffmpeg$(PROGSSUF)$(EXESUF) | tests/data $(M)$(TARGET_EXEC) $(TARGET_PATH)/$< \ @@ -244,5 +247,6 @@ FATE_HEVC-$(call DEMDEC, MOV, HEVC) += fate-hevc-extradata-reload fate-hevc-extradata-reload: CMD = framemd5 -i $(TARGET_SAMPLES)/hevc/extradata-reload-multi-stsd.mov -sws_flags bitexact FATE_SAMPLES_AVCONV += $(FATE_HEVC-yes) +FATE_SAMPLES_FFPROBE += $(FATE_HEVC_FFPROBE-yes) -fate-hevc: $(FATE_HEVC-yes) +fate-hevc: $(FATE_HEVC-yes) $(FATE_HEVC_FFPROBE-yes) diff --git a/tests/ref/fate/hevc-paired-fields b/tests/ref/fate/hevc-paired-fields new file mode 100644 index 0000000000..f2223e770b --- /dev/null +++ b/tests/ref/fate/hevc-paired-fields @@ -0,0 +1,16 @@ +[FRAME] +interlaced_frame=1 +top_field_first=1 +[/FRAME] +[FRAME] +interlaced_frame=1 +top_field_first=0 +[/FRAME] +[FRAME] +interlaced_frame=1 +top_field_first=1 +[/FRAME] +[FRAME] +interlaced_frame=1 +top_field_first=0 +[/FRAME] |