From 09a9b45e4fa77a533391184ace5cadb30c6b83c7 Mon Sep 17 00:00:00 2001 From: Michael Niedermayer Date: Tue, 24 Feb 2009 18:27:52 +0000 Subject: [PATCH] Add and use ff_pixfmt_list_420. Originally committed as revision 17564 to svn://svn.ffmpeg.org/ffmpeg/trunk --- libavcodec/h263dec.c | 10 +++++++++- libavcodec/h264.c | 7 +++---- libavcodec/mpegvideo.c | 4 ++++ libavcodec/mpegvideo.h | 2 ++ libavcodec/rv10.c | 2 ++ libavcodec/rv30.c | 1 + libavcodec/rv40.c | 1 + libavcodec/svq3.c | 1 + libavcodec/wmv2dec.c | 1 + 9 files changed, 24 insertions(+), 5 deletions(-) diff --git a/libavcodec/h263dec.c b/libavcodec/h263dec.c index 93ad095a4..3b1cf8c61 100644 --- a/libavcodec/h263dec.c +++ b/libavcodec/h263dec.c @@ -52,7 +52,7 @@ av_cold int ff_h263_decode_init(AVCodecContext *avctx) s->quant_precision=5; s->decode_mb= ff_h263_decode_mb; s->low_delay= 1; - avctx->pix_fmt= PIX_FMT_YUV420P; + avctx->pix_fmt= avctx->get_format(avctx, avctx->codec->pix_fmts); s->unrestricted_mv= 1; /* select sub codec */ @@ -725,6 +725,7 @@ AVCodec mpeg4_decoder = { CODEC_CAP_DRAW_HORIZ_BAND | CODEC_CAP_DR1 | CODEC_CAP_TRUNCATED | CODEC_CAP_DELAY, .flush= ff_mpeg_flush, .long_name= NULL_IF_CONFIG_SMALL("MPEG-4 part 2"), + .pix_fmts= ff_pixfmt_list_420, }; AVCodec h263_decoder = { @@ -739,6 +740,7 @@ AVCodec h263_decoder = { CODEC_CAP_DRAW_HORIZ_BAND | CODEC_CAP_DR1 | CODEC_CAP_TRUNCATED | CODEC_CAP_DELAY, .flush= ff_mpeg_flush, .long_name= NULL_IF_CONFIG_SMALL("H.263 / H.263-1996, H.263+ / H.263-1998"), + .pix_fmts= ff_pixfmt_list_420, }; AVCodec msmpeg4v1_decoder = { @@ -752,6 +754,7 @@ AVCodec msmpeg4v1_decoder = { ff_h263_decode_frame, CODEC_CAP_DRAW_HORIZ_BAND | CODEC_CAP_DR1, .long_name= NULL_IF_CONFIG_SMALL("MPEG-4 part 2 Microsoft variant version 1"), + .pix_fmts= ff_pixfmt_list_420, }; AVCodec msmpeg4v2_decoder = { @@ -765,6 +768,7 @@ AVCodec msmpeg4v2_decoder = { ff_h263_decode_frame, CODEC_CAP_DRAW_HORIZ_BAND | CODEC_CAP_DR1, .long_name= NULL_IF_CONFIG_SMALL("MPEG-4 part 2 Microsoft variant version 2"), + .pix_fmts= ff_pixfmt_list_420, }; AVCodec msmpeg4v3_decoder = { @@ -778,6 +782,7 @@ AVCodec msmpeg4v3_decoder = { ff_h263_decode_frame, CODEC_CAP_DRAW_HORIZ_BAND | CODEC_CAP_DR1, .long_name= NULL_IF_CONFIG_SMALL("MPEG-4 part 2 Microsoft variant version 3"), + .pix_fmts= ff_pixfmt_list_420, }; AVCodec wmv1_decoder = { @@ -791,6 +796,7 @@ AVCodec wmv1_decoder = { ff_h263_decode_frame, CODEC_CAP_DRAW_HORIZ_BAND | CODEC_CAP_DR1, .long_name= NULL_IF_CONFIG_SMALL("Windows Media Video 7"), + .pix_fmts= ff_pixfmt_list_420, }; AVCodec h263i_decoder = { @@ -804,6 +810,7 @@ AVCodec h263i_decoder = { ff_h263_decode_frame, CODEC_CAP_DRAW_HORIZ_BAND | CODEC_CAP_DR1, .long_name = NULL_IF_CONFIG_SMALL("Intel H.263"), + .pix_fmts= ff_pixfmt_list_420, }; AVCodec flv_decoder = { @@ -817,4 +824,5 @@ AVCodec flv_decoder = { ff_h263_decode_frame, CODEC_CAP_DRAW_HORIZ_BAND | CODEC_CAP_DR1, .long_name= NULL_IF_CONFIG_SMALL("Flash Video"), + .pix_fmts= ff_pixfmt_list_420, }; diff --git a/libavcodec/h264.c b/libavcodec/h264.c index 4537fb179..f5d2a8082 100644 --- a/libavcodec/h264.c +++ b/libavcodec/h264.c @@ -2178,12 +2178,10 @@ static av_cold int decode_init(AVCodecContext *avctx){ s->quarter_sample = 1; s->low_delay= 1; - if(avctx->codec_id == CODEC_ID_SVQ3) - avctx->pix_fmt= PIX_FMT_YUVJ420P; - else if(s->avctx->codec->capabilities&CODEC_CAP_HWACCEL_VDPAU) + if(s->avctx->codec->capabilities&CODEC_CAP_HWACCEL_VDPAU) avctx->pix_fmt= PIX_FMT_VDPAU_H264; else - avctx->pix_fmt= PIX_FMT_YUV420P; + avctx->pix_fmt= avctx->get_format(avctx, avctx->codec->pix_fmts); decode_init_vlc(); @@ -8097,6 +8095,7 @@ AVCodec h264_decoder = { /*CODEC_CAP_DRAW_HORIZ_BAND |*/ CODEC_CAP_DR1 | CODEC_CAP_DELAY, .flush= flush_dpb, .long_name = NULL_IF_CONFIG_SMALL("H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10"), + .pix_fmts= ff_pixfmt_list_420, }; #if CONFIG_H264_VDPAU_DECODER diff --git a/libavcodec/mpegvideo.c b/libavcodec/mpegvideo.c index 168fbacdd..38aa4d2eb 100644 --- a/libavcodec/mpegvideo.c +++ b/libavcodec/mpegvideo.c @@ -75,6 +75,10 @@ const uint8_t ff_mpeg1_dc_scale_table[128]={ 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, }; +const enum PixelFormat ff_pixfmt_list_420[] = { + PIX_FMT_YUV420P, + PIX_FMT_NONE +}; const uint8_t *ff_find_start_code(const uint8_t * restrict p, const uint8_t *end, uint32_t * restrict state){ int i; diff --git a/libavcodec/mpegvideo.h b/libavcodec/mpegvideo.h index 453285e31..8e324ae2b 100644 --- a/libavcodec/mpegvideo.h +++ b/libavcodec/mpegvideo.h @@ -708,6 +708,8 @@ void ff_convert_matrix(DSPContext *dsp, int (*qmat)[64], uint16_t (*qmat16)[2][6 void ff_init_block_index(MpegEncContext *s); void ff_copy_picture(Picture *dst, Picture *src); +extern const enum PixelFormat ff_pixfmt_list_420[]; + static inline void ff_update_block_index(MpegEncContext *s){ const int block_size= 8>>s->avctx->lowres; diff --git a/libavcodec/rv10.c b/libavcodec/rv10.c index 883e107a1..71a25d650 100644 --- a/libavcodec/rv10.c +++ b/libavcodec/rv10.c @@ -794,6 +794,7 @@ AVCodec rv10_decoder = { rv10_decode_frame, CODEC_CAP_DR1, .long_name = NULL_IF_CONFIG_SMALL("RealVideo 1.0"), + .pix_fmts= ff_pixfmt_list_420, }; AVCodec rv20_decoder = { @@ -808,5 +809,6 @@ AVCodec rv20_decoder = { CODEC_CAP_DR1 | CODEC_CAP_DELAY, .flush= ff_mpeg_flush, .long_name = NULL_IF_CONFIG_SMALL("RealVideo 2.0"), + .pix_fmts= ff_pixfmt_list_420, }; diff --git a/libavcodec/rv30.c b/libavcodec/rv30.c index 138f3e30f..e1b3ad1db 100644 --- a/libavcodec/rv30.c +++ b/libavcodec/rv30.c @@ -278,4 +278,5 @@ AVCodec rv30_decoder = { CODEC_CAP_DR1 | CODEC_CAP_DELAY, .flush = ff_mpeg_flush, .long_name = NULL_IF_CONFIG_SMALL("RealVideo 3.0"), + .pix_fmts= ff_pixfmt_list_420, }; diff --git a/libavcodec/rv40.c b/libavcodec/rv40.c index fdab13cd6..8e1a47095 100644 --- a/libavcodec/rv40.c +++ b/libavcodec/rv40.c @@ -656,4 +656,5 @@ AVCodec rv40_decoder = { CODEC_CAP_DR1 | CODEC_CAP_DELAY, .flush = ff_mpeg_flush, .long_name = NULL_IF_CONFIG_SMALL("RealVideo 4.0"), + .pix_fmts= ff_pixfmt_list_420, }; diff --git a/libavcodec/svq3.c b/libavcodec/svq3.c index c866b1237..e21e5422a 100644 --- a/libavcodec/svq3.c +++ b/libavcodec/svq3.c @@ -1050,4 +1050,5 @@ AVCodec svq3_decoder = { svq3_decode_frame, CODEC_CAP_DRAW_HORIZ_BAND | CODEC_CAP_DR1 | CODEC_CAP_DELAY, .long_name = NULL_IF_CONFIG_SMALL("Sorenson Vector Quantizer 3"), + .pix_fmts= (enum PixelFormat[]){PIX_FMT_YUV410P, PIX_FMT_NONE}, }; diff --git a/libavcodec/wmv2dec.c b/libavcodec/wmv2dec.c index fd42b2c2b..b14b5143a 100644 --- a/libavcodec/wmv2dec.c +++ b/libavcodec/wmv2dec.c @@ -494,4 +494,5 @@ AVCodec wmv2_decoder = { ff_h263_decode_frame, CODEC_CAP_DRAW_HORIZ_BAND | CODEC_CAP_DR1, .long_name = NULL_IF_CONFIG_SMALL("Windows Media Video 8"), + .pix_fmts= ff_pixfmt_list_420, }; -- 2.11.0