From 57f369a086d650b08b7153eb7a6b4d576b80ff04 Mon Sep 17 00:00:00 2001 From: Robert Shih Date: Fri, 16 Dec 2022 12:47:27 -0800 Subject: [PATCH] MediaCodec: throw CryptoException with more error info Bug: 249941041 Test: WidevineH264PlaybackTests Change-Id: I924264ecb7b589bcafe76321ce5d12dd290b2a22 --- media/jni/android_media_MediaCodec.cpp | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/media/jni/android_media_MediaCodec.cpp b/media/jni/android_media_MediaCodec.cpp index 1183ca3b49777..d8705a7ce9ca1 100644 --- a/media/jni/android_media_MediaCodec.cpp +++ b/media/jni/android_media_MediaCodec.cpp @@ -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(), "", "(ILjava/lang/String;)V"); + env->GetMethodID(clazz.get(), "", "(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); }