From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.ffmpeg.org (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTPS id 02F9F4F395 for ; Tue, 24 Feb 2026 05:53:16 +0000 (UTC) Authentication-Results: ffbox; dkim=fail (body hash mismatch (got b'DSX/IzK31PKfZd6qNtwZBECOnfvHU2LCu6QhTXjjVNY=', expected b'oLx1hwmJD/fHSkq88u1QhEoxAs3rcYFEIpS8Y96DXRg=')) header.d=gmail.com header.a=rsa-sha256 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ffmpeg.org; i=@ffmpeg.org; q=dns/txt; s=mail; t=1771892776; h=to : date : message-id : in-reply-to : references : mime-version : reply-to : subject : list-id : list-archive : list-archive : list-help : list-owner : list-post : list-subscribe : list-unsubscribe : from : cc : content-type : content-transfer-encoding : from; bh=M7VhQ4rSzR9k/OVY5xccmjry5iuVYImf4gEmchCKr8I=; b=3pM0CPQIHfMUABoqI1pQgmHypAUdhR8J77gWrk4DMD5U5dW49XB+05hGejO+vWVBSq9QG b8j1ttmhcvDRFswomNH0k4m3BJ5/f1eoE1wV3FutUNvqRFMg0mPftgpagr+0rg8g5mWb+oS 1UUY/f9LU/aKajSyHRcbmfOJjq/wOFKWNA4cntWCpHM4VWNNkuHpCNe8ojt3er7c4arr72A 7aeCKQReFT4O68EzpxpUGsJORlP9h4attaFYp5AHfZ5E9Cc/2tBaSCAAZIBM2A9+iCgmA7V I24eN0vlol/sWEIDhBXiP/F7Ani8XbItxwTJMD4p3tmeLjgwOMnVfmygZoqw== Received: from [172.18.0.3] (unknown [172.18.0.3]) by ffbox0-bg.ffmpeg.org (Postfix) with ESMTP id B3D43691241; Tue, 24 Feb 2026 02:26:16 +0200 (EET) ARC-Seal: i=1; cv=none; a=rsa-sha256; d=ffmpeg.org; s=arc; t=1771892759; b=M5Ws0lD40K7PVOvh3ghJlBa4MGsvS9LvsAlMYOC4NPHkkpLgAuVKM3XSJUIgxEm3Bvd2A nMN/uzSbd6r2R+qoRrYpABH5EF6OjLAh+aWgpGexdhZ/B2tRiTUPZC8nhedRNjXhT7YZ25p D0CItU7j+4vyeV5nWvFDsxRNBV6Dh3ORJTVAYJaIyGWOx143thuCu+GFPd9U3X3vmscOmp1 9Jrzvgz0lCgOopRkKK4JU8mo8a1bnqx7HsUTPLr0LNNeusPN6OOt5p9Miu8ivrrobK+l5VE qz4XDVecxQly/iSbEGNyFRCZmwR2Tg75ea2ehCTNZFrfDwLUEJimTbKvDS8A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=ffmpeg.org; s=arc; t=1771892759; h=from : sender : reply-to : subject : date : message-id : to : cc : mime-version : content-type : content-transfer-encoding : content-id : content-description : resent-date : resent-from : resent-sender : resent-to : resent-cc : resent-message-id : in-reply-to : references : list-id : list-help : list-unsubscribe : list-subscribe : list-post : list-owner : list-archive; bh=DSX/IzK31PKfZd6qNtwZBECOnfvHU2LCu6QhTXjjVNY=; b=HnVGORk/oUItZW5+aXMleIpIuklIH2WREoJLP9F0CQ/MXtavMGnQ++PyFiPoN/EyTFp3R 47Gyw28FWrzzlMhj2732KDtVa3VGql4g6XWtS9nWGpj7p6wXhVRWW2zTkGizjRnx7qlgqJ8 zu+T9KPjzN0/mg07u9VcN7m8QFyLmLGm7WRzjAIDEiF4Z3IFu4bj3eJL80aBK8adFuxqkAJ ZiYbbTepFnCrgdME6lD/mGjXNrjHT8yHvC4kvvaquz2sElXm3k2BSxw2rUs5kMlPm4T3ZxP UbNb1DE1/Y+8A3roQm5OV9N+7O9p8G1uN9iTQu8aOCGvs+88XGMDxss2V9QQ== ARC-Authentication-Results: i=1; ffmpeg.org; dkim=pass header.d=gmail.com; arc=none; dmarc=pass header.from=gmail.com policy.dmarc=quarantine Authentication-Results: ffmpeg.org; dkim=pass header.d=gmail.com; arc=none (Message is not ARC signed); dmarc=pass (Used From Domain Record) header.from=gmail.com policy.dmarc=quarantine Received: from mail-dy1-f177.google.com (mail-dy1-f177.google.com [74.125.82.177]) by ffbox0-bg.ffmpeg.org (Postfix) with ESMTPS id AE4EB6910F3 for ; Tue, 24 Feb 2026 02:25:44 +0200 (EET) Received: by mail-dy1-f177.google.com with SMTP id 5a478bee46e88-2b6b0500e06so6206569eec.1 for ; Mon, 23 Feb 2026 16:25:44 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1771892742; x=1772497542; darn=ffmpeg.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=oLx1hwmJD/fHSkq88u1QhEoxAs3rcYFEIpS8Y96DXRg=; b=RGseZDQA4yzejrq4oYAAuQFLYpVr9HOU3TzkXPgwEIFbiQ/O+L/f+n/8rJEi2iNV64 u4muEYl8Nl5GfaU+isGbckLjOZY24A+dHg2HIOM/nhzlp7uq4YAsWTtU9dqp91kHUW+3 OaCPw8DaqVblSMD7Dk24Re1kQ7iOE/paF8siWQSEcmpQP31o2K8mk/mAN3+W7Gl48g6F g8b9EK0RLtda0YBChrliURahxQXht/BiIz6Go15Vy+vEWdkmZmF00ccETjW2kG4/BwwK QiMQw+Y7mvuQrO00bJoSJxUfCVb5JJSsV+utmjMv1BYJ6TypdoGqb8ZGETr2NU5RnhRX Y4Hg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1771892742; x=1772497542; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=oLx1hwmJD/fHSkq88u1QhEoxAs3rcYFEIpS8Y96DXRg=; b=tVkb/7m98WJnhs69UjuyuS9Mk0BcJR8C7nFlJEGoNh6CZAFMH27LKxlejIdMBSZ4hj 9NE8rI5YPm83MGPvvsP1N5UWCSB5MZGXsJTwK/66FCbe3jPRYKJDcHsl4qGf/7ScZYbS TVpTP1POgM8jkvQSrGIc+YXjekB8rgOwkjbYc8EalejQbVrHdRQn4N/onGYvkvtQcPWT oRUtT9gqGDE4h5N+4Fw2mXgVNqJY0axf1Tfqy96vz6KOwl/HEUA1xXtxwhRAKhwOcydl zIqHMit/N71iwTMjpZG+4TPKP9W1Q0R5vFMaJ3UZWUR0qxeyhQlgeTh/BmMskhSzVYiu v+rQ== X-Gm-Message-State: AOJu0YygOB0MOd/UiczZuOz7VFdedh2xYUFBX2VEy58sqlQ+vZXGbvZ3 +iYICTG5x57XeqvYZo0dtYJ7/01bIt+m9SfQcx1gkn1wSFpaiW37a7S95CEAFA== X-Gm-Gg: ATEYQzzdbkEhisf74Z9wgSVtrgOZa4QeSY443z/sXuYgFzmy/9l78IpT0RyooR9Bda1 hJ7jTdMJK3PY8fMp2JLEYoJvrl4181LrKXxGeHBv4gP2Gh80p21Rk0YSVn4EG5hKSZhtlwgB/kf LD8GRc2AsE98qr2fn3FbyNrI7V7yz/7SkFNMEggSgotHk0Uy+++C0+abVjRDPbRMVYnya6U0kYR WN715WLhyqHuYEx5rxObwNCkfZP4w5Udj0VLhY52/8LXfjn+UZnxLPmVNobRGTGC9utCCCMMPCw vf+aQaFLguBM21YjVVxd4fR2Jy+KmJRHp17rMX4N4U0eOhq6xhfhCVJ8ZK0jzQ97y74KafChLEn ctWL1e1KsJc0uhkxbzZuA6zdLSFc+X/3mH6g2NqiOJyeV3trZNv6ESpST6XDjyk2g57PMrH5pQI acLeFpBXWIvDGmXzFRdogv2tci3mrWtU9Xb2cYrxvNuaf2 X-Received: by 2002:a05:693c:2288:b0:2ba:9cfb:2744 with SMTP id 5a478bee46e88-2bd7bd3a027mr4525606eec.30.1771892741622; Mon, 23 Feb 2026 16:25:41 -0800 (PST) Received: from HQ-LDQQM144XL.rbxinfra.net ([204.9.184.14]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-2bd7dc167b2sm5700526eec.28.2026.02.23.16.25.40 for (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Mon, 23 Feb 2026 16:25:41 -0800 (PST) X-Google-Original-From: Guangyu Sun To: ffmpeg-devel@ffmpeg.org Date: Mon, 23 Feb 2026 16:25:39 -0800 Message-ID: <20260224002539.75912-1-gsun@roblox.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260223192155.27035-1-gsun@roblox.com> References: <20260223192155.27035-1-gsun@roblox.com> MIME-Version: 1.0 Message-ID-Hash: 3SO7ST4CILXQYOEM5UHENMS76BHECS5R X-Message-ID-Hash: 3SO7ST4CILXQYOEM5UHENMS76BHECS5R X-MailFrom: SRS0=Ge9L=A4=gmail.com=sunguangyucn@ffmpeg.org X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; header-match-ffmpeg-devel.ffmpeg.org-0; header-match-ffmpeg-devel.ffmpeg.org-1; header-match-ffmpeg-devel.ffmpeg.org-2; header-match-ffmpeg-devel.ffmpeg.org-3; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header X-Mailman-Version: 3.3.10 Precedence: list Reply-To: FFmpeg development discussions and patches Subject: [FFmpeg-devel] [PATCH v2] avcodec/libvpxenc: fix sRGB colorspace for non-RGB pixel formats List-Id: FFmpeg development discussions and patches Archived-At: Archived-At: List-Archive: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: From: Guangyu Sun via ffmpeg-devel Cc: Guangyu Sun Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Archived-At: List-Archive: List-Post: When encoding VP9 with a YUV pixel format (e.g. yuv420p) and AVCOL_SPC_RGB colorspace metadata, libvpxenc unconditionally set VPX_CS_SRGB. This produced a spec-violating bitstream: Profile 0 (4:2:0) with sRGB colorspace, which is only valid for Profile 1/3 (4:4:4). The resulting file is undecodable. Fix this by setting ctx->vpx_cs to VPX_CS_SRGB in set_pix_fmt() for 4:4:4 YUV formats when AVCOL_SPC_RGB is set, matching the existing GBRP path. This covers the legitimate case of RGB data in YUV444 containers (e.g. H.264 High 4:4:4 with identity matrix). With this change, any AVCOL_SPC_RGB that reaches the switch in set_colorspace() is guaranteed to be a subsampled format where sRGB is invalid. Log a warning and fall back to VPX_CS_BT_709. To reproduce: # generate a bad source ffmpeg -f lavfi -i testsrc=s=64x64:d=1:r=1 \ -pix_fmt yuv420p -colorspace rgb bad.mp4 # transcode with default parameters ffmpeg -i bad.mp4 bad.webm # check decoding ffmpeg -i bad.webm -f null - # -> 0 frames decoded, error Signed-off-by: Guangyu Sun --- v2: - Only fall back to BT.709 if the pixel format is not 4:4:4, addressing feedback regarding Profile 1/3 support. libavcodec/libvpxenc.c | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/libavcodec/libvpxenc.c b/libavcodec/libvpxenc.c index 082709c41f..fd80d7ca04 100644 --- a/libavcodec/libvpxenc.c +++ b/libavcodec/libvpxenc.c @@ -835,6 +835,8 @@ static int set_pix_fmt(AVCodecContext *avctx, vpx_codec_caps_t codec_caps, case AV_PIX_FMT_GBRP: ctx->vpx_cs = VPX_CS_SRGB; case AV_PIX_FMT_YUV444P: + if (avctx->colorspace == AVCOL_SPC_RGB) + ctx->vpx_cs = VPX_CS_SRGB; enccfg->g_profile = 1; *img_fmt = VPX_IMG_FMT_I444; return 0; @@ -870,6 +872,8 @@ static int set_pix_fmt(AVCodecContext *avctx, vpx_codec_caps_t codec_caps, ctx->vpx_cs = VPX_CS_SRGB; case AV_PIX_FMT_YUV444P10: case AV_PIX_FMT_YUV444P12: + if (avctx->colorspace == AVCOL_SPC_RGB) + ctx->vpx_cs = VPX_CS_SRGB; if (codec_caps & VPX_CODEC_CAP_HIGHBITDEPTH) { enccfg->g_profile = 3; *img_fmt = VPX_IMG_FMT_I44416; @@ -893,7 +897,17 @@ static void set_colorspace(AVCodecContext *avctx) vpx_cs = ctx->vpx_cs; } else { switch (avctx->colorspace) { - case AVCOL_SPC_RGB: vpx_cs = VPX_CS_SRGB; break; + case AVCOL_SPC_RGB: + // All sRGB-compatible formats (GBRP*, and YUV444* with + // AVCOL_SPC_RGB) set ctx->vpx_cs in set_pix_fmt() and + // take the branch above, so reaching here means a + // subsampled format incompatible with RGB colorspace. + av_log(avctx, AV_LOG_WARNING, + "RGB colorspace is not compatible with pixel format %s, " + "using BT.709 instead.\n", + av_get_pix_fmt_name(avctx->pix_fmt)); + vpx_cs = VPX_CS_BT_709; + break; case AVCOL_SPC_BT709: vpx_cs = VPX_CS_BT_709; break; case AVCOL_SPC_UNSPECIFIED: vpx_cs = VPX_CS_UNKNOWN; break; case AVCOL_SPC_RESERVED: vpx_cs = VPX_CS_RESERVED; break; -- 2.52.0 _______________________________________________ ffmpeg-devel mailing list -- ffmpeg-devel@ffmpeg.org To unsubscribe send an email to ffmpeg-devel-leave@ffmpeg.org