From 2f322e1f19b0ea622f5970f80d69eaa67bbcb836 Mon Sep 17 00:00:00 2001 From: Gildas Bazin Date: Tue, 10 May 2005 10:38:35 +0000 Subject: [PATCH] * modules/codec/ffmpeg/*, modules/stream_out/switcher.c: fix compilation with new ffmpeg versions (use native timebase). --- modules/codec/ffmpeg/encoder.c | 5 +++++ modules/codec/ffmpeg/video.c | 19 +++++++++++++++++++ modules/stream_out/switcher.c | 5 +++++ 3 files changed, 29 insertions(+) diff --git a/modules/codec/ffmpeg/encoder.c b/modules/codec/ffmpeg/encoder.c index 142aa93359..59c64a70f2 100644 --- a/modules/codec/ffmpeg/encoder.c +++ b/modules/codec/ffmpeg/encoder.c @@ -328,8 +328,13 @@ int E_(OpenEncoder)( vlc_object_t *p_this ) p_context->width = p_enc->fmt_in.video.i_width; p_context->height = p_enc->fmt_in.video.i_height; +#if LIBAVCODEC_BUILD >= 4754 + p_context->time_base.num = p_enc->fmt_in.video.i_frame_rate_base; + p_context->time_base.den = p_enc->fmt_in.video.i_frame_rate; +#else p_context->frame_rate = p_enc->fmt_in.video.i_frame_rate; p_context->frame_rate_base= p_enc->fmt_in.video.i_frame_rate_base; +#endif /* Defaults from ffmpeg.c */ p_context->qblur = 0.5; diff --git a/modules/codec/ffmpeg/video.c b/modules/codec/ffmpeg/video.c index 769ab7ab70..44e21e7d11 100644 --- a/modules/codec/ffmpeg/video.c +++ b/modules/codec/ffmpeg/video.c @@ -186,11 +186,19 @@ static inline picture_t *ffmpeg_NewPictBuf( decoder_t *p_dec, } } +#if LIBAVCODEC_BUILD >= 4754 + if( p_context->time_base.num > 0 && p_context->time_base.den > 0 ) + { + p_dec->fmt_out.video.i_frame_rate = p_context->time_base.den; + p_dec->fmt_out.video.i_frame_rate_base = p_context->time_base.num; + } +#else if( p_context->frame_rate > 0 && p_context->frame_rate_base > 0 ) { p_dec->fmt_out.video.i_frame_rate = p_context->frame_rate; p_dec->fmt_out.video.i_frame_rate_base = p_context->frame_rate_base; } +#endif p_pic = p_dec->pf_vout_buffer_new( p_dec ); @@ -654,6 +662,16 @@ picture_t *E_(DecodeVideo)( decoder_t *p_dec, block_t **pp_block ) p_pic->date = p_sys->i_pts; /* interpolate the next PTS */ +#if LIBAVCODEC_BUILD >= 4754 + if( p_sys->p_context->time_base.den > 0 ) + { + p_sys->i_pts += I64C(1000000) * + (2 + p_sys->p_ff_pic->repeat_pict) * + p_sys->p_context->time_base.num * + p_block->i_rate / INPUT_RATE_DEFAULT / + (2 * p_sys->p_context->time_base.den); + } +#else if( p_sys->p_context->frame_rate > 0 ) { p_sys->i_pts += I64C(1000000) * @@ -662,6 +680,7 @@ picture_t *E_(DecodeVideo)( decoder_t *p_dec, block_t **pp_block ) p_block->i_rate / INPUT_RATE_DEFAULT / (2 * p_sys->p_context->frame_rate); } +#endif if( p_sys->b_first_frame ) { diff --git a/modules/stream_out/switcher.c b/modules/stream_out/switcher.c index afdb858214..84b19d6f33 100644 --- a/modules/stream_out/switcher.c +++ b/modules/stream_out/switcher.c @@ -740,8 +740,13 @@ static mtime_t VideoCommand( sout_stream_t *p_stream, sout_stream_id_t *id ) i_aspect_num * (int64_t)id->ff_enc_c->height, i_aspect_den * (int64_t)id->ff_enc_c->width, 1 << 30 ); +#if LIBAVCODEC_BUILD >= 4754 + id->ff_enc_c->time_base.num = 1; + id->ff_enc_c->time_base.den = 25; /* FIXME */ +#else id->ff_enc_c->frame_rate = 25; /* FIXME */ id->ff_enc_c->frame_rate_base = 1; +#endif id->ff_enc_c->gop_size = 200; id->ff_enc_c->max_b_frames = 0; -- GitLab