MediaCodec: throw CryptoException with more error info

Bug: 249941041
Test: WidevineH264PlaybackTests
Change-Id: I924264ecb7b589bcafe76321ce5d12dd290b2a22
This commit is contained in:
Robert Shih
2022-12-16 12:47:27 -08:00
parent eefbc6216c
commit 57f369a086

View File

@@ -1285,7 +1285,7 @@ static void throwCryptoException(JNIEnv *env, status_t err, const char *msg,
CHECK(clazz.get() != NULL);
jmethodID constructID =
env->GetMethodID(clazz.get(), "<init>", "(ILjava/lang/String;)V");
env->GetMethodID(clazz.get(), "<init>", "(Ljava/lang/String;IIII)V");
CHECK(constructID != NULL);
std::string defaultMsg = "Unknown Error";
@@ -1335,14 +1335,14 @@ static void throwCryptoException(JNIEnv *env, status_t err, const char *msg,
break;
}
std::string msgStr(msg != NULL ? msg : defaultMsg.c_str());
if (crypto != NULL) {
msgStr = DrmUtils::GetExceptionMessage(err, msgStr.c_str(), crypto);
}
jstring msgObj = env->NewStringUTF(msgStr.c_str());
std::string originalMsg(msg != NULL ? msg : defaultMsg.c_str());
DrmStatus dStatus(err, originalMsg.c_str());
std::string detailedMsg(DrmUtils::GetExceptionMessage(dStatus, defaultMsg.c_str(), crypto));
jstring msgObj = env->NewStringUTF(detailedMsg.c_str());
jthrowable exception =
(jthrowable)env->NewObject(clazz.get(), constructID, jerr, msgObj);
(jthrowable)env->NewObject(clazz.get(), constructID, msgObj, jerr,
dStatus.getCdmErr(), dStatus.getOemErr(), dStatus.getContext());
env->Throw(exception);
}