From 15025553627082053c3a756937185cef13ba37df Mon Sep 17 00:00:00 2001 From: Aurelien Jacobs Date: Thu, 10 May 2007 13:11:36 +0000 Subject: [PATCH] disable reference to msmpeg4 and wmv2 code when those codecs are not compiled in Originally committed as revision 8975 to svn://svn.ffmpeg.org/ffmpeg/trunk --- libavcodec/h263dec.c | 11 ++++++----- libavcodec/mpegvideo.c | 15 +++++++++------ libavcodec/msmpeg4.h | 42 ++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 57 insertions(+), 11 deletions(-) create mode 100644 libavcodec/msmpeg4.h diff --git a/libavcodec/h263dec.c b/libavcodec/h263dec.c index 819866e..0434b10 100644 --- a/libavcodec/h263dec.c +++ b/libavcodec/h263dec.c @@ -30,6 +30,7 @@ #include "mpegvideo.h" #include "h263_parser.h" #include "mpeg4video_parser.h" +#include "msmpeg4.h" //#define DEBUG //#define PRINT_FRAME_TIME @@ -110,7 +111,7 @@ int ff_h263_decode_init(AVCodecContext *avctx) if (MPV_common_init(s) < 0) return -1; - if (s->h263_msmpeg4) + if (ENABLE_MSMPEG4_DECODER && s->h263_msmpeg4) ff_msmpeg4_decode_init(s); else h263_decode_init_vlc(s); @@ -388,9 +389,9 @@ retry: } /* let's go :-) */ - if (s->msmpeg4_version==5) { + if (ENABLE_WMV2_DECODER && s->msmpeg4_version==5) { ret= ff_wmv2_decode_picture_header(s); - } else if (s->msmpeg4_version) { + } else if (ENABLE_MSMPEG4_DECODER && s->msmpeg4_version) { ret = msmpeg4_decode_picture_header(s); } else if (s->h263_pred) { if(s->avctx->extradata_size && s->picture_number==0){ @@ -622,7 +623,7 @@ retry: //the second part of the wmv2 header contains the MB skip bits which are stored in current_picture->mb_type //which isnt available before MPV_frame_start() if (s->msmpeg4_version==5){ - if(ff_wmv2_decode_secondary_picture_header(s) < 0) + if(!ENABLE_WMV2_DECODER || ff_wmv2_decode_secondary_picture_header(s) < 0) return -1; } @@ -647,7 +648,7 @@ retry: } if (s->h263_msmpeg4 && s->msmpeg4_version<4 && s->pict_type==I_TYPE) - if(msmpeg4_decode_ext_header(s, buf_size) < 0){ + if(!ENABLE_MSMPEG4_DECODER || msmpeg4_decode_ext_header(s, buf_size) < 0){ s->error_status_table[s->mb_num-1]= AC_ERROR|DC_ERROR|MV_ERROR; } diff --git a/libavcodec/mpegvideo.c b/libavcodec/mpegvideo.c index f0069fa..c377993 100644 --- a/libavcodec/mpegvideo.c +++ b/libavcodec/mpegvideo.c @@ -30,6 +30,7 @@ #include "avcodec.h" #include "dsputil.h" #include "mpegvideo.h" +#include "msmpeg4.h" #include "faandct.h" #include @@ -1354,7 +1355,7 @@ int MPV_encode_init(AVCodecContext *avctx) #endif if (s->out_format == FMT_H263) h263_encode_init(s); - if(s->msmpeg4_version) + if (ENABLE_MSMPEG4_ENCODER && s->msmpeg4_version) ff_msmpeg4_encode_init(s); if (s->out_format == FMT_MPEG1) ff_mpeg1_encode_init(s); @@ -3552,7 +3553,7 @@ static inline void MPV_motion(MpegEncContext *s, 0, 0, 0, ref_picture, pix_op, qpix_op, s->mv[dir][0][0], s->mv[dir][0][1], 16); - }else if(s->mspel){ + }else if(ENABLE_WMV2 && s->mspel){ ff_mspel_motion(s, dest_y, dest_cb, dest_cr, ref_picture, pix_op, s->mv[dir][0][0], s->mv[dir][0][1], 16); @@ -4076,7 +4077,7 @@ static av_always_inline void MPV_decode_mb_internal(MpegEncContext *s, DCTELEM b } }//fi gray } - else{ + else if (ENABLE_WMV2) { ff_wmv2_add_mb(s, block, dest_y, dest_cb, dest_cr); } } else { @@ -4581,8 +4582,10 @@ static av_always_inline void encode_mb_internal(MpegEncContext *s, int motion_x, case CODEC_ID_MSMPEG4V2: case CODEC_ID_MSMPEG4V3: case CODEC_ID_WMV1: + if (ENABLE_MSMPEG4_ENCODER) msmpeg4_encode_mb(s, s->block, motion_x, motion_y); break; case CODEC_ID_WMV2: + if (ENABLE_WMV2_ENCODER) ff_wmv2_encode_mb(s, s->block, motion_x, motion_y); break; #ifdef CONFIG_H261_ENCODER case CODEC_ID_H261: @@ -5508,7 +5511,7 @@ static int encode_thread(AVCodecContext *c, void *arg){ } //not beautiful here but we must write it before flushing so it has to be here - if (s->msmpeg4_version && s->msmpeg4_version<4 && s->pict_type == I_TYPE) + if (ENABLE_MSMPEG4_ENCODER && s->msmpeg4_version && s->msmpeg4_version<4 && s->pict_type == I_TYPE) msmpeg4_encode_ext_header(s); write_slice_end(s); @@ -5772,9 +5775,9 @@ static int encode_picture(MpegEncContext *s, int picture_number) break; #endif case FMT_H263: - if (s->codec_id == CODEC_ID_WMV2) + if (ENABLE_WMV2_ENCODER && s->codec_id == CODEC_ID_WMV2) ff_wmv2_encode_picture_header(s, picture_number); - else if (s->h263_msmpeg4) + else if (ENABLE_MSMPEG4_ENCODER && s->h263_msmpeg4) msmpeg4_encode_picture_header(s, picture_number); else if (s->h263_pred) mpeg4_encode_picture_header(s, picture_number); diff --git a/libavcodec/msmpeg4.h b/libavcodec/msmpeg4.h new file mode 100644 index 0000000..1cf9663 --- /dev/null +++ b/libavcodec/msmpeg4.h @@ -0,0 +1,42 @@ +/* + * MSMPEG4 backend for ffmpeg encoder and decoder + * copyright (c) 2007 Aurelien Jacobs + * + * This file is part of FFmpeg. + * + * FFmpeg is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * FFmpeg is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with FFmpeg; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/** + * @file msmpeg4.h + */ + +#ifndef MSMPEG4_H +#define MSMPEG4_H + +#include "config.h" + +#define ENABLE_MSMPEG4_DECODER (ENABLE_MSMPEG4V1_DECODER || \ + ENABLE_MSMPEG4V2_DECODER || \ + ENABLE_MSMPEG4V3_DECODER || \ + ENABLE_WMV2_DECODER) +#define ENABLE_MSMPEG4_ENCODER (ENABLE_MSMPEG4V1_ENCODER || \ + ENABLE_MSMPEG4V2_ENCODER || \ + ENABLE_MSMPEG4V3_ENCODER || \ + ENABLE_WMV2_ENCODER) +#define ENABLE_MSMPEG4 (ENABLE_MSMPEG4_DECODER || ENABLE_MSMPEG4_ENCODER) +#define ENABLE_WMV2 (ENABLE_WMV2_DECODER || ENABLE_WMV2_ENCODER) + +#endif /* MSMPEG4_H */ -- 2.7.4