[FFmpeg-devel] [PATCH v2] avcodec/hevc_sei: Support HEVC paired fields.

Michael Niedermayer michael at niedermayer.cc
Mon Sep 25 02:45:55 EEST 2017


On Sun, Sep 24, 2017 at 02:36:55PM -0500, Brian Matherly wrote:
> From: Brian Matherly <brian.matherly-at-yahoo.com at ffmpeg.org>
> 
> Correctly set the interlaced_frame and top_field_first fields when pic_struct
> indicates paired fields.
> ---
>  libavcodec/hevc_sei.c             |   4 +-
>  tests/fate/hevc.mak               |   3 +
>  tests/ref/fate/hevc-paired-fields | 120 ++++++++++++++++++++++++++++++++++++++
>  3 files changed, 125 insertions(+), 2 deletions(-)
>  create mode 100644 tests/ref/fate/hevc-paired-fields
> 
> diff --git a/libavcodec/hevc_sei.c b/libavcodec/hevc_sei.c
> index cd55d50..d0f9966 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 d23d1ba..a763170 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 $(TARGET_SAMPLES)/hevc/paired_fields.hevc
> +FATE_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)/$< \

this is missing a dependancy on ffporbe

running this without ffprobe being build prior:
make -j12 fate-hevc-paired-fields V=2
...
./tests/fate-run.sh: 79: eval: ffprobe: not found



[...]
-- 
Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

Its not that you shouldnt use gotos but rather that you should write
readable code and code with gotos often but not always is less readable
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 181 bytes
Desc: Digital signature
URL: <http://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20170925/814e2757/attachment.sig>


More information about the ffmpeg-devel mailing list