Commit a6b81181 authored by Gildas Bazin's avatar Gildas Bazin

* modules/demux/ogg.c: fixed skipped pictures problem when starting a stream.

parent 381e1674
...@@ -479,7 +479,7 @@ static void Ogg_DecodePacket( demux_t *p_demux, ...@@ -479,7 +479,7 @@ static void Ogg_DecodePacket( demux_t *p_demux,
block_t *p_block; block_t *p_block;
vlc_bool_t b_selected; vlc_bool_t b_selected;
int i_header_len = 0; int i_header_len = 0;
mtime_t i_pts = 0; mtime_t i_pts = -1, i_interpolated_pts;
/* Sanity check */ /* Sanity check */
if( !p_oggpacket->bytes ) if( !p_oggpacket->bytes )
...@@ -588,6 +588,7 @@ static void Ogg_DecodePacket( demux_t *p_demux, ...@@ -588,6 +588,7 @@ static void Ogg_DecodePacket( demux_t *p_demux,
} }
/* Convert the granulepos into the next pcr */ /* Convert the granulepos into the next pcr */
i_interpolated_pts = p_stream->i_interpolated_pcr;
Ogg_UpdatePCR( p_stream, p_oggpacket ); Ogg_UpdatePCR( p_stream, p_oggpacket );
if( p_stream->i_pcr >= 0 ) if( p_stream->i_pcr >= 0 )
...@@ -624,6 +625,11 @@ static void Ogg_DecodePacket( demux_t *p_demux, ...@@ -624,6 +625,11 @@ static void Ogg_DecodePacket( demux_t *p_demux,
if( !( p_block = block_New( p_demux, p_oggpacket->bytes ) ) ) return; if( !( p_block = block_New( p_demux, p_oggpacket->bytes ) ) ) return;
/* Normalize PTS */
if( i_pts == 0 ) i_pts = 1;
else if( i_pts == -1 && i_interpolated_pts == 0 ) i_pts = 1;
else if( i_pts == -1 ) i_pts = 0;
if( p_stream->fmt.i_cat == AUDIO_ES ) if( p_stream->fmt.i_cat == AUDIO_ES )
p_block->i_dts = p_block->i_pts = i_pts; p_block->i_dts = p_block->i_pts = i_pts;
else if( p_stream->fmt.i_cat == SPU_ES ) else if( p_stream->fmt.i_cat == SPU_ES )
......
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