Format
public final class Format
Represents a media format.
When building formats, populate all fields whose values are known and relevant to the type of format being constructed. For information about different types of format, see ExoPlayer's Supported formats page.
Fields commonly relevant to all formats
Fields relevant to container formats
containerMimeType- If the container only contains a single media track, fields relevant to sample formats can are also be relevant and can be set to describe the sample format of that track.
- If the container only contains one track of a given type (possibly alongside tracks of other types), then fields relevant to that track type can be set to describe the properties of the track. See the sections below for video, audio and text formats.
Fields relevant to sample formats
sampleMimeTypemaxInputSizeinitializationDatadrmInitDatasubsampleOffsetUs- Fields relevant to the sample format's track type are also relevant. See the sections below for video, audio and text formats.
Fields relevant to video formats
widthheightdecodedWidthdecodedHeightframeRaterotationDegreespixelWidthHeightRatioprojectionDatastereoModecolorInfomaxSubLayers
Fields relevant to audio formats
Fields relevant to text formats
Fields relevant to image formats
Summary
Nested types |
|---|
@UnstableApiBuilds |
@UnstableApiThe replacement behaviors for consecutive samples in a |
Constants |
|
|---|---|
static final int |
Subsequent cues should be merged with any previous cues that should still be shown on screen. |
static final int |
Subsequent cues should replace all previous cues. |
static final int |
NO_VALUE = -1A value for various fields to indicate that the field's value is unknown or not applicable. |
static final long |
@UnstableApiA value for |
Public fields |
|
|---|---|
final int |
The Accessibility channel, or |
final int |
The auxiliary track type. |
final int |
The average bitrate in bits per second, or |
final int |
The bitrate in bits per second. |
final int |
The number of audio channels, or |
final @Nullable String |
Codecs of the format as described in RFC 6381, or null if unknown or not applicable. |
final @Nullable ColorInfo |
The color metadata associated with the video, or null if not applicable. |
final @Nullable String |
The MIME type of the container, or null if unknown or not applicable. |
final int |
The type of crypto that must be used to decode samples associated with this format, or |
final int |
The replacement behavior that should be followed when handling consecutive samples in a |
final @Nullable Object |
An extra opaque object that can be added to the |
final int |
The height of the video decoded picture in pixels, or |
final int |
The width of the video decoded picture in pixels, or |
final @Nullable DrmInitData |
DRM initialization data if the stream is protected, or null otherwise. |
final int |
The number of frames to trim from the start of the decoded audio stream, or 0 if not applicable. |
final int |
The number of frames to trim from the end of the decoded audio stream, or 0 if not applicable. |
final float |
The frame rate in frames per second, or |
final boolean |
Indicates whether the stream contains preroll samples. |
final int |
The height of the video in pixels, or |
final @Nullable String |
An identifier for the format, or null if unknown or not applicable. |
final List<byte[]> |
Initialization data that must be provided to the decoder. |
final @Nullable String |
The default human readable label, or null if unknown or not applicable. |
final List<Label> |
The human readable list of labels, or an empty list if unknown or not applicable. |
final @Nullable String |
The language as an IETF BCP 47 conformant tag, or null if unknown or not applicable. |
final int |
The maximum size of a buffer of data (typically one sample), or |
final int |
The maximum number of samples that must be stored to correctly re-order samples from decode order to presentation order. |
final int |
The maximum number of temporal scalable sub-layers in the video bitstream, or |
final @Nullable Metadata |
Metadata, or null if unknown or not applicable. |
final int |
The |
final int |
The peak bitrate in bits per second, or |
final float |
The width to height ratio of pixels in the video, or 1.0 if unknown or not applicable. |
final @Nullable byte[] |
The projection data for 360/VR video, or null if not applicable. |
final int |
Track role flags. |
final int |
The clockwise rotation that should be applied to the video for it to be rendered in the correct orientation, or 0 if unknown or not applicable. |
final @Nullable String |
The sample MIME type, or null if unknown or not applicable. |
final int |
The audio sampling rate in Hz, or |
final int |
Track selection flags. |
final int |
The stereo layout for 360/3D/VR video, or |
final long |
For samples that contain subsamples, this is an offset that should be added to subsample timestamps. |
final int |
The number of horizontal tiles in an image, or |
final int |
The number of vertical tiles in an image, or |
final int |
The width of the video in pixels, or |
Public methods |
|
|---|---|
Format.Builder |
Returns a |
Format |
@UnstableApiReturns a copy of this format with the specified |
boolean |
|
static Format |
@UnstableApiRestores a |
int |
Returns the number of pixels if this is a video format whose |
int |
hashCode() |
boolean |
Returns whether the |
Bundle |
Returns a |
static String |
@UnstableApiReturns a prettier |
String |
toString() |
Format |
@UnstableApi |
Constants
CUE_REPLACEMENT_BEHAVIOR_MERGE
@UnstableApi
public static final int CUE_REPLACEMENT_BEHAVIOR_MERGE = 1
Subsequent cues should be merged with any previous cues that should still be shown on screen.
Tracks with this behavior must not contain samples with an unset duration.
CUE_REPLACEMENT_BEHAVIOR_REPLACE
@UnstableApi
public static final int CUE_REPLACEMENT_BEHAVIOR_REPLACE = 2
Subsequent cues should replace all previous cues.
Tracks with this behavior may contain samples with an unset duration (but the duration may also be set to a 'real' value).
NO_VALUE
public static final int NO_VALUE = -1
A value for various fields to indicate that the field's value is unknown or not applicable.
OFFSET_SAMPLE_RELATIVE
@UnstableApi
public static final long OFFSET_SAMPLE_RELATIVE = 9223372036854775807
A value for subsampleOffsetUs to indicate that subsample timestamps are relative to the timestamps of their parent samples.
Public fields
accessibilityChannel
@UnstableApi
public final int accessibilityChannel
The Accessibility channel, or NO_VALUE if not known or applicable.
auxiliaryTrackType
@UnstableApi
@C.AuxiliaryTrackType
public final int auxiliaryTrackType
The auxiliary track type.
averageBitrate
@UnstableApi
public final int averageBitrate
The average bitrate in bits per second, or NO_VALUE if unknown or not applicable. The way in which this field is populated depends on the type of media to which the format corresponds:
- DASH representations: Always
NO_VALUE. - HLS variants: The
AVERAGE-BANDWIDTHattribute defined on the correspondingEXT-X-STREAM-INFtag in the multivariant playlist, orNO_VALUEif not present. - SmoothStreaming track elements: The
Bitrateattribute defined on the correspondingTrackElementin the manifest, orNO_VALUEif not present. - Progressive container formats: Often
NO_VALUE, but may be populated with the average bitrate of the container if known. - Sample formats: Often
NO_VALUE, but may be populated with the average bitrate of the stream of samples with typesampleMimeTypeif known. Note that ifsampleMimeTypeis a compressed format (e.g.,AUDIO_AAC), then this bitrate is for the stream of still compressed samples.
bitrate
@UnstableApi
public final int bitrate
The bitrate in bits per second. This is the peak bitrate if known, or else the average bitrate if known, or else NO_VALUE. Equivalent to: peakBitrate != NO_VALUE ?
peakBitrate : averageBitrate.
channelCount
public final int channelCount
The number of audio channels, or NO_VALUE if unknown or not applicable.
codecs
public final @Nullable String codecs
Codecs of the format as described in RFC 6381, or null if unknown or not applicable.
colorInfo
@UnstableApi
public final @Nullable ColorInfo colorInfo
The color metadata associated with the video, or null if not applicable.
containerMimeType
public final @Nullable String containerMimeType
The MIME type of the container, or null if unknown or not applicable.
cryptoType
@UnstableApi
@C.CryptoType
public final int cryptoType
The type of crypto that must be used to decode samples associated with this format, or CRYPTO_TYPE_NONE if the content is not encrypted. Cannot be CRYPTO_TYPE_NONE if drmInitData is non-null, but may be CRYPTO_TYPE_UNSUPPORTED to indicate that the samples are encrypted using an unsupported crypto type.
cueReplacementBehavior
@UnstableApi
@Format.CueReplacementBehavior
public final int cueReplacementBehavior
The replacement behavior that should be followed when handling consecutive samples in a text track of type APPLICATION_MEDIA3_CUES.
customData
@UnstableApi
public final @Nullable Object customData
An extra opaque object that can be added to the Format to provide additional information that can be passed through the player.
This value is not included in serialized Bundle instances of this class that are used to transfer data to other processes.
decodedHeight
@UnstableApi
public final int decodedHeight
The height of the video decoded picture in pixels, or NO_VALUE if unknown or not applicable.
May be larger than height if cropping is applied before display.
decodedWidth
@UnstableApi
public final int decodedWidth
The width of the video decoded picture in pixels, or NO_VALUE if unknown or not applicable.
May be larger than width if cropping is applied before display.
drmInitData
@UnstableApi
public final @Nullable DrmInitData drmInitData
DRM initialization data if the stream is protected, or null otherwise.
encoderDelay
@UnstableApi
public final int encoderDelay
The number of frames to trim from the start of the decoded audio stream, or 0 if not applicable.
encoderPadding
@UnstableApi
public final int encoderPadding
The number of frames to trim from the end of the decoded audio stream, or 0 if not applicable.
frameRate
public final float frameRate
The frame rate in frames per second, or NO_VALUE if unknown or not applicable.
hasPrerollSamples
@UnstableApi
public final boolean hasPrerollSamples
Indicates whether the stream contains preroll samples.
When this field is set to true, it means that the stream includes decode-only samples that occur before the intended playback start position. These samples are necessary for decoding but are not meant to be rendered and should be skipped after decoding.
height
public final int height
The height of the video in pixels, or NO_VALUE if unknown or not applicable.
id
public final @Nullable String id
An identifier for the format, or null if unknown or not applicable.
initializationData
@UnstableApi
public final List<byte[]> initializationData
Initialization data that must be provided to the decoder. Will not be null, but may be empty if initialization data is not required.
label
public final @Nullable String label
The default human readable label, or null if unknown or not applicable.
If non-null, the same label will be part of labels too. If null, labels will be empty.
labels
@UnstableApi
public final List<Label> labels
The human readable list of labels, or an empty list if unknown or not applicable.
If non-empty, the default label will be part of this list. If empty, the default label will be null.
language
public final @Nullable String language
The language as an IETF BCP 47 conformant tag, or null if unknown or not applicable.
maxInputSize
@UnstableApi
public final int maxInputSize
The maximum size of a buffer of data (typically one sample), or NO_VALUE if unknown or not applicable.
maxNumReorderSamples
@UnstableApi
public final int maxNumReorderSamples
The maximum number of samples that must be stored to correctly re-order samples from decode order to presentation order.
maxSubLayers
@UnstableApi
public final int maxSubLayers
The maximum number of temporal scalable sub-layers in the video bitstream, or NO_VALUE if not applicable.
metadata
@UnstableApi
public final @Nullable Metadata metadata
Metadata, or null if unknown or not applicable.
pcmEncoding
@UnstableApi
@C.PcmEncoding
public final int pcmEncoding
The C.PcmEncoding for PCM or losslessly compressed audio. Set to NO_VALUE for other media types.
peakBitrate
@UnstableApi
public final int peakBitrate
The peak bitrate in bits per second, or NO_VALUE if unknown or not applicable. The way in which this field is populated depends on the type of media to which the format corresponds:
- DASH representations: The
@bandwidthattribute of the correspondingRepresentationelement in the manifest. - HLS variants: The
BANDWIDTHattribute defined on the correspondingEXT-X-STREAM-INFtag. - SmoothStreaming track elements: Always
NO_VALUE. - Progressive container formats: Often
NO_VALUE, but may be populated with the peak bitrate of the container if known. - Sample formats: Often
NO_VALUE, but may be populated with the peak bitrate of the stream of samples with typesampleMimeTypeif known. Note that ifsampleMimeTypeis a compressed format (e.g.,AUDIO_AAC), then this bitrate is for the stream of still compressed samples.
pixelWidthHeightRatio
public final float pixelWidthHeightRatio
The width to height ratio of pixels in the video, or 1.0 if unknown or not applicable.
projectionData
@UnstableApi
public final @Nullable byte[] projectionData
The projection data for 360/VR video, or null if not applicable.
rotationDegrees
@UnstableApi
public final int rotationDegrees
The clockwise rotation that should be applied to the video for it to be rendered in the correct orientation, or 0 if unknown or not applicable. Only 0, 90, 180 and 270 are supported.
sampleMimeType
public final @Nullable String sampleMimeType
The sample MIME type, or null if unknown or not applicable.
sampleRate
public final int sampleRate
The audio sampling rate in Hz, or NO_VALUE if unknown or not applicable.
stereoMode
@UnstableApi
@C.StereoMode
public final int stereoMode
The stereo layout for 360/3D/VR video, or NO_VALUE if not applicable. Valid stereo modes are STEREO_MODE_MONO, STEREO_MODE_TOP_BOTTOM, STEREO_MODE_LEFT_RIGHT, STEREO_MODE_STEREO_MESH.
subsampleOffsetUs
@UnstableApi
public final long subsampleOffsetUs
For samples that contain subsamples, this is an offset that should be added to subsample timestamps. A value of OFFSET_SAMPLE_RELATIVE indicates that subsample timestamps are relative to the timestamps of their parent samples.
tileCountHorizontal
@UnstableApi
public final int tileCountHorizontal
The number of horizontal tiles in an image, or NO_VALUE if not known or applicable.
tileCountVertical
@UnstableApi
public final int tileCountVertical
The number of vertical tiles in an image, or NO_VALUE if not known or applicable.
Public methods
buildUpon
@UnstableApi
public Format.Builder buildUpon()
Returns a Format.Builder initialized with the values of this instance.
copyWithCryptoType
@UnstableApi
public Format copyWithCryptoType(@C.CryptoType int cryptoType)
Returns a copy of this format with the specified cryptoType.
fromBundle
@UnstableApi
public static Format fromBundle(Bundle bundle)
Restores a Format from a Bundle.
getPixelCount
@UnstableApi
public int getPixelCount()
Returns the number of pixels if this is a video format whose width and height are known, or NO_VALUE otherwise
initializationDataEquals
@UnstableApi
public boolean initializationDataEquals(Format other)
Returns whether the initializationDatas belonging to this format and other are equal.
| Parameters | |
|---|---|
Format other |
The other format whose |
| Returns | |
|---|---|
boolean |
Whether the |
toBundle
@UnstableApi
public Bundle toBundle()
Returns a Bundle representing the information stored in this object. If
excludeMetadata is true, metadata is excluded.
toLogString
@UnstableApi
public static String toLogString(@Nullable Format format)
Returns a prettier String than toString, intended for logging.