diff --git a/libavcodec/avcodec.h b/libavcodec/avcodec.h index 7c82d737bd..b0f3fcb8d2 100644 --- a/libavcodec/avcodec.h +++ b/libavcodec/avcodec.h @@ -3499,6 +3499,8 @@ int avcodec_get_pix_fmt_loss(enum PixelFormat dst_pix_fmt, enum PixelFormat src_ * The pixel formats from which it chooses one, are determined by the * pix_fmt_mask parameter. * + * Note, only the first 64 pixel formats will fit in pix_fmt_mask. + * * @code * src_pix_fmt = PIX_FMT_YUV420P; * pix_fmt_mask = (1 << PIX_FMT_YUV422P) || (1 << PIX_FMT_RGB24); diff --git a/libavcodec/imgconvert.c b/libavcodec/imgconvert.c index 9efed50955..071d3122c9 100644 --- a/libavcodec/imgconvert.c +++ b/libavcodec/imgconvert.c @@ -439,7 +439,7 @@ static enum PixelFormat avcodec_find_best_pix_fmt1(int64_t pix_fmt_mask, /* find exact color match with smallest size */ dst_pix_fmt = PIX_FMT_NONE; min_dist = 0x7fffffff; - for(i = 0;i < PIX_FMT_NB; i++) { + for (i = 0; i < FFMIN(PIX_FMT_NB, 64); i++) { if (pix_fmt_mask & (1ULL << i)) { loss = avcodec_get_pix_fmt_loss(i, src_pix_fmt, has_alpha) & loss_mask; if (loss == 0) {