OSDN Git Service

Support for "request-sync" parameter in ACodec
authorAndreas Huber <andih@google.com>
Mon, 12 Aug 2013 17:08:23 +0000 (10:08 -0700)
committerAndreas Huber <andih@google.com>
Mon, 12 Aug 2013 17:09:27 +0000 (10:09 -0700)
Also returns errors to caller instead of asserting...

Change-Id: Id3018655a2b3da4289167fba16af907350a511ae

media/libstagefright/ACodec.cpp

index 5aefa58..36549d1 100644 (file)
@@ -4123,13 +4123,28 @@ status_t ACodec::setParameters(const sp<AMessage> &params) {
     if (params->findInt32("drop-input-frames", &dropInputFrames)) {
         bool suspend = dropInputFrames != 0;
 
-        CHECK_EQ((status_t)OK,
-                 mOMX->setInternalOption(
+        status_t err =
+            mOMX->setInternalOption(
                      mNode,
                      kPortIndexInput,
                      IOMX::INTERNAL_OPTION_SUSPEND,
                      &suspend,
-                     sizeof(suspend)));
+                     sizeof(suspend));
+
+        if (err != OK) {
+            ALOGE("Failed to set parameter 'drop-input-frames' (err %d)", err);
+            return err;
+        }
+    }
+
+    int32_t dummy;
+    if (params->findInt32("request-sync", &dummy)) {
+        status_t err = requestIDRFrame();
+
+        if (err != OK) {
+            ALOGE("Requesting a sync frame failed w/ err %d", err);
+            return err;
+        }
     }
 
     return OK;