1
0
mirror of https://github.com/mpv-player/mpv synced 2025-03-25 04:38:01 +00:00

add compare_ts

git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@17533 b3059339-0415-0410-9bf9-f77b7e298cf2
This commit is contained in:
ods15 2006-02-04 08:53:43 +00:00
parent ebcf3473e5
commit a3a2ac9da6

View File

@ -413,6 +413,24 @@ convert_ts
Note: this calculation MUST be done with unsigned 64 bit integers, and
is equivalent to (ln*sn)/(d1*d2) but this would require a 96bit integer
compare_ts
Compares timestamps from 2 different timebases,
if a is before b then compare_ts(a, b) = -1
if a is after b then compare_ts(a, b) = 1
else compare_ts(a, b) = 0
Care must be taken that this is done exactly with no rounding errors,
simply casting to float or double and doing the obvious
a*timebase > b*timebase is not compliant or correct, neither is the
same with integers, and
a*a_timebase.num*b_timebase.den > b*b_timebase.num*a_timebase.den
will overflow. One possible implementation which shouldn't overflow
within the range of legal timestamps and timebases is:
if (convert_ts(a, a_timebase, b_timebase) < b) return -1;
if (convert_ts(b, b_timebase, a_timebase) < a) return 1;
return 0;
msb_pts_shift
amount of bits in lsb_pts
MUST be <16