Loading api/current.txt +50 −0 Original line number Diff line number Diff line Loading @@ -24146,6 +24146,7 @@ package android.media { method public int dequeueOutputBuffer(android.media.MediaCodec.BufferInfo, long); method protected void finalize(); method public void flush(); method public java.lang.String getCanonicalName(); method public android.media.MediaCodecInfo getCodecInfo(); method public java.nio.ByteBuffer getInputBuffer(int); method public deprecated java.nio.ByteBuffer[] getInputBuffers(); Loading Loading @@ -24272,10 +24273,15 @@ package android.media { } public final class MediaCodecInfo { method public java.lang.String getCanonicalName(); method public android.media.MediaCodecInfo.CodecCapabilities getCapabilitiesForType(java.lang.String); method public java.lang.String getName(); method public java.lang.String[] getSupportedTypes(); method public boolean isAlias(); method public boolean isEncoder(); method public boolean isHardwareAccelerated(); method public boolean isSoftwareOnly(); method public boolean isVendor(); } public static final class MediaCodecInfo.AudioCapabilities { Loading Loading @@ -24351,7 +24357,10 @@ package android.media { field public static final deprecated int COLOR_QCOM_FormatYUV420SemiPlanar = 2141391872; // 0x7fa30c00 field public static final deprecated int COLOR_TI_FormatYUV420PackedSemiPlanar = 2130706688; // 0x7f000100 field public static final java.lang.String FEATURE_AdaptivePlayback = "adaptive-playback"; field public static final java.lang.String FEATURE_DynamicTimestamp = "dynamic-timestamp"; field public static final java.lang.String FEATURE_FrameParsing = "frame-parsing"; field public static final java.lang.String FEATURE_IntraRefresh = "intra-refresh"; field public static final java.lang.String FEATURE_MultipleFrames = "multiple-frames"; field public static final java.lang.String FEATURE_PartialFrame = "partial-frame"; field public static final java.lang.String FEATURE_SecurePlayback = "secure-playback"; field public static final java.lang.String FEATURE_TunneledPlayback = "tunneled-playback"; Loading Loading @@ -24582,12 +24591,53 @@ package android.media { method public android.util.Range<java.lang.Double> getSupportedFrameRatesFor(int, int); method public android.util.Range<java.lang.Integer> getSupportedHeights(); method public android.util.Range<java.lang.Integer> getSupportedHeightsFor(int); method public java.util.List<android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint> getSupportedPerformancePoints(); method public android.util.Range<java.lang.Integer> getSupportedWidths(); method public android.util.Range<java.lang.Integer> getSupportedWidthsFor(int); method public int getWidthAlignment(); method public boolean isSizeSupported(int, int); } public static final class MediaCodecInfo.VideoCapabilities.PerformancePoint { method public boolean covers(android.media.MediaFormat); field public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint FHD_100; field public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint FHD_120; field public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint FHD_200; field public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint FHD_24; field public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint FHD_240; field public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint FHD_25; field public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint FHD_30; field public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint FHD_50; field public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint FHD_60; field public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint HD_100; field public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint HD_120; field public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint HD_200; field public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint HD_24; field public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint HD_240; field public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint HD_25; field public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint HD_30; field public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint HD_50; field public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint HD_60; field public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint SD_24; field public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint SD_25; field public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint SD_30; field public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint SD_48; field public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint SD_50; field public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint SD_60; field public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint UHD_100; field public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint UHD_120; field public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint UHD_200; field public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint UHD_24; field public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint UHD_240; field public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint UHD_25; field public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint UHD_30; field public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint UHD_50; field public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint UHD_60; field public final int frameRate; field public final int height; field public final int width; } public final class MediaCodecList { ctor public MediaCodecList(int); method public java.lang.String findDecoderForFormat(android.media.MediaFormat); media/java/android/media/MediaCodec.java +32 −3 Original line number Diff line number Diff line Loading @@ -1829,9 +1829,14 @@ final public class MediaCodec { mBufferLock = new Object(); // save name used at creation mNameAtCreation = nameIsType ? null : name; native_setup(name, nameIsType, encoder); } private String mNameAtCreation; @Override protected void finalize() { native_finalize(); Loading Loading @@ -3317,12 +3322,36 @@ final public class MediaCodec { private native void native_setAudioPresentation(int presentationId, int programId); /** * Get the component name. If the codec was created by createDecoderByType * or createEncoderByType, what component is chosen is not known beforehand. * Retrieve the codec name. * * If the codec was created by createDecoderByType or createEncoderByType, what component is * chosen is not known beforehand. This method returns the name of the codec that was * selected by the platform. * * <strong>Note:</strong> Implementations may provide multiple aliases (codec * names) for the same underlying codec, any of which can be used to instantiate the same * underlying codec in {@link MediaCodec#createByCodecName}. This method returns the * name used to create the codec in this case. * * @throws IllegalStateException if in the Released state. */ @NonNull public final String getName() { // get canonical name to handle exception String canonicalName = getCanonicalName(); return mNameAtCreation != null ? mNameAtCreation : canonicalName; } /** * Retrieve the underlying codec name. * * This method is similar to {@link #getName}, except that it returns the underlying component * name even if an alias was used to create this MediaCodec object by name, * * @throws IllegalStateException if in the Released state. */ @NonNull public native final String getName(); public native final String getCanonicalName(); /** * Return Metrics data about the current codec instance. Loading media/java/android/media/MediaCodecInfo.java +298 −10 File changed.Preview size limit exceeded, changes collapsed. Show changes media/java/android/media/MediaCodecList.java +4 −2 Original line number Diff line number Diff line Loading @@ -111,12 +111,14 @@ final public class MediaCodecList { caps[typeIx++] = getCodecCapabilities(index, type); } return new MediaCodecInfo( getCodecName(index), isEncoder(index), caps); getCodecName(index), getCanonicalName(index), getAttributes(index), caps); } /* package private */ static native final String getCodecName(int index); /* package private */ static native final boolean isEncoder(int index); /* package private */ static native final String getCanonicalName(int index); /* package private */ static native final int getAttributes(int index); /* package private */ static native final String[] getSupportedTypes(int index); Loading media/jni/android_media_MediaCodec.cpp +15 −11 Original line number Diff line number Diff line Loading @@ -648,7 +648,6 @@ static jobject getCodecCapabilitiesObject( capabilities->getSupportedColorFormats(&colorFormats); capabilities->getSupportedProfileLevels(&profileLevels); uint32_t flags = capabilities->getFlags(); sp<AMessage> details = capabilities->getDetails(); jobject defaultFormatObj = NULL; Loading Loading @@ -687,7 +686,7 @@ static jobject getCodecCapabilitiesObject( return env->NewObject( gCodecInfo.capsClazz, gCodecInfo.capsCtorId, profileLevelArray.get(), colorFormatsArray.get(), isEncoder, flags, profileLevelArray.get(), colorFormatsArray.get(), isEncoder, defaultFormatRef.get(), detailsRef.get()); } Loading @@ -700,23 +699,28 @@ status_t JMediaCodec::getCodecInfo(JNIEnv *env, jobject *codecInfoObject) const return err; } // TODO: get alias ScopedLocalRef<jstring> nameObject(env, env->NewStringUTF(codecInfo->getCodecName())); ScopedLocalRef<jstring> canonicalNameObject(env, env->NewStringUTF(codecInfo->getCodecName())); MediaCodecInfo::Attributes attributes = codecInfo->getAttributes(); bool isEncoder = codecInfo->isEncoder(); Vector<AString> mimes; codecInfo->getSupportedMimes(&mimes); Vector<AString> mediaTypes; codecInfo->getSupportedMediaTypes(&mediaTypes); ScopedLocalRef<jobjectArray> capsArrayObj(env, env->NewObjectArray(mimes.size(), gCodecInfo.capsClazz, NULL)); env->NewObjectArray(mediaTypes.size(), gCodecInfo.capsClazz, NULL)); for (size_t i = 0; i < mimes.size(); i++) { for (size_t i = 0; i < mediaTypes.size(); i++) { const sp<MediaCodecInfo::Capabilities> caps = codecInfo->getCapabilitiesFor(mimes[i].c_str()); codecInfo->getCapabilitiesFor(mediaTypes[i].c_str()); ScopedLocalRef<jobject> capsObj(env, getCodecCapabilitiesObject( env, mimes[i].c_str(), isEncoder, caps)); env, mediaTypes[i].c_str(), isEncoder, caps)); env->SetObjectArrayElement(capsArrayObj.get(), i, capsObj.get()); } Loading @@ -729,7 +733,7 @@ status_t JMediaCodec::getCodecInfo(JNIEnv *env, jobject *codecInfoObject) const "(Ljava/lang/String;Z[Landroid/media/MediaCodecInfo$CodecCapabilities;)V"); *codecInfoObject = env->NewObject(codecInfoClazz.get(), codecInfoCtorID, nameObject.get(), isEncoder, capsArrayObj.get()); nameObject.get(), canonicalNameObject.get(), attributes, capsArrayObj.get()); return OK; } Loading Loading @@ -2079,7 +2083,7 @@ static void android_media_MediaCodec_native_init(JNIEnv *env) { gCodecInfo.capsClazz = (jclass)env->NewGlobalRef(clazz.get()); method = env->GetMethodID(clazz.get(), "<init>", "([Landroid/media/MediaCodecInfo$CodecProfileLevel;[IZI" "([Landroid/media/MediaCodecInfo$CodecProfileLevel;[IZ" "Ljava/util/Map;Ljava/util/Map;)V"); CHECK(method != NULL); gCodecInfo.capsCtorId = method; Loading Loading @@ -2217,7 +2221,7 @@ static const JNINativeMethod gMethods[] = { { "getImage", "(ZI)Landroid/media/Image;", (void *)android_media_MediaCodec_getImage }, { "getName", "()Ljava/lang/String;", { "getCanonicalName", "()Ljava/lang/String;", (void *)android_media_MediaCodec_getName }, { "getOwnCodecInfo", "()Landroid/media/MediaCodecInfo;", Loading Loading
api/current.txt +50 −0 Original line number Diff line number Diff line Loading @@ -24146,6 +24146,7 @@ package android.media { method public int dequeueOutputBuffer(android.media.MediaCodec.BufferInfo, long); method protected void finalize(); method public void flush(); method public java.lang.String getCanonicalName(); method public android.media.MediaCodecInfo getCodecInfo(); method public java.nio.ByteBuffer getInputBuffer(int); method public deprecated java.nio.ByteBuffer[] getInputBuffers(); Loading Loading @@ -24272,10 +24273,15 @@ package android.media { } public final class MediaCodecInfo { method public java.lang.String getCanonicalName(); method public android.media.MediaCodecInfo.CodecCapabilities getCapabilitiesForType(java.lang.String); method public java.lang.String getName(); method public java.lang.String[] getSupportedTypes(); method public boolean isAlias(); method public boolean isEncoder(); method public boolean isHardwareAccelerated(); method public boolean isSoftwareOnly(); method public boolean isVendor(); } public static final class MediaCodecInfo.AudioCapabilities { Loading Loading @@ -24351,7 +24357,10 @@ package android.media { field public static final deprecated int COLOR_QCOM_FormatYUV420SemiPlanar = 2141391872; // 0x7fa30c00 field public static final deprecated int COLOR_TI_FormatYUV420PackedSemiPlanar = 2130706688; // 0x7f000100 field public static final java.lang.String FEATURE_AdaptivePlayback = "adaptive-playback"; field public static final java.lang.String FEATURE_DynamicTimestamp = "dynamic-timestamp"; field public static final java.lang.String FEATURE_FrameParsing = "frame-parsing"; field public static final java.lang.String FEATURE_IntraRefresh = "intra-refresh"; field public static final java.lang.String FEATURE_MultipleFrames = "multiple-frames"; field public static final java.lang.String FEATURE_PartialFrame = "partial-frame"; field public static final java.lang.String FEATURE_SecurePlayback = "secure-playback"; field public static final java.lang.String FEATURE_TunneledPlayback = "tunneled-playback"; Loading Loading @@ -24582,12 +24591,53 @@ package android.media { method public android.util.Range<java.lang.Double> getSupportedFrameRatesFor(int, int); method public android.util.Range<java.lang.Integer> getSupportedHeights(); method public android.util.Range<java.lang.Integer> getSupportedHeightsFor(int); method public java.util.List<android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint> getSupportedPerformancePoints(); method public android.util.Range<java.lang.Integer> getSupportedWidths(); method public android.util.Range<java.lang.Integer> getSupportedWidthsFor(int); method public int getWidthAlignment(); method public boolean isSizeSupported(int, int); } public static final class MediaCodecInfo.VideoCapabilities.PerformancePoint { method public boolean covers(android.media.MediaFormat); field public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint FHD_100; field public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint FHD_120; field public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint FHD_200; field public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint FHD_24; field public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint FHD_240; field public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint FHD_25; field public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint FHD_30; field public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint FHD_50; field public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint FHD_60; field public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint HD_100; field public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint HD_120; field public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint HD_200; field public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint HD_24; field public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint HD_240; field public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint HD_25; field public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint HD_30; field public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint HD_50; field public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint HD_60; field public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint SD_24; field public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint SD_25; field public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint SD_30; field public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint SD_48; field public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint SD_50; field public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint SD_60; field public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint UHD_100; field public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint UHD_120; field public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint UHD_200; field public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint UHD_24; field public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint UHD_240; field public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint UHD_25; field public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint UHD_30; field public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint UHD_50; field public static final android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint UHD_60; field public final int frameRate; field public final int height; field public final int width; } public final class MediaCodecList { ctor public MediaCodecList(int); method public java.lang.String findDecoderForFormat(android.media.MediaFormat);
media/java/android/media/MediaCodec.java +32 −3 Original line number Diff line number Diff line Loading @@ -1829,9 +1829,14 @@ final public class MediaCodec { mBufferLock = new Object(); // save name used at creation mNameAtCreation = nameIsType ? null : name; native_setup(name, nameIsType, encoder); } private String mNameAtCreation; @Override protected void finalize() { native_finalize(); Loading Loading @@ -3317,12 +3322,36 @@ final public class MediaCodec { private native void native_setAudioPresentation(int presentationId, int programId); /** * Get the component name. If the codec was created by createDecoderByType * or createEncoderByType, what component is chosen is not known beforehand. * Retrieve the codec name. * * If the codec was created by createDecoderByType or createEncoderByType, what component is * chosen is not known beforehand. This method returns the name of the codec that was * selected by the platform. * * <strong>Note:</strong> Implementations may provide multiple aliases (codec * names) for the same underlying codec, any of which can be used to instantiate the same * underlying codec in {@link MediaCodec#createByCodecName}. This method returns the * name used to create the codec in this case. * * @throws IllegalStateException if in the Released state. */ @NonNull public final String getName() { // get canonical name to handle exception String canonicalName = getCanonicalName(); return mNameAtCreation != null ? mNameAtCreation : canonicalName; } /** * Retrieve the underlying codec name. * * This method is similar to {@link #getName}, except that it returns the underlying component * name even if an alias was used to create this MediaCodec object by name, * * @throws IllegalStateException if in the Released state. */ @NonNull public native final String getName(); public native final String getCanonicalName(); /** * Return Metrics data about the current codec instance. Loading
media/java/android/media/MediaCodecInfo.java +298 −10 File changed.Preview size limit exceeded, changes collapsed. Show changes
media/java/android/media/MediaCodecList.java +4 −2 Original line number Diff line number Diff line Loading @@ -111,12 +111,14 @@ final public class MediaCodecList { caps[typeIx++] = getCodecCapabilities(index, type); } return new MediaCodecInfo( getCodecName(index), isEncoder(index), caps); getCodecName(index), getCanonicalName(index), getAttributes(index), caps); } /* package private */ static native final String getCodecName(int index); /* package private */ static native final boolean isEncoder(int index); /* package private */ static native final String getCanonicalName(int index); /* package private */ static native final int getAttributes(int index); /* package private */ static native final String[] getSupportedTypes(int index); Loading
media/jni/android_media_MediaCodec.cpp +15 −11 Original line number Diff line number Diff line Loading @@ -648,7 +648,6 @@ static jobject getCodecCapabilitiesObject( capabilities->getSupportedColorFormats(&colorFormats); capabilities->getSupportedProfileLevels(&profileLevels); uint32_t flags = capabilities->getFlags(); sp<AMessage> details = capabilities->getDetails(); jobject defaultFormatObj = NULL; Loading Loading @@ -687,7 +686,7 @@ static jobject getCodecCapabilitiesObject( return env->NewObject( gCodecInfo.capsClazz, gCodecInfo.capsCtorId, profileLevelArray.get(), colorFormatsArray.get(), isEncoder, flags, profileLevelArray.get(), colorFormatsArray.get(), isEncoder, defaultFormatRef.get(), detailsRef.get()); } Loading @@ -700,23 +699,28 @@ status_t JMediaCodec::getCodecInfo(JNIEnv *env, jobject *codecInfoObject) const return err; } // TODO: get alias ScopedLocalRef<jstring> nameObject(env, env->NewStringUTF(codecInfo->getCodecName())); ScopedLocalRef<jstring> canonicalNameObject(env, env->NewStringUTF(codecInfo->getCodecName())); MediaCodecInfo::Attributes attributes = codecInfo->getAttributes(); bool isEncoder = codecInfo->isEncoder(); Vector<AString> mimes; codecInfo->getSupportedMimes(&mimes); Vector<AString> mediaTypes; codecInfo->getSupportedMediaTypes(&mediaTypes); ScopedLocalRef<jobjectArray> capsArrayObj(env, env->NewObjectArray(mimes.size(), gCodecInfo.capsClazz, NULL)); env->NewObjectArray(mediaTypes.size(), gCodecInfo.capsClazz, NULL)); for (size_t i = 0; i < mimes.size(); i++) { for (size_t i = 0; i < mediaTypes.size(); i++) { const sp<MediaCodecInfo::Capabilities> caps = codecInfo->getCapabilitiesFor(mimes[i].c_str()); codecInfo->getCapabilitiesFor(mediaTypes[i].c_str()); ScopedLocalRef<jobject> capsObj(env, getCodecCapabilitiesObject( env, mimes[i].c_str(), isEncoder, caps)); env, mediaTypes[i].c_str(), isEncoder, caps)); env->SetObjectArrayElement(capsArrayObj.get(), i, capsObj.get()); } Loading @@ -729,7 +733,7 @@ status_t JMediaCodec::getCodecInfo(JNIEnv *env, jobject *codecInfoObject) const "(Ljava/lang/String;Z[Landroid/media/MediaCodecInfo$CodecCapabilities;)V"); *codecInfoObject = env->NewObject(codecInfoClazz.get(), codecInfoCtorID, nameObject.get(), isEncoder, capsArrayObj.get()); nameObject.get(), canonicalNameObject.get(), attributes, capsArrayObj.get()); return OK; } Loading Loading @@ -2079,7 +2083,7 @@ static void android_media_MediaCodec_native_init(JNIEnv *env) { gCodecInfo.capsClazz = (jclass)env->NewGlobalRef(clazz.get()); method = env->GetMethodID(clazz.get(), "<init>", "([Landroid/media/MediaCodecInfo$CodecProfileLevel;[IZI" "([Landroid/media/MediaCodecInfo$CodecProfileLevel;[IZ" "Ljava/util/Map;Ljava/util/Map;)V"); CHECK(method != NULL); gCodecInfo.capsCtorId = method; Loading Loading @@ -2217,7 +2221,7 @@ static const JNINativeMethod gMethods[] = { { "getImage", "(ZI)Landroid/media/Image;", (void *)android_media_MediaCodec_getImage }, { "getName", "()Ljava/lang/String;", { "getCanonicalName", "()Ljava/lang/String;", (void *)android_media_MediaCodec_getName }, { "getOwnCodecInfo", "()Landroid/media/MediaCodecInfo;", Loading