From dece584a639c9fd61a72e21800815e8397b3b617 Mon Sep 17 00:00:00 2001 From: Michael Niedermayer Date: Sun, 17 Feb 2013 20:41:16 +0100 Subject: [PATCH] h264: avoid calling get_format() multiple times Some applications do not like that. Fixes VDA Reduces noise for VDPAU Tested-by: Guillaume POIRIER Tested-by: Carl Eugen Hoyos Signed-off-by: Michael Niedermayer --- libavcodec/h264.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/libavcodec/h264.c b/libavcodec/h264.c index 89fc2227ae..c14b95a064 100644 --- a/libavcodec/h264.c +++ b/libavcodec/h264.c @@ -2931,11 +2931,17 @@ static enum PixelFormat get_pixel_format(H264Context *h) return h->avctx->color_range == AVCOL_RANGE_JPEG ? AV_PIX_FMT_YUVJ422P : AV_PIX_FMT_YUV422P; } else { - return h->avctx->get_format(h->avctx, h->avctx->codec->pix_fmts ? + int i; + const enum AVPixelFormat * fmt = h->avctx->codec->pix_fmts ? h->avctx->codec->pix_fmts : h->avctx->color_range == AVCOL_RANGE_JPEG ? hwaccel_pixfmt_list_h264_jpeg_420 : - ff_hwaccel_pixfmt_list_420); + ff_hwaccel_pixfmt_list_420; + + for (i=0; fmt[i] != AV_PIX_FMT_NONE; i++) + if (fmt[i] == h->avctx->pix_fmt) + return fmt[i]; + return h->avctx->get_format(h->avctx, fmt); } break; default: