# Print output for @column tags ?>
public
final
class
MediaFormat
extends Object
java.lang.Object | |
↳ | android.media.MediaFormat |
Encapsulates the information describing the format of media data, be it audio or video, as well as optional feature metadata.
The format of the media data is specified as key/value pairs. Keys are strings. Values can be integer, long, float, String or ByteBuffer.
The feature metadata is specificed as string/boolean pairs.
Keys common to all audio/video formats, all keys not marked optional are mandatory:
Name | Value Type | Description |
---|---|---|
KEY_MIME | String | The type of the format. |
KEY_CODECS_STRING | String | optional, the RFC 6381 codecs string of the MediaFormat |
KEY_MAX_INPUT_SIZE | Integer | optional, maximum size of a buffer of input data |
KEY_PIXEL_ASPECT_RATIO_WIDTH | Integer | optional, the pixel aspect ratio width |
KEY_PIXEL_ASPECT_RATIO_HEIGHT | Integer | optional, the pixel aspect ratio height |
KEY_BIT_RATE | Integer | encoder-only, desired bitrate in bits/second |
KEY_DURATION | long | the duration of the content (in microseconds) |
Name | Value Type | Description |
---|---|---|
KEY_WIDTH | Integer | |
KEY_HEIGHT | Integer | |
KEY_COLOR_FORMAT | Integer | set by the user for encoders, readable in the output format of decoders |
KEY_FRAME_RATE | Integer or Float | required for encoders, optional for decoders |
KEY_CAPTURE_RATE | Integer | |
KEY_I_FRAME_INTERVAL | Integer (or Float) | encoder-only,
time-interval between key frames.
Float support added in Build.VERSION_CODES.N_MR1 |
KEY_INTRA_REFRESH_PERIOD | Integer | encoder-only, optional |
KEY_LATENCY | Integer | encoder-only, optional |
KEY_MAX_WIDTH | Integer | decoder-only, optional, max-resolution width |
KEY_MAX_HEIGHT | Integer | decoder-only, optional, max-resolution height |
KEY_REPEAT_PREVIOUS_FRAME_AFTER | Long | encoder in surface-mode only, optional |
KEY_PUSH_BLANK_BUFFERS_ON_STOP | Integer(1) | decoder rendering to a surface only, optional |
KEY_TEMPORAL_LAYERING | String | encoder only, optional, temporal-layering schema |
KEY_MAX_WIDTH
and KEY_MAX_HEIGHT
to enable
adaptive playback (seamless resolution change) for a video decoder that
supports it (MediaCodecInfo.CodecCapabilities#FEATURE_AdaptivePlayback
).
The values are used as hints for the codec: they are the maximum expected
resolution to prepare for. Depending on codec support, preparing for larger
maximum resolution may require more memory even if that resolution is never
reached. These fields have no effect for codecs that do not support adaptive
playback.Name | Value Type | Description |
---|---|---|
KEY_CHANNEL_COUNT | Integer | |
KEY_SAMPLE_RATE | Integer | |
KEY_PCM_ENCODING | Integer | optional |
KEY_IS_ADTS | Integer | optional, if decoding AAC audio content, setting this key to 1 indicates that each audio frame is prefixed by the ADTS header. |
KEY_AAC_PROFILE | Integer | encoder-only, optional, if content is AAC audio, specifies the desired profile. |
KEY_AAC_SBR_MODE | Integer | encoder-only, optional, if content is AAC audio, specifies the desired SBR mode. |
KEY_AAC_DRC_TARGET_REFERENCE_LEVEL | Integer | decoder-only, optional, if content is AAC audio, specifies the target reference level. |
KEY_AAC_ENCODED_TARGET_LEVEL | Integer | decoder-only, optional, if content is AAC audio, specifies the target reference level used at encoder. |
KEY_AAC_DRC_BOOST_FACTOR | Integer | decoder-only, optional, if content is AAC audio, specifies the DRC boost factor. |
KEY_AAC_DRC_ATTENUATION_FACTOR | Integer | decoder-only, optional, if content is AAC audio, specifies the DRC attenuation factor. |
KEY_AAC_DRC_HEAVY_COMPRESSION | Integer | decoder-only, optional, if content is AAC audio, specifies whether to use heavy compression. |
KEY_AAC_MAX_OUTPUT_CHANNEL_COUNT | Integer | decoder-only, optional, if content is AAC audio, specifies the maximum number of channels the decoder outputs. |
KEY_AAC_DRC_EFFECT_TYPE | Integer | decoder-only, optional, if content is AAC audio, specifies the MPEG-D DRC effect type to use. |
KEY_AAC_DRC_OUTPUT_LOUDNESS | Integer | decoder-only, optional, if content is AAC audio, returns the DRC output loudness. |
KEY_AAC_DRC_ALBUM_MODE | Integer | decoder-only, optional, if content is AAC audio, specifies the whether MPEG-D DRC Album Mode is active or not. |
KEY_CHANNEL_MASK | Integer | optional, a mask of audio channel assignments |
KEY_ENCODER_DELAY | Integer | optional, the number of frames to trim from the start of the decoded audio stream. |
KEY_ENCODER_PADDING | Integer | optional, the number of frames to trim from the end of the decoded audio stream. |
KEY_FLAC_COMPRESSION_LEVEL | Integer | encoder-only, optional, if content is FLAC audio, specifies the desired compression level. |
KEY_MPEGH_PROFILE_LEVEL_INDICATION | Integer | decoder-only, optional, if content is MPEG-H audio, specifies the profile and level of the stream. |
KEY_MPEGH_COMPATIBLE_SETS | ByteBuffer | decoder-only, optional, if content is MPEG-H audio, specifies the compatible sets (profile and level) of the stream. |
KEY_MPEGH_REFERENCE_CHANNEL_LAYOUT |
Integer | decoder-only, optional, if content is MPEG-H audio, specifies the preferred reference channel layout of the stream. |
KEY_MIME | String | The type of the format. |
KEY_LANGUAGE | String | The language of the content. |
KEY_CAPTION_SERVICE_NUMBER | int | optional, the closed-caption service or channel number. |
KEY_MIME | String | The type of the format. |
KEY_WIDTH | Integer | |
KEY_HEIGHT | Integer | |
KEY_COLOR_FORMAT | Integer | set by the user for encoders, readable in the output format of decoders |
KEY_TILE_WIDTH | Integer | required if the image has grid |
KEY_TILE_HEIGHT | Integer | required if the image has grid |
KEY_GRID_ROWS | Integer | required if the image has grid |
KEY_GRID_COLUMNS | Integer | required if the image has grid |
Constants | |
---|---|
int |
COLOR_RANGE_FULL
Full range. |
int |
COLOR_RANGE_LIMITED
Limited range. |
int |
COLOR_STANDARD_BT2020
BT.2020 color chromacity coordinates with KR = 0.2627, KB = 0.0593. |
int |
COLOR_STANDARD_BT601_NTSC
BT.601 525 color chromacity coordinates with KR = 0.299, KB = 0.114. |
int |
COLOR_STANDARD_BT601_PAL
BT.601 625 color chromacity coordinates with KR = 0.299, KB = 0.114. |
int |
COLOR_STANDARD_BT709
BT.709 color chromacity coordinates with KR = 0.2126, KB = 0.0722. |
int |
COLOR_TRANSFER_HLG
ARIB STD-B67 hybrid-log-gamma transfer function. |
int |
COLOR_TRANSFER_LINEAR
Linear transfer characteristic curve. |
int |
COLOR_TRANSFER_SDR_VIDEO
SMPTE 170M transfer characteristic curve used by BT.601/BT.709/BT.2020. |
int |
COLOR_TRANSFER_ST2084
SMPTE ST 2084 transfer function. |
String |
KEY_AAC_DRC_ALBUM_MODE
A key describing the album mode for MPEG-D DRC as defined in ISO/IEC 23003-4. |
String |
KEY_AAC_DRC_ATTENUATION_FACTOR
A key describing the attenuation factor allowing to adapt the dynamics of the output to the actual listening requirements. |
String |
KEY_AAC_DRC_BOOST_FACTOR
A key describing the boost factor allowing to adapt the dynamics of the output to the actual listening requirements. |
String |
KEY_AAC_DRC_EFFECT_TYPE
A key describing for selecting the DRC effect type for MPEG-D DRC. |
String |
KEY_AAC_DRC_HEAVY_COMPRESSION
A key describing the selection of the heavy compression profile for MPEG-4 DRC. |
String |
KEY_AAC_DRC_OUTPUT_LOUDNESS
A key to retrieve the output loudness of a decoded bitstream. |
String |
KEY_AAC_DRC_TARGET_REFERENCE_LEVEL
A key describing the Target Reference Level (Target Loudness). |
String |
KEY_AAC_ENCODED_TARGET_LEVEL
A key describing the target reference level that was assumed at the encoder for calculation of attenuation gains for clipping prevention. |
String |
KEY_AAC_MAX_OUTPUT_CHANNEL_COUNT
A key describing the maximum number of channels that can be output by the AAC decoder. |
String |
KEY_AAC_PROFILE
A key describing the AAC profile to be used (AAC audio formats only). |
String |
KEY_AAC_SBR_MODE
A key describing the AAC SBR mode to be used (AAC audio formats only). |
String |
KEY_ALLOW_FRAME_DROP
A key for applications to opt out of allowing a Surface to discard undisplayed/unconsumed frames as means to catch up after falling behind. |
String |
KEY_AUDIO_SESSION_ID
A key describing the audio session ID of the AudioTrack associated to a tunneled video codec. |
String |
KEY_BITRATE_MODE
A key describing the desired bitrate mode to be used by an encoder. |
String |
KEY_BIT_RATE
A key describing the average bitrate in bits/sec. |
String |
KEY_CAPTION_SERVICE_NUMBER
A key describing the closed caption service number. |
String |
KEY_CAPTURE_RATE
A key describing the capture rate of a video format in frames/sec. |
String |
KEY_CHANNEL_COUNT
A key describing the number of channels in an audio format. |
String |
KEY_CHANNEL_MASK
A key describing the channel composition of audio content. |
String |
KEY_CODECS_STRING
A key describing the codecs string of the MediaFormat. |
String |
KEY_COLOR_FORMAT
A key describing the color format of the content in a video format. |
String |
KEY_COLOR_RANGE
An optional key describing the range of the component values of the video content. |
String |
KEY_COLOR_STANDARD
An optional key describing the color primaries, white point and luminance factors for video content. |
String |
KEY_COLOR_TRANSFER
An optional key describing the opto-electronic transfer function used for the video content. |
String |
KEY_COLOR_TRANSFER_REQUEST
An optional key describing the opto-electronic transfer function requested for the output video content. |
String |
KEY_COMPLEXITY
A key describing the encoding complexity. |
String |
KEY_CREATE_INPUT_SURFACE_SUSPENDED
If specified when configuring a video encoder that's in "surface-input" mode, it will instruct the encoder to put the surface source in suspended state when it's connected. |
String |
KEY_DURATION
A key describing the duration (in microseconds) of the content. |
String |
KEY_ENCODER_DELAY
A key describing the number of frames to trim from the start of the decoded audio stream. |
String |
KEY_ENCODER_PADDING
A key describing the number of frames to trim from the end of the decoded audio stream. |
String |
KEY_FLAC_COMPRESSION_LEVEL
A key describing the FLAC compression level to be used (FLAC audio format only). |
String |
KEY_FRAME_RATE
A key describing the frame rate of a video format in frames/sec. |
String |
KEY_GRID_COLUMNS
A key describing the number of grid columns in the content in a
|
String |
KEY_GRID_ROWS
A key describing the number of grid rows in the content in a
|
String |
KEY_HAPTIC_CHANNEL_COUNT
A key describing the number of haptic channels in an audio format. |
String |
KEY_HARDWARE_AV_SYNC_ID
A key describing the hardware AV sync id. |
String |
KEY_HDR10_PLUS_INFO
An optional key describing the HDR10+ metadata of the video content. |
String |
KEY_HDR_STATIC_INFO
An optional key describing the static metadata of HDR (high-dynamic-range) video content. |
String |
KEY_HEIGHT
A key describing the height of the content in a video format. |
String |
KEY_INTRA_REFRESH_PERIOD
An optional key describing the period of intra refresh in frames. |
String |
KEY_IS_ADTS
A key mapping to a value of 1 if the content is AAC audio and audio frames are prefixed with an ADTS header. |
String |
KEY_IS_AUTOSELECT
A key for boolean AUTOSELECT behavior for the track. |
String |
KEY_IS_DEFAULT
A key for boolean DEFAULT behavior for the track. |
String |
KEY_IS_FORCED_SUBTITLE
A key for the FORCED field for subtitle tracks. |
String |
KEY_I_FRAME_INTERVAL
A key describing the frequency of key frames expressed in seconds between key frames. |
String |
KEY_LANGUAGE
A key describing the language of the content, using either ISO 639-1 or 639-2/T codes. |
String |
KEY_LATENCY
An optional key describing the desired encoder latency in frames. |
String |
KEY_LEVEL
A key describing the desired profile to be used by an encoder. |
String |
KEY_LOW_LATENCY
An optional key describing the low latency decoding mode. |
String |
KEY_MAX_B_FRAMES
A key describing the maximum number of B frames between I or P frames, to be used by a video encoder. |
String |
KEY_MAX_FPS_TO_ENCODER
Instruct the video encoder in "surface-input" mode to drop excessive frames from the source, so that the input frame rate to the encoder does not exceed the specified fps. |
String |
KEY_MAX_HEIGHT
A key describing the maximum expected height of the content in a video decoder format, in case there are resolution changes in the video content. |
String |
KEY_MAX_INPUT_SIZE
A key describing the maximum size in bytes of a buffer of data described by this MediaFormat. |
String |
KEY_MAX_PTS_GAP_TO_ENCODER
Instruct the video encoder in "surface-input" mode to limit the gap of timestamp between any two adjacent frames fed to the encoder to the specified amount (in micro-second). |
String |
KEY_MAX_WIDTH
A key describing the maximum expected width of the content in a video decoder format, in case there are resolution changes in the video content. |
String |
KEY_MIME
A key describing the mime type of the MediaFormat. |
String |
KEY_MPEGH_COMPATIBLE_SETS
A key describing the MPEG-H stream compatible sets. |
String |
KEY_MPEGH_PROFILE_LEVEL_INDICATION
A key describing the MPEG-H stream profile-level indication. |
String |
KEY_MPEGH_REFERENCE_CHANNEL_LAYOUT
A key describing the MPEG-H stream reference channel layout. |
String |
KEY_OPERATING_RATE
A key describing the desired operating frame rate for video or sample rate for audio that the codec will need to operate at. |
String |
KEY_OUTPUT_REORDER_DEPTH
An optional key describing the maximum number of non-display-order coded frames. |
String |
KEY_PCM_ENCODING
A key describing the raw audio sample encoding/format. |
String |
KEY_PIXEL_ASPECT_RATIO_HEIGHT
A key describing the pixel aspect ratio height. |
String |
KEY_PIXEL_ASPECT_RATIO_WIDTH
A key describing the pixel aspect ratio width. |
String |
KEY_PREPEND_HEADER_TO_SYNC_FRAMES
An optional key describing whether encoders prepend headers to sync frames (e.g. |
String |
KEY_PRIORITY
A key describing the desired codec priority. |
String |
KEY_PROFILE
A key describing the desired profile to be used by an encoder. |
String |
KEY_PUSH_BLANK_BUFFERS_ON_STOP
If specified when configuring a video decoder rendering to a surface, causes the decoder to output "blank", i.e. |
String |
KEY_QUALITY
A key describing the desired encoding quality. |
String |
KEY_REPEAT_PREVIOUS_FRAME_AFTER
Applies only when configuring a video encoder in "surface-input" mode. |
String |
KEY_ROTATION
A key describing the desired clockwise rotation on an output surface. |
String |
KEY_SAMPLE_RATE
A key describing the sample rate of an audio format. |
String |
KEY_SLICE_HEIGHT
A key describing the plane height of a multi-planar (YUV) video bytebuffer layout. |
String |
KEY_SLOW_MOTION_MARKERS
A key for retrieving the slow-motion marker information associated with a video track. |
String |
KEY_STRIDE
A key describing the stride of the video bytebuffer layout. |
String |
KEY_TEMPORAL_LAYERING
A key describing the temporal layering schema. |
String |
KEY_TILE_HEIGHT
A key describing the height (in pixels) of each tile of the content in a
|
String |
KEY_TILE_WIDTH
A key describing the width (in pixels) of each tile of the content in a
|
String |
KEY_TRACK_ID
A key describing a unique ID for the content of a media track. |
String |
KEY_VIDEO_QP_B_MAX
A key describing the maximum Quantization Parameter allowed for encoding video. |
String |
KEY_VIDEO_QP_B_MIN
A key describing the minimum Quantization Parameter allowed for encoding video. |
String |
KEY_VIDEO_QP_I_MAX
A key describing the maximum Quantization Parameter allowed for encoding video. |
String |
KEY_VIDEO_QP_I_MIN
A key describing the minimum Quantization Parameter allowed for encoding video. |
String |
KEY_VIDEO_QP_MAX
A key describing the maximum Quantization Parameter allowed for encoding video. |
String |
KEY_VIDEO_QP_MIN
A key describing the minimum Quantization Parameter allowed for encoding video. |
String |
KEY_VIDEO_QP_P_MAX
A key describing the maximum Quantization Parameter allowed for encoding video. |
String |
KEY_VIDEO_QP_P_MIN
A key describing the minimum Quantization Parameter allowed for encoding video. |
String |
KEY_WIDTH
A key describing the width of the content in a video format. |
String |
MIMETYPE_AUDIO_AAC
|
String |
MIMETYPE_AUDIO_AC3
|
String |
MIMETYPE_AUDIO_AC4
|
String |
MIMETYPE_AUDIO_AMR_NB
|
String |
MIMETYPE_AUDIO_AMR_WB
|
String |
MIMETYPE_AUDIO_EAC3
|
String |
MIMETYPE_AUDIO_EAC3_JOC
|
String |
MIMETYPE_AUDIO_FLAC
|
String |
MIMETYPE_AUDIO_G711_ALAW
|
String |
MIMETYPE_AUDIO_G711_MLAW
|
String |
MIMETYPE_AUDIO_MPEG
|
String |
MIMETYPE_AUDIO_MPEGH_MHA1
MIME type for MPEG-H Audio single stream |
String |
MIMETYPE_AUDIO_MPEGH_MHM1
MIME type for MPEG-H Audio single stream, encapsulated in MHAS |
String |
MIMETYPE_AUDIO_MSGSM
|
String |
MIMETYPE_AUDIO_OPUS
|
String |
MIMETYPE_AUDIO_QCELP
|
String |
MIMETYPE_AUDIO_RAW
|
String |
MIMETYPE_AUDIO_SCRAMBLED
|
String |
MIMETYPE_AUDIO_VORBIS
|
String |
MIMETYPE_IMAGE_ANDROID_HEIC
MIME type for HEIF still image data encoded in HEVC. |
String |
MIMETYPE_TEXT_CEA_608
MIME type for CEA-608 closed caption data. |
String |
MIMETYPE_TEXT_CEA_708
MIME type for CEA-708 closed caption data. |
String |
MIMETYPE_TEXT_SUBRIP
MIME type for SubRip (SRT) container. |
String |
MIMETYPE_TEXT_VTT
MIME type for WebVTT subtitle data. |
String |
MIMETYPE_VIDEO_AV1
|
String |
MIMETYPE_VIDEO_AVC
|
String |
MIMETYPE_VIDEO_DOLBY_VISION
|
String |
MIMETYPE_VIDEO_H263
|
String |
MIMETYPE_VIDEO_HEVC
|
String |
MIMETYPE_VIDEO_MPEG2
|
String |
MIMETYPE_VIDEO_MPEG4
|
String |
MIMETYPE_VIDEO_RAW
|
String |
MIMETYPE_VIDEO_SCRAMBLED
|
String |
MIMETYPE_VIDEO_VP8
|
String |
MIMETYPE_VIDEO_VP9
|
int |
TYPE_BYTE_BUFFER
|
int |
TYPE_FLOAT
|
int |
TYPE_INTEGER
|
int |
TYPE_LONG
|
int |
TYPE_NULL
|
int |
TYPE_STRING
|
Public constructors | |
---|---|
MediaFormat()
Creates an empty MediaFormat |
|
MediaFormat(MediaFormat other)
Create a copy of a media format object. |
Public methods | |
---|---|
boolean
|
containsFeature(String name)
Returns true iff a feature of the given name exists in the format. |
boolean
|
containsKey(String name)
Returns true iff a key of the given name exists in the format. |
static
MediaFormat
|
createAudioFormat(String mime, int sampleRate, int channelCount)
Creates a minimal audio format. |
static
MediaFormat
|
createSubtitleFormat(String mime, String language)
Creates a minimal subtitle format. |
static
MediaFormat
|
createVideoFormat(String mime, int width, int height)
Creates a minimal video format. |
ByteBuffer
|
getByteBuffer(String name)
Returns the value of a ByteBuffer key. |
ByteBuffer
|
getByteBuffer(String name, ByteBuffer defaultValue)
Returns the value of a ByteBuffer key, or the default value if the key is missing. |
boolean
|
getFeatureEnabled(String feature)
Returns whether a feature is to be enabled ( |
Set<String>
|
getFeatures()
Returns a |
float
|
getFloat(String name, float defaultValue)
Returns the value of a float key, or the default value if the key is missing. |
float
|
getFloat(String name)
Returns the value of a float key. |
int
|
getInteger(String name)
Returns the value of an integer key. |
int
|
getInteger(String name, int defaultValue)
Returns the value of an integer key, or the default value if the key is missing. |
Set<String>
|
getKeys()
Returns a |
long
|
getLong(String name)
Returns the value of a long key. |
long
|
getLong(String name, long defaultValue)
Returns the value of a long key, or the default value if the key is missing. |
Number
|
getNumber(String name, Number defaultValue)
Returns the value of a numeric key, or the default value if the key is missing. |
Number
|
getNumber(String name)
Returns the value of a numeric key. |
String
|
getString(String name)
Returns the value of a string key. |
String
|
getString(String name, String defaultValue)
Returns the value of a string key, or the default value if the key is missing. |
int
|
getValueTypeForKey(String name)
Returns the value type for a key. |
void
|
removeFeature(String name)
Removes a given feature setting if present. |
void
|
removeKey(String name)
Removes a value of a given key if present. |
void
|
setByteBuffer(String name, ByteBuffer bytes)
Sets the value of a ByteBuffer key. |
void
|
setFeatureEnabled(String feature, boolean enabled)
Sets whether a feature is to be enabled ( |
void
|
setFloat(String name, float value)
Sets the value of a float key. |
void
|
setInteger(String name, int value)
Sets the value of an integer key. |
void
|
setLong(String name, long value)
Sets the value of a long key. |
void
|
setString(String name, String value)
Sets the value of a string key. |
String
|
toString()
Returns a string representation of the object. |
Inherited methods | |
---|---|
public static final int COLOR_RANGE_FULL
Full range. Y, Cr and Cb component values range from 0 to 255 for 8-bit content.
Constant Value: 1 (0x00000001)
public static final int COLOR_RANGE_LIMITED
Limited range. Y component values range from 16 to 235 for 8-bit content. Cr, Cy values range from 16 to 240 for 8-bit content. This is the default for video content.
Constant Value: 2 (0x00000002)
public static final int COLOR_STANDARD_BT2020
BT.2020 color chromacity coordinates with KR = 0.2627, KB = 0.0593.
Constant Value: 6 (0x00000006)
public static final int COLOR_STANDARD_BT601_NTSC
BT.601 525 color chromacity coordinates with KR = 0.299, KB = 0.114.
Constant Value: 4 (0x00000004)
public static final int COLOR_STANDARD_BT601_PAL
BT.601 625 color chromacity coordinates with KR = 0.299, KB = 0.114.
Constant Value: 2 (0x00000002)
public static final int COLOR_STANDARD_BT709
BT.709 color chromacity coordinates with KR = 0.2126, KB = 0.0722.
Constant Value: 1 (0x00000001)
public static final int COLOR_TRANSFER_HLG
ARIB STD-B67 hybrid-log-gamma transfer function. This is used by some HDR video content.
Constant Value: 7 (0x00000007)
public static final int COLOR_TRANSFER_LINEAR
Linear transfer characteristic curve.
Constant Value: 1 (0x00000001)
public static final int COLOR_TRANSFER_SDR_VIDEO
SMPTE 170M transfer characteristic curve used by BT.601/BT.709/BT.2020. This is the curve used by most non-HDR video content.
Constant Value: 3 (0x00000003)
public static final int COLOR_TRANSFER_ST2084
SMPTE ST 2084 transfer function. This is used by some HDR video content.
Constant Value: 6 (0x00000006)
public static final String KEY_AAC_DRC_ALBUM_MODE
A key describing the album mode for MPEG-D DRC as defined in ISO/IEC 23003-4.
The associated value is an integer and can be set to following values:
Value | Album Mode |
---|---|
0 | disabled |
1 | enabled |
Disabled album mode leads to application of gain sequences for fading in and out, if provided in the bitstream. Enabled album mode makes use of dedicated album loudness information, if provided in the bitstream.
The default value is 0 (album mode disabled).
This key is only used during decoding.
Constant Value: "aac-drc-album-mode"
public static final String KEY_AAC_DRC_ATTENUATION_FACTOR
A key describing the attenuation factor allowing to adapt the dynamics of the output to the
actual listening requirements.
See KEY_AAC_DRC_BOOST_FACTOR
for a description of the role of this attenuation
factor and the value range.
The default value is 127 (fully apply attenuation DRC gains).
This key is only used during decoding.
Constant Value: "aac-drc-cut-level"
public static final String KEY_AAC_DRC_BOOST_FACTOR
A key describing the boost factor allowing to adapt the dynamics of the output to the actual listening requirements. This relies on DRC gain sequences that can be transmitted in the encoded bitstream to be able to reduce the dynamics of the output signal upon request. This factor enables the user to select how much of the gains are applied.
Positive gains (boost) and negative gains (attenuation, see
KEY_AAC_DRC_ATTENUATION_FACTOR
) can be controlled separately for a better match
to different use-cases.
Typically, attenuation gains are sent for loud signal segments, and boost gains are sent for soft signal segments. If the output is listened to in a noisy environment, for example, the boost factor is used to enable the positive gains, i.e. to amplify soft signal segments beyond the noise floor. But for listening late at night, the attenuation factor is used to enable the negative gains, to prevent loud signal from surprising the listener. In applications which generally need a low dynamic range, both the boost factor and the attenuation factor are used in order to enable all DRC gains.
In order to prevent clipping, it is also recommended to apply the attenuation gains in case of a downmix and/or loudness normalization to high target reference levels.
Both the boost and the attenuation factor parameters are given as integer values between 0 and 127, representing the range of the factor of 0 (i.e. don't apply) to 1 (i.e. fully apply boost/attenuation gains respectively).
The default value is 127 (fully apply boost DRC gains).
This key is only used during decoding.
Constant Value: "aac-drc-boost-level"
public static final String KEY_AAC_DRC_EFFECT_TYPE
A key describing for selecting the DRC effect type for MPEG-D DRC. The supported values are defined in ISO/IEC 23003-4:2015 and are described as follows:
Value | Effect |
---|---|
-1 | Off |
0 | None |
1 | Late night |
2 | Noisy environment |
3 | Limited playback range |
4 | Low playback level |
5 | Dialog enhancement |
6 | General compression |
The value -1 (Off) disables DRC processing, while loudness normalization may still be
active and dependent on KEY_AAC_DRC_TARGET_REFERENCE_LEVEL
.
The value 0 (None) automatically enables DRC processing if necessary to prevent signal
clipping
The value 6 (General compression) can be used for enabling MPEG-D DRC without particular
DRC effect type request.
The default DRC effect type is 3 ("Limited playback range") on mobile devices.
This key is only used during decoding.
Constant Value: "aac-drc-effect-type"
public static final String KEY_AAC_DRC_HEAVY_COMPRESSION
A key describing the selection of the heavy compression profile for MPEG-4 DRC.
Two separate DRC gain sequences can be transmitted in one bitstream: light compression and heavy compression. When selecting the application of the heavy compression, one of the sequences is selected:
KEY_AAC_DRC_BOOST_FACTOR
and KEY_AAC_DRC_ATTENUATION_FACTOR
for the
boost and attenuation factors), and frequency-selective (multiband) DRC.
Light compression usually contains clipping prevention for stereo downmixing while heavy
compression, if additionally provided in the bitstream, is usually stronger, and contains
clipping prevention for stereo and mono downmixing.
The default is 1 (heavy compression).
This key is only used during decoding.
Constant Value: "aac-drc-heavy-compression"
public static final String KEY_AAC_DRC_OUTPUT_LOUDNESS
A key to retrieve the output loudness of a decoded bitstream.
If loudness normalization is active, the value corresponds to the Target Reference Level
(see KEY_AAC_DRC_TARGET_REFERENCE_LEVEL
).
If loudness normalization is not active, the value corresponds to the loudness metadata
given in the bitstream.
The value is retrieved with getInteger() and is given as an integer value between 0 and 231. It is calculated as -4 * Output Loudness in LKFS. Therefore, it represents the range of 0 to -57.75 LKFS.
A value of -1 indicates that no loudness metadata is present in the bitstream.
Loudness metadata can originate from MPEG-4 DRC or MPEG-D DRC.
This key is only used during decoding.
Constant Value: "aac-drc-output-loudness"
public static final String KEY_AAC_DRC_TARGET_REFERENCE_LEVEL
A key describing the Target Reference Level (Target Loudness).
For normalizing loudness across program items, a gain is applied to the audio output so that the output loudness matches the Target Reference Level. The gain is derived as the difference between the Target Reference Level and the Program Reference Level (Program Loudness). The latter can be given in the bitstream and indicates the actual loudness value of the program item.
The Target Reference Level controls loudness normalization for both MPEG-4 DRC and MPEG-D DRC.
The value is given as an integer value between 40 and 127, and is calculated as -4 * Target Reference Level in LKFS. Therefore, it represents the range of -10 to -31.75 LKFS.
For MPEG-4 DRC, a value of -1 switches off loudness normalization and DRC processing.
For MPEG-D DRC, a value of -1 switches off loudness normalization only. For DRC processing
options of MPEG-D DRC, see KEY_AAC_DRC_EFFECT_TYPE
The default value on mobile devices is 64 (-16 LKFS).
This key is only used during decoding.
Constant Value: "aac-target-ref-level"
public static final String KEY_AAC_ENCODED_TARGET_LEVEL
A key describing the target reference level that was assumed at the encoder for calculation of attenuation gains for clipping prevention.
If it is known, this information can be provided as an integer value between 0 and 127, which is calculated as -4 * Encoded Target Level in LKFS. If the Encoded Target Level is unknown, the value can be set to -1.
The default value is -1 (unknown).
The value is ignored when heavy compression (see KEY_AAC_DRC_HEAVY_COMPRESSION
)
or MPEG-D DRC is used.
This key is only used during decoding.
Constant Value: "aac-encoded-target-level"
public static final String KEY_AAC_MAX_OUTPUT_CHANNEL_COUNT
A key describing the maximum number of channels that can be output by the AAC decoder. By default, the decoder will output the same number of channels as present in the encoded stream, if supported. Set this value to limit the number of output channels, and use the downmix information in the stream, if available.
Values larger than the number of channels in the content to decode are ignored.
This key is only used during decoding.
Constant Value: "aac-max-output-channel_count"
public static final String KEY_AAC_PROFILE
A key describing the AAC profile to be used (AAC audio formats only).
Constants are declared in MediaCodecInfo.CodecProfileLevel
.
Constant Value: "aac-profile"
public static final String KEY_AAC_SBR_MODE
A key describing the AAC SBR mode to be used (AAC audio formats only). The associated value is an integer and can be set to following values:
This key is only used during encoding.
Constant Value: "aac-sbr-mode"
public static final String KEY_ALLOW_FRAME_DROP
A key for applications to opt out of allowing
a Surface to discard undisplayed/unconsumed frames
as means to catch up after falling behind.
This value is an integer.
The value 0 indicates the surface is not allowed to drop frames.
The value 1 indicates the surface is allowed to drop frames.
MediaCodec
describes the semantics.
Constant Value: "allow-frame-drop"
public static final String KEY_AUDIO_SESSION_ID
A key describing the audio session ID of the AudioTrack associated to a tunneled video codec. The associated value is an integer.
Constant Value: "audio-session-id"
public static final String KEY_BITRATE_MODE
A key describing the desired bitrate mode to be used by an encoder.
Constants are declared in MediaCodecInfo.CodecCapabilities
.
Constant Value: "bitrate-mode"
public static final String KEY_BIT_RATE
A key describing the average bitrate in bits/sec. The associated value is an integer
Constant Value: "bitrate"
public static final String KEY_CAPTION_SERVICE_NUMBER
A key describing the closed caption service number. For CEA-608 caption tracks, holds the channel number. For CEA-708, holds the service number. The associated value is an int.
Constant Value: "caption-service-number"
public static final String KEY_CAPTURE_RATE
A key describing the capture rate of a video format in frames/sec.
When capture rate is different than the frame rate, it means that the video is acquired at a different rate than the playback, which produces slow motion or timelapse effect during playback. Application can use the value of this key to tell the relative speed ratio between capture and playback rates when the video was recorded.
The associated value is an integer or a float.
Constant Value: "capture-rate"
public static final String KEY_CHANNEL_COUNT
A key describing the number of channels in an audio format. The associated value is an integer
Constant Value: "channel-count"
public static final String KEY_CHANNEL_MASK
A key describing the channel composition of audio content. This mask
is composed of bits drawn from channel mask definitions in AudioFormat
.
The associated value is an integer.
Constant Value: "channel-mask"
public static final String KEY_CODECS_STRING
A key describing the codecs string of the MediaFormat. See RFC 6381 section 3.2 for the
syntax of the value. The value does not hold MediaCodec
-exposed codec names.
The associated value is a string.
See also:
Constant Value: "codecs-string"
public static final String KEY_COLOR_FORMAT
A key describing the color format of the content in a video format.
Constants are declared in MediaCodecInfo.CodecCapabilities
.
Constant Value: "color-format"
public static final String KEY_COLOR_RANGE
An optional key describing the range of the component values of the video content. The associated value is an integer: 0 if unspecified, or one of the COLOR_RANGE_ values.
Constant Value: "color-range"
public static final String KEY_COLOR_STANDARD
An optional key describing the color primaries, white point and luminance factors for video content. The associated value is an integer: 0 if unspecified, or one of the COLOR_STANDARD_ values.
Constant Value: "color-standard"
public static final String KEY_COLOR_TRANSFER
An optional key describing the opto-electronic transfer function used for the video content. The associated value is an integer: 0 if unspecified, or one of the COLOR_TRANSFER_ values.
Constant Value: "color-transfer"
public static final String KEY_COLOR_TRANSFER_REQUEST
An optional key describing the opto-electronic transfer function requested for the output video content. The associated value is an integer: 0 if unspecified, or one of the COLOR_TRANSFER_ values. When unspecified the component will not touch the video content; otherwise the component will tone-map the raw video frame to match the requested transfer function. After configure, component's input format will contain this key to note whether the request is supported or not. If the value in the input format is the same as the requested value, the request is supported. The value is set to 0 if unsupported.
Constant Value: "color-transfer-request"
public static final String KEY_COMPLEXITY
A key describing the encoding complexity. The associated value is an integer. These values are device and codec specific, but lower values generally result in faster and/or less power-hungry encoding.
Constant Value: "complexity"
public static final String KEY_CREATE_INPUT_SURFACE_SUSPENDED
If specified when configuring a video encoder that's in "surface-input"
mode, it will instruct the encoder to put the surface source in suspended
state when it's connected. No video frames will be accepted until a resume
operation (see MediaCodec#PARAMETER_KEY_SUSPEND
), optionally with
timestamp specified via MediaCodec#PARAMETER_KEY_SUSPEND_TIME
, is
received.
The value is an integer, with 1 indicating to create with the surface
source suspended, or 0 otherwise. The default value is 0.
If this key is not set or set to 0, the surface source will accept buffers
as soon as it's connected to the encoder (although they may not be encoded
immediately). This key can be used when the client wants to prepare the
encoder session in advance, but do not want to accept buffers immediately.
Constant Value: "create-input-buffers-suspended"
public static final String KEY_DURATION
A key describing the duration (in microseconds) of the content. The associated value is a long.
Constant Value: "durationUs"
public static final String KEY_ENCODER_DELAY
A key describing the number of frames to trim from the start of the decoded audio stream. The associated value is an integer.
Constant Value: "encoder-delay"
public static final String KEY_ENCODER_PADDING
A key describing the number of frames to trim from the end of the decoded audio stream. The associated value is an integer.
Constant Value: "encoder-padding"
public static final String KEY_FLAC_COMPRESSION_LEVEL
A key describing the FLAC compression level to be used (FLAC audio format only). The associated value is an integer ranging from 0 (fastest, least compression) to 8 (slowest, most compression).
Constant Value: "flac-compression-level"
public static final String KEY_FRAME_RATE
A key describing the frame rate of a video format in frames/sec.
The associated value is normally an integer when the value is used by the platform,
but video codecs also accept float configuration values.
Specifically, MediaExtractor
provides an integer
value corresponding to the frame rate information of the track if specified and non-zero.
Otherwise, this key is not present. MediaCodec
accepts both
float and integer values. This represents the desired operating frame rate if the
KEY_OPERATING_RATE
is not present and KEY_PRIORITY
is 0
(realtime). For video encoders this value corresponds to the intended frame rate,
although encoders are expected
to support variable frame rate based on buffer timestamp
. This key is not used in the MediaCodec
input
/output
formats,
nor by MediaMuxer
.
Constant Value: "frame-rate"
public static final String KEY_GRID_COLUMNS
A key describing the number of grid columns in the content in a
MIMETYPE_IMAGE_ANDROID_HEIC
track. The associated value is an integer.
Refer to MIMETYPE_IMAGE_ANDROID_HEIC
on decoding instructions of such tracks.
Constant Value: "grid-cols"
public static final String KEY_GRID_ROWS
A key describing the number of grid rows in the content in a
MIMETYPE_IMAGE_ANDROID_HEIC
track. The associated value is an integer.
Refer to MIMETYPE_IMAGE_ANDROID_HEIC
on decoding instructions of such tracks.
Constant Value: "grid-rows"
public static final String KEY_HAPTIC_CHANNEL_COUNT
A key describing the number of haptic channels in an audio format. The associated value is an integer.
Constant Value: "haptic-channel-count"
public static final String KEY_HARDWARE_AV_SYNC_ID
A key describing the hardware AV sync id. The associated value is an integer See android.media.tv.tuner.Tuner#getAvSyncHwId.
Constant Value: "hw-av-sync-id"
public static final String KEY_HDR10_PLUS_INFO
An optional key describing the HDR10+ metadata of the video content. The associated value is a ByteBuffer containing HDR10+ metadata conforming to the user_data_registered_itu_t_t35() syntax of SEI message for ST 2094-40. This key will be present on:
- The formats of output buffers of a decoder configured for HDR10+ profiles (such as
MediaCodecInfo.CodecProfileLevel#VP9Profile2HDR10Plus
, MediaCodecInfo.CodecProfileLevel.VP9Profile3HDR10Plus
or MediaCodecInfo.CodecProfileLevel.HEVCProfileMain10HDR10Plus
), or
- The formats of output buffers of an encoder configured for an HDR10+ profiles that
uses out-of-band metadata (such as MediaCodecInfo.CodecProfileLevel.VP9Profile2HDR10Plus
or MediaCodecInfo.CodecProfileLevel.VP9Profile3HDR10Plus
).
See also:
Constant Value: "hdr10-plus-info"
public static final String KEY_HDR_STATIC_INFO
An optional key describing the static metadata of HDR (high-dynamic-range) video content. The associated value is a ByteBuffer. This buffer contains the raw contents of the Static Metadata Descriptor (including the descriptor ID) of an HDMI Dynamic Range and Mastering InfoFrame as defined by CTA-861.3. This key must be provided to video decoders for HDR video content unless this information is contained in the bitstream and the video decoder supports an HDR-capable profile. This key must be provided to video encoders for HDR video content.
Constant Value: "hdr-static-info"
public static final String KEY_HEIGHT
A key describing the height of the content in a video format. The associated value is an integer
Constant Value: "height"
public static final String KEY_INTRA_REFRESH_PERIOD
An optional key describing the period of intra refresh in frames. This is an
optional parameter that applies only to video encoders. If encoder supports it
(MediaCodecInfo.CodecCapabilities#FEATURE_IntraRefresh
), the whole
frame is completely refreshed after the specified period. Also for each frame,
a fix subset of macroblocks must be intra coded which leads to more constant bitrate
than inserting a key frame. This key is recommended for video streaming applications
as it provides low-delay and good error-resilience. This key is ignored if the
video encoder does not support the intra refresh feature. Use the output format to
verify that this feature was enabled.
The associated value is an integer.
Constant Value: "intra-refresh-period"
public static final String KEY_IS_ADTS
A key mapping to a value of 1 if the content is AAC audio and audio frames are prefixed with an ADTS header. The associated value is an integer (0 or 1). This key is only supported when _decoding_ content, it cannot be used to configure an encoder to emit ADTS output.
Constant Value: "is-adts"
public static final String KEY_IS_AUTOSELECT
A key for boolean AUTOSELECT behavior for the track. Tracks with AUTOSELECT=true are considered when automatically selecting a track without specific user choice, based on the current locale. This is currently only used for subtitle tracks, when the user selected 'Default' for the captioning locale. The associated value is an integer, where non-0 means TRUE. This is an optional field; if not specified, AUTOSELECT defaults to TRUE.
Constant Value: "is-autoselect"
public static final String KEY_IS_DEFAULT
A key for boolean DEFAULT behavior for the track. The track with DEFAULT=true is
selected in the absence of a specific user choice.
This is currently used in two scenarios:
1) for subtitle tracks, when the user selected 'Default' for the captioning locale.
2) for a MIMETYPE_IMAGE_ANDROID_HEIC
track, indicating the image is the
primary item in the file.
The associated value is an integer, where non-0 means TRUE. This is an optional
field; if not specified, DEFAULT is considered to be FALSE.
Constant Value: "is-default"
public static final String KEY_IS_FORCED_SUBTITLE
A key for the FORCED field for subtitle tracks. True if it is a forced subtitle track. Forced subtitle tracks are essential for the content and are shown even when the user turns off Captions. They are used for example to translate foreign/alien dialogs or signs. The associated value is an integer, where non-0 means TRUE. This is an optional field; if not specified, FORCED defaults to FALSE.
Constant Value: "is-forced-subtitle"
public static final String KEY_I_FRAME_INTERVAL
A key describing the frequency of key frames expressed in seconds between key frames.
This key is used by video encoders. A negative value means no key frames are requested after the first frame. A zero value means a stream containing all key frames is requested.
Most video encoders will convert this value of the number of non-key-frames between key-frames, using the frame rate information; therefore, if the actual frame rate differs (e.g. input frames are dropped or the frame rate changes), the time interval between key frames will not be the configured value.
The associated value is an integer (or float since
Build.VERSION_CODES.N_MR1
).
Constant Value: "i-frame-interval"
public static final String KEY_LANGUAGE
A key describing the language of the content, using either ISO 639-1 or 639-2/T codes. The associated value is a string.
Constant Value: "language"
public static final String KEY_LATENCY
An optional key describing the desired encoder latency in frames. This is an optional parameter that applies only to video encoders. If encoder supports it, it should ouput at least one output frame after being queued the specified number of frames. This key is ignored if the video encoder does not support the latency feature. Use the output format to verify that this feature was enabled and the actual value used by the encoder.
If the key is not specified, the default latency will be implenmentation specific. The associated value is an integer.
Constant Value: "latency"
public static final String KEY_LEVEL
A key describing the desired profile to be used by an encoder.
The associated value is an integer.
Constants are declared in MediaCodecInfo.CodecProfileLevel
.
This key is used as a further hint when specifying a desired profile,
and is only supported for codecs that specify a level.
This key is ignored if the profile
is not specified.
Constant Value: "level"
public static final String KEY_LOW_LATENCY
An optional key describing the low latency decoding mode. This is an optional parameter that applies only to decoders. If enabled, the decoder doesn't hold input and output data more than required by the codec standards. The associated value is an integer (0 or 1): 1 when low-latency decoding is enabled, 0 otherwise. The default value is 0.
Constant Value: "low-latency"
public static final String KEY_MAX_B_FRAMES
A key describing the maximum number of B frames between I or P frames, to be used by a video encoder. The associated value is an integer. The default value is 0, which means that no B frames are allowed. Note that non-zero value does not guarantee B frames; it's up to the encoder to decide.
Constant Value: "max-bframes"
public static final String KEY_MAX_FPS_TO_ENCODER
Instruct the video encoder in "surface-input" mode to drop excessive frames from the source, so that the input frame rate to the encoder does not exceed the specified fps. The associated value is a float, representing the max frame rate to feed the encoder at.
Constant Value: "max-fps-to-encoder"
public static final String KEY_MAX_HEIGHT
A key describing the maximum expected height of the content in a video decoder format, in case there are resolution changes in the video content. The associated value is an integer
Constant Value: "max-height"
public static final String KEY_MAX_INPUT_SIZE
A key describing the maximum size in bytes of a buffer of data described by this MediaFormat. The associated value is an integer
Constant Value: "max-input-size"
public static final String KEY_MAX_PTS_GAP_TO_ENCODER
Instruct the video encoder in "surface-input" mode to limit the gap of timestamp between any two adjacent frames fed to the encoder to the specified amount (in micro-second). The associated value is a long int. When positive, it represents the max timestamp gap between two adjacent frames fed to the encoder. When negative, the absolute value represents a fixed timestamp gap between any two adjacent frames fed to the encoder. Note that this will also apply even when the original timestamp goes backward in time. Under normal conditions, such frames would be dropped and not sent to the encoder. The output timestamp will be restored to the original timestamp and will not be affected. This is used in some special scenarios where input frames arrive sparingly but it's undesirable to allocate more bits to any single frame, or when it's important to ensure all frames are captured (rather than captured in the correct order).
Constant Value: "max-pts-gap-to-encoder"
public static final String KEY_MAX_WIDTH
A key describing the maximum expected width of the content in a video decoder format, in case there are resolution changes in the video content. The associated value is an integer
Constant Value: "max-width"
public static final String KEY_MIME
A key describing the mime type of the MediaFormat. The associated value is a string.
Constant Value: "mime"
public static final String KEY_MPEGH_COMPATIBLE_SETS
A key describing the MPEG-H stream compatible sets. See FDAmd_2 of ISO_IEC_23008-3;2019 MHAProfileAndLevelCompatibilitySetBox.
Constant Value: "mpegh-compatible-sets"
public static final String KEY_MPEGH_PROFILE_LEVEL_INDICATION
A key describing the MPEG-H stream profile-level indication. See ISO_IEC_23008-3;2019 MHADecoderConfigurationRecord mpegh3daProfileLevelIndication.
Constant Value: "mpegh-profile-level-indication"
public static final String KEY_MPEGH_REFERENCE_CHANNEL_LAYOUT
A key describing the MPEG-H stream reference channel layout. See ISO_IEC_23008-3;2019 MHADecoderConfigurationRecord referenceChannelLayout and ISO_IEC_23001‐8 ChannelConfiguration value.
Constant Value: "mpegh-reference-channel-layout"
public static final String KEY_OPERATING_RATE
A key describing the desired operating frame rate for video or sample rate for audio that the codec will need to operate at.
The associated value is an integer or a float representing frames-per-second or samples-per-second
This is used for cases like high-speed/slow-motion video capture, where the video encoder format contains the target playback rate (e.g. 30fps), but the component must be able to handle the high operating capture rate (e.g. 240fps).
This rate will be used by codec for resource planning and setting the operating points.
Constant Value: "operating-rate"
public static final String KEY_OUTPUT_REORDER_DEPTH
An optional key describing the maximum number of non-display-order coded frames.
This is an optional parameter that applies only to video encoders. Application should
check the value for this key in the output format to see if codec will produce
non-display-order coded frames. If encoder supports it, the output frames' order will be
different from the display order and each frame's display order could be retrived from
MediaCodec.BufferInfo#presentationTimeUs
. Before API level 27, application may
receive non-display-order coded frames even though the application did not request it.
Note: Application should not rearrange the frames to display order before feeding them
to MediaMuxer#writeSampleData
.
The default value is 0.
Constant Value: "output-reorder-depth"
public static final String KEY_PCM_ENCODING
A key describing the raw audio sample encoding/format.
The associated value is an integer, using one of the
AudioFormat
.ENCODING_PCM_ values.
This is an optional key for audio decoders and encoders specifying the
desired raw audio sample format during MediaCodec.configure(…)
call. Use MediaCodec.getInput
/OutputFormat(…)
to confirm the actual format. For the PCM decoder this key specifies both
input and output sample encodings.
This key is also used by MediaExtractor
to specify the sample
format of audio data, if it is specified.
If this key is missing, the raw audio sample format is signed 16-bit short.
Constant Value: "pcm-encoding"
public static final String KEY_PIXEL_ASPECT_RATIO_HEIGHT
A key describing the pixel aspect ratio height. The associated value is an integer
Constant Value: "sar-height"
public static final String KEY_PIXEL_ASPECT_RATIO_WIDTH
A key describing the pixel aspect ratio width. The associated value is an integer
Constant Value: "sar-width"
public static final String KEY_PREPEND_HEADER_TO_SYNC_FRAMES
An optional key describing whether encoders prepend headers to sync frames (e.g. SPS and PPS to IDR frames for H.264). This is an optional parameter that applies only to video encoders. A video encoder may not support this feature; the component will fail to configure in that case. For other components, this key is ignored. The value is an integer, with 1 indicating to prepend headers to every sync frames, or 0 otherwise. The default value is 0.
Constant Value: "prepend-sps-pps-to-idr-frames"
public static final String KEY_PRIORITY
A key describing the desired codec priority.
The associated value is an integer. Higher value means lower priority.
Currently, only two levels are supported:
0: realtime priority - meaning that the codec shall support the given
performance configuration (e.g. framerate) at realtime. This should
only be used by media playback, capture, and possibly by realtime
communication scenarios if best effort performance is not suitable.
1: non-realtime priority (best effort).
This is a hint used at codec configuration and resource planning - to understand the realtime requirements of the application; however, due to the nature of media components, performance is not guaranteed.
Constant Value: "priority"
public static final String KEY_PROFILE
A key describing the desired profile to be used by an encoder.
The associated value is an integer.
Constants are declared in MediaCodecInfo.CodecProfileLevel
.
This key is used as a hint, and is only supported for codecs
that specify a profile. Note: Codecs are free to use all the available
coding tools at the specified profile.
Constant Value: "profile"
public static final String KEY_PUSH_BLANK_BUFFERS_ON_STOP
If specified when configuring a video decoder rendering to a surface, causes the decoder to output "blank", i.e. black frames to the surface when stopped to clear out any previously displayed contents. The associated value is an integer of value 1.
Constant Value: "push-blank-buffers-on-shutdown"
public static final String KEY_QUALITY
A key describing the desired encoding quality. The associated value is an integer. This key is only supported for encoders that are configured in constant-quality mode. These values are device and codec specific, but lower values generally result in more efficient (smaller-sized) encoding.
Constant Value: "quality"
public static final String KEY_REPEAT_PREVIOUS_FRAME_AFTER
Applies only when configuring a video encoder in "surface-input" mode. The associated value is a long and gives the time in microseconds after which the frame previously submitted to the encoder will be repeated (once) if no new frame became available since.
Constant Value: "repeat-previous-frame-after"
public static final String KEY_ROTATION
A key describing the desired clockwise rotation on an output surface. This key is only used when the codec is configured using an output surface. The associated value is an integer, representing degrees. Supported values are 0, 90, 180 or 270. This is an optional field; if not specified, rotation defaults to 0.
Constant Value: "rotation-degrees"
public static final String KEY_SAMPLE_RATE
A key describing the sample rate of an audio format. The associated value is an integer
Constant Value: "sample-rate"
public static final String KEY_SLICE_HEIGHT
A key describing the plane height of a multi-planar (YUV) video bytebuffer layout. Slice height (or plane height/vertical stride) is the number of rows that must be skipped to get from the top of the Y plane to the top of the U plane in the bytebuffer. In essence the offset of the U plane is sliceHeight * stride. The height of the U/V planes can be calculated based on the color format, though it is generally undefined and depends on the device and release. The associated value is an integer, representing number of rows.
Constant Value: "slice-height"
public static final String KEY_SLOW_MOTION_MARKERS
A key for retrieving the slow-motion marker information associated with a video track.
The associated value is a ByteBuffer in ByteOrder#BIG_ENDIAN
(networking order) of the following format:
float(32) playbackRate; unsigned int(32) numMarkers; for (i = 0;i < numMarkers; i++) { int(64) timestampUs; float(32) speedRatio; }The meaning of each field is as follows:
playbackRate | The frame rate at which the playback should happen (or the flattened clip should be). |
numMarkers | The number of slow-motion markers that follows. |
timestampUs | The starting point of a new segment. |
speedRatio | The playback speed for that segment. The playback speed is a floating point number, indicating how fast the time progresses relative to that written in the container. (Eg. 4.0 means time goes 4x as fast, which makes 30fps become 120fps.) |
The following constraints apply to the timestampUs of the markers:
Constant Value: "slow-motion-markers"
public static final String KEY_STRIDE
A key describing the stride of the video bytebuffer layout. Stride (or row increment) is the difference between the index of a pixel and that of the pixel directly underneath. For YUV 420 formats, the stride corresponds to the Y plane; the stride of the U and V planes can be calculated based on the color format, though it is generally undefined and depends on the device and release. The associated value is an integer, representing number of bytes.
Constant Value: "stride"
public static final String KEY_TEMPORAL_LAYERING
A key describing the temporal layering schema. This is an optional parameter
that applies only to video encoders. Use MediaCodec#getOutputFormat
after configure
to query if the encoder supports
the desired schema. Supported values are webrtc.vp8.N-layer
,
android.generic.N
, android.generic.N+M
and none
, where
N
denotes the total number of non-bidirectional layers (which must be at least 1)
and M
denotes the total number of bidirectional layers (which must be non-negative).
android.generic.*
schemas have been added in Build.VERSION_CODES.N_MR1
.
The encoder may support fewer temporal layers, in which case the output format will contain the configured schema. If the encoder does not support temporal layering, the output format will not have an entry with this key. The associated value is a string.
Constant Value: "ts-schema"
public static final String KEY_TILE_HEIGHT
A key describing the height (in pixels) of each tile of the content in a
MIMETYPE_IMAGE_ANDROID_HEIC
track. The associated value is an integer.
Refer to MIMETYPE_IMAGE_ANDROID_HEIC
on decoding instructions of such tracks.
Constant Value: "tile-height"
public static final String KEY_TILE_WIDTH
A key describing the width (in pixels) of each tile of the content in a
MIMETYPE_IMAGE_ANDROID_HEIC
track. The associated value is an integer.
Refer to MIMETYPE_IMAGE_ANDROID_HEIC
on decoding instructions of such tracks.
Constant Value: "tile-width"
public static final String KEY_TRACK_ID
A key describing a unique ID for the content of a media track.
This key is used by MediaExtractor
. Some extractors provide multiple encodings
of the same track (e.g. float audio tracks for FLAC and WAV may be expressed as two
tracks via MediaExtractor: a normal PCM track for backward compatibility, and a float PCM
track for added fidelity. Similarly, Dolby Vision extractor may provide a baseline SDR
version of a DV track.) This key can be used to identify which MediaExtractor tracks refer
to the same underlying content.
Constant Value: "track-id"
public static final String KEY_VIDEO_QP_B_MAX
A key describing the maximum Quantization Parameter allowed for encoding video. This value applies to video B-frames. The associated value is an integer.
Constant Value: "video-qp-b-max"
public static final String KEY_VIDEO_QP_B_MIN
A key describing the minimum Quantization Parameter allowed for encoding video. This value applies to video B-frames. The associated value is an integer.
Constant Value: "video-qp-b-min"
public static final String KEY_VIDEO_QP_I_MAX
A key describing the maximum Quantization Parameter allowed for encoding video. This value applies to video I-frames. The associated value is an integer.
Constant Value: "video-qp-i-max"
public static final String KEY_VIDEO_QP_I_MIN
A key describing the minimum Quantization Parameter allowed for encoding video. This value applies to video I-frames. The associated value is an integer.
Constant Value: "video-qp-i-min"
public static final String KEY_VIDEO_QP_MAX
A key describing the maximum Quantization Parameter allowed for encoding video.
This key applies to all three video picture types (I, P, and B).
The value is used directly for picture type I; a per-mime formula is used
to calculate the value for the remaining picture types.
This calculation can be avoided by directly specifying values for each picture type
using the type-specific keys KEY_VIDEO_QP_I_MAX
, KEY_VIDEO_QP_P_MAX
,
and KEY_VIDEO_QP_B_MAX
.
The associated value is an integer.
Constant Value: "video-qp-max"
public static final String KEY_VIDEO_QP_MIN
A key describing the minimum Quantization Parameter allowed for encoding video.
This key applies to all three video frame types (I, P, and B).
The value is used directly for picture type I; a per-mime formula is used
to calculate the value for the remaining picture types.
This calculation can be avoided by directly specifying values for each picture type
using the type-specific keys KEY_VIDEO_QP_I_MIN
, KEY_VIDEO_QP_P_MIN
,
and KEY_VIDEO_QP_B_MIN
.
The associated value is an integer.
Constant Value: "video-qp-min"
public static final String KEY_VIDEO_QP_P_MAX
A key describing the maximum Quantization Parameter allowed for encoding video. This value applies to video P-frames. The associated value is an integer.
Constant Value: "video-qp-p-max"
public static final String KEY_VIDEO_QP_P_MIN
A key describing the minimum Quantization Parameter allowed for encoding video. This value applies to video P-frames. The associated value is an integer.
Constant Value: "video-qp-p-min"
public static final String KEY_WIDTH
A key describing the width of the content in a video format. The associated value is an integer
Constant Value: "width"
public static final String MIMETYPE_AUDIO_AMR_WB
Constant Value: "audio/amr-wb"
public static final String MIMETYPE_AUDIO_EAC3_JOC
Constant Value: "audio/eac3-joc"
public static final String MIMETYPE_AUDIO_G711_ALAW
Constant Value: "audio/g711-alaw"
public static final String MIMETYPE_AUDIO_G711_MLAW
Constant Value: "audio/g711-mlaw"
public static final String MIMETYPE_AUDIO_MPEGH_MHA1
MIME type for MPEG-H Audio single stream
Constant Value: "audio/mha1"
public static final String MIMETYPE_AUDIO_MPEGH_MHM1
MIME type for MPEG-H Audio single stream, encapsulated in MHAS
Constant Value: "audio/mhm1"
public static final String MIMETYPE_AUDIO_SCRAMBLED
Constant Value: "audio/scrambled"
public static final String MIMETYPE_AUDIO_VORBIS
Constant Value: "audio/vorbis"
public static final String MIMETYPE_IMAGE_ANDROID_HEIC
MIME type for HEIF still image data encoded in HEVC.
To decode such an image, MediaCodec
decoder for
MIMETYPE_VIDEO_HEVC
shall be used. The client needs to form
the correct MediaFormat()
based on additional information in
the track format, and send it to MediaCodec#configure
.
The track's MediaFormat will come with KEY_WIDTH
and
KEY_HEIGHT
keys, which describes the width and height
of the image. If the image doesn't contain grid (i.e. none of
KEY_TILE_WIDTH
, KEY_TILE_HEIGHT
,
KEY_GRID_ROWS
, KEY_GRID_COLUMNS
are present}), the
track will contain a single sample of coded data for the entire image,
and the image width and height should be used to set up the decoder.
If the image does come with grid, each sample from the track will
contain one tile in the grid, of which the size is described by
KEY_TILE_WIDTH
and KEY_TILE_HEIGHT
. This size
(instead of KEY_WIDTH
and KEY_HEIGHT
) should be
used to set up the decoder. The track contains KEY_GRID_ROWS
by KEY_GRID_COLUMNS
samples in row-major, top-row first,
left-to-right order. The output image should be reconstructed by
first tiling the decoding results of the tiles in the correct order,
then trimming (before rotation is applied) on the bottom and right
side, if the tiled area is larger than the image width and height.
Constant Value: "image/vnd.android.heic"
public static final String MIMETYPE_TEXT_CEA_608
MIME type for CEA-608 closed caption data.
Constant Value: "text/cea-608"
public static final String MIMETYPE_TEXT_CEA_708
MIME type for CEA-708 closed caption data.
Constant Value: "text/cea-708"
public static final String MIMETYPE_TEXT_SUBRIP
MIME type for SubRip (SRT) container.
Constant Value: "application/x-subrip"
public static final String MIMETYPE_TEXT_VTT
MIME type for WebVTT subtitle data.
Constant Value: "text/vtt"
public static final String MIMETYPE_VIDEO_DOLBY_VISION
Constant Value: "video/dolby-vision"
public static final String MIMETYPE_VIDEO_MPEG4
Constant Value: "video/mp4v-es"
public static final String MIMETYPE_VIDEO_SCRAMBLED
Constant Value: "video/scrambled"
public static final String MIMETYPE_VIDEO_VP8
Constant Value: "video/x-vnd.on2.vp8"
public static final String MIMETYPE_VIDEO_VP9
Constant Value: "video/x-vnd.on2.vp9"
public static final int TYPE_BYTE_BUFFER
Constant Value: 5 (0x00000005)
public static final int TYPE_FLOAT
Constant Value: 3 (0x00000003)
public static final int TYPE_INTEGER
Constant Value: 1 (0x00000001)
public static final int TYPE_LONG
Constant Value: 2 (0x00000002)
public static final int TYPE_NULL
Constant Value: 0 (0x00000000)
public static final int TYPE_STRING
Constant Value: 4 (0x00000004)
public MediaFormat ()
Creates an empty MediaFormat
public MediaFormat (MediaFormat other)
Create a copy of a media format object.
Parameters | |
---|---|
other |
MediaFormat : This value cannot be null . |
public boolean containsFeature (String name)
Returns true iff a feature of the given name exists in the format.
Parameters | |
---|---|
name |
String : This value cannot be null . |
Returns | |
---|---|
boolean |
public boolean containsKey (String name)
Returns true iff a key of the given name exists in the format.
Parameters | |
---|---|
name |
String : This value cannot be null . |
Returns | |
---|---|
boolean |
public static MediaFormat createAudioFormat (String mime, int sampleRate, int channelCount)
Creates a minimal audio format.
Parameters | |
---|---|
mime |
String : The mime type of the content.
This value cannot be null . |
sampleRate |
int : The sampling rate of the content. |
channelCount |
int : The number of audio channels in the content. |
Returns | |
---|---|
MediaFormat |
This value cannot be null . |
public static MediaFormat createSubtitleFormat (String mime, String language)
Creates a minimal subtitle format.
Parameters | |
---|---|
mime |
String : The mime type of the content.
This value cannot be null . |
language |
String : The language of the content, using either ISO 639-1 or 639-2/T
codes. Specify null or "und" if language information is only included
in the content. (This will also work if there are multiple language
tracks in the content.) |
Returns | |
---|---|
MediaFormat |
public static MediaFormat createVideoFormat (String mime, int width, int height)
Creates a minimal video format.
Parameters | |
---|---|
mime |
String : The mime type of the content.
This value cannot be null . |
width |
int : The width of the content (in pixels) |
height |
int : The height of the content (in pixels) |
Returns | |
---|---|
MediaFormat |
This value cannot be null . |
public ByteBuffer getByteBuffer (String name)
Returns the value of a ByteBuffer key.
Parameters | |
---|---|
name |
String : This value cannot be null . |
Returns | |
---|---|
ByteBuffer |
null if the key does not exist or the stored value for the key is null |
Throws | |
---|---|
ClassCastException |
if the stored value for the key is int, long, float or String |
public ByteBuffer getByteBuffer (String name, ByteBuffer defaultValue)
Returns the value of a ByteBuffer key, or the default value if the key is missing.
Parameters | |
---|---|
name |
String : This value cannot be null . |
defaultValue |
ByteBuffer : This value cannot be null . |
Returns | |
---|---|
ByteBuffer |
defaultValue if the key does not exist or the stored value for the key is null |
Throws | |
---|---|
ClassCastException |
if the stored value for the key is int, long, float or String |
public boolean getFeatureEnabled (String feature)
Returns whether a feature is to be enabled (true
) or disabled
(false
).
Parameters | |
---|---|
feature |
String : the name of a MediaCodecInfo.CodecCapabilities feature.
This value cannot be null . |
Returns | |
---|---|
boolean |
Throws | |
---|---|
IllegalArgumentException |
if the feature was neither set to be enabled nor to be disabled. |
public Set<String> getFeatures ()
Returns a Set
view of the features contained in this MediaFormat.
The set is backed by the MediaFormat object, so changes to the format are reflected in the
set, and vice-versa. If the format is modified while an iteration over the set is in progress
(except through the iterator's own remove operation), the results of the iteration are
undefined. The set supports element removal, which removes the corresponding mapping from the
format, via the Iterator.remove, Set.remove, removeAll, retainAll, and clear operations.
It does not support the add or addAll operations.
Returns | |
---|---|
Set<String> |
This value cannot be null . |
public float getFloat (String name, float defaultValue)
Returns the value of a float key, or the default value if the key is missing.
Parameters | |
---|---|
name |
String : This value cannot be null . |
defaultValue |
float |
Returns | |
---|---|
float |
defaultValue if the key does not exist or the stored value for the key is null |
Throws | |
---|---|
ClassCastException |
if the stored value for the key is int, long, ByteBuffer or String |
public float getFloat (String name)
Returns the value of a float key.
Parameters | |
---|---|
name |
String : This value cannot be null . |
Returns | |
---|---|
float |
Throws | |
---|---|
NullPointerException |
if the key does not exist or the stored value for the key is null |
ClassCastException |
if the stored value for the key is int, long, ByteBuffer or String |
public int getInteger (String name)
Returns the value of an integer key.
Parameters | |
---|---|
name |
String : This value cannot be null . |
Returns | |
---|---|
int |
Throws | |
---|---|
NullPointerException |
if the key does not exist or the stored value for the key is null |
ClassCastException |
if the stored value for the key is long, float, ByteBuffer or String |
public int getInteger (String name, int defaultValue)
Returns the value of an integer key, or the default value if the key is missing.
Parameters | |
---|---|
name |
String : This value cannot be null . |
defaultValue |
int |
Returns | |
---|---|
int |
defaultValue if the key does not exist or the stored value for the key is null |
Throws | |
---|---|
ClassCastException |
if the stored value for the key is long, float, ByteBuffer or String |
public Set<String> getKeys ()
Returns a Set
view of the keys contained in this MediaFormat.
The set is backed by the MediaFormat object, so changes to the format are reflected in the
set, and vice-versa. If the format is modified while an iteration over the set is in progress
(except through the iterator's own remove operation), the results of the iteration are
undefined. The set supports element removal, which removes the corresponding mapping from the
format, via the Iterator.remove, Set.remove, removeAll, retainAll, and clear operations.
It does not support the add or addAll operations.
Returns | |
---|---|
Set<String> |
This value cannot be null . |
public long getLong (String name)
Returns the value of a long key.
Parameters | |
---|---|
name |
String : This value cannot be null . |
Returns | |
---|---|
long |
Throws | |
---|---|
NullPointerException |
if the key does not exist or the stored value for the key is null |
ClassCastException |
if the stored value for the key is int, float, ByteBuffer or String |
public long getLong (String name, long defaultValue)
Returns the value of a long key, or the default value if the key is missing.
Parameters | |
---|---|
name |
String : This value cannot be null . |
defaultValue |
long |
Returns | |
---|---|
long |
defaultValue if the key does not exist or the stored value for the key is null |
Throws | |
---|---|
ClassCastException |
if the stored value for the key is int, float, ByteBuffer or String |
public Number getNumber (String name, Number defaultValue)
Returns the value of a numeric key, or the default value if the key is missing.
Parameters | |
---|---|
name |
String : This value cannot be null . |
defaultValue |
Number : This value cannot be null . |
Returns | |
---|---|
Number |
defaultValue if the key does not exist or the stored value for the key is null |
Throws | |
---|---|
ClassCastException |
if the stored value for the key is ByteBuffer or String |
public Number getNumber (String name)
Returns the value of a numeric key. This is provided as a convenience method for keys
that may take multiple numeric types, such as KEY_FRAME_RATE
, or KEY_I_FRAME_INTERVAL
.
Parameters | |
---|---|
name |
String : This value cannot be null . |
Returns | |
---|---|
Number |
null if the key does not exist or the stored value for the key is null |
Throws | |
---|---|
ClassCastException |
if the stored value for the key is ByteBuffer or String |
public String getString (String name)
Returns the value of a string key.
Parameters | |
---|---|
name |
String : This value cannot be null . |
Returns | |
---|---|
String |
null if the key does not exist or the stored value for the key is null |
Throws | |
---|---|
ClassCastException |
if the stored value for the key is int, long, float or ByteBuffer |
public String getString (String name, String defaultValue)
Returns the value of a string key, or the default value if the key is missing.
Parameters | |
---|---|
name |
String : This value cannot be null . |
defaultValue |
String : This value cannot be null . |
Returns | |
---|---|
String |
defaultValue if the key does not exist or the stored value for the key is null |
Throws | |
---|---|
ClassCastException |
if the stored value for the key is int, long, float or ByteBuffer |
public int getValueTypeForKey (String name)
Returns the value type for a key. If the key does not exist, it returns TYPE_NULL.
Parameters | |
---|---|
name |
String : This value cannot be null . |
Returns | |
---|---|
int |
Value is TYPE_NULL , TYPE_INTEGER , TYPE_LONG , TYPE_FLOAT , TYPE_STRING , or TYPE_BYTE_BUFFER |
public void removeFeature (String name)
Removes a given feature setting if present. Has no effect if the feature setting is not present.
Parameters | |
---|---|
name |
String : This value cannot be null . |
public void removeKey (String name)
Removes a value of a given key if present. Has no effect if the key is not present.
Parameters | |
---|---|
name |
String : This value cannot be null . |
public void setByteBuffer (String name, ByteBuffer bytes)
Sets the value of a ByteBuffer key.
If value is null
, it sets a null value that behaves similarly to a missing key.
This could be used prior to API level os.Build.VERSION_CODES#Q
to effectively
remove a key.
Parameters | |
---|---|
name |
String : This value cannot be null . |
bytes |
ByteBuffer : This value may be null . |
public void setFeatureEnabled (String feature, boolean enabled)
Sets whether a feature is to be enabled (true
) or disabled
(false
).
If enabled
is true
, the feature is requested to be present.
Otherwise, the feature is requested to be not present.
Parameters | |
---|---|
feature |
String : the name of a MediaCodecInfo.CodecCapabilities feature.
This value cannot be null . |
enabled |
boolean |
public void setFloat (String name, float value)
Sets the value of a float key.
Parameters | |
---|---|
name |
String : This value cannot be null . |
value |
float |
public void setInteger (String name, int value)
Sets the value of an integer key.
Parameters | |
---|---|
name |
String : This value cannot be null . |
value |
int |
public void setLong (String name, long value)
Sets the value of a long key.
Parameters | |
---|---|
name |
String : This value cannot be null . |
value |
long |
public void setString (String name, String value)
Sets the value of a string key.
If value is null
, it sets a null value that behaves similarly to a missing key.
This could be used prior to API level os.Build.VERSION_CODES#Q
to effectively
remove a key.
Parameters | |
---|---|
name |
String : This value cannot be null . |
value |
String : This value may be null . |
public String toString ()
Returns a string representation of the object. In general, the
toString
method returns a string that
"textually represents" this object. The result should
be a concise but informative representation that is easy for a
person to read.
It is recommended that all subclasses override this method.
The toString
method for class Object
returns a string consisting of the name of the class of which the
object is an instance, the at-sign character `@
', and
the unsigned hexadecimal representation of the hash code of the
object. In other words, this method returns a string equal to the
value of:
getClass().getName() + '@' + Integer.toHexString(hashCode())
Returns | |
---|---|
String |
This value cannot be null . |