--- avcodec.h 2004-05-12 18:40:32.000000000 +0200 +++ avcodec.h 2004-05-10 01:31:59.000000000 +0200 @@ -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 4713 --- common.h 2004-05-12 18:37:00.000000000 +0200 +++ common.h 2004-05-10 01:31:59.000000000 +0200 @@ -6,6 +6,11 @@ #ifndef COMMON_H #define COMMON_H +/* xine: disable DEBUG for ffmpeg (too noisy) */ +#ifdef DEBUG +#undef DEBUG +#endif + #if defined(WIN32) && !defined(__MINGW32__) && !defined(__CYGWIN__) # define CONFIG_WIN32 #endif --- dsputil.h 2004-04-27 05:58:06.000000000 +0200 +++ dsputil.h 2004-05-10 01:32:00.000000000 +0200 @@ -31,6 +31,9 @@ #include "common.h" #include "avcodec.h" +#if defined(ARCH_X86) +#define HAVE_MMX 1 +#endif //#define DEBUG /* dct code */ --- mlib/dsputil_mlib.c 2004-03-15 02:21:01.000000000 +0100 +++ mlib/dsputil_mlib.c 2004-03-15 02:22:22.000000000 +0100 @@ -20,6 +20,8 @@ #include "../dsputil.h" #include "../mpegvideo.h" +#include "../../../xine-utils/xineutils.h" + #include #include #include @@ -419,6 +421,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 +448,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 +464,5 @@ s->dsp.idct = ff_idct_mlib; s->dsp.idct_permutation_type= FF_NO_IDCT_PERM; } + } } --- mpeg12.c 2004-04-30 15:44:29.000000000 +0200 +++ mpeg12.c 2004-05-10 01:32:01.000000000 +0200 @@ -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 --- mpegvideo.c 2004-05-12 18:37:00.000000000 +0200 +++ mpegvideo.c 2004-05-10 01:32:01.000000000 +0200 @@ -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 @@ -1033,6 +1041,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; @@ -1154,6 +1164,7 @@ s->low_delay=1; break; #endif +#endif /* #if 0 */ default: return -1; } @@ -1172,13 +1183,22 @@ 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 */ + #ifdef CONFIG_ENCODERS +/* xine: do not need this for decode or MPEG-1 encoding modes */ +#if 0 #ifdef CONFIG_RISKY if (s->out_format == FMT_H263) h263_encode_init(s); if(s->msmpeg4_version) ff_msmpeg4_encode_init(s); #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 @@ -1230,9 +1250,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); @@ -2136,8 +2159,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); @@ -3674,6 +3700,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; @@ -3691,6 +3719,7 @@ #endif case CODEC_ID_MJPEG: mjpeg_encode_mb(s, s->block); break; +#endif /* #if 0 */ default: assert(0); } @@ -3965,6 +3994,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); @@ -3974,6 +4005,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); @@ -4025,10 +4057,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 @@ -4082,9 +4117,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); @@ -4106,19 +4144,25 @@ s->avctx->rtp_callback(s->ptr_lastgob, current_packet_size, 0); switch(s->codec_id){ +/* xine: do not need this for decode or MPEG-1 encoding modes */ +#if 0 case CODEC_ID_MPEG4: ff_mpeg4_encode_video_packet_header(s); ff_mpeg4_clean_buffers(s); break; +#endif /* #if 0 */ case CODEC_ID_MPEG1VIDEO: case CODEC_ID_MPEG2VIDEO: ff_mpeg1_encode_slice_header(s); ff_mpeg1_clean_buffers(s); break; +/* xine: do not need this for decode or MPEG-1 encoding modes */ +#if 0 case CODEC_ID_H263: case CODEC_ID_H263P: h263_encode_gob_header(s, mb_y); break; +#endif /* #if 0 */ } if(s->flags&CODEC_FLAG_PASS1){ @@ -4232,9 +4276,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); } @@ -4422,9 +4469,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; @@ -4531,11 +4581,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); @@ -4598,12 +4651,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; @@ -4657,6 +4713,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); @@ -4709,11 +4767,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: @@ -4726,6 +4787,7 @@ break; } #endif +#endif /* #if 0 */ s->lambda= s->lambda_table[0]; //FIXME broken @@ -4759,6 +4821,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; @@ -4778,11 +4842,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); }