/**@class android.media.MediaCodecInfo.CodecCapabilities @extends java.lang.Object Encapsulates the capabilities of a given codec component. For example, what profile/level combinations it supports and what colorspaces it is capable of providing the decoded data in, as well as some codec-type specific capability flags. <p>You can get an instance for a given {@link android.media.MediaCodecInfo} object with {@link android.media.MediaCodecInfo#getCapabilitiesForType getCapabilitiesForType()}, passing a MIME type. */ var CodecCapabilities = { /***/ profileLevels : "null", /**@deprecated Use {@link #COLOR_Format24bitBGR888}. */ COLOR_FormatMonochrome : "1", /**@deprecated Use {@link #COLOR_Format24bitBGR888}. */ COLOR_Format8bitRGB332 : "2", /**@deprecated Use {@link #COLOR_Format24bitBGR888}. */ COLOR_Format12bitRGB444 : "3", /**@deprecated Use {@link #COLOR_Format32bitABGR8888}. */ COLOR_Format16bitARGB4444 : "4", /**@deprecated Use {@link #COLOR_Format32bitABGR8888}. */ COLOR_Format16bitARGB1555 : "5", /** 16 bits per pixel RGB color format, with 5-bit red & blue and 6-bit green component. <p> Using 16-bit little-endian representation, colors stored as Red 15:11, Green 10:5, Blue 4:0. <pre> byte byte <--------- i --------> | <------ i + 1 ------> +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | BLUE | GREEN | RED | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ 0 4 5 7 0 2 3 7 bit </pre> This format corresponds to {@link android.graphics.PixelFormat#RGB_565} and {@link android.graphics.ImageFormat#RGB_565}. */ COLOR_Format16bitRGB565 : "6", /**@deprecated Use {@link #COLOR_Format16bitRGB565}. */ COLOR_Format16bitBGR565 : "7", /**@deprecated Use {@link #COLOR_Format24bitBGR888}. */ COLOR_Format18bitRGB666 : "8", /**@deprecated Use {@link #COLOR_Format32bitABGR8888}. */ COLOR_Format18bitARGB1665 : "9", /**@deprecated Use {@link #COLOR_Format32bitABGR8888}. */ COLOR_Format19bitARGB1666 : "10", /**@deprecated Use {@link #COLOR_Format24bitBGR888} or {@link #COLOR_FormatRGBFlexible}. */ COLOR_Format24bitRGB888 : "11", /** 24 bits per pixel RGB color format, with 8-bit red, green & blue components. <p> Using 24-bit little-endian representation, colors stored as Red 7:0, Green 15:8, Blue 23:16. <pre> byte byte byte <------ i -----> | <---- i+1 ----> | <---- i+2 -----> +-----------------+-----------------+-----------------+ | RED | GREEN | BLUE | +-----------------+-----------------+-----------------+ </pre> This format corresponds to {@link android.graphics.PixelFormat#RGB_888}, and can also be represented as a flexible format by {@link #COLOR_FormatRGBFlexible}. */ COLOR_Format24bitBGR888 : "12", /**@deprecated Use {@link #COLOR_Format32bitABGR8888}. */ COLOR_Format24bitARGB1887 : "13", /**@deprecated Use {@link #COLOR_Format32bitABGR8888}. */ COLOR_Format25bitARGB1888 : "14", /** @deprecated Use {@link #COLOR_Format32bitABGR8888} Or {@link #COLOR_FormatRGBAFlexible}. */ COLOR_Format32bitBGRA8888 : "15", /** @deprecated Use {@link #COLOR_Format32bitABGR8888} Or {@link #COLOR_FormatRGBAFlexible}. */ COLOR_Format32bitARGB8888 : "16", /**@deprecated Use {@link #COLOR_FormatYUV420Flexible}. */ COLOR_FormatYUV411Planar : "17", /**@deprecated Use {@link #COLOR_FormatYUV420Flexible}. */ COLOR_FormatYUV411PackedPlanar : "18", /**@deprecated Use {@link #COLOR_FormatYUV420Flexible}. */ COLOR_FormatYUV420Planar : "19", /**@deprecated Use {@link #COLOR_FormatYUV420Flexible}. */ COLOR_FormatYUV420PackedPlanar : "20", /**@deprecated Use {@link #COLOR_FormatYUV420Flexible}. */ COLOR_FormatYUV420SemiPlanar : "21", /**@deprecated Use {@link #COLOR_FormatYUV422Flexible}. */ COLOR_FormatYUV422Planar : "22", /**@deprecated Use {@link #COLOR_FormatYUV422Flexible}. */ COLOR_FormatYUV422PackedPlanar : "23", /**@deprecated Use {@link #COLOR_FormatYUV422Flexible}. */ COLOR_FormatYUV422SemiPlanar : "24", /**@deprecated Use {@link #COLOR_FormatYUV422Flexible}. */ COLOR_FormatYCbYCr : "25", /**@deprecated Use {@link #COLOR_FormatYUV422Flexible}. */ COLOR_FormatYCrYCb : "26", /**@deprecated Use {@link #COLOR_FormatYUV422Flexible}. */ COLOR_FormatCbYCrY : "27", /**@deprecated Use {@link #COLOR_FormatYUV422Flexible}. */ COLOR_FormatCrYCbY : "28", /**@deprecated Use {@link #COLOR_FormatYUV444Flexible}. */ COLOR_FormatYUV444Interleaved : "29", /** SMIA 8-bit Bayer format. Each byte represents the top 8-bits of a 10-bit signal. */ COLOR_FormatRawBayer8bit : "30", /** SMIA 10-bit Bayer format. */ COLOR_FormatRawBayer10bit : "31", /** SMIA 8-bit compressed Bayer format. Each byte represents a sample from the 10-bit signal that is compressed into 8-bits using DPCM/PCM compression, as defined by the SMIA Functional Specification. */ COLOR_FormatRawBayer8bitcompressed : "32", /**@deprecated Use {@link #COLOR_FormatL8}. */ COLOR_FormatL2 : "33", /**@deprecated Use {@link #COLOR_FormatL8}. */ COLOR_FormatL4 : "34", /** 8 bits per pixel Y color format. <p> Each byte contains a single pixel. This format corresponds to {@link android.graphics.PixelFormat#L_8}. */ COLOR_FormatL8 : "35", /** 16 bits per pixel, little-endian Y color format. <p> <pre> byte byte <--------- i --------> | <------ i + 1 ------> +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | Y | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ 0 7 0 7 bit </pre> */ COLOR_FormatL16 : "36", /**@deprecated Use {@link #COLOR_FormatL16}. */ COLOR_FormatL24 : "37", /** 32 bits per pixel, little-endian Y color format. <p> <pre> byte byte byte byte <------ i -----> | <---- i+1 ----> | <---- i+2 ----> | <---- i+3 -----> +-----------------+-----------------+-----------------+-----------------+ | Y | +-----------------+-----------------+-----------------+-----------------+ 0 7 0 7 0 7 0 7 bit </pre> @deprecated Use {@link #COLOR_FormatL16}. */ COLOR_FormatL32 : "38", /**@deprecated Use {@link #COLOR_FormatYUV420Flexible}. */ COLOR_FormatYUV420PackedSemiPlanar : "39", /**@deprecated Use {@link #COLOR_FormatYUV422Flexible}. */ COLOR_FormatYUV422PackedSemiPlanar : "40", /**@deprecated Use {@link #COLOR_Format24bitBGR888}. */ COLOR_Format18BitBGR666 : "41", /**@deprecated Use {@link #COLOR_Format32bitABGR8888}. */ COLOR_Format24BitARGB6666 : "42", /**@deprecated Use {@link #COLOR_Format32bitABGR8888}. */ COLOR_Format24BitABGR6666 : "43", /**@deprecated Use {@link #COLOR_FormatYUV420Flexible}. */ COLOR_TI_FormatYUV420PackedSemiPlanar : "2130706688", /***/ COLOR_FormatSurface : "2130708361", /** 32 bits per pixel RGBA color format, with 8-bit red, green, blue, and alpha components. <p> Using 32-bit little-endian representation, colors stored as Red 7:0, Green 15:8, Blue 23:16, and Alpha 31:24. <pre> byte byte byte byte <------ i -----> | <---- i+1 ----> | <---- i+2 ----> | <---- i+3 -----> +-----------------+-----------------+-----------------+-----------------+ | RED | GREEN | BLUE | ALPHA | +-----------------+-----------------+-----------------+-----------------+ </pre> This corresponds to {@link android.graphics.PixelFormat#RGBA_8888}. */ COLOR_Format32bitABGR8888 : "2130747392", /** Flexible 12 bits per pixel, subsampled YUV color format with 8-bit chroma and luma components. <p> Chroma planes are subsampled by 2 both horizontally and vertically. Use this format with {@link android.media.Image}. This format corresponds to {@link android.graphics.ImageFormat#YUV_420_888}, and can represent the {@link #COLOR_FormatYUV411Planar}, {@link #COLOR_FormatYUV411PackedPlanar}, {@link #COLOR_FormatYUV420Planar}, {@link #COLOR_FormatYUV420PackedPlanar}, {@link #COLOR_FormatYUV420SemiPlanar} and {@link #COLOR_FormatYUV420PackedSemiPlanar} formats. @see Image#getFormat */ COLOR_FormatYUV420Flexible : "2135033992", /** Flexible 16 bits per pixel, subsampled YUV color format with 8-bit chroma and luma components. <p> Chroma planes are horizontally subsampled by 2. Use this format with {@link android.media.Image}. This format corresponds to {@link android.graphics.ImageFormat#YUV_422_888}, and can represent the {@link #COLOR_FormatYCbYCr}, {@link #COLOR_FormatYCrYCb}, {@link #COLOR_FormatCbYCrY}, {@link #COLOR_FormatCrYCbY}, {@link #COLOR_FormatYUV422Planar}, {@link #COLOR_FormatYUV422PackedPlanar}, {@link #COLOR_FormatYUV422SemiPlanar} and {@link #COLOR_FormatYUV422PackedSemiPlanar} formats. @see Image#getFormat */ COLOR_FormatYUV422Flexible : "2135042184", /** Flexible 24 bits per pixel YUV color format with 8-bit chroma and luma components. <p> Chroma planes are not subsampled. Use this format with {@link android.media.Image}. This format corresponds to {@link android.graphics.ImageFormat#YUV_444_888}, and can represent the {@link #COLOR_FormatYUV444Interleaved} format. @see Image#getFormat */ COLOR_FormatYUV444Flexible : "2135181448", /** Flexible 24 bits per pixel RGB color format with 8-bit red, green and blue components. <p> Use this format with {@link android.media.Image}. This format corresponds to {@link android.graphics.ImageFormat#FLEX_RGB_888}, and can represent {@link #COLOR_Format24bitBGR888} and {@link #COLOR_Format24bitRGB888} formats. @see Image#getFormat() */ COLOR_FormatRGBFlexible : "2134292616", /** Flexible 32 bits per pixel RGBA color format with 8-bit red, green, blue, and alpha components. <p> Use this format with {@link android.media.Image}. This format corresponds to {@link android.graphics.ImageFormat#FLEX_RGBA_8888}, and can represent {@link #COLOR_Format32bitBGRA8888}, {@link #COLOR_Format32bitABGR8888} and {@link #COLOR_Format32bitARGB8888} formats. @see Image#getFormat() */ COLOR_FormatRGBAFlexible : "2134288520", /**@deprecated Use {@link #COLOR_FormatYUV420Flexible}. */ COLOR_QCOM_FormatYUV420SemiPlanar : "2141391872", /** The color format for the media. This is one of the color constants defined in this class. */ colorFormats : "null", /** <b>video decoder only</b>: codec supports seamless resolution changes. */ FEATURE_AdaptivePlayback : "adaptive-playback", /** <b>video decoder only</b>: codec supports secure decryption. */ FEATURE_SecurePlayback : "secure-playback", /** <b>video or audio decoder only</b>: codec supports tunneled playback. */ FEATURE_TunneledPlayback : "tunneled-playback", /** If true, the timestamp of each output buffer is derived from the timestamp of the input buffer that produced the output. If false, the timestamp of each output buffer is derived from the timestamp of the first input buffer. */ FEATURE_DynamicTimestamp : "dynamic-timestamp", /** <b>decoder only</b>If true, the codec supports partial (including multiple) access units per input buffer. */ FEATURE_FrameParsing : "frame-parsing", /** If true, the codec supports multiple access units (for decoding, or to output for encoders). If false, the codec only supports single access units. Producing multiple access units for output is an optional feature. */ FEATURE_MultipleFrames : "multiple-frames", /** <b>video decoder only</b>: codec supports queuing partial frames. */ FEATURE_PartialFrame : "partial-frame", /** <b>video encoder only</b>: codec supports intra refresh. */ FEATURE_IntraRefresh : "intra-refresh", /**Query codec feature capabilities. <p> These features are supported to be used by the codec. These include optional features that can be turned on, as well as features that are always on. */ isFeatureSupported : function( ) {}, /**Query codec feature requirements. <p> These features are required to be used by the codec, and as such, they are always turned on. */ isFeatureRequired : function( ) {}, /** @hide */ validFeatures : function( ) {}, /** @hide */ isRegular : function( ) {}, /**Query whether codec supports a given {@link android.media.MediaFormat}. <p class=note> <strong>Note:</strong> On {@link android.os.Build.VERSION_CODES#LOLLIPOP}, {@code format} must not contain a {@linkplain android.media.MediaFormat#KEY_FRAME_RATE frame rate}. Use <code class=prettyprint>format.setString(MediaFormat.KEY_FRAME_RATE, null)</code> to clear any existing frame rate setting in the format. <p> The following table summarizes the format keys considered by this method. <table style="width: 0%"> <thead> <tr> <th rowspan=3>OS Version(s)</th> <td colspan=3>{@code MediaFormat} keys considered for</th> </tr><tr> <th>Audio Codecs</th> <th>Video Codecs</th> <th>Encoders</th> </tr> </thead> <tbody> <tr> <td>{@link android.os.Build.VERSION_CODES#LOLLIPOP}</th> <td rowspan=3>{@link android.media.MediaFormat#KEY_MIME}<sup>*</sup>,<br> {@link android.media.MediaFormat#KEY_SAMPLE_RATE},<br> {@link android.media.MediaFormat#KEY_CHANNEL_COUNT},</td> <td>{@link android.media.MediaFormat#KEY_MIME}<sup>*</sup>,<br> {@link android.media.MediaCodecInfo.CodecCapabilities#FEATURE_AdaptivePlayback}<sup>D</sup>,<br> {@link android.media.MediaCodecInfo.CodecCapabilities#FEATURE_SecurePlayback}<sup>D</sup>,<br> {@link android.media.MediaCodecInfo.CodecCapabilities#FEATURE_TunneledPlayback}<sup>D</sup>,<br> {@link android.media.MediaFormat#KEY_WIDTH},<br> {@link android.media.MediaFormat#KEY_HEIGHT},<br> <strong>no</strong> {@code KEY_FRAME_RATE}</td> <td rowspan=4>{@link android.media.MediaFormat#KEY_BITRATE_MODE},<br> {@link android.media.MediaFormat#KEY_PROFILE} (and/or {@link android.media.MediaFormat#KEY_AAC_PROFILE}<sup>~</sup>),<br> <!-- {link MediaFormat#KEY_QUALITY},<br> --> {@link android.media.MediaFormat#KEY_COMPLEXITY} (and/or {@link android.media.MediaFormat#KEY_FLAC_COMPRESSION_LEVEL}<sup>~</sup>)</td> </tr><tr> <td>{@link android.os.Build.VERSION_CODES#LOLLIPOP_MR1}</th> <td rowspan=2>as above, plus<br> {@link android.media.MediaFormat#KEY_FRAME_RATE}</td> </tr><tr> <td>{@link android.os.Build.VERSION_CODES#M}</th> </tr><tr> <td>{@link android.os.Build.VERSION_CODES#N}</th> <td>as above, plus<br> {@link android.media.MediaFormat#KEY_PROFILE},<br> <!-- {link MediaFormat#KEY_MAX_BIT_RATE},<br> --> {@link android.media.MediaFormat#KEY_BIT_RATE}</td> <td>as above, plus<br> {@link android.media.MediaFormat#KEY_PROFILE},<br> {@link android.media.MediaFormat#KEY_LEVEL}<sup>+</sup>,<br> <!-- {link MediaFormat#KEY_MAX_BIT_RATE},<br> --> {@link android.media.MediaFormat#KEY_BIT_RATE},<br> {@link android.media.MediaCodecInfo.CodecCapabilities#FEATURE_IntraRefresh}<sup>E</sup></td> </tr> <tr> <td colspan=4> <p class=note><strong>Notes:</strong><br> *: must be specified; otherwise, method returns {@code false}.<br> +: method does not verify that the format parameters are supported by the specified level.<br> D: decoders only<br> E: encoders only<br> ~: if both keys are provided values must match </td> </tr> </tbody> </table> @param {Object {MediaFormat}} format media format with optional feature directives. @throws IllegalArgumentException if format is not a valid media format. @return {Boolean} whether the codec capabilities support the given format and feature requests. */ isFormatSupported : function( ) {}, /**Returns a MediaFormat object with default values for configurations that have defaults. */ getDefaultFormat : function( ) {}, /**Returns the mime type for which this codec-capability object was created. */ getMimeType : function( ) {}, /**Returns the max number of the supported concurrent codec instances. <p> This is a hint for an upper bound. Applications should not expect to successfully operate more instances than the returned value, but the actual number of concurrently operable instances may be less as it depends on the available resources at time of use. */ getMaxSupportedInstances : function( ) {}, /**Returns the audio capabilities or {@code null} if this is not an audio codec. */ getAudioCapabilities : function( ) {}, /**Returns the encoding capabilities or {@code null} if this is not an encoder. */ getEncoderCapabilities : function( ) {}, /**Returns the video capabilities or {@code null} if this is not a video codec. */ getVideoCapabilities : function( ) {}, /** @hide */ dup : function( ) {}, /**Retrieve the codec capabilities for a certain {@code mime type}, {@code profile} and {@code level}. If the type, or profile-level combination is not understood by the framework, it returns null. <p class=note> In {@link android.os.Build.VERSION_CODES#M}, calling this method without calling any method of the {@link android.media.MediaCodecList} class beforehand results in a {@link NullPointerException}.</p> */ createFromProfileLevel : function( ) {}, };