From patchwork Fri Jun 4 22:22:07 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Valerii Zapodovnikov X-Patchwork-Id: 28084 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a6b:b214:0:0:0:0:0 with SMTP id b20csp1482904iof; Fri, 4 Jun 2021 15:22:20 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzrkf7FCEVGU7KUR08134XRrefm8rJwiYWqz/W/4a8LfBD2+NmHQMtrwAyobU6kEXh4auf/ X-Received: by 2002:aa7:dac3:: with SMTP id x3mr7060976eds.287.1622845339948; Fri, 04 Jun 2021 15:22:19 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1622845339; cv=none; d=google.com; s=arc-20160816; b=ISuoqIQCeYdecMLUDexqfvXr+87NzzTKQFb6lUSJmNaLj0R/sqLGrhEHKoNiPoJxDK 3cbTo0YaNI7QHB3b6mMOr7Zm/8LRC9FIx03hYHP3Z4k5z/bwhn1ngFjMQCBOk/SjfCWf j+TDA3bvyE1rZBu7kLfTe44IeBrEJR1ap9mQTMszHe8kCdOB9zEH65pLrkN+20nq2Hhx Nvug2lXagdgJkmgfYQWXec4fu7TAa8//fKOZuEzk3yDzT53vBWozEsFV4vvU1PvHAVIW 6nVMPqHSyG4bVlLejOZzBvtVY4G/hxIn+UqRcdotUaN0NTyHzdROzrBIkkxwFjoFGhJH jfAA== 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=AOlmMhKxBCBhSsGITQ6bsnL0c0WgfvO3YsvWo7EfXtI=; b=SEJR4c4DQVPIU17BWHi/tJX/AObfo8gKlUt8TL02K+p42oCnD5/0NOYfF3yXXHDlkJ 30QeMfeWZ1f2fM2NyV29vnUB4kbUBaIeZgY9feWhVXPOHaPTfkftb9LTkjEKH/nq11np y1pA1Hqya1t8oDlS/kgITUohRBVeN7poReMRPoszvyHJ9r21nshNhdb08KjKi1CSM85M ieiIMjZe6zOSWp4IfKEf8ezbThggJSfHsOrjE+VfeWSw0dfcnfOMj+JY3JHua6oI2r5I elxvVAYaXaGSwxVD0uBWa2xGup2LJgRum9BE/8F7XzFciAFXCnq5ymcD9lec+seEcNk2 Wq3Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20161025 header.b=cEQ7jcpC; 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 f5si6028728eja.729.2021.06.04.15.22.19; Fri, 04 Jun 2021 15:22:19 -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=cEQ7jcpC; 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 30C4E68A28B; Sat, 5 Jun 2021 01:22:15 +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 1A6FD689965 for ; Sat, 5 Jun 2021 01:22:09 +0300 (EEST) Received: by mail-lj1-f169.google.com with SMTP id f12so13486291ljp.2 for ; Fri, 04 Jun 2021 15:22:09 -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=ha0Y2M+77mYcGL4bb2bp3XEwk3+F/VayRLSrznER60A=; b=cEQ7jcpCg24WwvDRlzvxKRpzjUSUuWFgctw8gWla+9rFYLbL1VNni7G4lKn+ahGAmP TxLTaP8oemRDaR8/tvBHqqGXLy9fuAYUZ6H0tmuPaoknoeNBBavFXPoWiu9BCM7JnlAy eNwLr44C35PJ/YcdigueI9eLTQUFByW1WYAK2EqkQWi/I3bPB1sOUib5G7QKGbLN3+Ss oBqtaz5gXYKe6davP/jtC1TX4vvD5Z/Bl7cJN+V+4vSlv5Ngx6GZiNhvxQPu/oN6WOlG 7goZT0sG5y6Ef5KVEXYaDX4hV7giXy5pwsche9fUiTb4kNcxD+mrUhkdQm3d1F6NDTs2 sMNw== 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=ha0Y2M+77mYcGL4bb2bp3XEwk3+F/VayRLSrznER60A=; b=LF7phW3ng5EXTEc2DOxZRCbVjbTSMTCf7BvO7mTopCAZJaKZe4dw8fhL2zQ8Arconj Xg+jowCbio7ufBz9lUrp2mbgclq7OQOa8MEvrrbeQDgTv3nznIrAlrIy7g688Yxnnti1 8XH/3X5chYD9E0XrAD67vzCw67jJO9Q+OaohOtmeuUXnEbgmEO3CFrLAYiwsXD8keENe Cd/7frVXh3rNNeAs1gdBPG4I5I1l3MUGq06JeocW02BCWbcQ71TNdfVvR1hJzFTpfT61 x66W3O2wbmm+fixyEbjhkyx12ucDqtBakrFls8nI+aiE0VPXqFoHKb5lvwL6UZ+40W2U 4h6Q== X-Gm-Message-State: AOAM532w5mn6vP+eO/HusgUdtoXhV5QUtk/bPQU/t4G7DjFC4BlI/cd3 uPt8DPWMVceE8os3GprumtHtMdFBmF3V65XegMc= X-Received: by 2002:a2e:b8c7:: with SMTP id s7mr4944666ljp.217.1622845328076; Fri, 04 Jun 2021 15:22:08 -0700 (PDT) Received: from localhost ([2a00:1370:812d:8d4d:cf4d:6838:971e:b293]) by smtp.gmail.com with ESMTPSA id l22sm599363ljh.64.2021.06.04.15.22.07 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 04 Jun 2021 15:22:07 -0700 (PDT) From: Valerii Zapodovnikov To: ffmpeg-devel@ffmpeg.org Date: Sat, 5 Jun 2021 01:22:07 +0300 Message-Id: <20210604222207.89817-1-val.zapod.vz@gmail.com> X-Mailer: git-send-email 2.30.2 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v2] 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: OT8neSEYfaPM Yes, RGB is signalled by Identity matrix if and only if XYZ is not in transfer. XYZ primaires 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. --- 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 {