From patchwork Thu Feb 14 04:03:36 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Philip Langdale X-Patchwork-Id: 12071 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id 8C109447B9B for ; Thu, 14 Feb 2019 06:03:56 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 791DB68A64D; Thu, 14 Feb 2019 06:03:56 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-ot1-f98.google.com (mail-ot1-f98.google.com [209.85.210.98]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 9781668A27A for ; Thu, 14 Feb 2019 06:03:49 +0200 (EET) Received: by mail-ot1-f98.google.com with SMTP id n71so8256449ota.10 for ; Wed, 13 Feb 2019 20:03:49 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:dkim-signature:from:to:cc:subject:date :message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=LwtR6zNFBgvhf3WXJHXS4s2GPiAQWDNSXePS2nYMCoA=; b=QAi4l4LKSTbA17ClREJW2qvyWs/goheubNboW3T5I5yV8REdtJIwplVSw99cPpAiHA OtcW5WZsh5jzU47YU9iB4fMPmcjUw9GsGVB/WrQ/i1lO4t2PhQOOZnxyUa/DGlr70nEY D4GFyZ/3/Zr0RKZTksU49Xw7gUwzgN3PzcUjgFcpDX2gsNOa6DeDHJtRrlYAP7V0ups/ F38HstQUuCUeD1YY85ouJuVqJEI+/tCWND1g0KLNahZKIn+OQkwjzWGRzoIKp4RFAuEc WYKeO2mOhBtjp7JCaX/ylcioQktDWXSfuvTG6a9h8Ij9YTmJb4a1d2xIavnljS1t4wig R4Hg== X-Gm-Message-State: AHQUAub7RVCsIiDORDjzXUq4Ehtj+7+7F6Ib1Q/oKs57UhCZI2zMehhq K+oZ828oUH2CpvLTCSmSZvkJ2X9gXcRozCN0dtB7SiySzrcYWg== X-Google-Smtp-Source: AHgI3IY2xqsS8xwCZmY6QHHlf+xXwK9VuV4Eaud1/hfqkgkyLPjGeX3eRFEmXztWhR9gE/kLrOWjGangBxFu X-Received: by 2002:aca:e0d6:: with SMTP id x205mr983681oig.131.1550117027823; Wed, 13 Feb 2019 20:03:47 -0800 (PST) Received: from mail.overt.org (155.208.178.107.bc.googleusercontent.com. [107.178.208.155]) by smtp-relay.gmail.com with ESMTPS id q8sm124049otk.9.2019.02.13.20.03.47 for (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Wed, 13 Feb 2019 20:03:47 -0800 (PST) X-Relaying-Domain: gapps.overt.org Received: from authenticated-user (mail.overt.org [107.178.208.155]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.overt.org (Postfix) with ESMTPSA id 07D1D40F43; Wed, 13 Feb 2019 22:03:46 -0600 (CST) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=overt.org; s=mail; t=1550117027; bh=W508D4oCqHfOUjY/Cv8Ayy+9jvslHbWpc82FwLapK68=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Gp9DJEVzceQmy/UJ8JER6s1SGZxJbPYow6XNHEZZji/7EhKIrthSt4mPQNncHXoYX NNQQwP4Y6mBTwdOejYJzghSlp8FBGa68SFUK0Rs+eyLlNcahTiysI7/aH2nNlsq0mC YyWswSugTl4GvraurryE1vS27ZRoSfEqUlhrPSqg/id+ao9LxSIek2Wdf269kTonzO VSSfTtUd/XdfdrDLm2MuANjWB+lpxdO3C7YXA5W3ODNiZz8WJdmoeQq7mzzDA8+DbQ 2EjsSNx3s17AEgvqiRkfnRkSe5eOcKk+KjCQFhsAUcY8XoMazG+jL8eTFh1f9xMiKN o2Mb5hD3GgjRw== From: Philip Langdale To: ffmpeg-devel@ffmpeg.org Date: Wed, 13 Feb 2019 20:03:36 -0800 Message-Id: <20190214040339.13789-2-philipl@overt.org> In-Reply-To: <20190214040339.13789-1-philipl@overt.org> References: <20190214040339.13789-1-philipl@overt.org> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 1/4] avcodec/hevc_ps: Expose all SPS and PPS range extension flags 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: Philip Langdale Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" We need all the flags to be exposed to be able to pass them on to HW decoders. I did not attempt to nuance any of the warnings about flags being unsupported as there's no way, at the point we extract flags, to say whether an HW decoder is being used. Signed-off-by: Philip Langdale --- libavcodec/hevc_ps.c | 19 ++++++++----------- libavcodec/hevc_ps.h | 4 ++++ 2 files changed, 12 insertions(+), 11 deletions(-) diff --git a/libavcodec/hevc_ps.c b/libavcodec/hevc_ps.c index ea984af0a1..80df417e4f 100644 --- a/libavcodec/hevc_ps.c +++ b/libavcodec/hevc_ps.c @@ -1102,20 +1102,17 @@ int ff_hevc_parse_sps(HEVCSPS *sps, GetBitContext *gb, unsigned int *sps_id, decode_vui(gb, avctx, apply_defdispwin, sps); if (get_bits1(gb)) { // sps_extension_flag - int sps_range_extension_flag = get_bits1(gb); + sps->sps_range_extension_flag = get_bits1(gb); skip_bits(gb, 7); //sps_extension_7bits = get_bits(gb, 7); - if (sps_range_extension_flag) { - int extended_precision_processing_flag; - int cabac_bypass_alignment_enabled_flag; - + if (sps->sps_range_extension_flag) { sps->transform_skip_rotation_enabled_flag = get_bits1(gb); sps->transform_skip_context_enabled_flag = get_bits1(gb); sps->implicit_rdpcm_enabled_flag = get_bits1(gb); sps->explicit_rdpcm_enabled_flag = get_bits1(gb); - extended_precision_processing_flag = get_bits1(gb); - if (extended_precision_processing_flag) + sps->extended_precision_processing_flag = get_bits1(gb); + if (sps->extended_precision_processing_flag) av_log(avctx, AV_LOG_WARNING, "extended_precision_processing_flag not yet implemented\n"); @@ -1127,8 +1124,8 @@ int ff_hevc_parse_sps(HEVCSPS *sps, GetBitContext *gb, unsigned int *sps_id, sps->persistent_rice_adaptation_enabled_flag = get_bits1(gb); - cabac_bypass_alignment_enabled_flag = get_bits1(gb); - if (cabac_bypass_alignment_enabled_flag) + sps->cabac_bypass_alignment_enabled_flag = get_bits1(gb); + if (sps->cabac_bypass_alignment_enabled_flag) av_log(avctx, AV_LOG_WARNING, "cabac_bypass_alignment_enabled_flag not yet implemented\n"); } @@ -1686,9 +1683,9 @@ int ff_hevc_decode_nal_pps(GetBitContext *gb, AVCodecContext *avctx, pps->slice_header_extension_present_flag = get_bits1(gb); if (get_bits1(gb)) { // pps_extension_present_flag - int pps_range_extensions_flag = get_bits1(gb); + pps->pps_range_extensions_flag = get_bits1(gb); skip_bits(gb, 7); // pps_extension_7bits - if (sps->ptl.general_ptl.profile_idc == FF_PROFILE_HEVC_REXT && pps_range_extensions_flag) { + if (sps->ptl.general_ptl.profile_idc == FF_PROFILE_HEVC_REXT && pps->pps_range_extensions_flag) { if ((ret = pps_range_extensions(gb, avctx, pps, sps)) < 0) goto err; } diff --git a/libavcodec/hevc_ps.h b/libavcodec/hevc_ps.h index 1fbda199e3..bbaa9205ef 100644 --- a/libavcodec/hevc_ps.h +++ b/libavcodec/hevc_ps.h @@ -284,13 +284,16 @@ typedef struct HEVCSPS { int max_transform_hierarchy_depth_inter; int max_transform_hierarchy_depth_intra; + int sps_range_extension_flag; int transform_skip_rotation_enabled_flag; int transform_skip_context_enabled_flag; int implicit_rdpcm_enabled_flag; int explicit_rdpcm_enabled_flag; + int extended_precision_processing_flag; int intra_smoothing_disabled_flag; int high_precision_offsets_enabled_flag; int persistent_rice_adaptation_enabled_flag; + int cabac_bypass_alignment_enabled_flag; ///< coded frame dimension in various units int width; @@ -365,6 +368,7 @@ typedef struct HEVCPPS { int num_extra_slice_header_bits; uint8_t slice_header_extension_present_flag; uint8_t log2_max_transform_skip_block_size; + uint8_t pps_range_extensions_flag; uint8_t cross_component_prediction_enabled_flag; uint8_t chroma_qp_offset_list_enabled_flag; uint8_t diff_cu_chroma_qp_offset_depth;