From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTPS id E05CC4D320 for ; Wed, 19 Feb 2025 20:47:06 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id C313368C431; Wed, 19 Feb 2025 22:46:07 +0200 (EET) Received: from haasn.dev (haasn.dev [78.46.187.166]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id D2E2068C3B1 for ; Wed, 19 Feb 2025 22:45:58 +0200 (EET) Received: from haasn.dev (unknown [10.30.1.1]) by haasn.dev (Postfix) with ESMTP id 9BAA142A8C; Wed, 19 Feb 2025 21:45:54 +0100 (CET) From: Niklas Haas To: ffmpeg-devel@ffmpeg.org Date: Wed, 19 Feb 2025 21:45:42 +0100 Message-ID: <20250219204550.2826561-6-ffmpeg@haasn.xyz> X-Mailer: git-send-email 2.47.0 In-Reply-To: <20250219204550.2826561-1-ffmpeg@haasn.xyz> References: <20250219204550.2826561-1-ffmpeg@haasn.xyz> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 06/12] avcodec/png: set correct alpha mode 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 Cc: Niklas Haas Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: From: Niklas Haas PNG always uses straight alpha. --- libavcodec/pngdec.c | 5 +++++ libavcodec/pngenc.c | 6 ++++++ 2 files changed, 11 insertions(+) diff --git a/libavcodec/pngdec.c b/libavcodec/pngdec.c index b9c997ab0e..d2a61d3bce 100644 --- a/libavcodec/pngdec.c +++ b/libavcodec/pngdec.c @@ -875,6 +875,11 @@ static int decode_idat_chunk(AVCodecContext *avctx, PNGDecContext *s, s->bpp += byte_depth; } + /* PNG spec mandates independent alpha channel */ + if (s->color_type == PNG_COLOR_TYPE_RGB_ALPHA || + s->color_type == PNG_COLOR_TYPE_GRAY_ALPHA) + avctx->alpha_mode = AVALPHA_MODE_STRAIGHT; + ff_progress_frame_unref(&s->picture); if (s->dispose_op == APNG_DISPOSE_OP_PREVIOUS) { /* We only need a buffer for the current picture. */ diff --git a/libavcodec/pngenc.c b/libavcodec/pngenc.c index 37e8d5bfcf..1818edcf4f 100644 --- a/libavcodec/pngenc.c +++ b/libavcodec/pngenc.c @@ -1241,6 +1241,9 @@ const FFCodec ff_png_encoder = { AV_PIX_FMT_GRAY16BE, AV_PIX_FMT_YA16BE, AV_PIX_FMT_MONOBLACK, AV_PIX_FMT_NONE }, + .alpha_modes = (const enum AVAlphaMode[]) { + AVALPHA_MODE_STRAIGHT, AVALPHA_MODE_UNSPECIFIED + }, .p.priv_class = &pngenc_class, .caps_internal = FF_CODEC_CAP_ICC_PROFILES, }; @@ -1264,6 +1267,9 @@ const FFCodec ff_apng_encoder = { AV_PIX_FMT_GRAY16BE, AV_PIX_FMT_YA16BE, AV_PIX_FMT_NONE }, + .alpha_modes = (const enum AVAlphaMode[]) { + AVALPHA_MODE_STRAIGHT, AVALPHA_MODE_UNSPECIFIED + }, .p.priv_class = &pngenc_class, .caps_internal = FF_CODEC_CAP_ICC_PROFILES, }; -- 2.47.0 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".