From patchwork Thu Jul 16 10:46:46 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Lynne X-Patchwork-Id: 21113 Delivered-To: andriy.gelman@gmail.com Received: by 2002:a25:80ca:0:0:0:0:0 with SMTP id c10csp1119227ybm; Thu, 16 Jul 2020 03:47:01 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyr/ELuPS5KiAQVmQZ1sDXP1uWbqKatentqQ0FFe6hju9LF2ybKtZpYft8UoiwTg8jnsJta X-Received: by 2002:a1c:7f82:: with SMTP id a124mr3591602wmd.132.1594896420847; Thu, 16 Jul 2020 03:47:00 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1594896420; cv=none; d=google.com; s=arc-20160816; b=EJWygQLvtJwFqsn+UJoSSZFSFT+IXuzsJfoBqLZ75cRgUGYSzG49sQoTk/PtZt9mBr 9NuttSKKjqi1KlANYsH/WQRsw3R3qWdXkyKbth5Nwwm3pJypngdQ4H72oDYKLIKcR1dV YMejKd6G28/iD9GhUnL/ZIO9rghc25JQB1FeLScx0iCztixSNTG2zeKHPAr9A1DF7one UhT22SRfnEA7fBV8wKVl0doyZ22YYNbPVUTeJPs5OKAcjB7YpnMdl2pvn59Er0ABLjkN DkOIn/iLWvvLBUA3bl7/8qB78ayz8o9+hQrcOdaTpH8EU18LPPqPwXe3jsb+FME4Xkyh pHbA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:reply-to:list-subscribe:list-help:list-post :list-archive:list-unsubscribe:list-id:precedence:subject :mime-version:message-id:to:from:date:dkim-signature:delivered-to; bh=mLZOyYA0uo9OlvBQvOi9EBJBScRPjjZy96mOYnzooa8=; b=a0cC2kR5q+xCUwN7yzYTWVVe+h8o6lfUnIErZfGgRjlL3MY/IrL5bmDWPzGBATFN/y +zOof2Wx2ylnJWdMNTrRMqCwK0UPZvJGUj4NKtsjviAlxnwAH7V1N8vFYFkNId02sNtj CaG6EkyjVIYk4jcC/6yubx0MyxzMnay5EOcfQqTYR7xQiDiJrIVsrkBP88k8Bb75tfkd nQl1TmxK7dsaXtGS9uGFsTfZCceQc2c4Rqx9U0TSBfd8yXQzFtNthcj6AGSa8e23sDnP hmzf5CPUr/48TzCWhHflFGS9p6LfPP4fSCCst6CxA/AgJkcBNDinj4YAnL8qsKFMXo9o KRLg== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@lynne.ee header.s=s1 header.b="lsOHT2H/"; 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=QUARANTINE sp=QUARANTINE dis=NONE) header.from=lynne.ee Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id 8si4151636wme.71.2020.07.16.03.46.59; Thu, 16 Jul 2020 03:47:00 -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=@lynne.ee header.s=s1 header.b="lsOHT2H/"; 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=QUARANTINE sp=QUARANTINE dis=NONE) header.from=lynne.ee Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id F1F2968B1E1; Thu, 16 Jul 2020 13:46:54 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from w4.tutanota.de (w4.tutanota.de [81.3.6.165]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 56B8168B1E1 for ; Thu, 16 Jul 2020 13:46:47 +0300 (EEST) Received: from w3.tutanota.de (unknown [192.168.1.164]) by w4.tutanota.de (Postfix) with ESMTP id 97891106015D for ; Thu, 16 Jul 2020 10:46:46 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1594896406; s=s1; d=lynne.ee; h=From:From:To:To:Subject:Subject:Content-Description:Content-ID:Content-Type:Content-Type:Content-Transfer-Encoding:Cc:Date:Date:In-Reply-To:MIME-Version:MIME-Version:Message-ID:Message-ID:Reply-To:References:Sender; bh=oeJQngC3hFcDwFYrzKE+wQcVVPgGNSazhuLeXYk4NRc=; b=lsOHT2H/ctvR6gcCgIe/Po936/yB8xjqGRdWuhfOnJC2LRZfAss5N+CWQAVl+kWv OJJA+ZrPfAmKdbHgl5yYLmwFAG5EuCe9ta6jGPfpuiJQOBSBwFuyi/+tKuzAQoPdrEd H7Ce0pBs4DSBx2xqvUJ4MPt1Acl5hA8O9vwC5ZKEcCEWxNqiw3/UDt2VCOnYR7YupuG JW8kq62xUpn80nfhpnfjaujMi18jBMa1R7ezNHjfAIqFyiLHqmPZoaMsspWnZKL3jz1 XLgGf4T3sgGwVWPenPmiKYKSlds2SvyaDYPjPoz1ohc9moP9z0QdumuxvOReeo237b0 3XuvUNj/QQ== Date: Thu, 16 Jul 2020 12:46:46 +0200 (CEST) From: Lynne To: Ffmpeg Devel Message-ID: MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH] libaomenc: enable 8, 10 and 12 bit RGB encoding 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 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: r1x89M6fIwl4 Content-Length: 4907 RGB pixel formats are one occasion where by pixel format we mean pixel format, primaries, transfer characteristic, and matrix coeffs, so we have to manually set them as they're set to unspecified by default, despite there only being a single possible combination. Patch attached. Subject: [PATCH] libaomenc: enable 8, 10 and 12 bit RGB encoding RGB pixel formats are one occasion where by pixel format we mean pixel format, primaries, transfer characteristic, and matrix coeffs, so we have to manually set them as they're set to unspecified by default, despite there only being a single possible combination. --- libavcodec/libaomenc.c | 26 +++++++++++++++++++++----- 1 file changed, 21 insertions(+), 5 deletions(-) diff --git a/libavcodec/libaomenc.c b/libavcodec/libaomenc.c index 2ecb3de3a7..0d6a376ef0 100644 --- a/libavcodec/libaomenc.c +++ b/libavcodec/libaomenc.c @@ -310,6 +310,7 @@ static int set_pix_fmt(AVCodecContext *avctx, aom_codec_caps_t codec_caps, *img_fmt = AOM_IMG_FMT_I422; return 0; case AV_PIX_FMT_YUV444P: + case AV_PIX_FMT_GBRP: enccfg->g_profile = FF_PROFILE_AV1_HIGH; *img_fmt = AOM_IMG_FMT_I444; return 0; @@ -338,9 +339,13 @@ static int set_pix_fmt(AVCodecContext *avctx, aom_codec_caps_t codec_caps, break; case AV_PIX_FMT_YUV444P10: case AV_PIX_FMT_YUV444P12: + case AV_PIX_FMT_GBRP10: + case AV_PIX_FMT_GBRP12: if (codec_caps & AOM_CODEC_CAP_HIGHBITDEPTH) { - enccfg->g_bit_depth = enccfg->g_input_bit_depth = - avctx->pix_fmt == AV_PIX_FMT_YUV444P10 ? 10 : 12; + enccfg->g_bit_depth = enccfg->g_input_bit_depth = 10; + if (avctx->pix_fmt == AV_PIX_FMT_YUV444P12 || + avctx->pix_fmt == AV_PIX_FMT_GBRP12) + enccfg->g_bit_depth = enccfg->g_input_bit_depth = 12; enccfg->g_profile = enccfg->g_bit_depth == 10 ? FF_PROFILE_AV1_HIGH : FF_PROFILE_AV1_PROFESSIONAL; *img_fmt = AOM_IMG_FMT_I44416; @@ -749,9 +754,16 @@ static av_cold int aom_init(AVCodecContext *avctx, if (ctx->tune >= 0) codecctl_int(avctx, AOME_SET_TUNING, ctx->tune); - codecctl_int(avctx, AV1E_SET_COLOR_PRIMARIES, avctx->color_primaries); - codecctl_int(avctx, AV1E_SET_MATRIX_COEFFICIENTS, avctx->colorspace); - codecctl_int(avctx, AV1E_SET_TRANSFER_CHARACTERISTICS, avctx->color_trc); + if (avctx->pix_fmt == AV_PIX_FMT_GBRP || avctx->pix_fmt == AV_PIX_FMT_GBRP10 || + avctx->pix_fmt == AV_PIX_FMT_GBRP12) { + codecctl_int(avctx, AV1E_SET_COLOR_PRIMARIES, AVCOL_PRI_BT709); + codecctl_int(avctx, AV1E_SET_MATRIX_COEFFICIENTS, AVCOL_SPC_RGB); + codecctl_int(avctx, AV1E_SET_TRANSFER_CHARACTERISTICS, AVCOL_TRC_IEC61966_2_1); + } else { + codecctl_int(avctx, AV1E_SET_COLOR_PRIMARIES, avctx->color_primaries); + codecctl_int(avctx, AV1E_SET_MATRIX_COEFFICIENTS, avctx->colorspace); + codecctl_int(avctx, AV1E_SET_TRANSFER_CHARACTERISTICS, avctx->color_trc); + } if (ctx->aq_mode >= 0) codecctl_int(avctx, AV1E_SET_AQ_MODE, ctx->aq_mode); if (ctx->frame_parallel >= 0) @@ -1077,6 +1089,7 @@ static const enum AVPixelFormat av1_pix_fmts[] = { AV_PIX_FMT_YUV420P, AV_PIX_FMT_YUV422P, AV_PIX_FMT_YUV444P, + AV_PIX_FMT_GBRP, AV_PIX_FMT_NONE }; @@ -1084,12 +1097,15 @@ static const enum AVPixelFormat av1_pix_fmts_highbd[] = { AV_PIX_FMT_YUV420P, AV_PIX_FMT_YUV422P, AV_PIX_FMT_YUV444P, + AV_PIX_FMT_GBRP, AV_PIX_FMT_YUV420P10, AV_PIX_FMT_YUV422P10, AV_PIX_FMT_YUV444P10, AV_PIX_FMT_YUV420P12, AV_PIX_FMT_YUV422P12, AV_PIX_FMT_YUV444P12, + AV_PIX_FMT_GBRP10, + AV_PIX_FMT_GBRP12, AV_PIX_FMT_NONE };