From c486cfab792e53de3f5fc9f5082909ce687a3fe8 Mon Sep 17 00:00:00 2001 From: Michael Niedermayer Date: Thu, 10 Apr 2014 18:38:39 +0200 Subject: [PATCH] avcodec/imgconvert: fix nb_components and depth for PAL8 in get_pix_fmt_score() This causes us to favor RGB8 over PAL8 when FF_LOSS_COLORQUANT is used It probably makes sense to reinvestigate the exact scoring of pal8 when our pal8 support improves to be supperior to rgb8 Signed-off-by: Michael Niedermayer --- libavcodec/imgconvert.c | 13 +++++++++---- tests/ref/lavf/gif | 4 ++-- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/libavcodec/imgconvert.c b/libavcodec/imgconvert.c index b830961fda..cabd3fd26b 100644 --- a/libavcodec/imgconvert.c +++ b/libavcodec/imgconvert.c @@ -130,13 +130,18 @@ static int get_pix_fmt_score(enum AVPixelFormat dst_pix_fmt, src_color = get_color_type(src_desc); dst_color = get_color_type(dst_desc); - nb_components = FFMIN(src_desc->nb_components, dst_desc->nb_components); + if (dst_pix_fmt == AV_PIX_FMT_PAL8) + nb_components = FFMIN(src_desc->nb_components, 4); + else + nb_components = FFMIN(src_desc->nb_components, dst_desc->nb_components); - for (i = 0; i < nb_components; i++) - if (src_desc->comp[i].depth_minus1 > dst_desc->comp[i].depth_minus1 && (consider & FF_LOSS_DEPTH)) { + for (i = 0; i < nb_components; i++) { + int depth_minus1 = (dst_pix_fmt == AV_PIX_FMT_PAL8) ? 7/nb_components : dst_desc->comp[i].depth_minus1; + if (src_desc->comp[i].depth_minus1 > depth_minus1 && (consider & FF_LOSS_DEPTH)) { loss |= FF_LOSS_DEPTH; - score -= 65536 >> dst_desc->comp[i].depth_minus1; + score -= 65536 >> depth_minus1; } + } if (consider & FF_LOSS_RESOLUTION) { if (dst_desc->log2_chroma_w > src_desc->log2_chroma_w) { diff --git a/tests/ref/lavf/gif b/tests/ref/lavf/gif index 4d90abe38f..531cd1eda7 100644 --- a/tests/ref/lavf/gif +++ b/tests/ref/lavf/gif @@ -1,3 +1,3 @@ -8aef8081e8afa445f63f320f4a1c5edb *./tests/data/lavf/lavf.gif -2030198 ./tests/data/lavf/lavf.gif +e35f5ea283bbcb249818e0078ec72664 *./tests/data/lavf/lavf.gif +2011766 ./tests/data/lavf/lavf.gif ./tests/data/lavf/lavf.gif CRC=0x0dc5477c