Commit 0ef30fab authored by Laurent Aimar's avatar Laurent Aimar

Fixed timestamp in ffmpeg reget_buffer callback.

parent 4c8d8f49
...@@ -902,12 +902,20 @@ static int ffmpeg_GetFrameBuf( struct AVCodecContext *p_context, ...@@ -902,12 +902,20 @@ static int ffmpeg_GetFrameBuf( struct AVCodecContext *p_context,
static int ffmpeg_ReGetFrameBuf( struct AVCodecContext *p_context, AVFrame *p_ff_pic ) static int ffmpeg_ReGetFrameBuf( struct AVCodecContext *p_context, AVFrame *p_ff_pic )
{ {
decoder_t *p_dec = (decoder_t *)p_context->opaque; decoder_t *p_dec = (decoder_t *)p_context->opaque;
int i_ret;
/* Set picture PTS */ /* */
ffmpeg_SetFrameBufferPts( p_dec, p_ff_pic ); p_ff_pic->pts = AV_NOPTS_VALUE;
/* We always use default reget function, it works perfectly fine */ /* We always use default reget function, it works perfectly fine */
return avcodec_default_reget_buffer( p_context, p_ff_pic ); i_ret = avcodec_default_reget_buffer( p_context, p_ff_pic );
/* Set picture PTS if avcodec_default_reget_buffer didn't set it (through a
* ffmpeg_GetFrameBuf call) */
if( !i_ret && p_ff_pic->pts == AV_NOPTS_VALUE )
ffmpeg_SetFrameBufferPts( p_dec, p_ff_pic );
return i_ret;
} }
static void ffmpeg_SetFrameBufferPts( decoder_t *p_dec, AVFrame *p_ff_pic ) static void ffmpeg_SetFrameBufferPts( decoder_t *p_dec, AVFrame *p_ff_pic )
...@@ -928,9 +936,15 @@ static void ffmpeg_SetFrameBufferPts( decoder_t *p_dec, AVFrame *p_ff_pic ) ...@@ -928,9 +936,15 @@ static void ffmpeg_SetFrameBufferPts( decoder_t *p_dec, AVFrame *p_ff_pic )
{ {
p_ff_pic->pts = p_sys->input_dts; p_ff_pic->pts = p_sys->input_dts;
} }
else p_ff_pic->pts = 0; else
{
p_ff_pic->pts = 0;
}
}
else
{
p_ff_pic->pts = 0;
} }
else p_ff_pic->pts = 0;
if( p_sys->i_pts ) /* make sure 1st frame has a pts > 0 */ if( p_sys->i_pts ) /* make sure 1st frame has a pts > 0 */
{ {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment