vlc | branch: master | Steve Lhomme <rob...@ycbcr.xyz> | Mon Jun 4 10:24:20 2018 +0200| [95bd547e6ff7a48ea0a223bb06a9c7ee7fb2131d] | committer: Steve Lhomme
demux: cdg: factorize the code to compute the DTS > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=95bd547e6ff7a48ea0a223bb06a9c7ee7fb2131d --- modules/demux/cdg.c | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/modules/demux/cdg.c b/modules/demux/cdg.c index 92315af875..e2aa8eaa4b 100644 --- a/modules/demux/cdg.c +++ b/modules/demux/cdg.c @@ -63,6 +63,7 @@ typedef struct #define CDG_FRAME_SIZE (96) #define CDG_FRAME_RATE (75) +#define CDG_FRAME_DELTA (CLOCK_FREQ / CDG_FRAME_RATE) /***************************************************************************** * Open: check file and initializes structures @@ -108,6 +109,11 @@ static int Open( vlc_object_t * p_this ) return VLC_SUCCESS; } +static vlc_tick_t PosToDate( demux_t *p_demux ) +{ + return vlc_stream_Tell( p_demux->s ) / CDG_FRAME_SIZE * CDG_FRAME_DELTA; +} + /***************************************************************************** * Demux: read packet and send them to decoders ***************************************************************************** @@ -118,9 +124,6 @@ static int Demux( demux_t *p_demux ) demux_sys_t *p_sys = p_demux->p_sys; block_t *p_block; vlc_tick_t i_date; - vlc_tick_t i_delta; - - i_delta = CLOCK_FREQ / CDG_FRAME_RATE; p_block = vlc_stream_Block( p_demux->s, CDG_FRAME_SIZE ); if( p_block == NULL ) @@ -129,8 +132,8 @@ static int Demux( demux_t *p_demux ) return VLC_DEMUXER_EOF; } - i_date = vlc_stream_Tell( p_demux->s ) / CDG_FRAME_SIZE * i_delta; - if( i_date >= date_Get( &p_sys->pts ) + i_delta ) + i_date = PosToDate( p_demux ); + if( i_date >= date_Get( &p_sys->pts ) + CDG_FRAME_DELTA ) { p_block->i_dts = p_block->i_pts = VLC_TICK_0 + i_date; date_Set( &p_sys->pts, VLC_TICK_0 + i_date ); @@ -158,8 +161,7 @@ static int Control( demux_t *p_demux, int i_query, va_list args ) i_query, args ); if( !i_ret && ( i_query == DEMUX_SET_POSITION || i_query == DEMUX_SET_TIME ) ) { - date_Set( &p_sys->pts, vlc_stream_Tell( p_demux->s ) / CDG_FRAME_SIZE * - CLOCK_FREQ / CDG_FRAME_RATE ); + date_Set( &p_sys->pts, PosToDate( p_demux ) ); if ( i_old_offset > vlc_stream_Tell( p_demux->s ) ) i_ret = vlc_stream_Seek( p_demux->s, 0 ); else _______________________________________________ vlc-commits mailing list vlc-commits@videolan.org https://mailman.videolan.org/listinfo/vlc-commits