Index: avcodec.h =================================================================== RCS file: /cvsroot/ffmpeg/ffmpeg/libavcodec/avcodec.h,v retrieving revision 1.290 diff -u -r1.290 avcodec.h --- avcodec.h 14 Mar 2004 04:03:12 -0000 1.290 +++ avcodec.h 14 Mar 2004 21:02:15 -0000 @@ -15,6 +15,13 @@ #include "rational.h" #include /* size_t */ +/* FIXME: We cannot use ffmpeg's XvMC capabilities, since that would require + * linking the ffmpeg plugin against XvMC libraries, which is a bad thing, + * since they are output dependend. + * The correct fix would be to reimplement the XvMC functions libavcodec uses + * and do the necessary talking with our XvMC output plugin there. */ +#undef HAVE_XVMC + #define FFMPEG_VERSION_INT 0x000408 #define FFMPEG_VERSION "0.4.8" #define LIBAVCODEC_BUILD 4707 Index: common.h =================================================================== RCS file: /cvsroot/ffmpeg/ffmpeg/libavcodec/common.h,v retrieving revision 1.122 diff -u -r1.122 common.h --- common.h 12 Mar 2004 23:39:38 -0000 1.122 +++ common.h 14 Mar 2004 21:02:18 -0000 @@ -205,7 +205,9 @@ /* debug stuff */ # ifndef DEBUG +# ifndef NDEBUG # define NDEBUG +# endif # endif # include @@ -216,11 +218,19 @@ # else -# ifdef DEBUG -# define dprintf(fmt,...) printf(fmt, __VA_ARGS__) -# else -# define dprintf(fmt,...) -# endif +#if __GNUC__ +#ifdef DEBUG +#define dprintf(fmt,args...) printf(fmt, ## args) +#else +#define dprintf(fmt,args...) +#endif +#else +#ifdef DEBUG +#define dprintf(...) printf(__VA_ARGS__) +#else +#define dprintf(...) +#endif +#endif # endif /* !CONFIG_WIN32 */ Index: dsputil.h =================================================================== RCS file: /cvsroot/ffmpeg/ffmpeg/libavcodec/dsputil.h,v retrieving revision 1.90 diff -u -r1.90 dsputil.h --- dsputil.h 13 Mar 2004 21:43:23 -0000 1.90 +++ dsputil.h 14 Mar 2004 21:02:20 -0000 @@ -31,6 +31,9 @@ #include "common.h" #include "avcodec.h" +#if defined(ARCH_X86) +#define HAVE_MMX 1 +#endif //#define DEBUG /* dct code */ Index: fastmemcpy.h =================================================================== RCS file: /cvsroot/ffmpeg/ffmpeg/libavcodec/Attic/fastmemcpy.h,v retrieving revision 1.1 diff -u -r1.1 fastmemcpy.h --- fastmemcpy.h 2 Aug 2001 08:29:38 -0000 1.1 +++ fastmemcpy.h 14 Mar 2004 21:02:20 -0000 @@ -1 +1,4 @@ -#include "../libvo/fastmemcpy.h" +#if 0 +extern void *xine_fast_memcpy(void *to, const void *from, size_t len); +#define memcpy(a,b,c) xine_fast_memcpy(a,b,c) +#endif Index: mpeg12.c =================================================================== RCS file: /cvsroot/ffmpeg/ffmpeg/libavcodec/mpeg12.c,v retrieving revision 1.188 diff -u -r1.188 mpeg12.c --- mpeg12.c 13 Mar 2004 22:01:32 -0000 1.188 +++ mpeg12.c 14 Mar 2004 21:02:27 -0000 @@ -34,6 +34,13 @@ //#include +/* if xine's MPEG encoder is enabled, enable the encoding features in + * this particular module */ +#ifdef XINE_MPEG_ENCODER +#define CONFIG_ENCODERS +#endif + + /* Start codes. */ #define SEQ_END_CODE 0x000001b7 #define SEQ_START_CODE 0x000001b3 Index: mpegvideo.c =================================================================== RCS file: /cvsroot/ffmpeg/ffmpeg/libavcodec/mpegvideo.c,v retrieving revision 1.389 diff -u -r1.389 mpegvideo.c --- mpegvideo.c 14 Mar 2004 17:55:50 -0000 1.389 +++ mpegvideo.c 14 Mar 2004 21:02:42 -0000 @@ -39,6 +39,14 @@ //#undef NDEBUG //#include + +/* if xine's MPEG encoder is enabled, enable the encoding features in + * this particular module */ +#ifdef XINE_MPEG_ENCODER +#define CONFIG_ENCODERS +#endif + + #ifdef CONFIG_ENCODERS static void encode_picture(MpegEncContext *s, int picture_number); #endif //CONFIG_ENCODERS @@ -945,6 +953,8 @@ s->low_delay= 0; //s->max_b_frames ? 0 : 1; avctx->delay= s->low_delay ? 0 : (s->max_b_frames + 1); break; +/* xine: this is never used in either decode or MPEG-1 encode mode */ +#if 0 case CODEC_ID_MPEG2VIDEO: s->out_format = FMT_MPEG1; s->low_delay= 0; //s->max_b_frames ? 0 : 1; @@ -1066,6 +1076,7 @@ s->low_delay=1; break; #endif +#endif /* #if 0 */ default: return -1; } @@ -1106,8 +1117,13 @@ ff_set_cmp(&s->dsp, s->dsp.ildct_cmp, s->avctx->ildct_cmp); +/* xine: do not need this for decode or MPEG-1 encoding modes */ +#if 0 ff_init_me(s); +#endif /* #if 0 */ +/* xine: do not need this for decode or MPEG-1 encoding modes */ +#if 0 #ifdef CONFIG_ENCODERS #ifdef CONFIG_RISKY if (s->out_format == FMT_H263) @@ -1115,9 +1131,11 @@ if(s->msmpeg4_version) ff_msmpeg4_encode_init(s); #endif +#endif +#endif /* #if 0 */ +/* xine: we do want this for MPEG-1 encoding */ if (s->out_format == FMT_MPEG1) ff_mpeg1_encode_init(s); -#endif /* init default q matrix */ for(i=0;i<64;i++) { @@ -1173,9 +1191,12 @@ ff_rate_control_uninit(s); +/* xine: do not need this for decode or MPEG-1 encoding modes */ +#if 0 MPV_common_end(s); if (s->out_format == FMT_MJPEG) mjpeg_close(s); +#endif /* #if 0 */ av_freep(&avctx->extradata); @@ -2063,8 +2084,11 @@ MPV_frame_end(s); +/* xine: do not need this for decode or MPEG-1 encoding modes */ +#if 0 if (s->out_format == FMT_MJPEG) mjpeg_picture_trailer(s); +#endif /* #if 0 */ if(s->flags&CODEC_FLAG_PASS1) ff_write_pass1_stats(s); @@ -3593,6 +3617,8 @@ case CODEC_ID_MPEG1VIDEO: case CODEC_ID_MPEG2VIDEO: mpeg1_encode_mb(s, s->block, motion_x, motion_y); break; +/* xine: do not need this for decode or MPEG-1 encoding modes */ +#if 0 #ifdef CONFIG_RISKY case CODEC_ID_MPEG4: mpeg4_encode_mb(s, s->block, motion_x, motion_y); break; @@ -3610,6 +3636,7 @@ #endif case CODEC_ID_MJPEG: mjpeg_encode_mb(s, s->block); break; +#endif /* #if 0 */ default: assert(0); } @@ -3942,6 +3969,8 @@ } static void write_slice_end(MpegEncContext *s){ +/* xine: do not need this for decode or MPEG-1 encoding modes */ +#if 0 if(s->codec_id==CODEC_ID_MPEG4){ if(s->partitioned_frame){ ff_mpeg4_merge_partitions(s); @@ -3951,6 +3980,7 @@ }else if(s->out_format == FMT_MJPEG){ ff_mjpeg_stuffing(&s->pb); } +#endif /* #if 0 */ align_put_bits(&s->pb); flush_put_bits(&s->pb); @@ -4002,10 +4032,13 @@ case CODEC_ID_FLV1: s->gob_index = ff_h263_get_gob_height(s); break; +/* xine: do not need this for decode or MPEG-1 encoding modes */ +#if 0 case CODEC_ID_MPEG4: if(s->partitioned_frame) ff_mpeg4_init_partitions(s); break; +#endif /* #if 0 */ } #endif @@ -4032,6 +4065,8 @@ ff_update_block_index(s); /* write gob / video packet header */ +/* xine: do not need this for decode or MPEG-1 encoding modes */ +#if 0 #ifdef CONFIG_RISKY if(s->rtp_mode){ int current_packet_size, is_gob_start; @@ -4059,9 +4094,12 @@ if(s->start_mb_y != mb_y || mb_x!=0){ write_slice_end(s); +/* xine: do not need this for decode or MPEG-1 encoding modes */ +#if 0 if(s->codec_id==CODEC_ID_MPEG4 && s->partitioned_frame){ ff_mpeg4_init_partitions(s); } +#endif /* #if 0 */ } assert((put_bits_count(&s->pb)&7) == 0); @@ -4111,6 +4149,8 @@ } } #endif +#endif /* #if 0 */ + if( (s->resync_mb_x == s->mb_x) && s->resync_mb_y+1 == s->mb_y){ @@ -4209,9 +4249,12 @@ s->mv_dir = MV_DIR_FORWARD | MV_DIR_BACKWARD | MV_DIRECT; s->mb_intra= 0; +/* xine: do not need this for decode or MPEG-1 encoding modes */ +#if 0 #ifdef CONFIG_RISKY ff_mpeg4_set_direct_mv(s, mx, my); #endif +#endif /* #if 0 */ encode_mb_hq(s, &backup_s, &best_s, CANDIDATE_MB_TYPE_DIRECT, pb, pb2, tex_pb, &dmin, &next_block, mx, my); } @@ -4399,9 +4442,12 @@ s->mb_intra= 0; motion_x=s->b_direct_mv_table[xy][0]; motion_y=s->b_direct_mv_table[xy][1]; +/* xine: do not need this for decode or MPEG-1 encoding modes */ +#if 0 #ifdef CONFIG_RISKY ff_mpeg4_set_direct_mv(s, motion_x, motion_y); #endif +#endif /* #if 0 */ break; case CANDIDATE_MB_TYPE_BIDIR: s->mv_dir = MV_DIR_FORWARD | MV_DIR_BACKWARD; @@ -4508,11 +4554,14 @@ } } +/* xine: do not need this for decode or MPEG-1 encoding modes */ +#if 0 #ifdef CONFIG_RISKY //not beautifull 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) msmpeg4_encode_ext_header(s); #endif +#endif /* #if 0 */ write_slice_end(s); @@ -4576,12 +4625,15 @@ s->mb_var_sum_temp = s->mc_mb_var_sum_temp = 0; +/* xine: do not need this for decode or MPEG-1 encoding modes */ +#if 0 #ifdef CONFIG_RISKY /* we need to initialize some time vars before we can encode b-frames */ // RAL: Condition added for MPEG1VIDEO if (s->codec_id == CODEC_ID_MPEG1VIDEO || s->codec_id == CODEC_ID_MPEG2VIDEO || (s->h263_pred && !s->h263_msmpeg4)) ff_set_mpeg4_time(s, s->picture_number); //FIXME rename and use has_b_frames or similar #endif +#endif /* #if 0 */ s->scene_change_score=0; @@ -4602,6 +4654,8 @@ /* Estimate motion for every MB */ if(s->pict_type != I_TYPE){ +/* xine: do not need this for decode or MPEG-1 encoding modes */ +#if 0 if(s->pict_type != B_TYPE){ if((s->avctx->pre_me && s->last_non_b_pict_type==I_TYPE) || s->avctx->pre_me==2){ s->avctx->execute(s->avctx, pre_estimate_motion_thread, (void**)&(s->thread_context[0]), NULL, s->avctx->thread_count); @@ -4609,6 +4663,7 @@ } s->avctx->execute(s->avctx, estimate_motion_thread, (void**)&(s->thread_context[0]), NULL, s->avctx->thread_count); +#endif /* #if 0 */ }else /* if(s->pict_type == I_TYPE) */{ /* I-Frame */ for(i=0; imb_stride*s->mb_height; i++) @@ -4633,6 +4688,8 @@ //printf("Scene change detected, encoding as I Frame %d %d\n", s->current_picture.mb_var_sum, s->current_picture.mc_mb_var_sum); } +/* xine: do not need this for decode or MPEG-1 encoding modes */ +#if 0 if(!s->umvplus){ if(s->pict_type==P_TYPE || s->pict_type==S_TYPE) { s->f_code= ff_get_best_fcode(s, s->p_mv_table, CANDIDATE_MB_TYPE_INTER); @@ -4685,11 +4742,14 @@ } } } +#endif /* #if 0 */ if (!s->fixed_qscale) s->current_picture.quality = ff_rate_estimate_qscale(s); //FIXME pic_ptr if(s->adaptive_quant){ +/* xine: do not need this for decode or MPEG-1 encoding modes */ +#if 0 #ifdef CONFIG_RISKY switch(s->codec_id){ case CODEC_ID_MPEG4: @@ -4702,6 +4762,7 @@ break; } #endif +#endif /* #if 0 */ s->lambda= s->lambda_table[0]; //FIXME broken @@ -4735,6 +4796,8 @@ s->last_bits= put_bits_count(&s->pb); switch(s->out_format) { +/* xine: do not need this for decode or MPEG-1 encoding modes */ +#if 0 case FMT_MJPEG: mjpeg_picture_header(s); break; @@ -4754,11 +4817,15 @@ h263_encode_picture_header(s, picture_number); break; #endif +#endif /* #if 0 */ case FMT_MPEG1: mpeg1_encode_picture_header(s, picture_number); break; +/* xine: do not need this for decode or MPEG-1 encoding modes */ +#if 0 case FMT_H264: break; +#endif /* #if 0 */ default: assert(0); } Index: mlib/dsputil_mlib.c =================================================================== RCS file: /cvsroot/ffmpeg/ffmpeg/libavcodec/mlib/dsputil_mlib.c,v retrieving revision 1.14 diff -u -r1.14 dsputil_mlib.c --- mlib/dsputil_mlib.c 11 Oct 2003 16:43:51 -0000 1.14 +++ mlib/dsputil_mlib.c 14 Mar 2004 21:02:44 -0000 @@ -419,6 +419,7 @@ void dsputil_init_mlib(DSPContext* c, AVCodecContext *avctx) { + if (xine_mm_accel() & MM_ACCEL_MLIB) { c->get_pixels = get_pixels_mlib; c->diff_pixels = diff_pixels_mlib; c->add_pixels_clamped = add_pixels_clamped_mlib; @@ -445,10 +446,12 @@ c->put_no_rnd_pixels_tab[1][0] = put_pixels8_mlib; c->bswap_buf = bswap_buf_mlib; + } } void MPV_common_init_mlib(MpegEncContext *s) { + if (xine_mm_accel() & MM_ACCEL_MLIB) { if(s->avctx->dct_algo==FF_DCT_AUTO || s->avctx->dct_algo==FF_DCT_MLIB){ s->dsp.fdct = ff_fdct_mlib; } @@ -459,4 +462,5 @@ s->dsp.idct = ff_idct_mlib; s->dsp.idct_permutation_type= FF_NO_IDCT_PERM; } + } }