CCodec: Report codec error to MediaCodec
Propagate codec error to MediaCodec
Test:
Simulate HW error from Codec2 component and
check if app is notified of the error.
Bug: 173095521
Change-Id: I1e25881f664226b4afd7b1e8a6acb68d40cc8c52
diff --git a/media/codec2/sfplugin/CCodec.cpp b/media/codec2/sfplugin/CCodec.cpp
index ab7c9af..6e9413a 100644
--- a/media/codec2/sfplugin/CCodec.cpp
+++ b/media/codec2/sfplugin/CCodec.cpp
@@ -518,9 +518,24 @@
virtual void onError(
const std::weak_ptr<Codec2Client::Component>& component,
uint32_t errorCode) override {
- // TODO
- (void)component;
- (void)errorCode;
+ {
+ // Component is only used for reporting as we use a separate listener for each instance
+ std::shared_ptr<Codec2Client::Component> comp = component.lock();
+ if (!comp) {
+ ALOGD("Component died with error: 0x%x", errorCode);
+ } else {
+ ALOGD("Component \"%s\" returned error: 0x%x", comp->getName().c_str(), errorCode);
+ }
+ }
+
+ // Report to MediaCodec
+ // Note: for now we do not propagate the error code to MediaCodec as we would need
+ // to translate to a MediaCodec error.
+ sp<CCodec> codec(mCodec.promote());
+ if (!codec || !codec->mCallback) {
+ return;
+ }
+ codec->mCallback->onError(UNKNOWN_ERROR, ACTION_CODE_FATAL);
}
virtual void onDeath(