vlc | branch: master | Francois Cartegnie <fcvlc...@free.fr> | Fri May 16 13:58:42 2014 +0200| [3e90cf530ece5b6a6996ccc22f29f0fb55443006] | committer: Francois Cartegnie
demux: asf: set preroll point after indexless seek > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=3e90cf530ece5b6a6996ccc22f29f0fb55443006 --- modules/demux/asf/asf.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/modules/demux/asf/asf.c b/modules/demux/asf/asf.c index 9e63a44..df7735e 100644 --- a/modules/demux/asf/asf.c +++ b/modules/demux/asf/asf.c @@ -73,6 +73,7 @@ static int Control( demux_t *, int i_query, va_list args ); static void FlushRemainingPackets( demux_t *p_demux ); #define MAX_ASF_TRACKS 128 +#define ASF_PREROLL_FROM_CURRENT -1 typedef struct { @@ -363,6 +364,7 @@ static void SeekPrepare( demux_t *p_demux ) demux_sys_t *p_sys = p_demux->p_sys; p_sys->i_time = VLC_TS_INVALID; + p_sys->i_preroll_start = ASF_PREROLL_FROM_CURRENT; for( int i = 0; i < MAX_ASF_TRACKS ; i++ ) { asf_track_t *tk = p_sys->track[i]; @@ -761,6 +763,10 @@ static int DemuxPayload(demux_t *p_demux, struct asf_packet_t *pkt, int i_payloa uint32_t i_temp_payload_length = 0; p_sys->p_fp->i_preroll = __MIN( p_sys->p_fp->i_preroll, INT64_MAX ); + /* First packet, in case we do not have index to guess preroll start time */ + if ( p_sys->i_preroll_start == ASF_PREROLL_FROM_CURRENT ) + p_sys->i_preroll_start = pkt->send_time * 1000; + /* Non compressed */ if( i_replicated_data_length > 7 ) // should be at least 8 bytes { _______________________________________________ vlc-commits mailing list vlc-commits@videolan.org https://mailman.videolan.org/listinfo/vlc-commits