mirror of
https://github.com/mpv-player/mpv
synced 2025-04-04 23:40:47 +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:
parent
ebcf3473e5
commit
a3a2ac9da6
@ -413,6 +413,24 @@ convert_ts
|
|||||||
Note: this calculation MUST be done with unsigned 64 bit integers, and
|
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
|
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
|
msb_pts_shift
|
||||||
amount of bits in lsb_pts
|
amount of bits in lsb_pts
|
||||||
MUST be <16
|
MUST be <16
|
||||||
|
Loading…
Reference in New Issue
Block a user