MediaCodec: check init status before operations
Fixes: 155666456
Test: atest CtsMediaV2TestCases:android.mediav2.cts.CodecUnitTest$TestApi
Change-Id: I78eab797f747af7ea83a297f0ea9d9bcf8022a39
diff --git a/media/jni/android_media_MediaCodec.cpp b/media/jni/android_media_MediaCodec.cpp
index 98e68b8..331477f 100644
--- a/media/jni/android_media_MediaCodec.cpp
+++ b/media/jni/android_media_MediaCodec.cpp
@@ -1233,7 +1233,7 @@
jboolean enabled) {
sp<JMediaCodec> codec = getMediaCodec(env, thiz);
- if (codec == NULL) {
+ if (codec == NULL || codec->initCheck() != OK) {
throwExceptionAsNecessary(env, INVALID_OPERATION);
return;
}
@@ -1249,7 +1249,7 @@
jobject cb) {
sp<JMediaCodec> codec = getMediaCodec(env, thiz);
- if (codec == NULL) {
+ if (codec == NULL || codec->initCheck() != OK) {
throwExceptionAsNecessary(env, INVALID_OPERATION);
return;
}
@@ -1269,7 +1269,7 @@
jint flags) {
sp<JMediaCodec> codec = getMediaCodec(env, thiz);
- if (codec == NULL) {
+ if (codec == NULL || codec->initCheck() != OK) {
throwExceptionAsNecessary(env, INVALID_OPERATION);
return;
}
@@ -1317,7 +1317,7 @@
jobject jsurface) {
sp<JMediaCodec> codec = getMediaCodec(env, thiz);
- if (codec == NULL) {
+ if (codec == NULL || codec->initCheck() != OK) {
throwExceptionAsNecessary(env, INVALID_OPERATION);
return;
}
@@ -1440,7 +1440,7 @@
ALOGV("android_media_MediaCodec_setInputSurface");
sp<JMediaCodec> codec = getMediaCodec(env, thiz);
- if (codec == NULL) {
+ if (codec == NULL || codec->initCheck() != OK) {
throwExceptionAsNecessary(env, INVALID_OPERATION);
return;
}
@@ -1464,7 +1464,7 @@
ALOGV("android_media_MediaCodec_createInputSurface");
sp<JMediaCodec> codec = getMediaCodec(env, thiz);
- if (codec == NULL) {
+ if (codec == NULL || codec->initCheck() != OK) {
throwExceptionAsNecessary(env, INVALID_OPERATION);
return NULL;
}
@@ -1487,7 +1487,7 @@
sp<JMediaCodec> codec = getMediaCodec(env, thiz);
- if (codec == NULL) {
+ if (codec == NULL || codec->initCheck() != OK) {
throwExceptionAsNecessary(env, INVALID_OPERATION);
return;
}
@@ -1502,7 +1502,7 @@
sp<JMediaCodec> codec = getMediaCodec(env, thiz);
- if (codec == NULL) {
+ if (codec == NULL || codec->initCheck() != OK) {
throwExceptionAsNecessary(env, INVALID_OPERATION);
return;
}
@@ -1517,7 +1517,7 @@
sp<JMediaCodec> codec = getMediaCodec(env, thiz);
- if (codec == NULL) {
+ if (codec == NULL || codec->initCheck() != OK) {
throwExceptionAsNecessary(env, INVALID_OPERATION);
return;
}
@@ -1539,7 +1539,7 @@
sp<JMediaCodec> codec = getMediaCodec(env, thiz);
- if (codec == NULL) {
+ if (codec == NULL || codec->initCheck() != OK) {
throwExceptionAsNecessary(env, INVALID_OPERATION);
return;
}
@@ -1561,7 +1561,7 @@
sp<JMediaCodec> codec = getMediaCodec(env, thiz);
- if (codec == NULL) {
+ if (codec == NULL || codec->initCheck() != OK) {
throwExceptionAsNecessary(env, INVALID_OPERATION);
return;
}
@@ -1720,7 +1720,7 @@
sp<JMediaCodec> codec = getMediaCodec(env, thiz);
- if (codec == NULL) {
+ if (codec == NULL || codec->initCheck() != OK) {
throwExceptionAsNecessary(env, INVALID_OPERATION);
return;
}
@@ -2109,7 +2109,7 @@
sp<JMediaCodec> codec = getMediaCodec(env, thiz);
- if (codec == nullptr) {
+ if (codec == nullptr || codec->initCheck() != OK) {
throwExceptionAsNecessary(env, INVALID_OPERATION);
return;
}
@@ -2178,7 +2178,7 @@
sp<JMediaCodec> codec = getMediaCodec(env, thiz);
- if (codec == NULL) {
+ if (codec == NULL || codec->initCheck() != OK) {
throwExceptionAsNecessary(env, INVALID_OPERATION);
return;
}
@@ -2227,7 +2227,7 @@
sp<JMediaCodec> codec = getMediaCodec(env, thiz);
- if (codec == NULL) {
+ if (codec == NULL || codec->initCheck() != OK) {
throwExceptionAsNecessary(env, INVALID_OPERATION);
return;
}
@@ -2244,7 +2244,7 @@
sp<JMediaCodec> codec = getMediaCodec(env, thiz);
- if (codec == NULL) {
+ if (codec == NULL || codec->initCheck() != OK) {
throwExceptionAsNecessary(env, INVALID_OPERATION);
return -1;
}
@@ -2265,7 +2265,7 @@
sp<JMediaCodec> codec = getMediaCodec(env, thiz);
- if (codec == NULL) {
+ if (codec == NULL || codec->initCheck() != OK) {
throwExceptionAsNecessary(env, INVALID_OPERATION);
return 0;
}
@@ -2288,7 +2288,7 @@
sp<JMediaCodec> codec = getMediaCodec(env, thiz);
- if (codec == NULL) {
+ if (codec == NULL || codec->initCheck() != OK) {
throwExceptionAsNecessary(env, INVALID_OPERATION);
return;
}
@@ -2303,7 +2303,7 @@
ALOGV("android_media_MediaCodec_signalEndOfInputStream");
sp<JMediaCodec> codec = getMediaCodec(env, thiz);
- if (codec == NULL) {
+ if (codec == NULL || codec->initCheck() != OK) {
throwExceptionAsNecessary(env, INVALID_OPERATION);
return;
}
@@ -2319,7 +2319,7 @@
sp<JMediaCodec> codec = getMediaCodec(env, thiz);
- if (codec == NULL) {
+ if (codec == NULL || codec->initCheck() != OK) {
throwExceptionAsNecessary(env, INVALID_OPERATION);
return NULL;
}
@@ -2342,7 +2342,7 @@
sp<JMediaCodec> codec = getMediaCodec(env, thiz);
- if (codec == NULL) {
+ if (codec == NULL || codec->initCheck() != OK) {
throwExceptionAsNecessary(env, INVALID_OPERATION);
return NULL;
}
@@ -2365,7 +2365,7 @@
sp<JMediaCodec> codec = getMediaCodec(env, thiz);
- if (codec == NULL) {
+ if (codec == NULL || codec->initCheck() != OK) {
throwExceptionAsNecessary(env, INVALID_OPERATION);
return NULL;
}
@@ -2391,7 +2391,7 @@
sp<JMediaCodec> codec = getMediaCodec(env, thiz);
- if (codec == NULL) {
+ if (codec == NULL || codec->initCheck() != OK) {
throwExceptionAsNecessary(env, INVALID_OPERATION);
return NULL;
}
@@ -2417,7 +2417,7 @@
sp<JMediaCodec> codec = getMediaCodec(env, thiz);
- if (codec == NULL) {
+ if (codec == NULL || codec->initCheck() != OK) {
throwExceptionAsNecessary(env, INVALID_OPERATION);
return NULL;
}
@@ -2443,7 +2443,7 @@
sp<JMediaCodec> codec = getMediaCodec(env, thiz);
- if (codec == NULL) {
+ if (codec == NULL || codec->initCheck() != OK) {
throwExceptionAsNecessary(env, INVALID_OPERATION);
return NULL;
}
@@ -2466,7 +2466,7 @@
sp<JMediaCodec> codec = getMediaCodec(env, thiz);
- if (codec == NULL) {
+ if (codec == NULL || codec->initCheck() != OK) {
throwExceptionAsNecessary(env, INVALID_OPERATION);
return NULL;
}
@@ -2489,7 +2489,7 @@
ALOGV("android_media_MediaCodec_native_getMetrics");
sp<JMediaCodec> codec = getMediaCodec(env, thiz);
- if (codec == NULL ) {
+ if (codec == NULL || codec->initCheck() != OK) {
jniThrowException(env, "java/lang/IllegalStateException", NULL);
return 0;
}
@@ -2518,7 +2518,7 @@
sp<JMediaCodec> codec = getMediaCodec(env, thiz);
- if (codec == NULL) {
+ if (codec == NULL || codec->initCheck() != OK) {
throwExceptionAsNecessary(env, INVALID_OPERATION);
return;
}
@@ -2537,7 +2537,7 @@
JNIEnv *env, jobject thiz, jint mode) {
sp<JMediaCodec> codec = getMediaCodec(env, thiz);
- if (codec == NULL) {
+ if (codec == NULL || codec->initCheck() != OK) {
throwExceptionAsNecessary(env, INVALID_OPERATION);
return;
}
@@ -2555,7 +2555,7 @@
JNIEnv *env, jobject thiz, jint presentationId, jint programId) {
sp<JMediaCodec> codec = getMediaCodec(env, thiz);
- if (codec == NULL) {
+ if (codec == NULL || codec->initCheck() != OK) {
throwExceptionAsNecessary(env, INVALID_OPERATION);
return;
}