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) ||