VirtualBox

Changeset 90134 in vbox


Ignore:
Timestamp:
Jul 9, 2021 4:57:39 PM (4 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
145636
Message:

DevHda: Consolidating codec state into one structure and removing the unnecessary R3 codec state allocating. bugref:9890

Location:
trunk/src/VBox/Devices/Audio
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Devices/Audio/DevHda.cpp

    r89906 r90134  
    937937         */
    938938        uint64_t uResp = 0;
    939 #ifndef IN_RING3
    940         rc = pThisCC->Codec.pfnLookup(&pThis->Codec, &pThisCC->Codec, HDA_CODEC_CMD(uCmd, 0 /* Codec index */), &uResp);
    941 #else
    942         rc = pThisCC->pCodec->pfnLookup(&pThis->Codec, pThisCC->pCodec, HDA_CODEC_CMD(uCmd, 0 /* Codec index */), &uResp);
    943 #endif
     939        rc = pThisCC->Codec.pfnLookup(&pThisCC->Codec, HDA_CODEC_CMD(uCmd, 0 /* Codec index */), &uResp);
    944940        if (RT_SUCCESS(rc))
    945941            AssertRCSuccess(rc); /* no informational statuses */
    946942        else
    947         {
    948 #ifndef IN_RING3
    949             if (rc == VERR_INVALID_CONTEXT)
    950             {
    951                 corbRp = corbRp == 0 ? cCorbEntries - 1 : corbRp - 1;
    952                 LogFunc(("->R3 CORB - uCmd=%#x\n", uCmd));
    953                 rc = PDMDevHlpTaskTrigger(pDevIns, pThis->hCorbDmaTask);
    954                 AssertRCReturn(rc, rc);
    955                 break; /* take the normal way out. */
    956             }
    957 #endif
    958943            Log3Func(("Lookup for codec verb %08x failed: %Rrc\n", uCmd, rc));
    959         }
    960944        Log3Func(("Codec verb %08x -> response %016RX64\n", uCmd, uResp));
    961945
     
    19271911            /// @todo PDMAudioPropsSetChannels(&pCfg->Props, 2); ?
    19281912
    1929             rc = hdaR3CodecAddStream(pThisCC->pCodec, PDMAUDIOMIXERCTL_FRONT, pCfg);
     1913            rc = hdaR3CodecAddStream(&pThisCC->Codec, PDMAUDIOMIXERCTL_FRONT, pCfg);
    19301914        }
    19311915
     
    19391923            PDMAudioPropsSetChannels(&pCfg->Props, fUseCenter && fUseLFE ? 2 : 1);
    19401924
    1941             rc = hdaR3CodecAddStream(pThisCC->pCodec, PDMAUDIOMIXERCTL_CENTER_LFE, pCfg);
     1925            rc = hdaR3CodecAddStream(&pThisCC->Codec, PDMAUDIOMIXERCTL_CENTER_LFE, pCfg);
    19421926        }
    19431927
     
    19501934            PDMAudioPropsSetChannels(&pCfg->Props, 2);
    19511935
    1952             rc = hdaR3CodecAddStream(pThisCC->pCodec, PDMAUDIOMIXERCTL_REAR, pCfg);
     1936            rc = hdaR3CodecAddStream(&pThisCC->Codec, PDMAUDIOMIXERCTL_REAR, pCfg);
    19531937        }
    19541938# endif /* VBOX_WITH_AUDIO_HDA_51_SURROUND */
     
    19791963    {
    19801964        case PDMAUDIOPATH_IN_LINE:
    1981             rc = hdaR3CodecAddStream(pThisCC->pCodec, PDMAUDIOMIXERCTL_LINE_IN, pCfg);
     1965            rc = hdaR3CodecAddStream(&pThisCC->Codec, PDMAUDIOMIXERCTL_LINE_IN, pCfg);
    19821966            break;
    19831967# ifdef VBOX_WITH_AUDIO_HDA_MIC_IN
    19841968        case PDMAUDIOPATH_IN_MIC:
    1985             rc = hdaR3CodecAddStream(pThisCC->pCodec, PDMAUDIOMIXERCTL_MIC_IN, pCfg);
     1969            rc = hdaR3CodecAddStream(&pThisCC->Codec, PDMAUDIOMIXERCTL_MIC_IN, pCfg);
    19861970            break;
    19871971# endif
     
    20932077        && enmMixerCtl != PDMAUDIOMIXERCTL_UNKNOWN)
    20942078    {
    2095         rc = hdaR3CodecRemoveStream(pThisCC->pCodec, enmMixerCtl, false /*fImmediate*/);
     2079        rc = hdaR3CodecRemoveStream(&pThisCC->Codec, enmMixerCtl, false /*fImmediate*/);
    20962080    }
    20972081
     
    21832167        PHDASTATER3 pThisCC = PDMDEVINS_2_DATA_CC(pDevIns, PHDASTATER3);
    21842168        uint64_t    uResp   = 0;
    2185         int rc2 = pThisCC->pCodec->pfnLookup(&pThis->Codec, pThisCC->pCodec, HDA_CODEC_CMD(uCmd, 0 /* LUN */), &uResp);
     2169        int rc2 = pThisCC->Codec.pfnLookup(&pThisCC->Codec, HDA_CODEC_CMD(uCmd, 0 /* LUN */), &uResp);
    21862170        if (RT_FAILURE(rc2))
    21872171            LogFunc(("Codec lookup failed with rc2=%Rrc\n", rc2));
     
    29382922     * Reset the codec.
    29392923     */
    2940     hdaCodecReset(&pThis->Codec);
     2924    hdaCodecReset(&pThisCC->Codec);
    29412925
    29422926    /*
     
    35363520
    35373521    /* Save Codec nodes states. */
    3538     hdaCodecSaveState(pDevIns, &pThis->Codec, pSSM);
     3522    hdaCodecSaveState(pDevIns, &pThisCC->Codec, pSSM);
    35393523
    35403524    /* Save MMIO registers. */
     
    39043888     * Load Codec nodes states.
    39053889     */
    3906     int rc = hdaR3CodecLoadState(pDevIns, &pThis->Codec, pThisCC->pCodec, pSSM, uVersion);
     3890    int rc = hdaR3CodecLoadState(pDevIns, &pThisCC->Codec, pSSM, uVersion);
    39073891    if (RT_FAILURE(rc))
    39083892    {
     
    43854369static DECLCALLBACK(void) hdaR3DbgInfoCodecNodes(PPDMDEVINS pDevIns, PCDBGFINFOHLP pHlp, const char *pszArgs)
    43864370{
    4387     PHDASTATE   pThis   = PDMDEVINS_2_DATA(pDevIns, PHDASTATE);
    43884371    PHDASTATER3 pThisCC = PDMDEVINS_2_DATA_CC(pDevIns, PHDASTATER3);
    43894372
    4390     if (pThisCC->pCodec->pfnDbgListNodes)
    4391         pThisCC->pCodec->pfnDbgListNodes(&pThis->Codec, pThisCC->pCodec, pHlp, pszArgs);
     4373    if (pThisCC->Codec.pfnDbgListNodes)
     4374        pThisCC->Codec.pfnDbgListNodes(&pThisCC->Codec, pHlp, pszArgs);
    43924375    else
    43934376        pHlp->pfnPrintf(pHlp, "Codec implementation doesn't provide corresponding callback\n");
     
    43994382static DECLCALLBACK(void) hdaR3DbgInfoCodecSelector(PPDMDEVINS pDevIns, PCDBGFINFOHLP pHlp, const char *pszArgs)
    44004383{
    4401     PHDASTATE   pThis   = PDMDEVINS_2_DATA(pDevIns, PHDASTATE);
    44024384    PHDASTATER3 pThisCC = PDMDEVINS_2_DATA_CC(pDevIns, PHDASTATER3);
    44034385
    4404     if (pThisCC->pCodec->pfnDbgSelector)
    4405         pThisCC->pCodec->pfnDbgSelector(&pThis->Codec, pThisCC->pCodec, pHlp, pszArgs);
     4386    if (pThisCC->Codec.pfnDbgSelector)
     4387        pThisCC->Codec.pfnDbgSelector(&pThisCC->Codec, pHlp, pszArgs);
    44064388    else
    44074389        pHlp->pfnPrintf(pHlp, "Codec implementation doesn't provide corresponding callback\n");
     
    46204602
    46214603    /* Ditto goes for the codec, which in turn uses the mixer. */
    4622     hdaR3CodecPowerOff(pThisCC->pCodec);
     4604    hdaR3CodecPowerOff(&pThisCC->Codec);
    46234605
    46244606    /* This is to prevent us from calling into the mixer and mixer sink code
     
    46924674    }
    46934675
    4694     if (pThisCC->pCodec)
    4695     {
    4696         RTMemFree(pThisCC->pCodec);
    4697         pThisCC->pCodec = NULL;
    4698     }
    4699 
    4700     hdaCodecDestruct(&pThis->Codec);
     4676    hdaCodecDestruct(&pThisCC->Codec);
    47014677
    47024678    for (uint8_t i = 0; i < HDA_MAX_STREAMS; i++)
     
    49854961    AssertRCReturn(rc, rc);
    49864962
    4987     /* Allocate codec. */
    4988     PHDACODECR3 pCodecR3 = (PHDACODECR3)RTMemAllocZ(sizeof(HDACODECR3));
    4989     AssertPtrReturn(pCodecR3, VERR_NO_MEMORY);
     4963    /*
     4964     * Initialize the codec.
     4965     */
    49904966
    49914967    /* Set codec callbacks to this controller. */
    4992     pCodecR3->pDevIns                = pDevIns;
    4993     pCodecR3->pfnCbMixerAddStream    = hdaR3MixerAddStream;
    4994     pCodecR3->pfnCbMixerRemoveStream = hdaR3MixerRemoveStream;
    4995     pCodecR3->pfnCbMixerControl      = hdaR3MixerControl;
    4996     pCodecR3->pfnCbMixerSetVolume    = hdaR3MixerSetVolume;
     4968    pThisCC->Codec.pDevIns                = pDevIns;
     4969    pThisCC->Codec.pfnCbMixerAddStream    = hdaR3MixerAddStream;
     4970    pThisCC->Codec.pfnCbMixerRemoveStream = hdaR3MixerRemoveStream;
     4971    pThisCC->Codec.pfnCbMixerControl      = hdaR3MixerControl;
     4972    pThisCC->Codec.pfnCbMixerSetVolume    = hdaR3MixerSetVolume;
    49974973
    49984974    /* Construct the common + R3 codec part. */
    4999     rc = hdaR3CodecConstruct(pDevIns, &pThis->Codec, pCodecR3, 0 /* Codec index */, pCfg);
     4975    rc = hdaR3CodecConstruct(pDevIns, &pThisCC->Codec, 0 /* Codec index */, pCfg);
    50004976    AssertRCReturn(rc, rc);
    5001 
    5002     pThisCC->pCodec = pCodecR3;
    50034977
    50044978    /* ICH6 datasheet defines 0 values for SVID and SID (18.1.14-15), which together with values returned for
    50054979       verb F20 should provide device/codec recognition. */
    5006     Assert(pThis->Codec.u16VendorId);
    5007     Assert(pThis->Codec.u16DeviceId);
    5008     PDMPciDevSetSubSystemVendorId(pPciDev, pThis->Codec.u16VendorId); /* 2c ro - intel.) */
    5009     PDMPciDevSetSubSystemId(      pPciDev, pThis->Codec.u16DeviceId); /* 2e ro. */
     4980    Assert(pThisCC->Codec.State.u16VendorId);
     4981    Assert(pThisCC->Codec.State.u16DeviceId);
     4982    PDMPciDevSetSubSystemVendorId(pPciDev, pThisCC->Codec.State.u16VendorId); /* 2c ro - intel.) */
     4983    PDMPciDevSetSubSystemId(      pPciDev, pThisCC->Codec.State.u16DeviceId); /* 2e ro. */
    50104984
    50114985    /*
  • trunk/src/VBox/Devices/Audio/DevHda.h

    r89906 r90134  
    626626    IOMMMIOHANDLE           hMmio;
    627627
    628     /** Shared R0/R3 HDA codec to use. */
    629     HDACODEC                Codec;
    630 
    631628#ifdef VBOX_HDA_WITH_ON_REG_ACCESS_DMA
    632629    STAMCOUNTER             StatAccessDmaOutput;
     
    730727    /** The base interface for LUN\#0. */
    731728    PDMIBASE                IBase;
    732     /** Pointer to HDA codec to use. */
    733     R3PTRTYPE(PHDACODECR3)  pCodec;
    734729    /** List of associated LUN drivers (HDADRIVER). */
    735730    RTLISTANCHORR3          lstDrv;
     
    759754        R3PTRTYPE(char *)       pszOutPath;
    760755    } Dbg;
     756
     757    /** The HDA codec state. */
     758    HDACODECR3              Codec;
    761759} HDASTATER3;
    762760
  • trunk/src/VBox/Devices/Audio/DevHdaCodec.cpp

    r90131 r90134  
    14701470    Assert(CODEC_CAD(uCmd) == pThis->id);
    14711471
    1472     if (pThis->enmType == CODEC_TYPE_STAC9220)
     1472    if (pThis->enmType == CODECTYPE_STAC9220)
    14731473    {
    14741474        Assert(CODEC_NID(uCmd) == STAC9220_NID_AFG);
     
    22902290 * @returns VBox status code (not strict).
    22912291 */
    2292 static DECLCALLBACK(int) codecLookup(PHDACODEC pThis, PHDACODECCC pThisCC, uint32_t uCmd, uint64_t *puResp)
    2293 {
     2292static DECLCALLBACK(int) codecLookup(PHDACODECCC pThisCC, uint32_t uCmd, uint64_t *puResp)
     2293{
     2294    PHDACODEC pThis = &pThisCC->State;
     2295
    22942296    /*
    22952297     * Clear the return value and assert some sanity.
     
    22972299    AssertPtr(puResp);
    22982300    *puResp = 0;
    2299     AssertPtr(pThis);
    23002301    AssertPtr(pThisCC);
    23012302    AssertMsgReturn(CODEC_CAD(uCmd) == pThis->id,
     
    23712372{
    23722373    /** DBGF info helpers. */
    2373     PCDBGFINFOHLP pHlp;
     2374    PCDBGFINFOHLP   pHlp;
    23742375    /** Current recursion level. */
    2375     uint8_t uLevel;
     2376    uint8_t         uLevel;
    23762377    /** Pointer to codec state. */
    2377     PHDACODEC pThis;
     2378    PHDACODEC       pThis;
    23782379} CODECDEBUG;
    23792380/** Pointer to the debug info item printing state for the codec. */
     
    25742575
    25752576
    2576 static DECLCALLBACK(void) codecR3DbgListNodes(PHDACODEC pThis, PHDACODECR3 pThisCC, PCDBGFINFOHLP pHlp, const char *pszArgs)
     2577static DECLCALLBACK(void) codecR3DbgListNodes(PHDACODECR3 pThisCC, PCDBGFINFOHLP pHlp, const char *pszArgs)
    25772578{
    25782579    RT_NOREF(pThisCC, pszArgs);
     
    25812582
    25822583    CODECDEBUG DbgInfo;
    2583     DbgInfo.pHlp   = pHlp;
    2584     DbgInfo.pThis  = pThis;
    2585     DbgInfo.uLevel = 0;
     2584    DbgInfo.pHlp    = pHlp;
     2585    DbgInfo.pThis   = &pThisCC->State;
     2586    DbgInfo.uLevel  = 0;
    25862587
    25872588    PCODECDEBUG pInfo = &DbgInfo;
    25882589
    25892590    CODECDBG_INDENT
    2590         for (uint8_t i = 0; i < pThis->cTotalNodes; i++)
    2591         {
    2592             PCODECNODE pNode = &pThis->aNodes[i];
     2591        for (uint8_t i = 0; i < pThisCC->State.cTotalNodes; i++)
     2592        {
     2593            PCODECNODE pNode = &pThisCC->State.aNodes[i];
    25932594
    25942595            /* Start with all nodes which have connection entries set. */
     
    26002601
    26012602
    2602 static DECLCALLBACK(void) codecR3DbgSelector(PHDACODEC pThis, PHDACODECR3 pThisCC, PCDBGFINFOHLP pHlp, const char *pszArgs)
    2603 {
    2604     RT_NOREF(pThis, pThisCC, pHlp, pszArgs);
     2603static DECLCALLBACK(void) codecR3DbgSelector(PHDACODECR3 pThisCC, PCDBGFINFOHLP pHlp, const char *pszArgs)
     2604{
     2605    RT_NOREF(pThisCC, pHlp, pszArgs);
    26052606}
    26062607
     
    26772678
    26782679
    2679 int hdaCodecSaveState(PPDMDEVINS pDevIns, PHDACODEC pThis, PSSMHANDLE pSSM)
    2680 {
    2681     PCPDMDEVHLPR3 pHlp = pDevIns->pHlpR3;
     2680/**
     2681 * Saved the codec state.
     2682 *
     2683 * @returns VBox status code.
     2684 * @param   pDevIns             The device instance of the HDA device.
     2685 * @param   pThisCC             The codec instance data.
     2686 * @param   pSSM                The saved state handle.
     2687 */
     2688int hdaCodecSaveState(PPDMDEVINS pDevIns, PHDACODECR3 pThisCC, PSSMHANDLE pSSM)
     2689{
     2690    PHDACODEC       pThis   = &pThisCC->State;
     2691    PCPDMDEVHLPR3   pHlp    = pDevIns->pHlpR3;
    26822692    AssertLogRelMsgReturn(pThis->cTotalNodes == STAC9221_NUM_NODES, ("cTotalNodes=%#x, should be 0x1c", pThis->cTotalNodes),
    26832693                          VERR_INTERNAL_ERROR);
     
    26902700
    26912701
    2692 int hdaR3CodecLoadState(PPDMDEVINS pDevIns, PHDACODEC pThis, PHDACODECR3 pThisCC, PSSMHANDLE pSSM, uint32_t uVersion)
    2693 {
    2694     PCPDMDEVHLPR3 pHlp = pDevIns->pHlpR3;
    2695     PCSSMFIELD pFields = NULL;
    2696     uint32_t   fFlags  = 0;
     2702/**
     2703 * Loads the codec state.
     2704 *
     2705 * @returns VBox status code.
     2706 * @param   pDevIns             The device instance of the HDA device.
     2707 * @param   pThisCC             The codec instance data.
     2708 * @param   pSSM                The saved state handle.
     2709 * @param   uVersion            The state version.
     2710 */
     2711int hdaR3CodecLoadState(PPDMDEVINS pDevIns, PHDACODECR3 pThisCC, PSSMHANDLE pSSM, uint32_t uVersion)
     2712{
     2713    PHDACODEC       pThis   = &pThisCC->State;
     2714    PCPDMDEVHLPR3   pHlp    = pDevIns->pHlpR3;
     2715    PCSSMFIELD      pFields = NULL;
     2716    uint32_t        fFlags  = 0;
    26972717    if (uVersion >= HDA_SAVED_STATE_VERSION_4)
    26982718    {
     
    27592779 * Powers off the codec (ring-3).
    27602780 *
    2761  * @param   pThisCC             Context-specific codec data (ring-3) to power off.
     2781 * @param   pThisCC     The codec data.
    27622782 */
    27632783void hdaR3CodecPowerOff(PHDACODECR3 pThisCC)
    27642784{
    2765     if (!pThisCC)
    2766         return;
    2767 
    27682785    LogFlowFuncEnter();
    2769 
    27702786    LogRel2(("HDA: Powering off codec ...\n"));
    27712787
     
    27922808 *
    27932809 * @returns VBox status code.
    2794  * @param   pDevIns             Associated device instance.
    2795  * @param   pThis               Shared codec data beteen r0/r3.
    2796  * @param   pThisCC             Context-specific codec data (ring-3).
    2797  * @param   uLUN                Device LUN to assign.
    2798  * @param   pCfg                CFGM node to use for configuration.
    2799  */
    2800 int hdaR3CodecConstruct(PPDMDEVINS pDevIns, PHDACODEC pThis, PHDACODECR3 pThisCC, uint16_t uLUN, PCFGMNODE pCfg)
     2810 * @param   pDevIns     The associated device instance.
     2811 * @param   pThisCC     The codec data.
     2812 * @param   uLUN        Device LUN to assign.
     2813 * @param   pCfg        CFGM node to use for configuration.
     2814 */
     2815int hdaR3CodecConstruct(PPDMDEVINS pDevIns, PHDACODECR3 pThisCC, uint16_t uLUN, PCFGMNODE pCfg)
    28012816{
    28022817    AssertPtrReturn(pDevIns, VERR_INVALID_POINTER);
    2803     AssertPtrReturn(pThis,   VERR_INVALID_POINTER);
    28042818    AssertPtrReturn(pThisCC, VERR_INVALID_POINTER);
    28052819    AssertPtrReturn(pCfg,    VERR_INVALID_POINTER);
     2820    PHDACODEC pThis = &pThisCC->State;
    28062821
    28072822    pThis->id      = uLUN;
    2808     pThis->enmType = CODEC_TYPE_STAC9220; /** @todo Make this dynamic. */
     2823    pThis->enmType = CODECTYPE_STAC9220; /** @todo Make this dynamic. */
    28092824
    28102825    int rc;
     
    28122827    switch (pThis->enmType)
    28132828    {
    2814         case CODEC_TYPE_STAC9220:
     2829        case CODECTYPE_STAC9220:
    28152830        {
    28162831            rc = stac9220Construct(pThis);
     
    28582873 * Destructs a codec.
    28592874 *
    2860  * @param   pThis           Codec to destruct.
    2861  */
    2862 void hdaCodecDestruct(PHDACODEC pThis)
    2863 {
    2864     if (!pThis)
    2865         return;
     2875 * @param   pThisCC     Codec to destruct.
     2876 */
     2877void hdaCodecDestruct(PHDACODECR3 pThisCC)
     2878{
     2879    LogFlowFuncEnter();
    28662880
    28672881    /* Nothing to do here atm. */
    2868 
    2869     LogFlowFuncEnter();
     2882    RT_NOREF(pThisCC);
    28702883}
    28712884
     
    28742887 * Resets a codec.
    28752888 *
    2876  * @param   pThis           Codec to reset.
    2877  */
    2878 void hdaCodecReset(PHDACODEC pThis)
    2879 {
    2880     switch (pThis->enmType)
    2881     {
    2882         case CODEC_TYPE_STAC9220:
    2883             stac9220Reset(pThis);
     2889 * @param   pThisCC     Codec to reset.
     2890 */
     2891void hdaCodecReset(PHDACODECR3 pThisCC)
     2892{
     2893    switch (pThisCC->State.enmType)
     2894    {
     2895        case CODECTYPE_STAC9220:
     2896            stac9220Reset(&pThisCC->State);
    28842897            break;
    28852898
  • trunk/src/VBox/Devices/Audio/DevHdaCodec.h

    r90131 r90134  
    3535typedef struct HDACODECR3 *PHDACODECR3;
    3636#ifdef IN_RING3 /* (A leftover from attempt at running the codec in ring-0.  Deemed unsafe
    37                     and not help with performance when it mattered.) */
     37                    and not a help with performance when it mattered.) */
    3838/** The ICH HDA (Intel) current context codec state. */
    3939typedef CTX_SUFF(PHDACODEC) PHDACODECCC;
     
    4343 * Enumeration specifying the codec type to use.
    4444 */
    45 typedef enum CODEC_TYPE
     45typedef enum CODECTYPE
    4646{
    4747    /** Invalid, do not use. */
    48     CODEC_TYPE_INVALID = 0,
     48    CODECTYPE_INVALID = 0,
    4949    /** SigmaTel 9220 (922x). */
    50     CODEC_TYPE_STAC9220,
     50    CODECTYPE_STAC9220,
    5151    /** Hack to blow the type up to 32-bit. */
    52     CODEC_TYPE_32BIT_HACK = 0x7fffffff
    53 } CODEC_TYPE;
     52    CODECTYPE_32BIT_HACK = 0x7fffffff
     53} CODECTYPE;
    5454
    5555/* PRM 5.3.1 */
     
    803803{
    804804    /** Codec implementation type. */
    805     CODEC_TYPE enmType;
     805    CODECTYPE enmType;
    806806    /** Codec ID. */
    807807    uint16_t   id;
     
    850850    /** @name Public codec functions.
    851851     *  @{  */
    852     DECLR3CALLBACKMEMBER(int,  pfnLookup, (PHDACODEC pThis, PHDACODECR3 pThisCC, uint32_t uVerb, uint64_t *puResp));
    853     DECLR3CALLBACKMEMBER(void, pfnDbgListNodes, (PHDACODEC pThis, PHDACODECR3 pThisCC, PCDBGFINFOHLP pHlp, const char *pszArgs));
    854     DECLR3CALLBACKMEMBER(void, pfnDbgSelector, (PHDACODEC pThis, PHDACODECR3 pThisCC, PCDBGFINFOHLP pHlp, const char *pszArgs));
     852    DECLR3CALLBACKMEMBER(int,  pfnLookup, (PHDACODECR3 pThisCC, uint32_t uVerb, uint64_t *puResp));
     853    DECLR3CALLBACKMEMBER(void, pfnDbgListNodes, (PHDACODECR3 pThisCC, PCDBGFINFOHLP pHlp, const char *pszArgs));
     854    DECLR3CALLBACKMEMBER(void, pfnDbgSelector, (PHDACODECR3 pThisCC, PCDBGFINFOHLP pHlp, const char *pszArgs));
    855855    /** @} */
    856856
     
    907907    DECLR3CALLBACKMEMBER(int,  pfnCbMixerSetVolume, (PPDMDEVINS pDevIns, PDMAUDIOMIXERCTL enmMixerCtl, PPDMAUDIOVOLUME pVol));
    908908    /** @} */
     909
     910    /** The state (was shared with ring-0 for a while). */
     911    HDACODEC                State;
    909912} HDACODECR3;
    910913
    911 int hdaR3CodecConstruct(PPDMDEVINS pDevIns, PHDACODEC pThis, PHDACODECR3 pThisCC, uint16_t uLUN, PCFGMNODE pCfg);
    912 void hdaR3CodecPowerOff(PHDACODECR3 pThisCC);
    913 int hdaR3CodecLoadState(PPDMDEVINS pDevIns, PHDACODEC pThis, PHDACODECR3 pThisCC, PSSMHANDLE pSSM, uint32_t uVersion);
    914 int hdaR3CodecAddStream(PHDACODECR3 pThisCC, PDMAUDIOMIXERCTL enmMixerCtl, PPDMAUDIOSTREAMCFG pCfg);
    915 int hdaR3CodecRemoveStream(PHDACODECR3 pThisCC, PDMAUDIOMIXERCTL enmMixerCtl, bool fImmediate);
    916 
    917 int hdaCodecSaveState(PPDMDEVINS pDevIns, PHDACODEC pThis, PSSMHANDLE pSSM);
    918 void hdaCodecDestruct(PHDACODEC pThis);
    919 void hdaCodecReset(PHDACODEC pThis);
     914int     hdaR3CodecConstruct(PPDMDEVINS pDevIns, PHDACODECR3 pThisCC, uint16_t uLUN, PCFGMNODE pCfg);
     915void    hdaR3CodecPowerOff(PHDACODECR3 pThisCC);
     916int     hdaR3CodecLoadState(PPDMDEVINS pDevIns, PHDACODECR3 pThisCC, PSSMHANDLE pSSM, uint32_t uVersion);
     917int     hdaR3CodecAddStream(PHDACODECR3 pThisCC, PDMAUDIOMIXERCTL enmMixerCtl, PPDMAUDIOSTREAMCFG pCfg);
     918int     hdaR3CodecRemoveStream(PHDACODECR3 pThisCC, PDMAUDIOMIXERCTL enmMixerCtl, bool fImmediate);
     919
     920int     hdaCodecSaveState(PPDMDEVINS pDevIns, PHDACODECR3 pThisCC, PSSMHANDLE pSSM);
     921void    hdaCodecDestruct(PHDACODECR3 pThisCC);
     922void    hdaCodecReset(PHDACODECR3 pThisCC);
    920923
    921924#endif /* !VBOX_INCLUDED_SRC_Audio_DevHdaCodec_h */
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette