Class VideoTrackQuality

  • All Implemented Interfaces:
    Parcelable, Comparable<VideoTrackQuality>

    public class VideoTrackQuality
    extends Object
    implements Comparable<VideoTrackQuality>, Parcelable
    Represents a single quality of a video track. This is typically generated from a Representation for DASH streams, a QualityLevel for SmoothStreaming, and a Variant for HLS.

    The model contains at least the information about the quality bitrate as this is used to compare instances of VideoTrackQuality. Video qualities are sorted by bitrate in decreasing order with the Comparable implementation in this class.

    Other attributes should be set if the information is available, but they are not mandatory. If the information is missing, the value is either -1 or null.
    Since:
    3.0.0
    • Constructor Detail

      • VideoTrackQuality

        public VideoTrackQuality​(int bitrate)
        Create a new video track quality with a bitrate > 0
        Parameters:
        bitrate - the bitrate
      • VideoTrackQuality

        public VideoTrackQuality​(@NonNull
                                 com.google.android.exoplayer2.Format format)
        Create a new video track quality based on the given format
        Parameters:
        format - the format
    • Method Detail

      • isDisabled

        public boolean isDisabled()
        Returns:
        false if the quality can be played and true otherwise
      • getId

        @Nullable
        public String getId()
        Set the id of this track
        Returns:
        The id associated with this track
      • setId

        public void setId​(@Nullable
                          String id)
        Set the id associated with this track
        Parameters:
        id - the id
      • getDrm

        @Nullable
        public Drm getDrm()
        Get Drm of the current quality
        Returns:
        Drm or null for clear content
      • setDrm

        public void setDrm​(@Nullable
                           Drm drm)
        Assign Drm to the current quality
        Parameters:
        drm - Drm or null for clear content
      • getDrmKeyStatus

        @Nullable
        public KeyStatus getDrmKeyStatus()
        Returns:
        The KeyStatus or null for clear content
      • setDrmKeyStatus

        public void setDrmKeyStatus​(@Nullable
                                    KeyStatus drmKeyStatus)
      • getBitrate

        public int getBitrate()
        Returns:
        The average bandwidth in bits per second.
      • getWidth

        public int getWidth()
        Returns:
        The width of this quality in pixel or -1
      • setWidth

        public void setWidth​(int width)
        Parameters:
        width - the width of this quality in pixel
      • getHeight

        public int getHeight()
        Returns:
        The height of this quality in pixel or -1
      • setPixelWidthHeightRatio

        public void setPixelWidthHeightRatio​(float pixelWidthHeightRatio)
        Parameters:
        pixelWidthHeightRatio - the pixel width height ratio
      • getPixelWidthHeightRatio

        public float getPixelWidthHeightRatio()
        Returns:
        The pixel width height ratio of this quality if known or 1.0f The value equals to DASH sar value
      • getPictureWidthHeightRatio

        public float getPictureWidthHeightRatio()
        Returns:
        The picture width height ratio of this quality if known or 1.0f The value equals to DASH par value
      • setPictureWidthHeightRatio

        public void setPictureWidthHeightRatio​(float pictureWidthHeightRatio)
        Parameters:
        pictureWidthHeightRatio - the picture width height ratio
      • setHeight

        public void setHeight​(int height)
        Parameters:
        height - the width of this quality in pixel
      • getFrameRate

        public float getFrameRate()
        Returns:
        The frame rate of this quality or -1
      • setFrameRate

        public void setFrameRate​(float frameRate)
        Parameters:
        frameRate - the framerate of this quality
      • getMaxPlayoutRate

        public float getMaxPlayoutRate()
      • setMaxPlayoutRate

        public void setMaxPlayoutRate​(float maxPlayoutRate)
      • getCodecs

        @Nullable
        public String getCodecs()
        Returns:
        A ist of codec of this quality or null
      • setCodecs

        public void setCodecs​(@Nullable
                              String codecs)
        Parameters:
        codecs - the codecs of this quality
      • getMimeType

        @Nullable
        public String getMimeType()
        Returns:
        The mime type of this quality
      • setMimeType

        public void setMimeType​(@Nullable
                                String mimeType)
        Parameters:
        mimeType - the mime type of this quality
      • getTrackIndex

        public int getTrackIndex()
        Returns:
        The index of this quality within the set of qualities on the parent track
      • setTrackIndex

        public void setTrackIndex​(int trackIndex)
        Parameters:
        trackIndex - the track index within the set of parent tracks
      • getOriginalTrackIndex

        public int getOriginalTrackIndex()
        Returns:
        The original index if this track, when no filters where applied
      • setOriginalTrackIndex

        public void setOriginalTrackIndex​(int originalTrackIndex)
        Set the original index of this track
        Parameters:
        originalTrackIndex - The original index
      • getOriginalGroupIndex

        public int getOriginalGroupIndex()
        Returns:
        The original index if the corresponding track group, when no filters where applied
      • setOriginalGroupIndex

        public void setOriginalGroupIndex​(int originalGroupIndex)
        Set the original index of the corresponding track group
        Parameters:
        originalGroupIndex - The original index
      • matchesFormat

        public boolean matchesFormat​(@NonNull
                                     com.google.android.exoplayer2.Format format)
        Returns true if this quality matches the given formats width, height, frameRate, codecs, bitrate, max playout rate and mimetype
        Parameters:
        format - the format
        Returns:
        True if this quality matches the given format properties
      • getFormat

        @NonNull
        public com.google.android.exoplayer2.Format getFormat()
      • getLabel

        public String getLabel()
        Returns:
        The label for this quality as DASH label if available or width x height
      • getDrmInitData

        @Nullable
        public com.google.android.exoplayer2.drm.DrmInitData getDrmInitData()
      • hashCode

        public int hashCode()
        Overrides:
        hashCode in class Object
      • equals

        public boolean equals​(@Nullable
                              Object obj)
        Overrides:
        equals in class Object