From patchwork Sun Sep 24 19:33:37 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Brian Matherly X-Patchwork-Id: 5252 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.2.36.26 with SMTP id f26csp1869031jaa; Sun, 24 Sep 2017 12:34:11 -0700 (PDT) X-Google-Smtp-Source: AOwi7QB6pHMtpDVVsBYH2JFs1IafaL9+0KuCyyfYMq1MR5WUZis9ZN9zfk9+kQb+VzSWDkEO1/NY X-Received: by 10.223.141.143 with SMTP id o15mr4573699wrb.228.1506281651783; Sun, 24 Sep 2017 12:34:11 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1506281651; cv=none; d=google.com; s=arc-20160816; b=g0XfYJo1+BBs2K9tdB8MZAc1FN9CBlPnoQIT3tNR9WO2mAU9RAjMPj6pMZUFRceww5 UDBnZB5Fo7LPi7UNA2Q68xGb27jZxDhQfytnlHYAXDnmuW39IAt4QlT5eARWEb04V+J8 izJZ0YQDR9WeYOMQkXMXGUB/P4UTPFuEnrfaBYXgziDg+dXBZvSEbxm3/ZZ8QruF06kY 59BRXnKDVR9Z+161BkIGb/2FfIfR2m8X0TNQUcTXinfvI0fb7FFrNrrAwx7PXioEnSBp qy7sKFD6z3sBEwkQ7jqXqZh9dYrSHZMbmEmsTcGSgCE3fv1FkuM1ne66oQi6p2juvg4F XWZw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:mime-version:cc:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:message-id:date:to:from:dkim-signature :delivered-to:arc-authentication-results; bh=bnxwZ0Sdpm3bSs2tzSIOZBvyuWvHt0RKQemUWbHIU0U=; b=mKh2IhFYYOKlH7kkR66Kn0ydzV6Pnu+80VwY8bvzvJK1U3EYERXILy+1LhXnf49ZzR tIpqdjt8saRCb1hmRQJoz8/BcmwqT56eYnx1SVnzzGwo7KBUF1Zkx6ASd/Nzv86w2zr6 4aJfZuu0Ed6msdIJsJUwiB7qNwZuHEX4C3jzLH5w8/+fYBGzXdUeN1OOO+mZ5NP1a3R4 NwxXaHGhu4JTHbywg8aJZLFxkGJI+N+10PJdQKoPtnzogkUADy9FZI8WFAkdjq/dpAW2 UEGKBG1e4Cq89zo/m2ifb+Fe6x9BvSC9Y2aKPAeVJhD/xDaTETVyk6Uc4eoLObqNMrpx uQ7w== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@yahoo.com header.s=s2048 header.b=OhvzPeA1; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id t133si3513062wmf.35.2017.09.24.12.34.10; Sun, 24 Sep 2017 12:34:11 -0700 (PDT) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@yahoo.com header.s=s2048 header.b=OhvzPeA1; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 22B2568058C; Sun, 24 Sep 2017 22:33:58 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from sonic301-4.consmr.mail.bf2.yahoo.com (sonic301-4.consmr.mail.bf2.yahoo.com [74.6.129.43]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 9E4616803A5 for ; Sun, 24 Sep 2017 22:33:51 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com; s=s2048; t=1506281641; bh=qY4Zmv/4hsLR7q+TWimuy6Q4HJyHmySXEd88LralgnA=; h=From:To:Cc:Subject:Date:From:Subject; b=OhvzPeA1or/R/P2+okBBpf+NJZj8OQV7Q3MLd3zClkzNB/ZCcbTJS5h8+SgD+4Z186SfxWp2xKGUjDxq+h+OTdGltbPXNE2taYVEgw8v0md/Qwj/zUxqV29YKLW/kiwL1L+1GztG3yghbCG/Ny9+Sn35+aeTsjB5Ljqy3TUaT62nysI+aan8kYNx79octE1jvDEUFxtl/lj1QHGpoWB5dnkc/iIxJFhgmQcIwZS58DRJbrd3C7cI/1Hjvio8dSjZehqN05wSQ9lbweZfItbX9Z9qcT7lhKRJFL9AZIFAC5nWjv0dx510DwOCaw9yitvstZA02qPsiZiIOHuYs8+Aqg== X-YMail-OSG: kIWiND8VM1mlL_k0DpywGrU4SsP3EyGstejEiz0o1RLQs_byz9pADlF1FLZ3qnA rL0VxcHzJuBDxrV1Gqdpqbrpm9mjEi1PGGS6Eo0EuCKvRmot_.e0kmEp7GcRO_LLAGpPqaH5SJAI aLHN9cdUDItEzfFKhrrnZiuZFJffFLwg84XbCxY5c75S0GmiwlTSi7Ks9WiLjHvCqLiwa8gb1MJG CVzb.ewqFWNTLFroarD_yWtmVV2AOERIu5eZOCB7.5McBYqty693HGKqwH6RXIs24u_IsRk27sPY 2o5zbPaf7jGYkQ6jpVTR8RWmv.fxApZdZi.LZz4ytzCnlQ6re_R0aDacVBsn01Li41NIajHl.lNY 9zy9BmDszOZQ59.qf8bEfqfPaH84ZikoyBArNaQyf9xnFlv74DRygjSM0.f5gca_ybW8tPmdgAVs tYeqPsIcBcCfUSPIK29dXlnRfDx2busvHwfOi1FlkwX7oKG1oe9rA3KBZxCmNe3TF8Xa9WEPz8A- - Received: from sonic.gate.mail.ne1.yahoo.com by sonic301.consmr.mail.bf2.yahoo.com with HTTP; Sun, 24 Sep 2017 19:34:00 +0000 Received: from [127.0.0.1] by smtp112.mail.bf1.yahoo.com with NNFMP; 24 Sep 2017 19:33:58 -0000 X-Yahoo-Newman-Id: 873505.14925.bm@smtp112.mail.bf1.yahoo.com X-Yahoo-Newman-Property: ymail-3 X-YMail-OSG: kIWiND8VM1mlL_k0DpywGrU4SsP3EyGstejEiz0o1RLQs_b yz9pADlF1FLZ3qnArL0VxcHzJuBDxrV1Gqdpqbrpm9mjEi1PGGS6Eo0EuCKv Rmot_.e0kmEp7GcRO_LLAGpPqaH5SJAIaLHN9cdUDItEzfFKhrrnZiuZFJff FLwg84XbCxY5c75S0GmiwlTSi7Ks9WiLjHvCqLiwa8gb1MJGCVzb.ewqFWNT LFroarD_yWtmVV2AOERIu5eZOCB7.5McBYqty693HGKqwH6RXIs24u_IsRk2 7sPY2o5zbPaf7jGYkQ6jpVTR8RWmv.fxApZdZi.LZz4ytzCnlQ6re_R0aDac VBsn01Li41NIajHl.lNY9zy9BmDszOZQ59.qf8bEfqfPaH84ZikoyBArNaQy f9xnFlv74DRygjSM0.f5gca_ybW8tPmdgAVstYeqPsIcBcCfUSPIK29dXlnR fDx2busvHwfOi1FlkwX7oKG1oe9rA3KBZxCmNe3TF8Xa9WEPz8A-- X-Yahoo-SMTP: eG7cMxeswBDV7tbq7FRpwUM1gldTWQ-- From: Brian Matherly To: ffmpeg-devel@ffmpeg.org Date: Sun, 24 Sep 2017 14:33:37 -0500 Message-Id: <1506281617-26601-1-git-send-email-brian.matherly@yahoo.com> X-Mailer: git-send-email 2.7.4 Subject: [FFmpeg-devel] [PATCH v2] avcodec/hevc_sei: Support HEVC paired fields. X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Cc: Brian Matherly MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" From: Brian Matherly 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)/$< \ diff --git a/tests/ref/fate/hevc-paired-fields b/tests/ref/fate/hevc-paired-fields new file mode 100644 index 0000000..53b9cf6 --- /dev/null +++ b/tests/ref/fate/hevc-paired-fields @@ -0,0 +1,120 @@ +[FRAME] +media_type=video +stream_index=0 +key_frame=1 +pkt_pts=N/A +pkt_pts_time=N/A +pkt_dts=N/A +pkt_dts_time=N/A +best_effort_timestamp=N/A +best_effort_timestamp_time=N/A +pkt_duration=20020 +pkt_duration_time=0.016683 +pkt_pos=0 +pkt_size=229528 +width=1920 +height=540 +pix_fmt=yuv422p10le +sample_aspect_ratio=1:1 +pict_type=I +coded_picture_number=0 +display_picture_number=0 +interlaced_frame=1 +top_field_first=1 +repeat_pict=0 +color_range=tv +color_space=unknown +color_primaries=unknown +color_transfer=unknown +chroma_location=unspecified +[/FRAME] +[FRAME] +media_type=video +stream_index=0 +key_frame=0 +pkt_pts=N/A +pkt_pts_time=N/A +pkt_dts=N/A +pkt_dts_time=N/A +best_effort_timestamp=N/A +best_effort_timestamp_time=N/A +pkt_duration=20020 +pkt_duration_time=0.016683 +pkt_pos=296042 +pkt_size=95954 +width=1920 +height=540 +pix_fmt=yuv422p10le +sample_aspect_ratio=1:1 +pict_type=B +coded_picture_number=0 +display_picture_number=0 +interlaced_frame=1 +top_field_first=0 +repeat_pict=0 +color_range=tv +color_space=unknown +color_primaries=unknown +color_transfer=unknown +chroma_location=unspecified +[/FRAME] +[FRAME] +media_type=video +stream_index=0 +key_frame=0 +pkt_pts=N/A +pkt_pts_time=N/A +pkt_dts=N/A +pkt_dts_time=N/A +best_effort_timestamp=N/A +best_effort_timestamp_time=N/A +pkt_duration=20020 +pkt_duration_time=0.016683 +pkt_pos=391996 +pkt_size=114837 +width=1920 +height=540 +pix_fmt=yuv422p10le +sample_aspect_ratio=1:1 +pict_type=B +coded_picture_number=0 +display_picture_number=0 +interlaced_frame=1 +top_field_first=1 +repeat_pict=0 +color_range=tv +color_space=unknown +color_primaries=unknown +color_transfer=unknown +chroma_location=unspecified +[/FRAME] +[FRAME] +media_type=video +stream_index=0 +key_frame=0 +pkt_pts=N/A +pkt_pts_time=N/A +pkt_dts=N/A +pkt_dts_time=N/A +best_effort_timestamp=N/A +best_effort_timestamp_time=N/A +pkt_duration=20020 +pkt_duration_time=0.016683 +pkt_pos=506833 +pkt_size=85098 +width=1920 +height=540 +pix_fmt=yuv422p10le +sample_aspect_ratio=1:1 +pict_type=B +coded_picture_number=0 +display_picture_number=0 +interlaced_frame=1 +top_field_first=0 +repeat_pict=0 +color_range=tv +color_space=unknown +color_primaries=unknown +color_transfer=unknown +chroma_location=unspecified +[/FRAME]