mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-18 15:51:11 +00:00
gst/matroska/matroska-demux.c: Fix open-ended seeks in matroskademux
Original commit message from CVS: * gst/matroska/matroska-demux.c: (gst_matroska_demux_handle_seek_event): Fix open-ended seeks in matroskademux Patch by: Mark Nauwelaerts <manauw skynet be> Fixes: #526557
This commit is contained in:
parent
2bdd92b2be
commit
8f2a1c0b5f
3 changed files with 20 additions and 9 deletions
|
@ -1,3 +1,11 @@
|
||||||
|
2008-04-14 Jan Schmidt <Jan.Schmidt@sun.com>
|
||||||
|
|
||||||
|
* gst/matroska/matroska-demux.c:
|
||||||
|
(gst_matroska_demux_handle_seek_event):
|
||||||
|
Fix open-ended seeks in matroskademux
|
||||||
|
Patch by: Mark Nauwelaerts <manauw skynet be>
|
||||||
|
Fixes: #526557
|
||||||
|
|
||||||
2008-04-14 Jan Schmidt <jan.schmidt@sun.com>
|
2008-04-14 Jan Schmidt <jan.schmidt@sun.com>
|
||||||
|
|
||||||
* tests/check/Makefile.am:
|
* tests/check/Makefile.am:
|
||||||
|
|
2
common
2
common
|
@ -1 +1 @@
|
||||||
Subproject commit bdc5172b0ba183be6d92e58cb51782c23e9f2127
|
Subproject commit f88ff852da7631ad2d0be835763da6d551a63883
|
|
@ -1397,24 +1397,27 @@ gst_matroska_demux_handle_seek_event (GstMatroskaDemux * demux,
|
||||||
GST_OBJECT_LOCK (demux);
|
GST_OBJECT_LOCK (demux);
|
||||||
|
|
||||||
/* if nothing configured, play complete file */
|
/* if nothing configured, play complete file */
|
||||||
if (cur == GST_CLOCK_TIME_NONE)
|
if (!GST_CLOCK_TIME_IS_VALID (cur))
|
||||||
cur = 0;
|
cur = 0;
|
||||||
if (stop == GST_CLOCK_TIME_NONE)
|
if (!GST_CLOCK_TIME_IS_VALID (stop))
|
||||||
stop = demux->segment.duration;
|
stop = demux->segment.duration;
|
||||||
|
/* prevent some calculations and comparisons involving INVALID */
|
||||||
|
segment_start = demux->segment.start;
|
||||||
|
segment_stop = demux->segment.stop;
|
||||||
|
if (!GST_CLOCK_TIME_IS_VALID (segment_start))
|
||||||
|
segment_start = 0;
|
||||||
|
if (!GST_CLOCK_TIME_IS_VALID (segment_stop))
|
||||||
|
segment_stop = demux->segment.duration;
|
||||||
|
|
||||||
if (cur_type == GST_SEEK_TYPE_SET)
|
if (cur_type == GST_SEEK_TYPE_SET)
|
||||||
segment_start = cur;
|
segment_start = cur;
|
||||||
else if (cur_type == GST_SEEK_TYPE_CUR)
|
else if (cur_type == GST_SEEK_TYPE_CUR)
|
||||||
segment_start = demux->segment.start + cur;
|
segment_start += cur;
|
||||||
else
|
|
||||||
segment_start = demux->segment.start;
|
|
||||||
|
|
||||||
if (stop_type == GST_SEEK_TYPE_SET)
|
if (stop_type == GST_SEEK_TYPE_SET)
|
||||||
segment_stop = stop;
|
segment_stop = stop;
|
||||||
else if (stop_type == GST_SEEK_TYPE_CUR)
|
else if (stop_type == GST_SEEK_TYPE_CUR)
|
||||||
segment_stop = demux->segment.stop + stop;
|
segment_stop += stop;
|
||||||
else
|
|
||||||
segment_stop = demux->segment.stop;
|
|
||||||
|
|
||||||
segment_start = CLAMP (segment_start, 0, demux->segment.duration);
|
segment_start = CLAMP (segment_start, 0, demux->segment.duration);
|
||||||
segment_stop = CLAMP (segment_stop, 0, demux->segment.duration);
|
segment_stop = CLAMP (segment_stop, 0, demux->segment.duration);
|
||||||
|
|
Loading…
Reference in a new issue