Merge "MediaCodec: change onError cb to return CodecException"
diff --git a/include/media/stagefright/MediaCodec.h b/include/media/stagefright/MediaCodec.h
index 046496c..a0ff997 100644
--- a/include/media/stagefright/MediaCodec.h
+++ b/include/media/stagefright/MediaCodec.h
@@ -279,7 +279,7 @@
void onInputBufferAvailable();
void onOutputBufferAvailable();
- void onError(int32_t actionCode, status_t err);
+ void onError(status_t err, int32_t actionCode, const char *detail = NULL);
void onOutputFormatChanged();
status_t onSetParameters(const sp<AMessage> ¶ms);
diff --git a/media/libstagefright/MediaCodec.cpp b/media/libstagefright/MediaCodec.cpp
index f286659..24fd7ad 100644
--- a/media/libstagefright/MediaCodec.cpp
+++ b/media/libstagefright/MediaCodec.cpp
@@ -664,7 +664,7 @@
cancelPendingDequeueOperations();
if (mFlags & kFlagIsAsync) {
- onError(0, omxError);
+ onError(omxError, 0);
}
setState(UNINITIALIZED);
break;
@@ -678,7 +678,7 @@
postActivityNotificationIfPossible();
if (mFlags & kFlagIsAsync) {
- onError(0, omxError);
+ onError(omxError, 0);
}
setState(UNINITIALIZED);
break;
@@ -1916,12 +1916,16 @@
}
}
-void MediaCodec::onError(int32_t actionCode, status_t err) {
+void MediaCodec::onError(status_t err, int32_t actionCode, const char *detail) {
if (mCallback != NULL) {
sp<AMessage> msg = mCallback->dup();
msg->setInt32("callbackID", CB_ERROR);
- msg->setInt32("actionCode", actionCode);
msg->setInt32("err", err);
+ msg->setInt32("actionCode", actionCode);
+
+ if (detail != NULL) {
+ msg->setString("detail", detail);
+ }
msg->post();
}