mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-26 10:10:32 +00:00
gst/avi/gstavidemux.c: Set EOS when going out of the segment in reverse playback
Original commit message from CVS: * gst/avi/gstavidemux.c: Set EOS when going out of the segment in reverse playback
This commit is contained in:
parent
7aa4f9962c
commit
f1c5dc21b4
2 changed files with 24 additions and 4 deletions
|
@ -1,3 +1,8 @@
|
||||||
|
2008-06-04 Thijs Vermeir <thijsvermeir@gmail.com>
|
||||||
|
|
||||||
|
* gst/avi/gstavidemux.c:
|
||||||
|
Set EOS when going out of the segment in reverse playback
|
||||||
|
|
||||||
2008-06-04 Tim-Philipp Müller <tim.muller at collabora co uk>
|
2008-06-04 Tim-Philipp Müller <tim.muller at collabora co uk>
|
||||||
|
|
||||||
* ext/taglib/Makefile.am::
|
* ext/taglib/Makefile.am::
|
||||||
|
|
|
@ -3461,11 +3461,14 @@ gst_avi_demux_process_next_entry (GstAviDemux * avi)
|
||||||
/* check for reverse playback */
|
/* check for reverse playback */
|
||||||
if (avi->segment.rate < 0 && avi->current_entry > avi->reverse_stop_index) {
|
if (avi->segment.rate < 0 && avi->current_entry > avi->reverse_stop_index) {
|
||||||
GST_LOG_OBJECT (avi, "stop_index %d reached", avi->reverse_stop_index);
|
GST_LOG_OBJECT (avi, "stop_index %d reached", avi->reverse_stop_index);
|
||||||
|
|
||||||
|
/* check if we have pushed enough data for this segment */
|
||||||
|
if (avi->reverse_start_index == 0)
|
||||||
|
goto eos_reverse_zero;
|
||||||
|
if (avi->index_entries[avi->reverse_start_index].ts < avi->segment.start)
|
||||||
|
goto eos_reverse_segment;
|
||||||
|
|
||||||
avi->reverse_stop_index = avi->reverse_start_index;
|
avi->reverse_stop_index = avi->reverse_start_index;
|
||||||
if (avi->reverse_start_index == 0) {
|
|
||||||
GST_DEBUG_OBJECT (avi, "start_index was 0, sending eos");
|
|
||||||
goto eos;
|
|
||||||
}
|
|
||||||
entry =
|
entry =
|
||||||
gst_avi_demux_index_prev (avi, 0, avi->reverse_stop_index,
|
gst_avi_demux_index_prev (avi, 0, avi->reverse_stop_index,
|
||||||
GST_AVI_INDEX_ENTRY_FLAG_KEYFRAME);
|
GST_AVI_INDEX_ENTRY_FLAG_KEYFRAME);
|
||||||
|
@ -3597,6 +3600,18 @@ eos_stop:
|
||||||
res = GST_FLOW_UNEXPECTED;
|
res = GST_FLOW_UNEXPECTED;
|
||||||
goto beach;
|
goto beach;
|
||||||
}
|
}
|
||||||
|
eos_reverse_zero:
|
||||||
|
{
|
||||||
|
GST_DEBUG_OBJECT (avi, "start_index was 0, setting EOS");
|
||||||
|
res = GST_FLOW_UNEXPECTED;
|
||||||
|
goto beach;
|
||||||
|
}
|
||||||
|
eos_reverse_segment:
|
||||||
|
{
|
||||||
|
GST_DEBUG_OBJECT (avi, "full segment pushed, setting EOS");
|
||||||
|
res = GST_FLOW_UNEXPECTED;
|
||||||
|
goto beach;
|
||||||
|
}
|
||||||
pull_failed:
|
pull_failed:
|
||||||
{
|
{
|
||||||
GST_DEBUG_OBJECT (avi,
|
GST_DEBUG_OBJECT (avi,
|
||||||
|
|
Loading…
Reference in a new issue