OSDN Git Service

mediaplayer: handle surface dis/connection errors
authorLajos Molnar <lajos@google.com>
Mon, 15 Sep 2014 18:04:44 +0000 (11:04 -0700)
committerLajos Molnar <lajos@google.com>
Mon, 15 Sep 2014 18:07:08 +0000 (11:07 -0700)
Bug: 17408008
Change-Id: I752d5372086772b79b1300a2d3fabbc4985954a8

media/libmediaplayerservice/nuplayer/NuPlayerDecoder.cpp

index 163a0b5..87f85e7 100644 (file)
@@ -122,14 +122,17 @@ void NuPlayer::Decoder::onConfigure(const sp<AMessage> &format) {
 
     mCodec->getName(&mComponentName);
 
+    status_t err;
     if (mNativeWindow != NULL) {
         // disconnect from surface as MediaCodec will reconnect
-        CHECK_EQ((int)NO_ERROR,
-                native_window_api_disconnect(
-                        surface.get(),
-                        NATIVE_WINDOW_API_MEDIA));
+        err = native_window_api_disconnect(
+                surface.get(), NATIVE_WINDOW_API_MEDIA);
+        // We treat this as a warning, as this is a preparatory step.
+        // Codec will try to connect to the surface, which is where
+        // any error signaling will occur.
+        ALOGW_IF(err != OK, "failed to disconnect from surface: %d", err);
     }
-    status_t err = mCodec->configure(
+    err = mCodec->configure(
             format, surface, NULL /* crypto */, 0 /* flags */);
     if (err != OK) {
         ALOGE("Failed to configure %s decoder (err=%d)", mComponentName.c_str(), err);