vlc | branch: master | Ludovic Fauvet <[email protected]> | Mon Jan 14 11:59:08 2013 +0100| [d9b1afb30594f3dca65aa8ac7ef93b400f24faff] | committer: Jean-Baptiste Kempf
Ogg: implement SET_SEEKPOINT Close #6895 Signed-off-by: Jean-Baptiste Kempf <[email protected]> > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=d9b1afb30594f3dca65aa8ac7ef93b400f24faff --- modules/demux/ogg.c | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/modules/demux/ogg.c b/modules/demux/ogg.c index 563d898..b37dfb1 100644 --- a/modules/demux/ogg.c +++ b/modules/demux/ogg.c @@ -533,7 +533,27 @@ static int Control( demux_t *p_demux, int i_query, va_list args ) const int i_seekpoint = (int)va_arg( args, int ); if( i_seekpoint > p_sys->i_seekpoints ) return VLC_EGENERIC; - return VLC_EGENERIC;// Seek( p_demux, p_sys->pp_seekpoints[i_seekpoint]->i_time_offset ); + if( p_sys->i_bos > 0 ) + { + return VLC_EGENERIC; + } + + for( i = 0; i < p_sys->i_streams; i++ ) + { + logical_stream_t *p_stream = p_sys->pp_stream[i]; + + /* we'll trash all the data until we find the next pcr */ + p_stream->b_reinit = true; + p_stream->i_pcr = -1; + p_stream->i_interpolated_pcr = -1; + p_stream->i_previous_granulepos = -1; + ogg_stream_reset( &p_stream->os ); + } + ogg_sync_reset( &p_sys->oy ); + int64_t i_block = p_sys->pp_seekpoints[i_seekpoint]->i_time_offset * p_sys->i_bitrate / INT64_C(8000000); + if( stream_Seek( p_demux->s, i_block ) ) + return VLC_EGENERIC; + return VLC_SUCCESS; } default: _______________________________________________ vlc-commits mailing list [email protected] http://mailman.videolan.org/listinfo/vlc-commits
