From patchwork Sun Jun 6 05:16:12 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Valerii Zapodovnikov X-Patchwork-Id: 28108 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a6b:b214:0:0:0:0:0 with SMTP id b20csp2455061iof; Sat, 5 Jun 2021 22:16:25 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxhh35ceOaASLaA7QoO6TBlvKF3bIhqBxp5mjVFO99UmiogAo5//NS8sjX84g1f2B5mI6SJ X-Received: by 2002:aa7:d5c6:: with SMTP id d6mr13275402eds.290.1622956584922; Sat, 05 Jun 2021 22:16:24 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1622956584; cv=none; d=google.com; s=arc-20160816; b=ccFzIXRsgZ6lk/lWoEtrHwOCuC0n4pVlMPwClkEsI2zUptywPvS2vcQTs9RbDO2LI7 tg+4Z+B1a5vPDoIsE6jv/k1xaEQSXY6jTI6bH8dFTlBJfEJmnMP8y6MEU5iB1E5DxSg8 hKI9Ji5PAeoa5H072Yi4DTKzAAlbGFHWqL2nfrB1vmtqFZOANy/tGgLuGLJ1KVvJTz9n uRLrLpwJByzM/HlNuDu1/9AiiwljMy/tQmp5KGiA8DNrE+mWZP78F+Ws9orlGeTHTzV2 9nOogzOKDhV1YH+JlEpROPU/fLt47Ic7mzv76s/kCUUlLIl6OxQANtbWohJiCBQo+uVQ sPCA== 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=9+yuyox+d8gpAOd4X+JCX406OcuqRMUvMNAHlWS0NQU=; b=mbx5flvPYZvmiLXsnq2FWhwZnV4ESfAIAFUzM2WOhxHqymQTer3sSHck0wNoq5ahSc zTABSWUXhhdB893L65hVVo4x4n3Ehl0Eo0vn6X1EZtPwFm5M6g+iTZP0n52laJ6G4/lM OzlB5+wYrslS/u5nWk0scDX9PTZf14oPyE8kVQiwq5wvdHg33TNswWQ8AS1jA8hh2+cx Lq72sbdC2zdxx4ujZ3+WxrspTNJcrqgdbmrPwjdhXt/z+qPV/+hxHBkXUfowh6nhpY2k r3kmLEAM/R2VJiQ4CYBw3ra2g0Ku5pQfUqc8uXoVnV+LOrOqp6881CwN/gqgaGt/El5o y+ZA== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20161025 header.b=TtQDBHG7; 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 b3si8874766edh.532.2021.06.05.22.16.24; Sat, 05 Jun 2021 22:16:24 -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=TtQDBHG7; 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 1FC2E68A3F4; Sun, 6 Jun 2021 08:16:21 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-lf1-f53.google.com (mail-lf1-f53.google.com [209.85.167.53]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 7565268A552 for ; Sun, 6 Jun 2021 08:16:14 +0300 (EEST) Received: by mail-lf1-f53.google.com with SMTP id t7so13441302lff.0 for ; Sat, 05 Jun 2021 22:16:14 -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=seqPW0Ap4ypdhz1ic0rD4LsyBwTQACV/G9yMHE/c6W0=; b=TtQDBHG7AFho88PiiIfwn49NnG3GR+//MSncQozVm8PU3Zl2jpQSOaNFfCQvLjAfQN zbrtS4swPJAfoz5f1dhOPT8Fl8tLhk/MnTnxZ2GkxzRrsPdjNKWYvhibgyF722kZ6uri 2NG1OK73QoxCYrFrizwmnczTK8JUAL0SBYSbiJAtg0jXMP+zklrX58C+1y2DiuFwYLk0 +TEtrfkrwb+hyugRWfkiQ2nVHVVVScHXRHYrXJOpk58wxeG8NZj7Fa2rDJ+gM9sefKRc 8xMVQZtoHXuu1lGsXY80SSRiG/ielTICv/+EZMH9Kmlcx1crCpvQgYCfF266QBaTq+/E 85Gg== 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=seqPW0Ap4ypdhz1ic0rD4LsyBwTQACV/G9yMHE/c6W0=; b=PBjup0vGBUZh5RFoYdcjLal9U5oiXA+77Uo/DeocPpg/eSMJe5VkHjG+6fFtAaCiIC 3X2FHt4RE5xcvJ0C/yLWeRxbuYwCyCZwJOK5ymZFkLcicEGw3onjuTbzhmC/y5PSNDST tifg/CYxzyddS1DrjDHxHxwn9Kpjl4emStXVf3ALlPVInu2B+HjaNuroVyPekG7GFw28 R2CTlRjFN1pBA7VCSn4NU+myOYGyDu40XNp7Kf+IR8Q1UPCSwsAeA+tepoZbYtw4o8lb 64lGHMtfgGZEHgBmOaimNjbOY+XPdhvdU/fEPcZfL6oB9h+abuRHMplaiJX+kfRgLQkC Bc7w== X-Gm-Message-State: AOAM5308QTSLX+9zAU8BxiWGYuFB1al+Zc/CNDyBIQE8E+eIBftQjHFT YIvMxgFAFYsOaOX90BqAl52HUwHyJwm5Ew== X-Received: by 2002:a05:6512:3483:: with SMTP id v3mr8124323lfr.154.1622956573590; Sat, 05 Jun 2021 22:16:13 -0700 (PDT) Received: from localhost ([109.252.91.149]) by smtp.gmail.com with ESMTPSA id h19sm866585lfc.225.2021.06.05.22.16.13 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sat, 05 Jun 2021 22:16:13 -0700 (PDT) From: Valerii Zapodovnikov To: ffmpeg-devel@ffmpeg.org Date: Sun, 6 Jun 2021 08:16:12 +0300 Message-Id: <20210606051612.89211-1-val.zapod.vz@gmail.com> X-Mailer: git-send-email 2.30.2 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v3] lavc/aomdec: Allow RGB decoding 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: Ts91dYZVmq4e Yes, RGB is signalled by Identity matrix if and only if XYZ is not in transfer. XYZ primaries are just normal primaries that can be used for normal RGB, no problem, so I do not check for them. No need to test for sRGB primaries (that is AVCOL_PRI_BT709), as ffplay does not know what that is (is not color managed), but mpv will do that automatically. This will also support other transfers like DCI-P3 / DCI-D65 one, et cetera. See libvpxdec.c. Also the default AV1 decoder is libdav1d, which is not affected. For XYZ support someone should add correct pixel format in the code. Signed-off-by: Valerii Zapodovnikov --- libavcodec/libaomdec.c | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/libavcodec/libaomdec.c b/libavcodec/libaomdec.c index 6e7324a832..156e644263 100644 --- a/libavcodec/libaomdec.c +++ b/libavcodec/libaomdec.c @@ -134,15 +134,27 @@ static int set_pix_fmt(AVCodecContext *avctx, struct aom_image *img) case AOM_IMG_FMT_I444: case AOM_IMG_FMT_I44416: if (img->bit_depth == 8) { - avctx->pix_fmt = AV_PIX_FMT_YUV444P; + if (avctx->colorspace == AVCOL_SPC_RGB && avctx->color_trc != AVCOL_TRC_SMPTE428) { + avctx->pix_fmt = AV_PIX_FMT_GBRP; + } else { + avctx->pix_fmt = AV_PIX_FMT_YUV444P; + } avctx->profile = FF_PROFILE_AV1_HIGH; return 0; } else if (img->bit_depth == 10) { - avctx->pix_fmt = AV_PIX_FMT_YUV444P10; + if (avctx->colorspace == AVCOL_SPC_RGB && avctx->color_trc != AVCOL_TRC_SMPTE428) { + avctx->pix_fmt = AV_PIX_FMT_GBRP10; + } else { + avctx->pix_fmt = AV_PIX_FMT_YUV444P10; + } avctx->profile = FF_PROFILE_AV1_HIGH; return 0; } else if (img->bit_depth == 12) { - avctx->pix_fmt = AV_PIX_FMT_YUV444P12; + if (avctx->colorspace == AVCOL_SPC_RGB && avctx->color_trc != AVCOL_TRC_SMPTE428) { + avctx->pix_fmt = AV_PIX_FMT_GBRP12; + } else { + avctx->pix_fmt = AV_PIX_FMT_YUV444P12; + } avctx->profile = FF_PROFILE_AV1_PROFESSIONAL; return 0; } else {