Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
 help / color / mirror / Atom feed
* [FFmpeg-devel] [PR] avutil/imgutils: two minor cleanup commits (PR #22238)
@ 2026-02-21 12:00 Niklas Haas via ffmpeg-devel
  0 siblings, 0 replies; only message in thread
From: Niklas Haas via ffmpeg-devel @ 2026-02-21 12:00 UTC (permalink / raw)
  To: ffmpeg-devel; +Cc: Niklas Haas

PR #22238 opened by Niklas Haas (haasn)
URL: https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/22238
Patch URL: https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/22238.patch

Spotted while wading through the mess that is all of our many divergent plane allocation implementations.


>From 0f5e09a5ea99793f6e271565546f80c543627da6 Mon Sep 17 00:00:00 2001
From: Niklas Haas <git@haasn.dev>
Date: Fri, 20 Feb 2026 20:43:42 +0100
Subject: [PATCH 1/2] avutil/imgutils: eliminate dead code

This condition is impossible to satisfy:

  if (desc->flags & AV_PIX_FMT_FLAG_PAL && pointers[1] &&
      pointers[1] - pointers[0] > linesizes[0] * h)

Specifically, pointers[1] - pointers[0] is equal by definition of
av_image_fill_pointers() to:

  sizes[0] = (size_t)h * linesizes[0]; // via av_image_fill_plane_sizes()
  data[1] = data[0] + sizes[0];

So it's impossible for there to be extra padding between the planes unless
something drastic changes, which is unlikely at this stage.
---
 libavutil/imgutils.c | 7 -------
 1 file changed, 7 deletions(-)

diff --git a/libavutil/imgutils.c b/libavutil/imgutils.c
index 8ff8a6be41..ae671e005f 100644
--- a/libavutil/imgutils.c
+++ b/libavutil/imgutils.c
@@ -261,13 +261,6 @@ int av_image_alloc(uint8_t *pointers[4], int linesizes[4],
         }
     }
 
-    if (desc->flags & AV_PIX_FMT_FLAG_PAL && pointers[1] &&
-        pointers[1] - pointers[0] > linesizes[0] * h) {
-        /* zero-initialize the padding before the palette */
-        memset(pointers[0] + linesizes[0] * h, 0,
-               pointers[1] - pointers[0] - linesizes[0] * h);
-    }
-
     return ret;
 }
 
-- 
2.52.0


>From a452b87121e5e81510683859e855708fa697431b Mon Sep 17 00:00:00 2001
From: Niklas Haas <git@haasn.dev>
Date: Sat, 21 Feb 2026 12:50:45 +0100
Subject: [PATCH 2/2] avutil/imgutils: always correctly align palette formats

There is literally no reason to error out here when we can just trivially
increase the alignment requirement. As far as I can tell, there is no
wording or documentation for av_image_alloc() that says "align=0" should
guarantee tightly packed data.
---
 libavutil/imgutils.c | 11 ++++-------
 1 file changed, 4 insertions(+), 7 deletions(-)

diff --git a/libavutil/imgutils.c b/libavutil/imgutils.c
index ae671e005f..9ccd62bfa6 100644
--- a/libavutil/imgutils.c
+++ b/libavutil/imgutils.c
@@ -227,6 +227,9 @@ int av_image_alloc(uint8_t *pointers[4], int linesizes[4],
     if (!desc)
         return AVERROR(EINVAL);
 
+    if (desc->flags & AV_PIX_FMT_FLAG_PAL)
+        align = FFMAX(align, sizeof(uint32_t));
+
     if ((ret = av_image_check_size(w, h, 0, NULL)) < 0)
         return ret;
     if ((ret = av_image_fill_linesizes(linesizes, pix_fmt, align>7 ? FFALIGN(w, 8) : w)) < 0)
@@ -252,14 +255,8 @@ int av_image_alloc(uint8_t *pointers[4], int linesizes[4],
         av_free(buf);
         return ret;
     }
-    if (desc->flags & AV_PIX_FMT_FLAG_PAL) {
+    if (desc->flags & AV_PIX_FMT_FLAG_PAL)
         avpriv_set_systematic_pal2((uint32_t*)pointers[1], pix_fmt);
-        if (align < 4) {
-            av_log(NULL, AV_LOG_ERROR, "Formats with a palette require a minimum alignment of 4\n");
-            av_free(buf);
-            return AVERROR(EINVAL);
-        }
-    }
 
     return ret;
 }
-- 
2.52.0

_______________________________________________
ffmpeg-devel mailing list -- ffmpeg-devel@ffmpeg.org
To unsubscribe send an email to ffmpeg-devel-leave@ffmpeg.org

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2026-02-21 15:52 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-02-21 12:00 [FFmpeg-devel] [PR] avutil/imgutils: two minor cleanup commits (PR #22238) Niklas Haas via ffmpeg-devel

Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

This inbox may be cloned and mirrored by anyone:

	git clone --mirror https://master.gitmailbox.com/ffmpegdev/0 ffmpegdev/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 ffmpegdev ffmpegdev/ https://master.gitmailbox.com/ffmpegdev \
		ffmpegdev@gitmailbox.com
	public-inbox-index ffmpegdev

Example config snippet for mirrors.


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git