From patchwork Tue Aug 17 21:00:31 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: =?utf-8?q?Jan_Ekstr=C3=B6m?= X-Patchwork-Id: 29595 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6602:2a4a:0:0:0:0 with SMTP id k10csp3312347iov; Tue, 17 Aug 2021 14:00:51 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzWMY/CXfg7Ok82ptJZNNX4r0NHETmBtD4P/sFTYzZ5DVJ2e4fAawcQlzpr8nUMwoHcXmkF X-Received: by 2002:a17:906:504:: with SMTP id j4mr5749169eja.245.1629234051078; Tue, 17 Aug 2021 14:00:51 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1629234051; cv=none; d=google.com; s=arc-20160816; b=LyhsWGdhPxXtXW+50i6dh1KIJx7eXDFhhx/QunwjBcvfk9pDy9qQhFppHWqOpl31k6 HFKqNQSM7C51FXYu0c4edWErp97abB1ITdhPLf+GdgJd83Q3vZK+Av0CnhOOhoBK5QFp 86vdDfnllblIuziw1doDhyTagHAELUv4qFGEzdx3Pg0DPytxC9cbGiPPoTFV0CKI4DOn mcCxGdX8u9EzL6sa4UsOsUurTcpOfYTbvkq5oIJa656ru5Xf8e5KF9b3oBogiHQnebkC YQEvdl7v58ycKorSegQHFFzNfE+fLoi7bOMortHQv3gqhhEexXC5TVoXcbnRp2mQNwld eztw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:reply-to:list-subscribe :list-help:list-post:list-archive:list-unsubscribe:list-id :precedence:subject:mime-version:message-id:date:to:from :dkim-signature:delivered-to; bh=yvEhM3aM/DKDeExfeuG1vEyP+wcxxjDStgPeF1o+/sI=; b=DIykEdTVPd1SK+ln0ABlDgnFzDonoCBP0imSFPNpfnzKOSLipZYMAndCEpdN6Qi1ez W7unV55UVHN3vrxdckkl9Fd62YtLgaWktTNgqty0SoYYoNe6wC1nkhxAftyn0KVUcXmM bdtsl5BHKMFpo0IrC0X+GLpyT5ebHkesnXIoqht+CSeU0flc+sWaJftWtr+zhlY9cNI0 ERIZhKMJIo2ez9X78UjiVontiHZBoFlkgFZ+vkfhmlCK/4S+ZiAwuPREPprRutQjsOO3 3yTNzM8A38gDydAE3Gu6X95sxGtkvVSrhsrXLCxz4Hz6X3ROyzPgDTWnE2bTjn7X63KC 1mOw== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20161025 header.b=J9BxD1Xx; 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; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id s7si3532355edw.218.2021.08.17.14.00.50; Tue, 17 Aug 2021 14:00:51 -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=@gmail.com header.s=20161025 header.b=J9BxD1Xx; 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; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id ECC3668A5AC; Wed, 18 Aug 2021 00:00:46 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-lj1-f169.google.com (mail-lj1-f169.google.com [209.85.208.169]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 79E486809BA for ; Wed, 18 Aug 2021 00:00:39 +0300 (EEST) Received: by mail-lj1-f169.google.com with SMTP id y7so1025694ljp.3 for ; Tue, 17 Aug 2021 14:00:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id:mime-version :content-transfer-encoding; bh=3q0VqNk5Ug8gGM0YcjM3ymdpcSgG8TIkMv2HtMWlSgc=; b=J9BxD1XxYC2vp18lSCeSddgR93vrKrIZ132UIBweA8GWN1rl4Y4lvxV/gkkUbY315a jr6x5TCBZ/1Fqx5HjKjeeOav3IfBwdP9mzjgaM3JVYyVOJR7MLBFHuEwGMMsISxvopbU bfinZV9ejGnlT1Kbmer71xZAsvsqHv1qsIXSWFD1/pY6DV1EsMeLWA8+IcALNIp7GWGC ErEgAe7tR1lkwxGu2e5G64++v52ybGI3PLkfkTknK1clcXXj2b0TWndx0lTQgGaJrjz9 IKbZO9Bygc17uKdFuX0VlYWVVSGyEhLjfeBmMeE9YaCK54J7vkVt0icWVzr54XUgidqI 5XlQ== 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:mime-version :content-transfer-encoding; bh=3q0VqNk5Ug8gGM0YcjM3ymdpcSgG8TIkMv2HtMWlSgc=; b=fddgQCsQY/v7iIX6Bn9ws5LweE7dPVVHRNFgdMaMVv5n8JzQlUL+9EHA2dtrlOrEP4 euP2MODeCRq6HEuoyPSk6tdnQyOEBkgLUvmopCLUgSkVwC3+lVEABW62zhQXu9ymE0WX 0IQklaVnideuqJ1Pi4CD6jraY6JzrWv95/FbSDxnSJnEzfRwxEZeUDnDxijNXXZ+iN7u SGkItbvpWRGtry37R3rJWydYrcttLDWvasc9cA4f4Gnl6vfnreLRvf6+ku+Fhpu8fFwo ImmL0vpACuU2n6ZE6C3/GkYflx+vsgBnyWAixjLUPVOcrms5Uf5lQ3t1OWmTAouGGsAU DdtA== X-Gm-Message-State: AOAM531U7QfA54DCX+GZ0fiX6pug5pYZuRnB7IiKpoWNztmwZHdROHcD mPimP97pxz59J1ihCuE/wstLkCiZ6MI= X-Received: by 2002:a2e:84ca:: with SMTP id q10mr4870290ljh.490.1629234038556; Tue, 17 Aug 2021 14:00:38 -0700 (PDT) Received: from localhost.localdomain (91-159-194-103.elisa-laajakaista.fi. [91.159.194.103]) by smtp.gmail.com with ESMTPSA id b4sm251973lfo.94.2021.08.17.14.00.37 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 17 Aug 2021 14:00:38 -0700 (PDT) From: =?utf-8?q?Jan_Ekstr=C3=B6m?= To: ffmpeg-devel@ffmpeg.org Date: Wed, 18 Aug 2021 00:00:31 +0300 Message-Id: <20210817210032.17597-1-jeebjp@gmail.com> X-Mailer: git-send-email 2.31.1 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 1/2] avcodec/libx264: leave full range flag unchanged if unknown X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 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 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: Rlu9deB21fmr By default the x264 full range flag is set to -1. By not setting it to something else, we can let libx264 handle the RGB case. Additionally, change the preference order to user-specified range first, and then any fall-back logic left for the YUVJ pix_fmts. Fixes the capture part of #9374 --- libavcodec/libx264.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/libavcodec/libx264.c b/libavcodec/libx264.c index 9afaf19547..d48e142e41 100644 --- a/libavcodec/libx264.c +++ b/libavcodec/libx264.c @@ -857,10 +857,12 @@ static av_cold int X264_init(AVCodecContext *avctx) x4->params.i_slice_count = avctx->slices; - x4->params.vui.b_fullrange = avctx->pix_fmt == AV_PIX_FMT_YUVJ420P || - avctx->pix_fmt == AV_PIX_FMT_YUVJ422P || - avctx->pix_fmt == AV_PIX_FMT_YUVJ444P || - avctx->color_range == AVCOL_RANGE_JPEG; + if (avctx->color_range != AVCOL_RANGE_UNSPECIFIED) + x4->params.vui.b_fullrange = avctx->color_range == AVCOL_RANGE_JPEG; + else if (avctx->pix_fmt == AV_PIX_FMT_YUVJ420P || + avctx->pix_fmt == AV_PIX_FMT_YUVJ422P || + avctx->pix_fmt == AV_PIX_FMT_YUVJ444P) + x4->params.vui.b_fullrange = 1; if (avctx->colorspace != AVCOL_SPC_UNSPECIFIED) x4->params.vui.i_colmatrix = avctx->colorspace; From patchwork Tue Aug 17 21:00:32 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: =?utf-8?q?Jan_Ekstr=C3=B6m?= X-Patchwork-Id: 29594 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6602:2a4a:0:0:0:0 with SMTP id k10csp3312471iov; Tue, 17 Aug 2021 14:01:01 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwNxmC1XTR1rn61gyWcGgj5gzElUD5WfVZO4TrWF2smHoDr3VAuZIljwZVr1JNTb/SBI2I0 X-Received: by 2002:a17:906:af4f:: with SMTP id ly15mr5998444ejb.175.1629234061182; Tue, 17 Aug 2021 14:01:01 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1629234061; cv=none; d=google.com; s=arc-20160816; b=dvG9HZsRGt4nG0c5iKKzdeUkLewzhs8dpqGILTGUupm3qvBYU9CsorH5jYrsuXLfc3 L6mJFSl6LV9cF8lDACTgvryASYmsowBwmlyCxz0Dmpwubgj69hdkTrLwSw9pfhdOOeHZ 1gfhGY7Svdiycx+AinbJV7BDhcagqiIJALtbiXgjHAq47G6flMr2oqm60GQCjnSECEdl +d4V174NPCwv0u78ekUHMRkhhJNnXlSdmWYcM/JnPGvxf6hSQhttdmW71B8vDGuidT12 JiVTkUV/+InS6MPmSG0dTkYaz6AKPZk4rNGeIiPKylZYB4QAY1DYjql5wi7DuHAbaeZ+ zaOw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:reply-to:list-subscribe :list-help:list-post:list-archive:list-unsubscribe:list-id :precedence:subject:mime-version:references:in-reply-to:message-id :date:to:from:dkim-signature:delivered-to; bh=jAQH9pgGGMhEnrLjSG07aRxppCbtK3ltbOW7M4IQL6E=; b=N4ymu7bLrSTJQ++CPc2f4XIhw24nua43hFiZ346bDvzVaVpRF4xCpcR5FT0+cKcpj3 pMeUugF6HV/3IX+tJkRmCLtp0mIOH3er0+yu9b8SuRrHvQt1wEzuJFFf5cxM7VZaWPw8 JYXPa0D2Es5v+g/WGcs7Oi+vqXsDhB+EHFf/T7UA79PD77mxLckFakepUPQkIvhXkm8P lF/2l5niLHOX6oazb0QH2p0GEieCb6o3CRbLE1xBXwpsMlKY2HimNPqtXqx2uHp2meLA t/j8fDfw60gdbjyM3ccfpWGyTX69V3kL4dSDNxyJI9G+XF9Ei25jpAuxy8F3PWRYM713 +Zcw== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20161025 header.b=MjMqEVeq; 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; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id f19si3392952ejz.64.2021.08.17.14.01.00; Tue, 17 Aug 2021 14:01:01 -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=@gmail.com header.s=20161025 header.b=MjMqEVeq; 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; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id EC850680BBB; Wed, 18 Aug 2021 00:00:47 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-lf1-f52.google.com (mail-lf1-f52.google.com [209.85.167.52]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id CBEC06809BA for ; Wed, 18 Aug 2021 00:00:39 +0300 (EEST) Received: by mail-lf1-f52.google.com with SMTP id i28so17232880lfl.2 for ; Tue, 17 Aug 2021 14:00:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=Q5hRkZ64q3tEA7r5lanBu8IZ5TsxvIXwVo30rvaXaXI=; b=MjMqEVeqJUeZmTZwlGmilD3VpnSqCph+BBlpvdNG9+J5/FYvLl5+qGXZISpH9UMDFv Qo39lhJ/SnUF+7P1ZTutBx5rI9PU8UJSdp35XFwS85/0bRit0Sm5zdFcL+gceA9I7ntv kFrLDRXbD2QIfVyWEMrg+SroJ4Xe8/A3BDFypat0hfHXXOlUByYuoXCTrln03g+VrrFu TcuXv82eeE4ddVeP3eDEEe1OBNg8rzYn81GS+jSfzlEdMiqowjMQEvxFFXIVf18W1Eyx ZxetuZQ9ESPhcxnnruNRQ08KJhTzehUyvTtHXNCkQOcJRckJVifDiPX5WNgpWjS8b+Tq OI2A== 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:mime-version:content-transfer-encoding; bh=Q5hRkZ64q3tEA7r5lanBu8IZ5TsxvIXwVo30rvaXaXI=; b=VKUlI+92lueW+3ewXNNsiajk3H2Pg8QJTTDQ9lXdFvSIq07pzzqPmnUh90M7flFmnT KbrpmszK2hDdwSEb4aS82aE9ifaEdqAqdZoU0x1HiOQAD4JboEQCuSCoW6EzhUj6Tvvh h/zBqs7l+vGAkU86m9prpg6JAiUsYTRhPOi5XEd2wPQk0d+vzjsVcBks4Srug6Xsfm+u FGtMf/+bECJLDepyHbgxRI74sFLPEgKW5zKk4/bNMlTmc4gs+/wKWF4VT9YqR4xM6NZb pOvR710b5IzVj8IqalSS+PQKZoFOXqv/palzyY/LV8Fk0BAMxV9bOcKlAQKUny1g85Zq qOqw== X-Gm-Message-State: AOAM5306/G4xGNydeAYJnDdvjdjwrK1ADjZK7FHifyZz/eNTbKm0I5jL 4WZE5KLy7uhQiS+kiTzuaWFBWpFWwkc= X-Received: by 2002:a05:6512:11ea:: with SMTP id p10mr3817786lfs.152.1629234039139; Tue, 17 Aug 2021 14:00:39 -0700 (PDT) Received: from localhost.localdomain (91-159-194-103.elisa-laajakaista.fi. [91.159.194.103]) by smtp.gmail.com with ESMTPSA id b4sm251973lfo.94.2021.08.17.14.00.38 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 17 Aug 2021 14:00:38 -0700 (PDT) From: =?utf-8?q?Jan_Ekstr=C3=B6m?= To: ffmpeg-devel@ffmpeg.org Date: Wed, 18 Aug 2021 00:00:32 +0300 Message-Id: <20210817210032.17597-2-jeebjp@gmail.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210817210032.17597-1-jeebjp@gmail.com> References: <20210817210032.17597-1-jeebjp@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 2/2] avcodec/libx265: improve full range flag setting logic X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 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 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: W1Sm0jhcQ+M8 Unlike libx264, libx265 does not have a separate "unspecified"/"auto" default for color range, so we do always have to specify it. Thus, we are required to handle the RGB case on the libavcodec side to enable the correct value to be written out in in case of RGB content with unspecified color range being received. In other words: 1. If the user has set color range specifically, follow that. 2. If the user has not set color range specifically, set full range by default in case of RGB and YUVJ pixel formats. --- libavcodec/libx265.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/libavcodec/libx265.c b/libavcodec/libx265.c index 9395120471..b5c94b64a3 100644 --- a/libavcodec/libx265.c +++ b/libavcodec/libx265.c @@ -181,10 +181,15 @@ static av_cold int libx265_encode_init(AVCodecContext *avctx) ctx->params->vui.bEnableVideoSignalTypePresentFlag = 1; - ctx->params->vui.bEnableVideoFullRangeFlag = avctx->pix_fmt == AV_PIX_FMT_YUVJ420P || - avctx->pix_fmt == AV_PIX_FMT_YUVJ422P || - avctx->pix_fmt == AV_PIX_FMT_YUVJ444P || - avctx->color_range == AVCOL_RANGE_JPEG; + if (avctx->color_range != AVCOL_RANGE_UNSPECIFIED) + ctx->params->vui.bEnableVideoFullRangeFlag = + avctx->color_range == AVCOL_RANGE_JPEG; + else + ctx->params->vui.bEnableVideoFullRangeFlag = + (av_pix_fmt_desc_get(avctx->pix_fmt)->flags & AV_PIX_FMT_FLAG_RGB) || + avctx->pix_fmt == AV_PIX_FMT_YUVJ420P || + avctx->pix_fmt == AV_PIX_FMT_YUVJ422P || + avctx->pix_fmt == AV_PIX_FMT_YUVJ444P; if ((avctx->color_primaries <= AVCOL_PRI_SMPTE432 && avctx->color_primaries != AVCOL_PRI_UNSPECIFIED) ||