Index: /trunk/src/VBox/Devices/Audio/DrvAudio.cpp
===================================================================
--- /trunk/src/VBox/Devices/Audio/DrvAudio.cpp	(revision 54967)
+++ /trunk/src/VBox/Devices/Audio/DrvAudio.cpp	(revision 54968)
@@ -616,11 +616,16 @@
     AssertPtrReturn(pCfg, VERR_INVALID_POINTER);
 
-    PPDMAUDIOSTREAMCFG pThisCfg;
+    /*
+     * Try figuring out which audio stream configuration this backend
+     * should use. If fixed output is enabled the backend will be tied
+     * to a fixed rate in (Hz), regardless of what the backend could do else.
+     */
+    PPDMAUDIOSTREAMCFG pBackendCfg;
     if (conf.fixed_out.enabled)
-        pThisCfg = &conf.fixed_out.settings;
+        pBackendCfg = &conf.fixed_out.settings;
     else
-        pThisCfg = pCfg;
-
-    AssertPtrReturn(pThisCfg, VERR_INVALID_POINTER);
+        pBackendCfg = pCfg;
+
+    AssertPtrReturn(pBackendCfg, VERR_INVALID_POINTER);
 
     LogFlowFunc(("Using fixed audio output settings: %RTbool\n",
@@ -635,6 +640,9 @@
     }
 
+    /*
+     * The host stream always will get the backend audio stream configuration.
+     */
     PPDMAUDIOHSTSTRMOUT pHstStrmOut;
-    int rc = drvAudioAddHstOut(pThis, pszName, pThisCfg, &pHstStrmOut);
+    int rc = drvAudioAddHstOut(pThis, pszName, pBackendCfg, &pHstStrmOut);
     if (RT_FAILURE(rc))
     {
@@ -645,5 +653,9 @@
     }
 
-    rc = drvAudioGstOutInit(pGstStrmOut, pHstStrmOut, pszName, pThisCfg);
+    /*
+     * The guest stream always will get the the audio stream configuration told
+     * by the device emulation (which in turn was/could be set by the guest OS).
+     */
+    rc = drvAudioGstOutInit(pGstStrmOut, pHstStrmOut, pszName, pCfg);
     if (RT_SUCCESS(rc))
     {
