/*
* Copyright (c) 2007 Wayne Meissner
*
* This file is part of gstreamer-java.
*
* This code is free software: you can redistribute it and/or modify it under
* the terms of the GNU Lesser General Public License version 3 only, as
* published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
* version 3 for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* version 3 along with this work. If not, see <http://www.gnu.org/licenses/>.
*/
package org.freedesktop.gstreamer;
/**
* Flags to be used with {@link Pipeline#seek seek} or
* {@link org.gstreamer.event.SeekEvent#SeekEvent SeekEvent}
* <p>
* All flags can be used together.
* <p>
* A non flushing seek might take some time to perform as the currently playing
* data in the pipeline will not be cleared.
* <p>
* 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.
* <p>
* 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
* {@link Bus.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.
*/
public final class SeekFlags {
/**
* No flag.
*/
public final static int NONE = 0;
/**
* Flush pipeline.
*/
public final static int FLUSH = 1 << 0;
/**
* Accurate position is requested, this might be considerably slower for
* some formats.
*/
public final static int ACCURATE = 1 << 1;
/**
* Seek to the nearest keyframe. This might be faster but less accurate.
*/
public final static int KEY_UNIT = 1 << 2;
/**
* Perform a segment seek.
*/
public final static int SEGMENT = 1 << 3;
/**
* when doing fast forward or fast reverse playback, allow elements to skip
* frames instead of generating all frames. Since 0.10.22.
*/
@Deprecated
public final static int SKIP = 1 << 4;
/**
* when doing fast forward or fast reverse playback, allow elements to skip
* frames instead of generating all frames. (Since 1.6)
*/
public final static int TRICKMODE = (1 << 4);
/**
* 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.
*/
public final static int SNAP_BEFORE = (1 << 5);
/**
* go to a location after the requested position, if %GST_SEEK_FLAG_KEY_UNIT
* this means the keyframe at of after the requested position.
*/
public final static int SNAP_AFTER = (1 << 6);
/**
* 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.
*/
public final static int SNAP_NEAREST = SNAP_BEFORE | SNAP_AFTER;
/**
* 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)
*/
public final static int TRICKMODE_KEY_UNITS = (1 << 7);
/**
* 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)
*/
public final static int TRICKMODE_NO_AUDIO = (1 << 8);
}