OSDN Git Service

Ignore all flush-complete notifications with port == OMX_ALL
authorAndreas Huber <andih@google.com>
Fri, 1 Jul 2011 20:13:02 +0000 (13:13 -0700)
committerAndreas Huber <andih@google.com>
Fri, 1 Jul 2011 20:13:02 +0000 (13:13 -0700)
Use of this notification is not consistent across
implementations. We'll drop this notification and rely
on flush-complete notifications on the individual port
indices instead.

Change-Id: I76c0dfdcfc92a7c9acf57abf3027d2638d77efca

media/libstagefright/ACodec.cpp

index 167071a..d4d07b2 100644 (file)
@@ -1190,6 +1190,17 @@ bool ACodec::BaseState::onOMXMessage(const sp<AMessage> &msg) {
             CHECK(msg->findInt32("data1", &data1));
             CHECK(msg->findInt32("data2", &data2));
 
+            if (event == OMX_EventCmdComplete
+                    && data1 == OMX_CommandFlush
+                    && data2 == (int32_t)OMX_ALL) {
+                // Use of this notification is not consistent across
+                // implementations. We'll drop this notification and rely
+                // on flush-complete notifications on the individual port
+                // indices instead.
+
+                return true;
+            }
+
             return onOMXEvent(
                     static_cast<OMX_EVENTTYPE>(event),
                     static_cast<OMX_U32>(data1),
@@ -2119,6 +2130,7 @@ bool ACodec::ExecutingToIdleState::onOMXEvent(
             return BaseState::onOMXEvent(event, data1, data2);
     }
 }
+
 void ACodec::ExecutingToIdleState::changeStateIfWeOwnAllBuffers() {
     if (mCodec->allYourBuffersAreBelongToUs()) {
         CHECK_EQ(mCodec->mOMX->sendCommand(