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:
Sebastian Dröge 2015-11-18 19:07:53 +02:00
parent 40aa27b788
commit b404b2239a

View file

@ -991,10 +991,12 @@ typedef struct
} FindData;
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;
if ((gint64) s1->timestamp + s1->pts_offset == *media_time)
return 0;
return -1;
}