Make GstSeekFlag to GstSegmentFlag conversion explicit, and
set only those seek flags in the segment flags which are
mapped. This makes sure we don't have extraneous flags
littering our segment flag field, which also fixes the
debug printing/serialisation of segment events in the
debug log.
When it reaches timestamp 5, it does not decode and push frames anymore.
The video sink receives a frame of timestamp 1. It takes the start value of
- the previous segment and aplies the folowing (simplified) formula:
+ the previous segment and aplies the following (simplified) formula:
render_time = BUFFER_TIMESTAMP - segment_start + element->base_time
segment->rate = rate;
segment->applied_rate = 1.0;
segment->base = base;
- segment->flags = (GstSegmentFlags) flags;
+ /* be explicit about our GstSeekFlag -> GstSegmentFlag conversion */
+ segment->flags = GST_SEGMENT_FLAG_NONE;
+ if ((flags & GST_SEEK_FLAG_FLUSH) != 0)
+ segment->flags |= GST_SEGMENT_FLAG_RESET;
+ if ((flags & GST_SEEK_FLAG_SKIP) != 0)
+ segment->flags |= GST_SEGMENT_FLAG_SKIP;
segment->start = start;
segment->stop = stop;
segment->time = start;
* Flags for the GstSegment structure. Currently mapped to the corresponding
* values of the seek flags.
*/
+/* Note: update gst_segment_do_seek() when adding new flags here */
typedef enum {
GST_SEGMENT_FLAG_NONE = GST_SEEK_FLAG_NONE,
GST_SEGMENT_FLAG_RESET = GST_SEEK_FLAG_FLUSH,