From: Laurent Aimar Date: Thu, 7 May 2009 21:28:57 +0000 (+0200) Subject: Moved date_Decrement to libvlc core from dirac. X-Git-Tag: 1.0.0-rc1~12 X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=331625d9dcae5c28c02a8f78a9bf0598784a61f2;p=vlc Moved date_Decrement to libvlc core from dirac. --- diff --git a/include/vlc_mtime.h b/include/vlc_mtime.h index f3bb895d42..0a75dacdf9 100644 --- a/include/vlc_mtime.h +++ b/include/vlc_mtime.h @@ -136,5 +136,6 @@ VLC_EXPORT( void, date_Set, ( date_t *, mtime_t ) ); VLC_EXPORT( mtime_t, date_Get, ( const date_t * ) ); VLC_EXPORT( void, date_Move, ( date_t *, mtime_t ) ); VLC_EXPORT( mtime_t, date_Increment, ( date_t *, uint32_t ) ); +VLC_EXPORT( mtime_t, date_Decrement, ( date_t *, uint32_t ) ); VLC_EXPORT( uint64_t, NTPtime64, ( void ) ); #endif /* !__VLC_MTIME_ */ diff --git a/modules/packetizer/dirac.c b/modules/packetizer/dirac.c index b66659150b..af3f50f2e2 100644 --- a/modules/packetizer/dirac.c +++ b/modules/packetizer/dirac.c @@ -266,26 +266,6 @@ static dirac_block_encap_t *dirac_GetBlockEncap( block_t *p_block ) * General utility funcions */ -/* decrement a date. opposite to date_Increment */ -static mtime_t date_Decrement( date_t *p_date, uint32_t i_nb_samples ) -{ - mtime_t i_dividend = (mtime_t)i_nb_samples * 1000000 * p_date->i_divider_den; - p_date->date -= i_dividend / p_date->i_divider_num; - unsigned u_rem_adjust = i_dividend % p_date->i_divider_num; - - if( p_date->i_remainder < u_rem_adjust ) - { - /* This is Bresenham algorithm. */ - assert( p_date->i_remainder > -p_date->i_divider_num); - p_date->date -= 1; - p_date->i_remainder += p_date->i_divider_num; - } - - p_date->i_remainder -= u_rem_adjust; - - return p_date->date; -} - /** * given a chain of block_t, allocate and return an array containing * pointers to all the blocks. (Acts as a replacement for the old p_prev diff --git a/src/libvlccore.sym b/src/libvlccore.sym index 91f2d79c08..9f7c950c86 100644 --- a/src/libvlccore.sym +++ b/src/libvlccore.sym @@ -74,6 +74,7 @@ config_StringEscape config_StringUnescape convert_xml_special_chars date_Change +date_Decrement date_Get date_Increment date_Init diff --git a/src/misc/mtime.c b/src/misc/mtime.c index 0dbb4df578..c735bdfcaa 100644 --- a/src/misc/mtime.c +++ b/src/misc/mtime.c @@ -536,6 +536,33 @@ mtime_t date_Increment( date_t *p_date, uint32_t i_nb_samples ) return p_date->date; } +/** + * Decrement the date and return the result, taking into account + * rounding errors. + * + * \param date to decrement + * \param decrementation in number of samples + * \return date value + */ +mtime_t date_Decrement( date_t *p_date, uint32_t i_nb_samples ) +{ + mtime_t i_dividend = (mtime_t)i_nb_samples * 1000000 * p_date->i_divider_den; + p_date->date -= i_dividend / p_date->i_divider_num; + unsigned i_rem_adjust = i_dividend % p_date->i_divider_num; + + if( p_date->i_remainder < i_rem_adjust ) + { + /* This is Bresenham algorithm. */ + assert( p_date->i_remainder > -p_date->i_divider_num); + p_date->date -= 1; + p_date->i_remainder += p_date->i_divider_num; + } + + p_date->i_remainder -= i_rem_adjust; + + return p_date->date; +} + #ifndef HAVE_GETTIMEOFDAY #ifdef WIN32