Mercurial > libavcodec.hg
changeset 8538:35f1b87d908f libavcodec
Factorise setting of avctx->pix_fmt.
author | cehoyos |
---|---|
date | Tue, 06 Jan 2009 15:16:33 +0000 |
parents | 93a3020d9636 |
children | 01ec89cc9a10 |
files | mpeg12.c |
diffstat | 1 files changed, 18 insertions(+), 18 deletions(-) [+] |
line wrap: on
line diff
--- a/mpeg12.c Tue Jan 06 12:51:35 2009 +0000 +++ b/mpeg12.c Tue Jan 06 15:16:33 2009 +0000 @@ -1212,6 +1212,22 @@ } } +static enum PixelFormat mpeg_set_pixelformat(AVCodecContext *avctx){ + Mpeg1Context *s1 = avctx->priv_data; + MpegEncContext *s = &s1->mpeg_enc_ctx; + + if(avctx->xvmc_acceleration) + return avctx->get_format(avctx,pixfmt_xvmc_mpg2_420); + else{ + if(s->chroma_format < 2) + return PIX_FMT_YUV420P; + else if(s->chroma_format == 2) + return PIX_FMT_YUV422P; + else + return PIX_FMT_YUV444P; + } +} + /* Call this function when we know all parameters. * It may be called in different places for MPEG-1 and MPEG-2. */ static int mpeg_decode_postinit(AVCodecContext *avctx){ @@ -1288,19 +1304,7 @@ } }//MPEG-2 - if(avctx->xvmc_acceleration){ - avctx->pix_fmt = avctx->get_format(avctx,pixfmt_xvmc_mpg2_420); - }else{ - if(s->chroma_format < 2){ - avctx->pix_fmt = PIX_FMT_YUV420P; - }else - if(s->chroma_format == 2){ - avctx->pix_fmt = PIX_FMT_YUV422P; - }else - if(s->chroma_format > 2){ - avctx->pix_fmt = PIX_FMT_YUV444P; - } - } + avctx->pix_fmt = mpeg_set_pixelformat(avctx); //until then pix_fmt may be changed right after codec init if( avctx->pix_fmt == PIX_FMT_XVMC_MPEG2_IDCT ) if( avctx->idct_algo == FF_IDCT_AUTO ) @@ -2069,11 +2073,7 @@ avctx->has_b_frames= 0; //true? s->low_delay= 1; - if(avctx->xvmc_acceleration){ - avctx->pix_fmt = avctx->get_format(avctx,pixfmt_xvmc_mpg2_420); - }else{ - avctx->pix_fmt = PIX_FMT_YUV420P; - } + avctx->pix_fmt = mpeg_set_pixelformat(avctx); if( avctx->pix_fmt == PIX_FMT_XVMC_MPEG2_IDCT ) if( avctx->idct_algo == FF_IDCT_AUTO )