From patchwork Sun Sep 30 22:26:10 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Mark Thompson X-Patchwork-Id: 10531 Delivered-To: ffmpegpatchwork@gmail.com Received: by 2002:ab0:73d2:0:0:0:0:0 with SMTP id m18csp1002792uaq; Sun, 30 Sep 2018 15:32:58 -0700 (PDT) X-Google-Smtp-Source: ACcGV635vNk/UfsAeQOVJYbHheR+hEfhTEjB/exDA04dIj2Xs7zBGhfdSaEp6I3GFVd21tTEp1Cs X-Received: by 2002:adf:e403:: with SMTP id g3-v6mr4901830wrm.96.1538346778456; Sun, 30 Sep 2018 15:32:58 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1538346778; cv=none; d=google.com; s=arc-20160816; b=fKfBrd7elracSp6+N0PPVRF2LXJPbeQRwSpRNhCZHjho514FGBSckzpxszHha1Qz9c 0remIasAFR1/Pl3/zTrDUCYl26hMsyl3JGmX0cP0vGRMNX/TFBgr2bFiJALIJhDhJX/D hUkrQd1wtC/TbMtG84NTjaPkHCbcBZIe4XHDUb4RYT/v9hoj7MishXhC7wugE5+0YdNd gO90CJLw2ZfPOw86lrGZWdKNHY0cerLm5J+x/LMw9tphrz7Cqi3ANUdmdrpKxkkrSViR T+xF0QkoM6N7UiqMfuvhOIHiBEyxKtW85OucBHkwuNPT/r9HZY4/t4jwABixX97+D685 cYcQ== 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:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:references:in-reply-to:message-id:date :to:from:dkim-signature:delivered-to; bh=QkqoeeBloVRmGb5Tvh73m16NXkgic4yxrj/bGYYahfE=; b=vqtGy6Jbe8biFKjClyxljY1cHa9pLz8vVEAJoMncNCSrZN7dO++jOd496rPbbD0HU1 6MT/iMphcD9MYFQ9b/onem+d0+yvrrqLStD4Q+bQFKa8SKkmWJkjjzVAbKP/LUaqAS3U xB94/A5VAr3SelG8OrfkpgbKBbdjiarGXACXG1w2wpfUJ5GjzQkS5KoCk/IedqZD87Y2 5uDNm7D082eOjMUIa97XTr/A+ztVvj0byRDevriBfqtqJGRkVFR/e6QjNDI0viMBSlOK MN7Y77rMo0PurO1/TAiyg+wuD2eoSgMkJbGTuGpRg1hxWbyvhQHaek+pb3gQK19k8b+E kCTg== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@jkqxz-net.20150623.gappssmtp.com header.s=20150623 header.b=HCZURvcn; 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 r13-v6si9003473wrw.212.2018.09.30.15.32.58; Sun, 30 Sep 2018 15:32:58 -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=@jkqxz-net.20150623.gappssmtp.com header.s=20150623 header.b=HCZURvcn; 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 C1B97689E62; Mon, 1 Oct 2018 01:32:38 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wm1-f53.google.com (mail-wm1-f53.google.com [209.85.128.53]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 8EBE9689AF7 for ; Mon, 1 Oct 2018 01:32:32 +0300 (EEST) Received: by mail-wm1-f53.google.com with SMTP id n23-v6so6792351wmc.1 for ; Sun, 30 Sep 2018 15:32:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=jkqxz-net.20150623.gappssmtp.com; s=20150623; h=from:to:subject:date:message-id:in-reply-to:references; bh=oYD8Y4XYwEV7p89GCH6+WZPsgfKrfITt5o+dLaGdxUg=; b=HCZURvcngaciyp3sUfub+ip9RZAyvGS60pGjfVXRLlhLWBKYbBhL4AehxNJcPWwyHZ Z4JTbTuqD9mMM+xRmVzwsDm2SKbjtgc9X8cPYyfff27mCLUUxQsO5Liaf+ZlFr0ZCjQk /GLgcsZNLLeQxOof47IWceXeG6y622Pd/cozp+1oINvEsAolg+lJ55vxjPtxxtr76uc8 hmVj9lwa0xXm8i8IWsegnpDK0i86PHcLphD2He727YDESdSX9nOttMyL3UCrmsI+f8Ii pdgtjL8kGyD5at5edaas21VJ3DsB8TY2ZuvgkOZGA301UiZEVAdSzpasabyTc7u9/9gV m2Ug== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references; bh=oYD8Y4XYwEV7p89GCH6+WZPsgfKrfITt5o+dLaGdxUg=; b=Ab6FPry79gzzLgD3aGCfTHGIYTozMGDvtpZcIiHDSkmM4ckLom6q1TWbab7ZnDJSg1 H5jGPLiBnF57+UyryJike5a1VZF5VIx976Zrg3vBOMz62BwHNILPGGemDC8T81ma647l 9CDXsktrl0PJrbleaavyDzA2VC3KV26O31REpiLuxg7gwWaCoPPkWbqmbU5IHJA3dgQg ludGR2Ti9Dj6h6Dm7RgtUK97AA8HXN8xZMsTbULKoDunbLjN8dYcsSZZ2013YJi6oSof ovXOuKsqu8bjlXhnGnRkUkznlKn0Odzt/Y8+XBnea05lacnfb6qzU0nYC/wjlMblM2WQ dl6g== X-Gm-Message-State: ABuFfoj9d6tk9rdSyA/5GGjEEVOu+W3uSJwlLGwawdD2JFE5b2CD6n29 0oUCjr2U9RtUxDoSIyHVkkvlZB3KS+A= X-Received: by 2002:a1c:b90c:: with SMTP id j12-v6mr7773247wmf.32.1538346378616; Sun, 30 Sep 2018 15:26:18 -0700 (PDT) Received: from rywe.jkqxz.net (cpc91242-cmbg18-2-0-cust650.5-4.cable.virginm.net. [82.8.130.139]) by smtp.gmail.com with ESMTPSA id w4-v6sm4260773wra.83.2018.09.30.15.26.17 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 30 Sep 2018 15:26:17 -0700 (PDT) From: Mark Thompson To: ffmpeg-devel@ffmpeg.org Date: Sun, 30 Sep 2018 23:26:10 +0100 Message-Id: <20180930222612.26550-3-sw@jkqxz.net> X-Mailer: git-send-email 2.18.0 In-Reply-To: <20180930222612.26550-1-sw@jkqxz.net> References: <0446bc23-5dcb-515a-4963-f676ec6d80dc@jkqxz.net> <20180930222612.26550-1-sw@jkqxz.net> Subject: [FFmpeg-devel] [PATCH v2 3/5] lavc/h265_profile_level: Do not allow high tier at level < 4 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 MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" --- libavcodec/h265_profile_level.c | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/libavcodec/h265_profile_level.c b/libavcodec/h265_profile_level.c index 692252bb4d..126f8dbc2a 100644 --- a/libavcodec/h265_profile_level.c +++ b/libavcodec/h265_profile_level.c @@ -175,7 +175,7 @@ const H265LevelDescriptor *ff_h265_guess_level(const H265RawProfileTierLevel *pt int max_dec_pic_buffering) { const H265ProfileDescriptor *profile; - int pic_size, lbr_flag, hbr_factor; + int pic_size, tier_flag, lbr_flag, hbr_factor; int i; if (ptl) @@ -189,10 +189,13 @@ const H265LevelDescriptor *ff_h265_guess_level(const H265RawProfileTierLevel *pt pic_size = width * height; - if (ptl) - lbr_flag = ptl->general_lower_bit_rate_constraint_flag; - else - lbr_flag = profile->lower_bit_rate > 0; + if (ptl) { + tier_flag = ptl->general_tier_flag; + lbr_flag = ptl->general_lower_bit_rate_constraint_flag; + } else { + tier_flag = 0; + lbr_flag = profile->lower_bit_rate > 0; + } if (profile->profile_idc == 1 || profile->profile_idc == 2) { hbr_factor = 1; } else if (profile->high_throughput) { @@ -208,6 +211,9 @@ const H265LevelDescriptor *ff_h265_guess_level(const H265RawProfileTierLevel *pt const H265LevelDescriptor *level = &h265_levels[i]; int max_br, max_dpb_size; + if (tier_flag && !level->max_br_high) + continue; + if (pic_size > level->max_luma_ps) continue; if (width * width > 8 * level->max_luma_ps) @@ -222,7 +228,7 @@ const H265LevelDescriptor *ff_h265_guess_level(const H265RawProfileTierLevel *pt if (tile_cols > level->max_tile_cols) continue; - if (ptl && ptl->general_tier_flag) + if (tier_flag) max_br = level->max_br_high; else max_br = level->max_br_main;