diff options
author | Ronghua Wu <ronghuawu@google.com> | 2015-04-15 17:10:31 -0700 |
---|---|---|
committer | Ronghua Wu <ronghuawu@google.com> | 2015-04-15 18:00:52 -0700 |
commit | 9e9ec943ce7620bbfcadc2f8986a80ac58003e47 (patch) | |
tree | 6910838dea604494e9b370e8544cab260f9825f8 /media/jni/android_media_MediaCodec.cpp | |
parent | ef532f8435d47e68a3b718c861463e429b261682 (diff) | |
download | frameworks_base-9e9ec943ce7620bbfcadc2f8986a80ac58003e47.zip frameworks_base-9e9ec943ce7620bbfcadc2f8986a80ac58003e47.tar.gz frameworks_base-9e9ec943ce7620bbfcadc2f8986a80ac58003e47.tar.bz2 |
media: add reason to CodecException ctor.
Bug: 19620911
Change-Id: I3e9d1824c438253e9a7c303478f3cb75d0bb5c75
Diffstat (limited to 'media/jni/android_media_MediaCodec.cpp')
-rw-r--r-- | media/jni/android_media_MediaCodec.cpp | 21 |
1 files changed, 19 insertions, 2 deletions
diff --git a/media/jni/android_media_MediaCodec.cpp b/media/jni/android_media_MediaCodec.cpp index 16758d0..5f586a9 100644 --- a/media/jni/android_media_MediaCodec.cpp +++ b/media/jni/android_media_MediaCodec.cpp @@ -70,6 +70,11 @@ static struct CodecActionCodes { jint codecActionRecoverable; } gCodecActionCodes; +static struct ExceptionReason { + jint reasonHardware; + jint reasonReclaimed; +} gExceptionReason; + struct fields_t { jfieldID context; jmethodID postEventFromNativeID; @@ -568,7 +573,7 @@ static jthrowable createCodecException( env, env->FindClass("android/media/MediaCodec$CodecException")); CHECK(clazz.get() != NULL); - const jmethodID ctor = env->GetMethodID(clazz.get(), "<init>", "(IILjava/lang/String;)V"); + const jmethodID ctor = env->GetMethodID(clazz.get(), "<init>", "(IILjava/lang/String;I)V"); CHECK(ctor != NULL); ScopedLocalRef<jstring> msgObj( @@ -587,7 +592,9 @@ static jthrowable createCodecException( break; } - return (jthrowable)env->NewObject(clazz.get(), ctor, err, actionCode, msgObj.get()); + // TODO: propagate reason from MediaCodec. + int reason = gExceptionReason.reasonHardware; + return (jthrowable)env->NewObject(clazz.get(), ctor, err, actionCode, msgObj.get(), reason); } void JMediaCodec::handleCallback(const sp<AMessage> &msg) { @@ -1454,6 +1461,16 @@ static void android_media_MediaCodec_native_init(JNIEnv *env) { CHECK(field != NULL); gCodecActionCodes.codecActionRecoverable = env->GetStaticIntField(clazz.get(), field); + + field = env->GetStaticFieldID(clazz.get(), "REASON_HARDWARE", "I"); + CHECK(field != NULL); + gExceptionReason.reasonHardware = + env->GetStaticIntField(clazz.get(), field); + + field = env->GetStaticFieldID(clazz.get(), "REASON_RECLAIMED", "I"); + CHECK(field != NULL); + gExceptionReason.reasonReclaimed = + env->GetStaticIntField(clazz.get(), field); } static void android_media_MediaCodec_native_setup( |