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 <sys/types.h> /* 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 <assert.h>
 
@@ -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 <assert.h>
 
 
+/* 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 <assert.h>
 
+
+/* 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; i<s->mb_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;
     }
+  }
 }
