qtmobility/plugins/multimedia/directshow/player/directshowaudioendpointcontrol.cpp
changeset 4 90517678cc4f
parent 1 2b40d63a9c3d
child 11 06b8e2af4411
--- a/qtmobility/plugins/multimedia/directshow/player/directshowaudioendpointcontrol.cpp	Fri Apr 16 15:51:22 2010 +0300
+++ b/qtmobility/plugins/multimedia/directshow/player/directshowaudioendpointcontrol.cpp	Mon May 03 13:18:40 2010 +0300
@@ -52,7 +52,7 @@
     , m_deviceEnumerator(0)
 {
     if (CreateBindCtx(0, &m_bindContext) == S_OK) {
-        m_deviceEnumerator = com_new<ICreateDevEnum>(CLSID_SystemDeviceEnum);
+        m_deviceEnumerator = com_new<ICreateDevEnum>(CLSID_SystemDeviceEnum, IID_ICreateDevEnum);
 
         updateEndpoints();
 
@@ -79,7 +79,26 @@
 
 QString DirectShowAudioEndpointControl::endpointDescription(const QString &name) const
 {
+#ifdef __IPropertyBag_INTERFACE_DEFINED__
+    QString description;
+
+    if (IMoniker *moniker = m_devices.value(name, 0)) {
+        IPropertyBag *propertyBag = 0;
+        if (SUCCEEDED(moniker->BindToStorage(
+                0, 0, IID_IPropertyBag, reinterpret_cast<void **>(&propertyBag)))) {
+            VARIANT name;
+            VariantInit(&name);
+            if (SUCCEEDED(propertyBag->Read(L"FriendlyName", &name, 0)))
+                description = QString::fromWCharArray(name.bstrVal);
+            VariantClear(&name);
+            propertyBag->Release();
+        }
+    }
+
+    return description;
+#else
     return name.section(QLatin1Char('\\'), -1);
+#endif
 }
 
 QString DirectShowAudioEndpointControl::defaultEndpoint() const
@@ -103,7 +122,7 @@
         if (moniker->BindToObject(
                 m_bindContext,
                 0,
-                __uuidof(IBaseFilter),
+                IID_IBaseFilter,
                 reinterpret_cast<void **>(&filter)) == S_OK) {
             m_service->setAudioOutput(filter);