aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorheimdallr <heimdallr@ngs.ru>2018-03-31 19:37:23 +0700
committerMichael Niedermayer <michael@niedermayer.cc>2018-07-10 01:18:52 +0200
commiteb8654610927dc3dcacf777b0a8bd52ce6c02431 (patch)
tree290b5602a0d39d83b6f4d0932082558ba91e9bc7
parent367d459f78c1cecce1d1a8e5bbe6a8b908de3e2f (diff)
downloadffmpeg-eb8654610927dc3dcacf777b0a8bd52ce6c02431.tar.gz
avcodec/imgconvert: Fix loss mask bug in avcodec_find_best_pix_fmt_of_list()
example: AVPixelFormat pixFmts[] = { AV_PIX_FMT_RGB24, AV_PIX_FMT_RGBA }; int loss = 0; AVPixelFormat best = avcodec_find_best_pix_fmt_of_list(pixFmts, AV_PIX_FMT_BGRA, 1, &loss); best is AV_PIX_FMT_RGB24. But AV_PIX_FMT_RGBA is better. Signed-off-by: Michael Niedermayer <michael@niedermayer.cc> (cherry picked from commit 354b26a3945eadd4ed8fcd801dfefad2566241de) Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
-rw-r--r--libavcodec/imgconvert.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/libavcodec/imgconvert.c b/libavcodec/imgconvert.c
index 39cf58a2d2..0abe6cdf48 100644
--- a/libavcodec/imgconvert.c
+++ b/libavcodec/imgconvert.c
@@ -81,10 +81,14 @@ enum AVPixelFormat avcodec_find_best_pix_fmt_of_list(const enum AVPixelFormat *p
int i;
enum AVPixelFormat best = AV_PIX_FMT_NONE;
+ int loss;
- for(i=0; pix_fmt_list[i] != AV_PIX_FMT_NONE; i++)
- best = avcodec_find_best_pix_fmt_of_2(best, pix_fmt_list[i], src_pix_fmt, has_alpha, loss_ptr);
+ for (i=0; pix_fmt_list[i] != AV_PIX_FMT_NONE; i++) {
+ loss = *loss_ptr;
+ best = avcodec_find_best_pix_fmt_of_2(best, pix_fmt_list[i], src_pix_fmt, has_alpha, &loss);
+ }
+ *loss_ptr = loss;
return best;
}