mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-09-08 21:28:45 +00:00
qtdemux: Cast to signed integers to prevent unsigned compare between negative and positive numbers
This fixes seeking if the first entries in the samples table are negative. The binary search would always fail on this as the array would not be sorted if interpreting the negative numbers as huge positive numbers. This caused us to always output buffers from the beginning after a seek instead of close to the seek position. Also add a case to the comparison function for equality.
This commit is contained in:
parent
40aa27b788
commit
b404b2239a
1 changed files with 4 additions and 2 deletions
|
@ -991,10 +991,12 @@ typedef struct
|
||||||
} FindData;
|
} FindData;
|
||||||
|
|
||||||
static gint
|
static gint
|
||||||
find_func (QtDemuxSample * s1, guint64 * media_time, gpointer user_data)
|
find_func (QtDemuxSample * s1, gint64 * media_time, gpointer user_data)
|
||||||
{
|
{
|
||||||
if (s1->timestamp + s1->pts_offset > *media_time)
|
if ((gint64) s1->timestamp + s1->pts_offset > *media_time)
|
||||||
return 1;
|
return 1;
|
||||||
|
if ((gint64) s1->timestamp + s1->pts_offset == *media_time)
|
||||||
|
return 0;
|
||||||
|
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue