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 9AAB644AC6 for ; Thu, 18 Sep 2025 23:28:49 +0000 (UTC) Authentication-Results: ffbox; dkim=fail (body hash mismatch (got b'ceP0gyASuwWdPcglR/G5Pgjn6Zc7uimQDva8VTk5EIM=', expected b'tyH5DB1kx5BDNEFdpNNyCqCPbvUohYeeSA46H0/mdU0=')) header.d=ffmpeg.org header.i=@ffmpeg.org 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=1758238111; h=mime-version : to : date : message-id : 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=ceP0gyASuwWdPcglR/G5Pgjn6Zc7uimQDva8VTk5EIM=; b=dGUjgddea1oHhQAd1kRJ3npzxqj2Vtq56Pp1Zwn6Bi6MHgJVTurvGzDHYSxRnh2GG8CQ6 PolVe9e84W3VrEsHn4Cg4SbnlyzmFIpaluMFLc8PfGDYW3iLORoekfu/itn/7fcGAVfcO83 jlbSP++S77E7UqBSY41a2oBD8mPkdNvfvnSJI9GzdRcXCK84FXb4pIv0cXOVAbjgL/uOjdG H72X8dEUp3tL2rBqfPK8BAbplvUYyCyT3nlwIyYrvQPOGtvAwJZ9bxQXhnqOgb3JEtKq8x0 GMakzJktSxE/K8qWLjpB0wH09/h2oiFnzi0K5YSysRD4eqy2HzWIY3lcE9rg== Received: from [172.19.0.4] (unknown [172.19.0.4]) by ffbox0-bg.ffmpeg.org (Postfix) with ESMTP id EDBE268E9C2; Fri, 19 Sep 2025 02:28:30 +0300 (EEST) ARC-Seal: i=1; cv=none; a=rsa-sha256; d=ffmpeg.org; s=arc; t=1758238109; b=YeyRXUyuRXpZhEabMxWbi4P9ND+omEbF7aed8INAsWBrXzFeVGt3P5br7lLnHzA8yowz/ 6OlxurQupS8wheKkGC3Hhi5iEqHjmCSWasHVu444fV5emfwY7vYMhC2s/Us6gw/z6wBG3iU +tsaxDTZaYNstf7if8gp0IpBmq/BT2q4YjwO9dJzhK/xo+ttnyM2ZxVaMp2RWpH0S5JF2dR yeNXyXgzqEcCviYukipEtuVJ587IDg4tQntOjscQYclp2xkV+XpSrw9zKSktTo0CtzZlAeo EolieV6cRwGKNEOZ7BVJpwPnms4pf4aI5hKiiGC7VGosryUJYTRk7OUTy0rw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=ffmpeg.org; s=arc; t=1758238109; 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=T7UvvIEeU2iqbFNjw/ZTPkxzSz/W8g74ebkyqdeIs8k=; b=MpkH4czhWmjDcr+0GYDQhAAz5gRXdIIYh3fwp1xWyflIyLUh4dNViwbugp/c5blCQ776z HEsVkfYdZDWAYrrKUpD1U+siycwJAs6dE/tzxdC1rQO7u8JVvHZPT6KFV25cVWm4iBTBsAm Wk9Qk3dzAP9LGf/1z1+bqZg9CNgEo1DU9nK9GgdFbsCb8vJ81X31Va9aNt/U59cOzKFw5QA 6MdFaJfnTAaVjjnFJ+qYjfvffGEgyOv1y50qNx9wuqhNsdICW8kyIqB8AFM+gVpGU/0NLq2 Gtvg1ByunxB6y2IVVNZUufzz6ylsKRKXDz/e7gof3ZDw4edBTYuNv7JkfogA== ARC-Authentication-Results: i=1; ffmpeg.org; dkim=pass header.d=ffmpeg.org header.i=@ffmpeg.org; arc=none; dmarc=none Authentication-Results: ffmpeg.org; dkim=pass header.d=ffmpeg.org header.i=@ffmpeg.org; arc=none (Message is not ARC signed); dmarc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ffmpeg.org; i=@ffmpeg.org; q=dns/txt; s=mail; t=1758238100; h=content-type : mime-version : content-transfer-encoding : from : to : reply-to : subject : date : from; bh=tyH5DB1kx5BDNEFdpNNyCqCPbvUohYeeSA46H0/mdU0=; b=nSUbek2T9GSW2sv03CNMa544I9/bdUyL/uEIVVs4teqXCj5PIn0U1qBb82RXCZp/+Sbi/ 0lueAmnGMyLb2x70vkHrAUt7zYhHRoMJF1bh3wS/1gbzGmCTH3f5xMACStM/aPS4EV2JZtb m6dz94d8op5d+1LsunhWiwjvs9sFw9GDqJmYJc4AXvKL1Mj/7Ijrzeqg7nNG83NG2x9jzzl ftnTxPjJXfHFHjW0Q3J1cl791c09+BR/1fjn9C0U9tLiAmuLn3swwX7jqmL+MXVZEySxlO3 eLqd+8hXs8ZDpQYG8IC20tQn8WC4KWJQ7PM2Uwib8i5Kn3ElNxYnsE6Ztyaw== Received: from ed19c606a818 (code.ffmpeg.org [188.245.149.3]) by ffbox0-bg.ffmpeg.org (Postfix) with ESMTPS id 076A368B912 for ; Fri, 19 Sep 2025 02:28:19 +0300 (EEST) MIME-Version: 1.0 To: ffmpeg-devel@ffmpeg.org Date: Thu, 18 Sep 2025 23:28:19 -0000 Message-ID: <175823810018.25.5400474625042925718@463a07221176> Message-ID-Hash: QMCVRMWVEWY57NQBTEUE2I5ZEJAM3B7J X-Message-ID-Hash: QMCVRMWVEWY57NQBTEUE2I5ZEJAM3B7J X-MailFrom: code@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] avcodec/exr: Simple check for available channels (PR #20551) 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: michaelni via ffmpeg-devel Cc: michaelni Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Archived-At: List-Archive: List-Post: PR #20551 opened by michaelni URL: https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/20551 Patch URL: https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/20551.patch The existing is_luma check is fragile as depending on the order of channels it can be set or reset No testcase Signed-off-by: Michael Niedermayer >>From 37895af982ce07a74e02e80d40a23ad55034fcb6 Mon Sep 17 00:00:00 2001 From: Michael Niedermayer Date: Fri, 19 Sep 2025 00:20:36 +0200 Subject: [PATCH] avcodec/exr: Simple check for available channels The existing is_luma check is fragile as depending on the order of channels it can be set or reset No testcase Signed-off-by: Michael Niedermayer --- libavcodec/exr.c | 29 +++++++++++++++++++++++++---- 1 file changed, 25 insertions(+), 4 deletions(-) diff --git a/libavcodec/exr.c b/libavcodec/exr.c index e6051567d1..cf6de22a42 100644 --- a/libavcodec/exr.c +++ b/libavcodec/exr.c @@ -175,6 +175,9 @@ typedef struct EXRContext { int is_luma;/* 1 if there is an Y plane */ +#define M(chr) (1<is_tile = 0; s->is_multipart = 0; s->is_luma = 0; + s->has_channel = 0; s->current_part = 0; if (bytestream2_get_bytes_left(gb) < 10) { @@ -1711,23 +1715,26 @@ static int decode_header(EXRContext *s, AVFrame *frame) } if (layer_match) { /* only search channel if the layer match is valid */ + if (strlen(ch_gb.buffer) == 1) { + int ch_chr = av_toupper(*ch_gb.buffer); + if (ch_chr >= 'A' && ch_chr <= 'Z') + s->has_channel |= M(ch_chr); + av_log(0,0, "%c\n", ch_chr); + } + if (!av_strcasecmp(ch_gb.buffer, "R") || !av_strcasecmp(ch_gb.buffer, "X") || !av_strcasecmp(ch_gb.buffer, "U")) { channel_index = 0; - s->is_luma = 0; } else if (!av_strcasecmp(ch_gb.buffer, "G") || !av_strcasecmp(ch_gb.buffer, "V")) { channel_index = 1; - s->is_luma = 0; } else if (!av_strcasecmp(ch_gb.buffer, "Y")) { channel_index = 1; - s->is_luma = 1; } else if (!av_strcasecmp(ch_gb.buffer, "B") || !av_strcasecmp(ch_gb.buffer, "Z") || !av_strcasecmp(ch_gb.buffer, "W")) { channel_index = 2; - s->is_luma = 0; } else if (!av_strcasecmp(ch_gb.buffer, "A")) { channel_index = 3; } else { @@ -1803,6 +1810,20 @@ static int decode_header(EXRContext *s, AVFrame *frame) s->current_channel_offset += 4; } } + if (!((M('R') + M('G') + M('B')) & ~s->has_channel)) { + s->is_luma = 0; + } else if (!((M('X') + M('Y') + M('Z')) & ~s->has_channel)) { + s->is_luma = 0; + } else if (!((M('Y') + M('U') + M('V')) & ~s->has_channel)) { + s->is_luma = 0; + } else if (!((M('Y') ) & ~s->has_channel) && + !((M('R') + M('G') + M('B') + M('U') + M('V') + M('X') + M('Z')) & s->has_channel)) { + s->is_luma = 1; + } else { + avpriv_request_sample(s->avctx, "Uncommon channel combination"); + ret = AVERROR(AVERROR_PATCHWELCOME); + goto fail; + } /* Check if all channels are set with an offset or if the channels * are causing an overflow */ -- 2.49.1 _______________________________________________ ffmpeg-devel mailing list -- ffmpeg-devel@ffmpeg.org To unsubscribe send an email to ffmpeg-devel-leave@ffmpeg.org