opensles: check for device outputs in the mixer
authorJosep Torra <n770galaxy@gmail.com>
Fri, 28 Sep 2012 13:10:19 +0000 (15:10 +0200)
committerSebastian Dröge <sebastian.droege@collabora.co.uk>
Thu, 18 Oct 2012 12:03:09 +0000 (14:03 +0200)
sys/opensles/openslesringbuffer.c

index aa0486a0451e91611c444df22fb92cb657e0eccf..518e266144ae2412753f4325f77a72119b1e42af 100644 (file)
@@ -678,6 +678,8 @@ gst_opensles_ringbuffer_open_device (GstRingBuffer * rb)
   }
 
   if (thiz->mode == RB_MODE_SINK_PCM) {
+    SLOutputMixItf outputMix;
+
     /* Create an output mixer */
     result = (*thiz->engineEngine)->CreateOutputMix (thiz->engineEngine,
         &thiz->outputMixObject, 0, NULL, NULL);
@@ -695,6 +697,24 @@ gst_opensles_ringbuffer_open_device (GstRingBuffer * rb)
           (guint32) result);
       goto failed;
     }
+
+    /* Check for output device options */
+    result = (*thiz->outputMixObject)->GetInterface (thiz->outputMixObject,
+        SL_IID_OUTPUTMIX, &outputMix);
+    if (result != SL_RESULT_SUCCESS) {
+      GST_WARNING_OBJECT (thiz, "outputMix.GetInterface failed(0x%08x)",
+          (guint32) result);
+    } else {
+      SLint32 numDevices;
+      SLuint32 deviceIDs[16];
+      gint i;
+      (*outputMix)->GetDestinationOutputDeviceIDs (outputMix, &numDevices,
+          deviceIDs);
+      GST_DEBUG_OBJECT (thiz, "Found %d output devices", (gint) numDevices);
+      for (i = 0; i < numDevices; i++) {
+        GST_DEBUG_OBJECT (thiz, "  DeviceID: %08x", (guint) deviceIDs[i]);
+      }
+    }
   }
 
   GST_DEBUG_OBJECT (thiz, "device opened");