Loading media/java/android/media/MediaCodec.java +18 −0 Original line number Diff line number Diff line Loading @@ -262,6 +262,16 @@ final public class MediaCodec { String[] keys, Object[] values, Surface surface, MediaCrypto crypto, int flags); /** * Requests a Surface to use instead of input buffers. This may only be called after * {@link #configure} and before {@link #start}. * <p> * The application is responsible for calling release() on the Surface when * done. * @hide -- TODO(fadden): make this public before release */ public native final Surface createInputSurface(); /** * After successfully configuring the component, call start. On return * you can query the component for its input/output buffers. Loading Loading @@ -457,6 +467,14 @@ final public class MediaCodec { */ public native final void releaseOutputBuffer(int index, boolean render); /** * Signals end-of-stream on input. Equivalent to submitting an empty buffer with * {@link #BUFFER_FLAG_END_OF_STREAM} set. This may only be used with * encoders receiving input from a Surface created by {@link #createInputSurface}. * @hide -- TODO(fadden): make this public before release */ public native final void signalEndOfInputStream(); /** * Call this after dequeueOutputBuffer signals a format change by returning * {@link #INFO_OUTPUT_FORMAT_CHANGED} Loading media/java/android/media/MediaCodecInfo.java +2 −0 Original line number Diff line number Diff line Loading @@ -93,6 +93,8 @@ public final class MediaCodecInfo { public final static int COLOR_Format24BitABGR6666 = 43; public final static int COLOR_TI_FormatYUV420PackedSemiPlanar = 0x7f000100; /** @hide -- TODO(fadden): make this public before release */ public final static int COLOR_FormatAndroidOpaque = 0x7F000789; public final static int COLOR_QCOM_FormatYUV420SemiPlanar = 0x7fa30c00; /** Loading media/jni/android_media_MediaCodec.cpp +53 −0 Original line number Diff line number Diff line Loading @@ -123,6 +123,11 @@ status_t JMediaCodec::configure( return mCodec->configure(format, mSurfaceTextureClient, crypto, flags); } status_t JMediaCodec::createInputSurface( sp<IGraphicBufferProducer>* bufferProducer) { return mCodec->createInputSurface(bufferProducer); } status_t JMediaCodec::start() { return mCodec->start(); } Loading Loading @@ -190,6 +195,10 @@ status_t JMediaCodec::releaseOutputBuffer(size_t index, bool render) { : mCodec->releaseOutputBuffer(index); } status_t JMediaCodec::signalEndOfInputStream() { return mCodec->signalEndOfInputStream(); } status_t JMediaCodec::getOutputFormat(JNIEnv *env, jobject *format) const { sp<AMessage> msg; status_t err; Loading Loading @@ -417,6 +426,29 @@ static void android_media_MediaCodec_native_configure( throwExceptionAsNecessary(env, err); } static jobject android_media_MediaCodec_createInputSurface(JNIEnv* env, jobject thiz) { ALOGV("android_media_MediaCodec_createInputSurface"); sp<JMediaCodec> codec = getMediaCodec(env, thiz); if (codec == NULL) { jniThrowException(env, "java/lang/IllegalStateException", NULL); return NULL; } // Tell the MediaCodec that we want to use a Surface as input. sp<IGraphicBufferProducer> bufferProducer; status_t err = codec->createInputSurface(&bufferProducer); if (err != NO_ERROR) { throwExceptionAsNecessary(env, err); return NULL; } // Wrap the IGBP in a Java-language Surface. return android_view_Surface_createFromIGraphicBufferProducer(env, bufferProducer); } static void android_media_MediaCodec_start(JNIEnv *env, jobject thiz) { ALOGV("android_media_MediaCodec_start"); Loading Loading @@ -685,6 +717,21 @@ static void android_media_MediaCodec_releaseOutputBuffer( throwExceptionAsNecessary(env, err); } static void android_media_MediaCodec_signalEndOfInputStream(JNIEnv* env, jobject thiz) { ALOGV("android_media_MediaCodec_signalEndOfInputStream"); sp<JMediaCodec> codec = getMediaCodec(env, thiz); if (codec == NULL) { jniThrowException(env, "java/lang/IllegalStateException", NULL); return; } status_t err = codec->signalEndOfInputStream(); throwExceptionAsNecessary(env, err); } static jobject android_media_MediaCodec_getOutputFormatNative( JNIEnv *env, jobject thiz) { ALOGV("android_media_MediaCodec_getOutputFormatNative"); Loading Loading @@ -852,6 +899,9 @@ static JNINativeMethod gMethods[] = { "Landroid/media/MediaCrypto;I)V", (void *)android_media_MediaCodec_native_configure }, { "createInputSurface", "()Landroid/view/Surface;", (void *)android_media_MediaCodec_createInputSurface }, { "start", "()V", (void *)android_media_MediaCodec_start }, { "stop", "()V", (void *)android_media_MediaCodec_stop }, { "flush", "()V", (void *)android_media_MediaCodec_flush }, Loading @@ -871,6 +921,9 @@ static JNINativeMethod gMethods[] = { { "releaseOutputBuffer", "(IZ)V", (void *)android_media_MediaCodec_releaseOutputBuffer }, { "signalEndOfInputStream", "()V", (void *)android_media_MediaCodec_signalEndOfInputStream }, { "getOutputFormatNative", "()Ljava/util/Map;", (void *)android_media_MediaCodec_getOutputFormatNative }, Loading media/jni/android_media_MediaCodec.h +4 −0 Original line number Diff line number Diff line Loading @@ -47,6 +47,8 @@ struct JMediaCodec : public RefBase { const sp<ICrypto> &crypto, int flags); status_t createInputSurface(sp<IGraphicBufferProducer>* bufferProducer); status_t start(); status_t stop(); Loading Loading @@ -76,6 +78,8 @@ struct JMediaCodec : public RefBase { status_t releaseOutputBuffer(size_t index, bool render); status_t signalEndOfInputStream(); status_t getOutputFormat(JNIEnv *env, jobject *format) const; status_t getBuffers( Loading Loading
media/java/android/media/MediaCodec.java +18 −0 Original line number Diff line number Diff line Loading @@ -262,6 +262,16 @@ final public class MediaCodec { String[] keys, Object[] values, Surface surface, MediaCrypto crypto, int flags); /** * Requests a Surface to use instead of input buffers. This may only be called after * {@link #configure} and before {@link #start}. * <p> * The application is responsible for calling release() on the Surface when * done. * @hide -- TODO(fadden): make this public before release */ public native final Surface createInputSurface(); /** * After successfully configuring the component, call start. On return * you can query the component for its input/output buffers. Loading Loading @@ -457,6 +467,14 @@ final public class MediaCodec { */ public native final void releaseOutputBuffer(int index, boolean render); /** * Signals end-of-stream on input. Equivalent to submitting an empty buffer with * {@link #BUFFER_FLAG_END_OF_STREAM} set. This may only be used with * encoders receiving input from a Surface created by {@link #createInputSurface}. * @hide -- TODO(fadden): make this public before release */ public native final void signalEndOfInputStream(); /** * Call this after dequeueOutputBuffer signals a format change by returning * {@link #INFO_OUTPUT_FORMAT_CHANGED} Loading
media/java/android/media/MediaCodecInfo.java +2 −0 Original line number Diff line number Diff line Loading @@ -93,6 +93,8 @@ public final class MediaCodecInfo { public final static int COLOR_Format24BitABGR6666 = 43; public final static int COLOR_TI_FormatYUV420PackedSemiPlanar = 0x7f000100; /** @hide -- TODO(fadden): make this public before release */ public final static int COLOR_FormatAndroidOpaque = 0x7F000789; public final static int COLOR_QCOM_FormatYUV420SemiPlanar = 0x7fa30c00; /** Loading
media/jni/android_media_MediaCodec.cpp +53 −0 Original line number Diff line number Diff line Loading @@ -123,6 +123,11 @@ status_t JMediaCodec::configure( return mCodec->configure(format, mSurfaceTextureClient, crypto, flags); } status_t JMediaCodec::createInputSurface( sp<IGraphicBufferProducer>* bufferProducer) { return mCodec->createInputSurface(bufferProducer); } status_t JMediaCodec::start() { return mCodec->start(); } Loading Loading @@ -190,6 +195,10 @@ status_t JMediaCodec::releaseOutputBuffer(size_t index, bool render) { : mCodec->releaseOutputBuffer(index); } status_t JMediaCodec::signalEndOfInputStream() { return mCodec->signalEndOfInputStream(); } status_t JMediaCodec::getOutputFormat(JNIEnv *env, jobject *format) const { sp<AMessage> msg; status_t err; Loading Loading @@ -417,6 +426,29 @@ static void android_media_MediaCodec_native_configure( throwExceptionAsNecessary(env, err); } static jobject android_media_MediaCodec_createInputSurface(JNIEnv* env, jobject thiz) { ALOGV("android_media_MediaCodec_createInputSurface"); sp<JMediaCodec> codec = getMediaCodec(env, thiz); if (codec == NULL) { jniThrowException(env, "java/lang/IllegalStateException", NULL); return NULL; } // Tell the MediaCodec that we want to use a Surface as input. sp<IGraphicBufferProducer> bufferProducer; status_t err = codec->createInputSurface(&bufferProducer); if (err != NO_ERROR) { throwExceptionAsNecessary(env, err); return NULL; } // Wrap the IGBP in a Java-language Surface. return android_view_Surface_createFromIGraphicBufferProducer(env, bufferProducer); } static void android_media_MediaCodec_start(JNIEnv *env, jobject thiz) { ALOGV("android_media_MediaCodec_start"); Loading Loading @@ -685,6 +717,21 @@ static void android_media_MediaCodec_releaseOutputBuffer( throwExceptionAsNecessary(env, err); } static void android_media_MediaCodec_signalEndOfInputStream(JNIEnv* env, jobject thiz) { ALOGV("android_media_MediaCodec_signalEndOfInputStream"); sp<JMediaCodec> codec = getMediaCodec(env, thiz); if (codec == NULL) { jniThrowException(env, "java/lang/IllegalStateException", NULL); return; } status_t err = codec->signalEndOfInputStream(); throwExceptionAsNecessary(env, err); } static jobject android_media_MediaCodec_getOutputFormatNative( JNIEnv *env, jobject thiz) { ALOGV("android_media_MediaCodec_getOutputFormatNative"); Loading Loading @@ -852,6 +899,9 @@ static JNINativeMethod gMethods[] = { "Landroid/media/MediaCrypto;I)V", (void *)android_media_MediaCodec_native_configure }, { "createInputSurface", "()Landroid/view/Surface;", (void *)android_media_MediaCodec_createInputSurface }, { "start", "()V", (void *)android_media_MediaCodec_start }, { "stop", "()V", (void *)android_media_MediaCodec_stop }, { "flush", "()V", (void *)android_media_MediaCodec_flush }, Loading @@ -871,6 +921,9 @@ static JNINativeMethod gMethods[] = { { "releaseOutputBuffer", "(IZ)V", (void *)android_media_MediaCodec_releaseOutputBuffer }, { "signalEndOfInputStream", "()V", (void *)android_media_MediaCodec_signalEndOfInputStream }, { "getOutputFormatNative", "()Ljava/util/Map;", (void *)android_media_MediaCodec_getOutputFormatNative }, Loading
media/jni/android_media_MediaCodec.h +4 −0 Original line number Diff line number Diff line Loading @@ -47,6 +47,8 @@ struct JMediaCodec : public RefBase { const sp<ICrypto> &crypto, int flags); status_t createInputSurface(sp<IGraphicBufferProducer>* bufferProducer); status_t start(); status_t stop(); Loading Loading @@ -76,6 +78,8 @@ struct JMediaCodec : public RefBase { status_t releaseOutputBuffer(size_t index, bool render); status_t signalEndOfInputStream(); status_t getOutputFormat(JNIEnv *env, jobject *format) const; status_t getBuffers( Loading