[FFmpeg-devel] [PATCH] avfilter/vf_scale: remove systematic PAL8 hack
Niklas Haas
ffmpeg at haasn.xyz
Mon Dec 16 15:57:53 EET 2024
From: Niklas Haas <git at haasn.dev>
This is not a good way of generating a PAL8 output. For starters, it totally
mangles the image quality, due to essentially generating BRG8 output instead.
It also drops the input alpha channel, if present. Secondly, we already have
a better way of generating PAL8 content: vf_palettegen/paletteuse.
In the long term, it would be a better idea for us to incorporate a
palettization filter as in internal sws pass when the user requests a palette
format as output. But for now, simply remove this hack.
Fixes: ticket #4444
Signed-off-by: Niklas Haas <git at haasn.dev>
Sponsored-by: Sovereign Tech Fund
---
libavfilter/vf_scale.c | 7 +------
1 file changed, 1 insertion(+), 6 deletions(-)
diff --git a/libavfilter/vf_scale.c b/libavfilter/vf_scale.c
index d86e50f79b..fba5cc34d8 100644
--- a/libavfilter/vf_scale.c
+++ b/libavfilter/vf_scale.c
@@ -470,7 +470,7 @@ static int query_formats(const AVFilterContext *ctx,
formats = NULL;
while ((desc = av_pix_fmt_desc_next(desc))) {
pix_fmt = av_pix_fmt_desc_get_id(desc);
- if (sws_test_format(pix_fmt, 1) || pix_fmt == AV_PIX_FMT_PAL8) {
+ if (sws_test_format(pix_fmt, 1)) {
if ((ret = ff_add_format(&formats, pix_fmt)) < 0)
return ret;
}
@@ -845,11 +845,6 @@ scale:
return 0;
}
- if (out->format == AV_PIX_FMT_PAL8) {
- out->format = AV_PIX_FMT_BGR8;
- avpriv_set_systematic_pal2((uint32_t*) out->data[1], out->format);
- }
-
ret = sws_scale_frame(scale->sws, out, in);
av_frame_free(&in);
out->flags = flags_orig;
--
2.47.0
More information about the ffmpeg-devel
mailing list