From 261a3c2d05935420c7055472fa670a763f58740f Mon Sep 17 00:00:00 2001 From: Michael Niedermayer Date: Fri, 8 Jan 2010 19:40:10 +0000 Subject: Move AVCodecs from h263dec.c to msmpeg4.c and disentangle init decode init. Originally committed as revision 21102 to svn://svn.ffmpeg.org/ffmpeg/trunk --- libavcodec/h263dec.c | 59 ------------------------------------------------ libavcodec/mpegvideo.h | 2 +- libavcodec/msmpeg4.c | 61 +++++++++++++++++++++++++++++++++++++++++++++++++- libavcodec/vc1dec.c | 2 +- libavcodec/wmv2dec.c | 2 +- 5 files changed, 63 insertions(+), 63 deletions(-) diff --git a/libavcodec/h263dec.c b/libavcodec/h263dec.c index a8613bb97c..c3837b7371 100644 --- a/libavcodec/h263dec.c +++ b/libavcodec/h263dec.c @@ -114,9 +114,6 @@ av_cold int ff_h263_decode_init(AVCodecContext *avctx) if (MPV_common_init(s) < 0) return -1; - if (CONFIG_MSMPEG4_DECODER && s->h263_msmpeg4) - ff_msmpeg4_decode_init(s); - h263_decode_init_vlc(s); return 0; @@ -741,59 +738,3 @@ AVCodec h263_decoder = { .long_name= NULL_IF_CONFIG_SMALL("H.263 / H.263-1996, H.263+ / H.263-1998 / H.263 version 2"), .pix_fmts= ff_hwaccel_pixfmt_list_420, }; - -AVCodec msmpeg4v1_decoder = { - "msmpeg4v1", - CODEC_TYPE_VIDEO, - CODEC_ID_MSMPEG4V1, - sizeof(MpegEncContext), - ff_h263_decode_init, - NULL, - ff_h263_decode_end, - 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 = { - "msmpeg4v2", - CODEC_TYPE_VIDEO, - CODEC_ID_MSMPEG4V2, - sizeof(MpegEncContext), - ff_h263_decode_init, - NULL, - ff_h263_decode_end, - 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 = { - "msmpeg4", - CODEC_TYPE_VIDEO, - CODEC_ID_MSMPEG4V3, - sizeof(MpegEncContext), - ff_h263_decode_init, - NULL, - ff_h263_decode_end, - 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 = { - "wmv1", - CODEC_TYPE_VIDEO, - CODEC_ID_WMV1, - sizeof(MpegEncContext), - ff_h263_decode_init, - NULL, - ff_h263_decode_end, - 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, -}; diff --git a/libavcodec/mpegvideo.h b/libavcodec/mpegvideo.h index 9e57b5dbec..583b52cae9 100644 --- a/libavcodec/mpegvideo.h +++ b/libavcodec/mpegvideo.h @@ -860,7 +860,7 @@ void msmpeg4_encode_mb(MpegEncContext * s, int motion_x, int motion_y); int msmpeg4_decode_picture_header(MpegEncContext * s); int msmpeg4_decode_ext_header(MpegEncContext * s, int buf_size); -int ff_msmpeg4_decode_init(MpegEncContext *s); +int ff_msmpeg4_decode_init(AVCodecContext *avctx); void ff_msmpeg4_encode_init(MpegEncContext *s); int ff_wmv2_decode_picture_header(MpegEncContext * s); int ff_wmv2_decode_secondary_picture_header(MpegEncContext * s); diff --git a/libavcodec/msmpeg4.c b/libavcodec/msmpeg4.c index 81b535e6fc..fbdc2fa86f 100644 --- a/libavcodec/msmpeg4.c +++ b/libavcodec/msmpeg4.c @@ -1272,12 +1272,15 @@ static int msmpeg4v34_decode_mb(MpegEncContext *s, DCTELEM block[6][64]) } /* init all vlc decoding tables */ -av_cold int ff_msmpeg4_decode_init(MpegEncContext *s) +av_cold int ff_msmpeg4_decode_init(AVCodecContext *avctx) { + MpegEncContext *s = avctx->priv_data; static int done = 0; int i; MVTable *mv; + ff_h263_decode_init(avctx); + common_init(s); if (!done) { @@ -1917,3 +1920,59 @@ int ff_msmpeg4_decode_motion(MpegEncContext * s, *my_ptr = my; return 0; } + +AVCodec msmpeg4v1_decoder = { + "msmpeg4v1", + CODEC_TYPE_VIDEO, + CODEC_ID_MSMPEG4V1, + sizeof(MpegEncContext), + ff_msmpeg4_decode_init, + NULL, + ff_h263_decode_end, + 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 = { + "msmpeg4v2", + CODEC_TYPE_VIDEO, + CODEC_ID_MSMPEG4V2, + sizeof(MpegEncContext), + ff_msmpeg4_decode_init, + NULL, + ff_h263_decode_end, + 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 = { + "msmpeg4", + CODEC_TYPE_VIDEO, + CODEC_ID_MSMPEG4V3, + sizeof(MpegEncContext), + ff_msmpeg4_decode_init, + NULL, + ff_h263_decode_end, + 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 = { + "wmv1", + CODEC_TYPE_VIDEO, + CODEC_ID_WMV1, + sizeof(MpegEncContext), + ff_msmpeg4_decode_init, + NULL, + ff_h263_decode_end, + 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, +}; diff --git a/libavcodec/vc1dec.c b/libavcodec/vc1dec.c index 5f27b3cc53..d2a50a3d61 100644 --- a/libavcodec/vc1dec.c +++ b/libavcodec/vc1dec.c @@ -2997,7 +2997,7 @@ static av_cold int vc1_decode_init(AVCodecContext *avctx) return -1; if (vc1_init_common(v) < 0) return -1; // only for ff_msmp4_mb_i_table - if (ff_msmpeg4_decode_init(s) < 0) return -1; + if (ff_msmpeg4_decode_init(avctx) < 0) return -1; avctx->coded_width = avctx->width; avctx->coded_height = avctx->height; diff --git a/libavcodec/wmv2dec.c b/libavcodec/wmv2dec.c index b14b5143aa..c7e29881ff 100644 --- a/libavcodec/wmv2dec.c +++ b/libavcodec/wmv2dec.c @@ -465,7 +465,7 @@ static av_cold int wmv2_decode_init(AVCodecContext *avctx){ avctx->idct_algo=FF_IDCT_WMV2; } - if(ff_h263_decode_init(avctx) < 0) + if(ff_msmpeg4_decode_init(avctx) < 0) return -1; ff_wmv2_common_init(w); -- cgit v1.2.3