mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-02-26 07:56:38 +00:00
asfdemux: Don't ignore the return result of gst_segment_do_seek()
gst_segment_do_seek() can fail, and our seek should fail accordingly. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-ugly/-/merge_requests/45>
This commit is contained in:
parent
c9e7490f46
commit
ec9a1e8ef4
1 changed files with 13 additions and 6 deletions
|
@ -647,6 +647,7 @@ gst_asf_demux_handle_seek_push (GstASFDemux * demux, GstEvent * event)
|
||||||
static gboolean
|
static gboolean
|
||||||
gst_asf_demux_handle_seek_event (GstASFDemux * demux, GstEvent * event)
|
gst_asf_demux_handle_seek_event (GstASFDemux * demux, GstEvent * event)
|
||||||
{
|
{
|
||||||
|
gboolean ret = TRUE;
|
||||||
GstClockTime idx_time;
|
GstClockTime idx_time;
|
||||||
GstSegment segment;
|
GstSegment segment;
|
||||||
GstSeekFlags flags;
|
GstSeekFlags flags;
|
||||||
|
@ -748,8 +749,11 @@ gst_asf_demux_handle_seek_event (GstASFDemux * demux, GstEvent * event)
|
||||||
/* operating on copy of segment until we know the seek worked */
|
/* operating on copy of segment until we know the seek worked */
|
||||||
segment = demux->segment;
|
segment = demux->segment;
|
||||||
|
|
||||||
gst_segment_do_seek (&segment, rate, format, flags, cur_type,
|
if (!gst_segment_do_seek (&segment, rate, format, flags, cur_type,
|
||||||
cur, stop_type, stop, &only_need_update);
|
cur, stop_type, stop, &only_need_update)) {
|
||||||
|
ret = FALSE;
|
||||||
|
goto skip;
|
||||||
|
}
|
||||||
|
|
||||||
GST_DEBUG_OBJECT (demux, "seeking to time %" GST_TIME_FORMAT ", segment: "
|
GST_DEBUG_OBJECT (demux, "seeking to time %" GST_TIME_FORMAT ", segment: "
|
||||||
"%" GST_SEGMENT_FORMAT, GST_TIME_ARGS (segment.start), &segment);
|
"%" GST_SEGMENT_FORMAT, GST_TIME_ARGS (segment.start), &segment);
|
||||||
|
@ -837,7 +841,7 @@ skip:
|
||||||
/* streaming can continue now */
|
/* streaming can continue now */
|
||||||
GST_PAD_STREAM_UNLOCK (demux->sinkpad);
|
GST_PAD_STREAM_UNLOCK (demux->sinkpad);
|
||||||
|
|
||||||
return TRUE;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
|
@ -1400,9 +1404,12 @@ gst_asf_demux_check_segment_ts (GstASFDemux * demux, GstClockTime payload_ts)
|
||||||
demux->segment_ts = payload_ts;
|
demux->segment_ts = payload_ts;
|
||||||
/* always note, but only determines segment when streaming */
|
/* always note, but only determines segment when streaming */
|
||||||
if (demux->streaming)
|
if (demux->streaming)
|
||||||
gst_segment_do_seek (&demux->segment, demux->in_segment.rate,
|
if (!gst_segment_do_seek (&demux->segment, demux->in_segment.rate,
|
||||||
GST_FORMAT_TIME, (GstSeekFlags) demux->segment.flags,
|
GST_FORMAT_TIME, (GstSeekFlags) demux->segment.flags,
|
||||||
GST_SEEK_TYPE_SET, demux->segment_ts, GST_SEEK_TYPE_NONE, 0, NULL);
|
GST_SEEK_TYPE_SET, demux->segment_ts, GST_SEEK_TYPE_NONE, 0,
|
||||||
|
NULL)) {
|
||||||
|
GST_WARNING_OBJECT (demux, "Initial segment seek failed");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue