diff options
Diffstat (limited to 'src/libffmpeg/libavcodec/mpegvideo.c')
-rw-r--r-- | src/libffmpeg/libavcodec/mpegvideo.c | 71 |
1 files changed, 53 insertions, 18 deletions
diff --git a/src/libffmpeg/libavcodec/mpegvideo.c b/src/libffmpeg/libavcodec/mpegvideo.c index 0e04301a4..0dd59d62e 100644 --- a/src/libffmpeg/libavcodec/mpegvideo.c +++ b/src/libffmpeg/libavcodec/mpegvideo.c @@ -36,7 +36,7 @@ //#undef NDEBUG //#include <assert.h> -#ifdef CONFIG_ENCODERS +#if defined(CONFIG_ENCODERS) || defined(XINE_MPEG_ENCODER) static void encode_picture(MpegEncContext *s, int picture_number); #endif //CONFIG_ENCODERS static void dct_unquantize_mpeg1_c(MpegEncContext *s, @@ -46,7 +46,7 @@ static void dct_unquantize_mpeg2_c(MpegEncContext *s, static void dct_unquantize_h263_c(MpegEncContext *s, DCTELEM *block, int n, int qscale); static void draw_edges_c(uint8_t *buf, int wrap, int width, int height, int w); -#ifdef CONFIG_ENCODERS +#if defined(CONFIG_ENCODERS) || defined(XINE_MPEG_ENCODER) static int dct_quantize_c(MpegEncContext *s, DCTELEM *block, int n, int qscale, int *overflow); static int dct_quantize_trellis_c(MpegEncContext *s, DCTELEM *block, int n, int qscale, int *overflow); static int sse_mb(MpegEncContext *s); @@ -87,7 +87,7 @@ static const uint8_t h263_chroma_roundtab[16] = { 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, }; -#ifdef CONFIG_ENCODERS +#if defined(CONFIG_ENCODERS) || defined(XINE_MPEG_ENCODER) static uint8_t (*default_mv_penalty)[MAX_MV*2+1]=NULL; static uint8_t default_fcode_tab[MAX_MV*2+1]; @@ -173,7 +173,7 @@ void ff_init_scantable(uint8_t *permutation, ScanTable *st, const uint8_t *src_s } } -#ifdef CONFIG_ENCODERS +#if defined(CONFIG_ENCODERS) || defined(XINE_MPEG_ENCODER) void ff_write_quant_matrix(PutBitContext *pb, int16_t *matrix){ int i; @@ -194,7 +194,7 @@ int DCT_common_init(MpegEncContext *s) s->dct_unquantize_mpeg1 = dct_unquantize_mpeg1_c; s->dct_unquantize_mpeg2 = dct_unquantize_mpeg2_c; -#ifdef CONFIG_ENCODERS +#if defined(CONFIG_ENCODERS) || defined(XINE_MPEG_ENCODER) s->dct_quantize= dct_quantize_c; #endif @@ -217,7 +217,7 @@ int DCT_common_init(MpegEncContext *s) MPV_common_init_ppc(s); #endif -#ifdef CONFIG_ENCODERS +#if defined(CONFIG_ENCODERS) || defined(XINE_MPEG_ENCODER) s->fast_dct_quantize= s->dct_quantize; if(s->flags&CODEC_FLAG_TRELLIS_QUANT){ @@ -569,7 +569,7 @@ void MPV_common_end(MpegEncContext *s) s->current_picture_ptr= NULL; } -#ifdef CONFIG_ENCODERS +#if defined(CONFIG_ENCODERS) || defined(XINE_MPEG_ENCODER) /* init video encoder */ int MPV_encode_init(AVCodecContext *avctx) @@ -686,6 +686,7 @@ int MPV_encode_init(AVCodecContext *avctx) s->low_delay= 0; //s->max_b_frames ? 0 : 1; avctx->delay= s->low_delay ? 0 : (s->max_b_frames + 1); break; +#if defined(CONFIG_ENCODERS) || !defined(XINE_MPEG_ENCODER) case CODEC_ID_MPEG2VIDEO: s->out_format = FMT_MPEG1; s->low_delay= 0; //s->max_b_frames ? 0 : 1; @@ -802,6 +803,7 @@ int MPV_encode_init(AVCodecContext *avctx) s->low_delay=1; break; #endif +#endif default: return -1; } @@ -836,24 +838,25 @@ int MPV_encode_init(AVCodecContext *avctx) if (MPV_common_init(s) < 0) return -1; -#ifdef CONFIG_ENCODERS_FULL +#if defined(CONFIG_ENCODERS) || !defined(XINE_MPEG_ENCODER) ff_init_me(s); #endif -#ifdef CONFIG_ENCODERS +#if defined(CONFIG_ENCODERS) || !defined(XINE_MPEG_ENCODER) #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 (s->out_format == FMT_MPEG1) ff_mpeg1_encode_init(s); -#endif /* init default q matrix */ for(i=0;i<64;i++) { int j= s->dsp.idct_permutation[i]; +#if defined(CONFIG_ENCODERS) || !defined(XINE_MPEG_ENCODER) #ifdef CONFIG_RISKY if(s->codec_id==CODEC_ID_MPEG4 && s->mpeg_quant){ s->intra_matrix[j] = ff_mpeg4_default_intra_matrix[i]; @@ -863,6 +866,7 @@ int MPV_encode_init(AVCodecContext *avctx) s->inter_matrix[j] = ff_mpeg1_default_non_intra_matrix[i]; }else #endif +#endif { /* mpeg1/2 */ s->intra_matrix[j] = ff_mpeg1_default_intra_matrix[i]; s->inter_matrix[j] = ff_mpeg1_default_non_intra_matrix[i]; @@ -906,8 +910,10 @@ int MPV_encode_end(AVCodecContext *avctx) ff_rate_control_uninit(s); MPV_common_end(s); +#if defined(CONFIG_ENCODERS) || !defined(XINE_MPEG_ENCODER) if (s->out_format == FMT_MJPEG) mjpeg_close(s); +#endif av_freep(&avctx->extradata); @@ -1343,7 +1349,7 @@ void ff_print_debug_info(MpegEncContext *s, Picture *pict){ } } -#ifdef CONFIG_ENCODERS +#if defined(CONFIG_ENCODERS) || defined(XINE_MPEG_ENCODER) static int get_sae(uint8_t *src, int ref, int stride){ int x,y; @@ -1636,10 +1642,10 @@ int MPV_encode_picture(AVCodecContext *avctx, MPV_frame_end(s); +#if defined(CONFIG_ENCODERS) || !defined(XINE_MPEG_ENCODER) if (s->out_format == FMT_MJPEG) mjpeg_picture_trailer(s); -#ifdef CONFIG_ENCODERS_FULL if(s->flags&CODEC_FLAG_PASS1) ff_write_pass1_stats(s); #endif @@ -2611,7 +2617,7 @@ void MPV_decode_mb(MpegEncContext *s, DCTELEM block[6][64]) } } -#ifdef CONFIG_ENCODERS +#if defined(CONFIG_ENCODERS) || defined(XINE_MPEG_ENCODER) static inline void dct_single_coeff_elimination(MpegEncContext *s, int n, int threshold) { @@ -2816,7 +2822,7 @@ void ff_init_block_index(MpegEncContext *s){ //FIXME maybe rename } } -#ifdef CONFIG_ENCODERS +#if defined(CONFIG_ENCODERS) || defined(XINE_MPEG_ENCODER) static void encode_mb(MpegEncContext *s, int motion_x, int motion_y) { @@ -3055,6 +3061,7 @@ static void encode_mb(MpegEncContext *s, int motion_x, int motion_y) case CODEC_ID_MPEG1VIDEO: case CODEC_ID_MPEG2VIDEO: mpeg1_encode_mb(s, s->block, motion_x, motion_y); break; +#if defined(CONFIG_ENCODERS) || !defined(XINE_MPEG_ENCODER) #ifdef CONFIG_RISKY case CODEC_ID_MPEG4: mpeg4_encode_mb(s, s->block, motion_x, motion_y); break; @@ -3072,6 +3079,7 @@ static void encode_mb(MpegEncContext *s, int motion_x, int motion_y) #endif case CODEC_ID_MJPEG: mjpeg_encode_mb(s, s->block); break; +#endif default: assert(0); } @@ -3156,7 +3164,7 @@ void ff_mpeg_flush(AVCodecContext *avctx){ s->parse_context.last_index= 0; } -#ifdef CONFIG_ENCODERS +#if defined(CONFIG_ENCODERS) || defined(XINE_MPEG_ENCODER) void ff_copy_bits(PutBitContext *pb, uint8_t *src, int length) { int bytes= length>>4; @@ -3344,12 +3352,14 @@ static void encode_picture(MpegEncContext *s, int picture_number) s->current_picture.mb_var_sum = 0; s->current_picture.mc_mb_var_sum = 0; +#if defined(CONFIG_ENCODERS) || !defined(XINE_MPEG_ENCODER) #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); #endif +#endif s->scene_change_score=0; @@ -3366,7 +3376,7 @@ static void encode_picture(MpegEncContext *s, int picture_number) /* Estimate motion for every MB */ s->mb_intra=0; //for the rate distoration & bit compare functions if(s->pict_type != I_TYPE){ -#ifdef CONFIG_ENCODERS_FULL +#if defined(CONFIG_ENCODERS) || !defined(XINE_MPEG_ENCODER) 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->me.pre_pass=1; @@ -3439,7 +3449,7 @@ static void encode_picture(MpegEncContext *s, int picture_number) //printf("Scene change detected, encoding as I Frame %d %d\n", s->current_picture.mb_var_sum, s->current_picture.mc_mb_var_sum); } -#ifdef CONFIG_ENCODERS_FULL +#if defined(CONFIG_ENCODERS) || !defined(XINE_MPEG_ENCODER) 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, MB_TYPE_INTER); @@ -3470,6 +3480,7 @@ static void encode_picture(MpegEncContext *s, int picture_number) s->current_picture.quality = ff_rate_estimate_qscale(s); if(s->adaptive_quant){ +#if defined(CONFIG_ENCODERS) || !defined(XINE_MPEG_ENCODER) #ifdef CONFIG_RISKY switch(s->codec_id){ case CODEC_ID_MPEG4: @@ -3482,6 +3493,7 @@ static void encode_picture(MpegEncContext *s, int picture_number) break; } #endif +#endif s->lambda= s->lambda_table[0]; //FIXME broken @@ -3514,6 +3526,7 @@ static void encode_picture(MpegEncContext *s, int picture_number) s->last_bits= get_bit_count(&s->pb); switch(s->out_format) { +#if defined(CONFIG_ENCODERS) || !defined(XINE_MPEG_ENCODER) case FMT_MJPEG: mjpeg_picture_header(s); break; @@ -3532,6 +3545,15 @@ static void encode_picture(MpegEncContext *s, int picture_number) else h263_encode_picture_header(s, picture_number); break; +#else + case FMT_H263: + break; +#endif +#else + case FMT_MJPEG: + break; + case FMT_H263: + break; #endif case FMT_MPEG1: mpeg1_encode_picture_header(s, picture_number); @@ -3566,6 +3588,7 @@ static void encode_picture(MpegEncContext *s, int picture_number) s->last_mv_dir = 0; +#if defined(CONFIG_ENCODERS) || !defined(XINE_MPEG_ENCODER) #ifdef CONFIG_RISKY switch(s->codec_id){ case CODEC_ID_H263: @@ -3579,6 +3602,7 @@ static void encode_picture(MpegEncContext *s, int picture_number) break; } #endif +#endif s->resync_mb_x=0; s->resync_mb_y=0; @@ -3602,6 +3626,7 @@ static void encode_picture(MpegEncContext *s, int picture_number) ff_update_block_index(s); /* write gob / video packet header */ +#if defined(CONFIG_ENCODERS) || !defined(XINE_MPEG_ENCODER) #ifdef CONFIG_RISKY if(s->rtp_mode && mb_y + mb_x>0){ int current_packet_size, is_gob_start; @@ -3657,6 +3682,7 @@ static void encode_picture(MpegEncContext *s, int picture_number) } } #endif +#endif if( (s->resync_mb_x == s->mb_x) && s->resync_mb_y+1 == s->mb_y){ @@ -3742,9 +3768,11 @@ static void encode_picture(MpegEncContext *s, int picture_number) s->mv_dir = MV_DIR_FORWARD | MV_DIR_BACKWARD | MV_DIRECT; s->mb_intra= 0; +#if defined(CONFIG_ENCODERS) || !defined(XINE_MPEG_ENCODER) #ifdef CONFIG_RISKY ff_mpeg4_set_direct_mv(s, mx, my); #endif +#endif encode_mb_hq(s, &backup_s, &best_s, MB_TYPE_DIRECT, pb, pb2, tex_pb, &dmin, &next_block, mx, my); } @@ -3913,9 +3941,11 @@ static void encode_picture(MpegEncContext *s, int picture_number) s->mb_intra= 0; motion_x=s->b_direct_mv_table[xy][0]; motion_y=s->b_direct_mv_table[xy][1]; +#if defined(CONFIG_ENCODERS) || !defined(XINE_MPEG_ENCODER) #ifdef CONFIG_RISKY ff_mpeg4_set_direct_mv(s, motion_x, motion_y); #endif +#endif break; case MB_TYPE_BIDIR: s->mv_dir = MV_DIR_FORWARD | MV_DIR_BACKWARD; @@ -3986,6 +4016,7 @@ static void encode_picture(MpegEncContext *s, int picture_number) } emms_c(); +#if defined(CONFIG_ENCODERS) || !defined(XINE_MPEG_ENCODER) #ifdef CONFIG_RISKY if(s->codec_id==CODEC_ID_MPEG4 && s->partitioned_frame) ff_mpeg4_merge_partitions(s); @@ -3996,6 +4027,7 @@ static void encode_picture(MpegEncContext *s, int picture_number) if(s->codec_id==CODEC_ID_MPEG4) ff_mpeg4_stuffing(&s->pb); #endif +#endif //if (s->gob_number) // fprintf(stderr,"\nNumber of GOB: %d", s->gob_number); @@ -4634,7 +4666,7 @@ static const AVOption mpeg4_options[] = AVOPTION_END() }; -#ifdef CONFIG_ENCODERS +#if defined(CONFIG_ENCODERS) || defined(XINE_MPEG_ENCODER) AVCodec mpeg1video_encoder = { "mpeg1video", @@ -4646,6 +4678,7 @@ AVCodec mpeg1video_encoder = { MPV_encode_end, }; +#if defined(CONFIG_ENCODERS) || !defined(XINE_MPEG_ENCODER) #ifdef CONFIG_RISKY AVCodec mpeg2video_encoder = { @@ -4765,5 +4798,7 @@ AVCodec mjpeg_encoder = { MPV_encode_end, }; +#endif + #endif //CONFIG_ENCODERS |