diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2013-02-17 20:41:16 +0100 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2013-02-17 22:26:33 +0100 |
commit | dece584a639c9fd61a72e21800815e8397b3b617 (patch) | |
tree | b703c1000bbd8ff09c7d2d33f52711171453f9cf /libavcodec/h264.c | |
parent | 8d0757e1079f588ed69f629e2d1a4d5f232dc298 (diff) | |
download | ffmpeg-dece584a639c9fd61a72e21800815e8397b3b617.tar.gz |
h264: avoid calling get_format() multiple times
Some applications do not like that.
Fixes VDA
Reduces noise for VDPAU
Tested-by: Guillaume POIRIER <poirierg@gmail.com>
Tested-by: Carl Eugen Hoyos <cehoyos@ag.or.at>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libavcodec/h264.c')
-rw-r--r-- | libavcodec/h264.c | 10 |
1 files 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: |