mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-06-07 07:58:51 +00:00
composition: Do not use 'update' seek for now
This is not working in our new context and the seek do not work at all when we set seek start to CLOCK_TIME_NONE and type to TYPE_NONE. Co-Authored by: Mathieu Duponchelle <mathieu.duponchelle@opencreed.com>
This commit is contained in:
parent
0951cc07e2
commit
619b157ec3
1 changed files with 16 additions and 9 deletions
|
@ -3023,7 +3023,6 @@ update_pipeline (GnlComposition * comp, GstClockTime currenttime,
|
||||||
GstClockTime new_stop = GST_CLOCK_TIME_NONE;
|
GstClockTime new_stop = GST_CLOCK_TIME_NONE;
|
||||||
GstClockTime new_start = GST_CLOCK_TIME_NONE;
|
GstClockTime new_start = GST_CLOCK_TIME_NONE;
|
||||||
|
|
||||||
gboolean startchanged, stopchanged;
|
|
||||||
|
|
||||||
GstState nextstate = (GST_STATE_NEXT (comp) == GST_STATE_VOID_PENDING) ?
|
GstState nextstate = (GST_STATE_NEXT (comp) == GST_STATE_VOID_PENDING) ?
|
||||||
GST_STATE (comp) : GST_STATE_NEXT (comp);
|
GST_STATE (comp) : GST_STATE_NEXT (comp);
|
||||||
|
@ -3052,14 +3051,6 @@ update_pipeline (GnlComposition * comp, GstClockTime currenttime,
|
||||||
/* invalidate the stack while modifying it */
|
/* invalidate the stack while modifying it */
|
||||||
priv->stackvalid = FALSE;
|
priv->stackvalid = FALSE;
|
||||||
|
|
||||||
if (priv->segment->rate >= 0.0) {
|
|
||||||
startchanged = priv->segment_start != currenttime;
|
|
||||||
stopchanged = priv->segment_stop != new_stop;
|
|
||||||
} else {
|
|
||||||
startchanged = priv->segment_start != new_start;
|
|
||||||
stopchanged = priv->segment_stop != currenttime;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* set new segment_start/stop (the current zone over which the new stack
|
/* set new segment_start/stop (the current zone over which the new stack
|
||||||
* is valid) */
|
* is valid) */
|
||||||
if (priv->segment->rate >= 0.0) {
|
if (priv->segment->rate >= 0.0) {
|
||||||
|
@ -3070,6 +3061,21 @@ update_pipeline (GnlComposition * comp, GstClockTime currenttime,
|
||||||
priv->segment_stop = currenttime;
|
priv->segment_stop = currenttime;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# if 0
|
||||||
|
/* FIXME -- We should be ablt to use updatestoponly in that case,
|
||||||
|
* but it simply does not work! Not using it leads to same
|
||||||
|
* behaviour, but less optimized */
|
||||||
|
|
||||||
|
gboolean startchanged, stopchanged;
|
||||||
|
|
||||||
|
if (priv->segment->rate >= 0.0) {
|
||||||
|
startchanged = priv->segment_start != currenttime;
|
||||||
|
stopchanged = priv->segment_stop != new_stop;
|
||||||
|
} else {
|
||||||
|
startchanged = priv->segment_start != new_start;
|
||||||
|
stopchanged = priv->segment_stop != currenttime;
|
||||||
|
}
|
||||||
|
|
||||||
if (samestack) {
|
if (samestack) {
|
||||||
if (startchanged || stopchanged) {
|
if (startchanged || stopchanged) {
|
||||||
/* Update seek events need to be flushing if not in PLAYING,
|
/* Update seek events need to be flushing if not in PLAYING,
|
||||||
|
@ -3077,6 +3083,7 @@ update_pipeline (GnlComposition * comp, GstClockTime currenttime,
|
||||||
updatestoponly = (state == GST_STATE_PLAYING) ? FALSE : TRUE;
|
updatestoponly = (state == GST_STATE_PLAYING) ? FALSE : TRUE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
toplevel_seek = get_new_seek_event (comp, TRUE, updatestoponly);
|
toplevel_seek = get_new_seek_event (comp, TRUE, updatestoponly);
|
||||||
_set_real_eos_seqnum_from_seek (comp, toplevel_seek);
|
_set_real_eos_seqnum_from_seek (comp, toplevel_seek);
|
||||||
|
|
Loading…
Reference in a new issue