Index: /trunk/src/VBox/Devices/Audio/DevHda.cpp
===================================================================
--- /trunk/src/VBox/Devices/Audio/DevHda.cpp	(revision 90135)
+++ /trunk/src/VBox/Devices/Audio/DevHda.cpp	(revision 90136)
@@ -2589,8 +2589,18 @@
 }
 
-/**
- * @interface_method_impl{HDACODECR3,pfnCbMixerAddStream}
- */
-static DECLCALLBACK(int) hdaR3MixerAddStream(PPDMDEVINS pDevIns, PDMAUDIOMIXERCTL enmMixerCtl, PCPDMAUDIOSTREAMCFG pCfg)
+
+/**
+ * Adds a new audio stream to a specific mixer control.
+ *
+ * Depending on the mixer control the stream then gets assigned to one of the
+ * internal mixer sinks, which in turn then handle the mixing of all connected
+ * streams to that sink.
+ *
+ * @return  VBox status code.
+ * @param   pDevIns             The device instance.
+ * @param   enmMixerCtl         Mixer control to assign new stream to.
+ * @param   pCfg                Stream configuration for the new stream.
+ */
+DECLHIDDEN(int) hdaR3MixerAddStream(PPDMDEVINS pDevIns, PDMAUDIOMIXERCTL enmMixerCtl, PCPDMAUDIOSTREAMCFG pCfg)
 {
     PHDASTATER3 pThisCC = PDMDEVINS_2_DATA_CC(pDevIns, PHDASTATER3);
@@ -2614,7 +2624,14 @@
 
 /**
- * @interface_method_impl{HDACODECR3,pfnCbMixerRemoveStream}
- */
-static DECLCALLBACK(int) hdaR3MixerRemoveStream(PPDMDEVINS pDevIns, PDMAUDIOMIXERCTL enmMixerCtl, bool fImmediate)
+ * Removes a specified mixer control from the HDA's mixer.
+ *
+ * @return  VBox status code.
+ * @param   pDevIns             The device instance.
+ * @param   enmMixerCtl         Mixer control to remove.
+ * @param   fImmediate          Whether the backend should be allowed to
+ *                              finished draining (@c false) or if it must be
+ *                              destroyed immediately (@c true).
+ */
+DECLHIDDEN(int) hdaR3MixerRemoveStream(PPDMDEVINS pDevIns, PDMAUDIOMIXERCTL enmMixerCtl, bool fImmediate)
 {
     PHDASTATER3 pThisCC = PDMDEVINS_2_DATA_CC(pDevIns, PHDASTATER3);
@@ -2685,9 +2702,16 @@
 
 /**
- * @interface_method_impl{HDACODECR3,pfnCbMixerControl}
+ * Controls an input / output converter widget, that is, which converter is
+ * connected to which stream (and channel).
+ *
+ * @return  VBox status code.
+ * @param   pDevIns             The device instance.
+ * @param   enmMixerCtl         Mixer control to set SD stream number and channel for.
+ * @param   uSD                 SD stream number (number + 1) to set. Set to 0 for unassign.
+ * @param   uChannel            Channel to set. Only valid if a valid SD stream number is specified.
  *
  * @note Is also called directly by the DevHDA code.
  */
-static DECLCALLBACK(int) hdaR3MixerControl(PPDMDEVINS pDevIns, PDMAUDIOMIXERCTL enmMixerCtl, uint8_t uSD, uint8_t uChannel)
+DECLHIDDEN(int) hdaR3MixerControl(PPDMDEVINS pDevIns, PDMAUDIOMIXERCTL enmMixerCtl, uint8_t uSD, uint8_t uChannel)
 {
     PHDASTATE   pThis   = PDMDEVINS_2_DATA(pDevIns, PHDASTATE);
@@ -2793,7 +2817,12 @@
 
 /**
- * @interface_method_impl{HDACODECR3,pfnCbMixerSetVolume}
- */
-static DECLCALLBACK(int) hdaR3MixerSetVolume(PPDMDEVINS pDevIns, PDMAUDIOMIXERCTL enmMixerCtl, PPDMAUDIOVOLUME pVol)
+ * Sets the volume of a specified mixer control.
+ *
+ * @return  IPRT status code.
+ * @param   pDevIns             The device instance.
+ * @param   enmMixerCtl         Mixer control to set volume for.
+ * @param   pVol                Pointer to volume data to set.
+ */
+DECLHIDDEN(int) hdaR3MixerSetVolume(PPDMDEVINS pDevIns, PDMAUDIOMIXERCTL enmMixerCtl, PPDMAUDIOVOLUME pVol)
 {
     PHDASTATER3   pThisCC = PDMDEVINS_2_DATA_CC(pDevIns, PHDASTATER3);
@@ -4956,11 +4985,5 @@
      * Initialize the codec.
      */
-
-    /* Set codec callbacks to this controller. */
-    pThisCC->Codec.pDevIns                = pDevIns;
-    pThisCC->Codec.pfnCbMixerAddStream    = hdaR3MixerAddStream;
-    pThisCC->Codec.pfnCbMixerRemoveStream = hdaR3MixerRemoveStream;
-    pThisCC->Codec.pfnCbMixerControl      = hdaR3MixerControl;
-    pThisCC->Codec.pfnCbMixerSetVolume    = hdaR3MixerSetVolume;
+    pThisCC->Codec.pDevIns = pDevIns;
 
     /* Construct the common + R3 codec part. */
Index: /trunk/src/VBox/Devices/Audio/DevHda.h
===================================================================
--- /trunk/src/VBox/Devices/Audio/DevHda.h	(revision 90135)
+++ /trunk/src/VBox/Devices/Audio/DevHda.h	(revision 90136)
@@ -806,4 +806,13 @@
 
 
+/** @name DevHDA.cpp functions used by the codec.
+ * @{ */
+DECLHIDDEN(int)     hdaR3MixerAddStream(PPDMDEVINS pDevIns, PDMAUDIOMIXERCTL enmMixerCtl, PCPDMAUDIOSTREAMCFG pCfg);
+DECLHIDDEN(int)     hdaR3MixerRemoveStream(PPDMDEVINS pDevIns, PDMAUDIOMIXERCTL enmMixerCtl, bool fImmediate);
+DECLHIDDEN(int)     hdaR3MixerControl(PPDMDEVINS pDevIns, PDMAUDIOMIXERCTL enmMixerCtl, uint8_t uSD, uint8_t uChannel);
+DECLHIDDEN(int)     hdaR3MixerSetVolume(PPDMDEVINS pDevIns, PDMAUDIOMIXERCTL enmMixerCtl, PPDMAUDIOVOLUME pVol);
+/** @} */
+
+
 /** @name Saved state versions for the HDA device
  * @{ */
Index: /trunk/src/VBox/Devices/Audio/DevHdaCodec.cpp
===================================================================
--- /trunk/src/VBox/Devices/Audio/DevHdaCodec.cpp	(revision 90135)
+++ /trunk/src/VBox/Devices/Audio/DevHdaCodec.cpp	(revision 90136)
@@ -940,5 +940,5 @@
              PDMAudioMixerCtlGetName(enmMixerCtl), bLeft, bRight, Vol.fMuted ? "- Muted!" : ""));
 
-    return pThisCC->pfnCbMixerSetVolume(pThisCC->pDevIns, enmMixerCtl, &Vol);
+    return hdaR3MixerSetVolume(pThisCC->pDevIns, enmMixerCtl, &Vol);
 }
 
@@ -2204,15 +2204,15 @@
 
         /* Propagate to the controller. */
-        pThisCC->pfnCbMixerControl(pThisCC->pDevIns, PDMAUDIOMIXERCTL_FRONT,      uSD, uChannel);
+        hdaR3MixerControl(pThisCC->pDevIns, PDMAUDIOMIXERCTL_FRONT,      uSD, uChannel);
 # ifdef VBOX_WITH_AUDIO_HDA_51_SURROUND
-        pThisCC->pfnCbMixerControl(pThisCC->pDevIns, PDMAUDIOMIXERCTL_CENTER_LFE, uSD, uChannel);
-        pThisCC->pfnCbMixerControl(pThisCC->pDevIns, PDMAUDIOMIXERCTL_REAR,       uSD, uChannel);
+        hdaR3MixerControl(pThisCC->pDevIns, PDMAUDIOMIXERCTL_CENTER_LFE, uSD, uChannel);
+        hdaR3MixerControl(pThisCC->pDevIns, PDMAUDIOMIXERCTL_REAR,       uSD, uChannel);
 # endif
     }
     else if (enmDir == PDMAUDIODIR_IN)
     {
-        pThisCC->pfnCbMixerControl(pThisCC->pDevIns, PDMAUDIOMIXERCTL_LINE_IN,    uSD, uChannel);
+        hdaR3MixerControl(pThisCC->pDevIns, PDMAUDIOMIXERCTL_LINE_IN,    uSD, uChannel);
 # ifdef VBOX_WITH_AUDIO_HDA_MIC_IN
-        pThisCC->pfnCbMixerControl(pThisCC->pDevIns, PDMAUDIOMIXERCTL_MIC_IN,     uSD, uChannel);
+        hdaR3MixerControl(pThisCC->pDevIns, PDMAUDIOMIXERCTL_MIC_IN,     uSD, uChannel);
 # endif
     }
@@ -2666,5 +2666,5 @@
 
     if (RT_SUCCESS(rc))
-        rc = pThisCC->pfnCbMixerAddStream(pThisCC->pDevIns, enmMixerCtl, pCfg);
+        rc = hdaR3MixerAddStream(pThisCC->pDevIns, enmMixerCtl, pCfg);
 
     LogFlowFuncLeaveRC(rc);
@@ -2677,5 +2677,5 @@
     AssertPtrReturn(pThisCC, VERR_INVALID_POINTER);
 
-    int rc = pThisCC->pfnCbMixerRemoveStream(pThisCC->pDevIns, enmMixerCtl, fImmediate);
+    int rc = hdaR3MixerRemoveStream(pThisCC->pDevIns, enmMixerCtl, fImmediate);
 
     LogFlowFuncLeaveRC(rc);
Index: /trunk/src/VBox/Devices/Audio/DevHdaCodec.h
===================================================================
--- /trunk/src/VBox/Devices/Audio/DevHdaCodec.h	(revision 90135)
+++ /trunk/src/VBox/Devices/Audio/DevHdaCodec.h	(revision 90136)
@@ -851,54 +851,4 @@
     PPDMDEVINS              pDevIns;
 
-    /** @name Callbacks to the HDA controller, mostly used for multiplexing to the
-     *        various host backends.
-     * @{ */
-    /**
-     *
-     * Adds a new audio stream to a specific mixer control.
-     *
-     * Depending on the mixer control the stream then gets assigned to one of the
-     * internal mixer sinks, which in turn then handle the mixing of all connected
-     * streams to that sink.
-     *
-     * @return  VBox status code.
-     * @param   pDevIns             The device instance.
-     * @param   enmMixerCtl         Mixer control to assign new stream to.
-     * @param   pCfg                Stream configuration for the new stream.
-     */
-    DECLR3CALLBACKMEMBER(int,  pfnCbMixerAddStream, (PPDMDEVINS pDevIns, PDMAUDIOMIXERCTL enmMixerCtl, PCPDMAUDIOSTREAMCFG pCfg));
-    /**
-     * Removes a specified mixer control from the HDA's mixer.
-     *
-     * @return  VBox status code.
-     * @param   pDevIns             The device instance.
-     * @param   enmMixerCtl         Mixer control to remove.
-     * @param   fImmediate          Whether the backend should be allowed to
-     *                              finished draining (@c false) or if it must be
-     *                              destroyed immediately (@c true).
-     */
-    DECLR3CALLBACKMEMBER(int,  pfnCbMixerRemoveStream, (PPDMDEVINS pDevIns, PDMAUDIOMIXERCTL enmMixerCtl, bool fImmediate));
-    /**
-     * Controls an input / output converter widget, that is, which converter is
-     * connected to which stream (and channel).
-     *
-     * @return  VBox status code.
-     * @param   pDevIns             The device instance.
-     * @param   enmMixerCtl         Mixer control to set SD stream number and channel for.
-     * @param   uSD                 SD stream number (number + 1) to set. Set to 0 for unassign.
-     * @param   uChannel            Channel to set. Only valid if a valid SD stream number is specified.
-     */
-    DECLR3CALLBACKMEMBER(int,  pfnCbMixerControl, (PPDMDEVINS pDevIns, PDMAUDIOMIXERCTL enmMixerCtl, uint8_t uSD, uint8_t uChannel));
-    /**
-     * Sets the volume of a specified mixer control.
-     *
-     * @return  IPRT status code.
-     * @param   pDevIns             The device instance.
-     * @param   enmMixerCtl         Mixer control to set volume for.
-     * @param   pVol                Pointer to volume data to set.
-     */
-    DECLR3CALLBACKMEMBER(int,  pfnCbMixerSetVolume, (PPDMDEVINS pDevIns, PDMAUDIOMIXERCTL enmMixerCtl, PPDMAUDIOVOLUME pVol));
-    /** @} */
-
     /** The state (was shared with ring-0 for a while). */
     HDACODEC                State;
