Value | Meaning |
---|---|
NONE0 | no flag |
FLUSH1 | flush pipeline |
ACCURATE2 | accurate position is requested, this might be considerably slower for some formats. |
KEY_UNIT4 | seek to the nearest keyframe. This might be faster but less accurate. |
SEGMENT8 | perform a segment seek. |
TRICKMODE16 | when doing fast forward or fast reverse playback, allow elements to skip frames instead of generating all frames. (Since: 1.6) |
SKIP16 | Deprecated backward compatibility flag, replaced by %GST_SEEK_FLAG_TRICKMODE |
SNAP_BEFORE32 | go to a location before the requested position, if %GST_SEEK_FLAG_KEY_UNIT this means the keyframe at or before the requested position the one at or before the seek target. |
SNAP_AFTER64 | go to a location after the requested position, if %GST_SEEK_FLAG_KEY_UNIT this means the keyframe at of after the requested position. |
SNAP_NEAREST96 | go to a position near the requested position, if %GST_SEEK_FLAG_KEY_UNIT this means the keyframe closest to the requested position, if both keyframes are at an equal distance, behaves like %GST_SEEK_FLAG_SNAP_BEFORE. |
TRICKMODE_KEY_UNITS128 | when doing fast forward or fast reverse playback, request that elements only decode keyframes and skip all other content, for formats that have keyframes. (Since: 1.6) |
TRICKMODE_NO_AUDIO256 | when doing fast forward or fast reverse playback, request that audio decoder elements skip decoding and output only gap events or silence. (Since: 1.6) |
TRICKMODE_FORWARD_PREDICTED512 | When doing fast forward or fast reverse playback, request that elements only decode keyframes and forward predicted frames and skip all other content (for example B-Frames), for formats that have keyframes and forward predicted frames. (Since: 1.18) |
INSTANT_RATE_CHANGE1024 | Signals that a rate change should be applied immediately. Only valid if start/stop position are GST_CLOCK_TIME_NONE, the playback direction does not change and the seek is not flushing. (Since: 1.18) |
Flags to be used with gst_element_seek() or gst_event_new_seek(). All flags can be used together.
A non flushing seek might take some time to perform as the currently playing data in the pipeline will not be cleared.
An accurate seek might be slower for formats that don't have any indexes or timestamp markers in the stream. Specifying this flag might require a complete scan of the file in those cases.
When performing a segment seek: after the playback of the segment completes, no EOS will be emitted by the element that performed the seek, but a %GST_MESSAGE_SEGMENT_DONE message will be posted on the bus by the element. When this message is posted, it is possible to send a new seek event to continue playback. With this seek method it is possible to perform seamless looping or simple linear editing.
When only changing the playback rate and not the direction, the %GST_SEEK_FLAG_INSTANT_RATE_CHANGE flag can be used for a non-flushing seek to signal that the rate change should be applied immediately. This requires special support in the seek handlers (e.g. demuxers) and any elements synchronizing to the clock, and in general can't work in all cases (for example UDP streaming where the delivery rate is controlled by a remote server). The instant-rate-change mode supports changing the trickmode-related GST_SEEK_ flags, but can't be used in conjunction with other seek flags that affect the new playback position - as the playback position will not be changing.
When doing fast forward (rate > 1.0) or fast reverse (rate < -1.0) trickmode playback, the %GST_SEEK_FLAG_TRICKMODE flag can be used to instruct decoders and demuxers to adjust the playback rate by skipping frames. This can improve performance and decrease CPU usage because not all frames need to be decoded.
Beyond that, the %GST_SEEK_FLAG_TRICKMODE_KEY_UNITS flag can be used to request that decoders skip all frames except key units, and %GST_SEEK_FLAG_TRICKMODE_NO_AUDIO flags can be used to request that audio decoders do no decoding at all, and simple output silence.
The %GST_SEEK_FLAG_SNAP_BEFORE flag can be used to snap to the previous relevant location, and the %GST_SEEK_FLAG_SNAP_AFTER flag can be used to select the next relevant location. If %GST_SEEK_FLAG_KEY_UNIT is specified, the relevant location is a keyframe. If both flags are specified, the nearest of these locations will be selected. If none are specified, the implementation is free to select whichever it wants.
The before and after here are in running time, so when playing backwards, the next location refers to the one that will played in next, and not the one that is located after in the actual source stream.
Also see part-seeking.txt in the GStreamer design documentation for more details on the meaning of these flags and the behaviour expected of elements that handle them.