Class ConstantBitrateSeekMap

  • All Implemented Interfaces:
    SeekMap

    public class ConstantBitrateSeekMap
    extends Object
    implements SeekMap
    A SeekMap implementation that assumes the stream has a constant bitrate and consists of multiple independent frames of the same size. Seek points are calculated to be at frame boundaries.
    • Constructor Detail

      • ConstantBitrateSeekMap

        public ConstantBitrateSeekMap​(long inputLength,
                                      long firstFrameBytePosition,
                                      int bitrate,
                                      int frameSize)
        Constructs a new instance from a stream.
        Parameters:
        inputLength - The length of the stream in bytes, or C.LENGTH_UNSET if unknown.
        firstFrameBytePosition - The byte-position of the first frame in the stream.
        bitrate - The bitrate (which is assumed to be constant in the stream).
        frameSize - The size of each frame in the stream in bytes. May be C.LENGTH_UNSET if unknown.
    • Method Detail

      • isSeekable

        public boolean isSeekable()
        Description copied from interface: SeekMap
        Returns whether seeking is supported.
        Specified by:
        isSeekable in interface SeekMap
        Returns:
        Whether seeking is supported.
      • getSeekPoints

        public SeekMap.SeekPoints getSeekPoints​(long timeUs)
        Description copied from interface: SeekMap
        Obtains seek points for the specified seek time in microseconds. The returned SeekMap.SeekPoints will contain one or two distinct seek points.

        Two seek points [A, B] are returned in the case that seeking can only be performed to discrete points in time, there does not exist a seek point at exactly the requested time, and there exist seek points on both sides of it. In this case A and B are the closest seek points before and after the requested time. A single seek point is returned in all other cases.

        Specified by:
        getSeekPoints in interface SeekMap
        Parameters:
        timeUs - A seek time in microseconds.
        Returns:
        The corresponding seek points.
      • getDurationUs

        public long getDurationUs()
        Description copied from interface: SeekMap
        Returns the duration of the stream in microseconds.
        Specified by:
        getDurationUs in interface SeekMap
        Returns:
        The duration of the stream in microseconds, or C.TIME_UNSET if the duration is unknown.
      • getTimeUsAtPosition

        public long getTimeUsAtPosition​(long position)
        Returns the stream time in microseconds for a given position.
        Parameters:
        position - The stream byte-position.
        Returns:
        The stream time in microseconds for the given position.