vlc | branch: master | Thomas Guillem <[email protected]> | Thu Mar 12 14:51:07 2020 +0100| [7bad2a867f01786ace2e8ff074e5dcc19fb96063] | committer: Thomas Guillem
demux: wav: fix wrong pts after a seek > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=7bad2a867f01786ace2e8ff074e5dcc19fb96063 --- modules/demux/wav.c | 31 +++++++++++++++++++++++++++---- 1 file changed, 27 insertions(+), 4 deletions(-) diff --git a/modules/demux/wav.c b/modules/demux/wav.c index f91a3c3abc..4b0623412f 100644 --- a/modules/demux/wav.c +++ b/modules/demux/wav.c @@ -142,10 +142,33 @@ static int Control( demux_t *p_demux, int i_query, va_list args ) if( p_sys->i_data_size > 0 ) i_end = p_sys->i_data_pos + p_sys->i_data_size; - return demux_vaControlHelper( p_demux->s, p_sys->i_data_pos, i_end, - p_sys->fmt.i_bitrate, - p_sys->fmt.audio.i_blockalign, - i_query, args ); + int ret = demux_vaControlHelper( p_demux->s, p_sys->i_data_pos, i_end, + p_sys->fmt.i_bitrate, + p_sys->fmt.audio.i_blockalign, + i_query, args ); + if( ret != VLC_SUCCESS ) + return ret; + + /* Update the date to the new seek point */ + switch( i_query ) + { + case DEMUX_SET_POSITION: + case DEMUX_SET_TIME: + { + uint64_t ofs = vlc_stream_Tell( p_demux->s ); + if( unlikely( ofs < p_sys->i_data_pos ) ) + return VLC_SUCCESS; + + ofs -= p_sys->i_data_pos; + vlc_tick_t pts = + vlc_tick_from_samples( ofs * 8, p_sys->fmt.i_bitrate ); + date_Set( &p_sys->pts, pts ); + break; + } + default: + break; + } + return VLC_SUCCESS; } static int ChunkSkip( demux_t *p_demux, uint32_t i_size ) _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
