VirtualBox

Changeset 53831 in vbox


Ignore:
Timestamp:
Jan 15, 2015 4:15:21 PM (10 years ago)
Author:
vboxsync
Message:

PDM/Audio: Build fix; forgot some files.

Location:
trunk
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • trunk/include/VBox/vmm/pdmaudioifs.h

    r53567 r53831  
    414414typedef struct PDMIAUDIOCONNECTOR
    415415{
     416    DECLR3CALLBACKMEMBER(int, pfnQueryData, (PPDMIAUDIOCONNECTOR pInterface, uint32_t *pcbAvailIn, uint32_t *pcbFreeOut, uint32_t *pcSamplesLive));
     417
    416418    /**
    417419     * Reads PCM audio data from the host (input).
     
    457459
    458460    /**
    459      * Initializes the NULL audio driver as a fallback.
     461     * Initializes the NULL audio driver as a fallback in case no host backend is available.
    460462     *
    461463     * @returns VBox status code.
     
    559561                                           PPDMAUDIOGSTSTRMOUT *ppGstStrmOut));
    560562
     563    DECLR3CALLBACKMEMBER(int, pfnPlayOut, (PPDMIAUDIOCONNECTOR pInterface));
     564
    561565    /**
    562566     * Checks whether a specific guest input stream is active or not.
     
    640644
    641645    /**
    642      * End the host audio input streamm.
     646     * Ends the host audio input streamm.
    643647     *
    644648     * @returns VBox status code.
     
    649653
    650654    /**
    651      * End the host output stream.
     655     * Ends the host output stream.
    652656     *
    653657     * @returns VBox status code.
     
    658662
    659663    /**
    660      * Play audio out from stream buffer.
     664     * Plays an audio stream.
    661665     *
    662666     * @returns VBox status code.
  • trunk/src/VBox/Devices/Audio/DevIchAc97.cpp

    r53830 r53831  
    10601060    while (cbToWrite)
    10611061    {
    1062         uint32_t cbWritten;
    10631062        uint32_t cbWrittenMin = UINT32_MAX;
    10641063
     
    10671066
    10681067#ifdef VBOX_WITH_PDM_AUDIO_DRIVER
     1068        uint32_t cbWritten;
     1069
    10691070        /* Just multiplex the output to the connected backends.
    10701071         * No need to utilize the virtual mixer here (yet). */
     
    13691370                pReg->sr |= SR_DCH; /* CELV? */
    13701371                pThis->bup_flag = 0;
     1372
     1373                rc = VINF_SUCCESS;
    13711374                break;
    13721375            }
     
    14111414            default:
    14121415                AssertMsgFailed(("Index %ld not supported\n", index));
     1416                rc = VERR_NOT_SUPPORTED;
    14131417                break;
    14141418        }
  • trunk/src/VBox/Devices/Audio/DevIchHda.cpp

    r53830 r53831  
    15721572            Assert((!fReset && !fInReset));
    15731573
     1574# ifdef VBOX_WITH_PDM_AUDIO_DRIVER
    15741575            PHDADRIVER pDrv;
     1576# endif
    15751577            switch (iReg)
    15761578            {
     
    21972199 *       but "reports bytes" when all conditions are met (FIFOW).
    21982200 */
    2199 static uint32_t hdaReadAudio(PHDASTATE pThis, PAUDMIXSINK pSink,
    2200                              PHDASTREAMTRANSFERDESC pStreamDesc,
    2201                              uint32_t u32CblLimit, uint32_t *pcbAvail, uint32_t *pcbRead)
     2201static int hdaReadAudio(PHDASTATE pThis, PAUDMIXSINK pSink,
     2202                        PHDASTREAMTRANSFERDESC pStreamDesc,
     2203                        uint32_t u32CblLimit, uint32_t *pcbAvail, uint32_t *pcbRead)
    22022204{
    22032205    PHDABDLEDESC pBdle = &pThis->StInBdle; /** @todo Add support for mic in. */
     
    22522254}
    22532255#else
    2254 static uint32_t hdaReadAudio(PHDASTATE pThis, PHDASTREAMTRANSFERDESC pStreamDesc, uint32_t *pu32Avail, bool *fStop, uint32_t u32CblLimit)
     2256static int hdaReadAudio(PHDASTATE pThis, PHDASTREAMTRANSFERDESC pStreamDesc,
     2257                        uint32_t u32CblLimit, uint32_t *pu32Avail, uint32_t *pcbRead)
    22552258{
    22562259    PHDABDLEDESC pBdle = &pThis->StInBdle;
     
    22602263    uint32_t cbBackendCopy = 0;
    22612264
     2265    int rc;
     2266
    22622267    Log(("hda:ra: CVI(pos:%d, len:%d)\n", pBdle->u32BdleCviPos, pBdle->u32BdleCviLen));
    22632268
    22642269    cb2Copy = hdaCalculateTransferBufferLength(pBdle, pStreamDesc, *pu32Avail, u32CblLimit);
    22652270    if (!cb2Copy)
     2271    {
    22662272        /* if we enter here we can't report "unreported bits" */
    2267         *fStop = true;
     2273        rc = VERR_NO_DATA;
     2274    }
    22682275    else
    22692276    {
     
    22782285        PDMDevHlpPCIPhysWrite(pThis->CTX_SUFF(pDevIns), pBdle->u64BdleCviAddr + pBdle->u32BdleCviPos, pBdle->au8HdaBuffer,
    22792286                              cbBackendCopy);
    2280         STAM_COUNTER_ADD(&pThis->StatBytesWritten, cbBackendCopy);
    22812287
    22822288        /* Don't see any reason why cb2Copy would differ from cbBackendCopy */
     
    22842290
    22852291        if (pBdle->cbUnderFifoW + cbBackendCopy > hdaFifoWToSz(pThis, 0))
     2292        {
    22862293            hdaBackendReadTransferReported(pBdle, cb2Copy, cbBackendCopy, &cbTransferred, pu32Avail);
     2294            rc = VINF_SUCCESS;
     2295        }
    22872296        else
    22882297        {
    22892298            hdaBackendTransferUnreported(pThis, pBdle, pStreamDesc, cbBackendCopy, pu32Avail);
    2290             *fStop = true;
     2299            rc = VERR_NO_DATA;
    22912300        }
    22922301    }
     
    22942303    Assert((cbTransferred <= (SDFIFOS(pThis, 0) + 1)));
    22952304    Log(("hda:ra: CVI(pos:%d, len:%d) cbTransferred: %d\n", pBdle->u32BdleCviPos, pBdle->u32BdleCviLen, cbTransferred));
    2296     return cbTransferred;
     2305
     2306    if (pcbRead)
     2307        *pcbRead = cbTransferred;
     2308
     2309    return rc;
    22972310}
    22982311#endif /* VBOX_WITH_PDM_AUDIO_DRIVER */
     
    23262339                          pBdle->u64BdleCviAddr + pBdle->u32BdleCviPos,
    23272340                          pBdle->au8HdaBuffer + pBdle->cbUnderFifoW, cb2Copy);
     2341#ifdef VBOX_WITH_PDM_AUDIO_DRIVER
    23282342        STAM_COUNTER_ADD(&pThis->StatBytesRead, cb2Copy);
     2343#endif
    23292344
    23302345        /*
     
    26112626    LogFlowFunc(("pThis=%p, cbAvail=%RU32\n", pThis, cbAvail));
    26122627#else
    2613 static DECLCALLBACK(int) hdaTransfer(PHDACODEC pCodec, ENMSOUNDSOURCE enmSrc, int cbAvail)
    2614 {
    2615     AssertPtrReturnVoid(pCodec, VERR_INVALID_POINTER);
     2628static DECLCALLBACK(int) hdaTransfer(PHDACODEC pCodec, ENMSOUNDSOURCE enmSrc, uint32_t cbAvail)
     2629{
     2630    AssertPtrReturn(pCodec, VERR_INVALID_POINTER);
    26162631    PHDASTATE pThis = pCodec->pHDAState;
    2617     AssertPtrReturnVoid(pThis, VERR_INVALID_POINTER);
     2632    AssertPtrReturn(pThis, VERR_INVALID_POINTER);
    26182633#endif /* VBOX_WITH_PDM_AUDIO_DRIVER */
    26192634    int rc;
     
    26822697                rc = hdaReadAudio(pThis, pSink, &StreamDesc, u32CblLimit, &cbAvail, &cbWritten);
    26832698#else
    2684                 rc = hdaReadAudio(pThis, &StreamDesc, u32CblLimit, &cbAvail, &cbWritten);
     2699                rc = hdaReadAudio(pThis, &StreamDesc, u32CblLimit, (uint32_t *)&cbAvail, &cbWritten);
    26852700#endif /* VBOX_WITH_PDM_AUDIO_DRIVER */
    26862701                break;
    26872702            case PO_INDEX:
    2688 #ifdef VBOX_WITH_PDM_AUDIO_DRIVER
    26892703                rc = hdaWriteAudio(pThis, &StreamDesc, u32CblLimit, &cbAvail, &cbWritten);
    2690 #else
    2691                 rc = hdaWriteAudio(pThis, &StreamDesc, u32CblLimit, &cbAvail, &cbWritten);
    2692 #endif /* VBOX_WITH_PDM_AUDIO_DRIVER */
    26932704                break;
    26942705#ifdef VBOX_WITH_PDM_AUDIO_DRIVER
  • trunk/src/VBox/Devices/Audio/DevIchHdaCodec.h

    r53442 r53831  
    117117    DECLR3CALLBACKMEMBER(int, pfnOpenOut, (PHDASTATE pThis, const char *pszName, PPDMAUDIOSTREAMCFG pCfg));
    118118    DECLR3CALLBACKMEMBER(int, pfnSetVolume, (PHDASTATE pThis, bool fMute, uint8_t uVolLeft, uint8_t uVolRight));
    119     /* Callbacks for host driver backends. */
    120     DECLR3CALLBACKMEMBER(void, pfnTransfer, (PHDADRIVER pDrv, ENMSOUNDSOURCE enmSource, uint32_t cbAvail));
    121119#else
    122120    QEMUSoundCard           card;
     
    126124    SWVoiceOut             *SwVoiceOut;
    127125    /* Callbacks for host driver backends. */
    128     DECLR3CALLBACKMEMBER(void, pfnTransfer, (PHDACODEC pCodec, ENMSOUNDSOURCE enmSource, int cbAvail));
     126    DECLR3CALLBACKMEMBER(int, pfnTransfer, (PHDACODEC pCodec, ENMSOUNDSOURCE enmSource, uint32_t cbAvail));
    129127#endif /* VBOX_WITH_PDM_AUDIO_DRIVER */
    130128    /* Callbacks by codec implementation. */
  • trunk/src/VBox/Devices/testcase/tstDeviceStructSize.cpp

    r53442 r53831  
    106106
    107107#ifdef VBOX_WITH_PDM_AUDIO_DRIVER
    108 # undef LOG_GROUP
    109108# include <VBox/vmm/pdmaudioifs.h>
    110109#endif
     110#undef LOG_GROUP
     111#include "../Audio/DevIchAc97.cpp"
     112#undef LOG_GROUP
    111113#include "../Audio/DevIchHda.cpp"
    112114
     
    130132            rc++; \
    131133        } \
    132         /*else */ \
    133             /*printf("%#08x %s\n", RT_OFFSETOF(type, m), #m);*/ \
     134        else \
     135            printf("%#08x (%d) %s\n", RT_OFFSETOF(type, m), RT_OFFSETOF(type, m), #type "." #m); \
    134136    } while (0)
    135137
  • trunk/src/VBox/Devices/testcase/tstDeviceStructSizeRC.cpp

    r53624 r53831  
    88
    99/*
    10  * Copyright (C) 2006-2014 Oracle Corporation
     10 * Copyright (C) 2006-2015 Oracle Corporation
    1111 *
    1212 * This file is part of VirtualBox Open Source Edition (OSE), as
     
    106106#undef LOG_GROUP
    107107#include "../PC/DevHPET.cpp"
     108#undef LOG_GROUP
     109#include "../Audio/DevIchAc97.cpp"
    108110#undef LOG_GROUP
    109111#include "../Audio/DevIchHda.cpp"
     
    18341836    GEN_CHECK_OFF(HPETTIMER, u8Wrap);
    18351837
     1838#ifdef VBOX_WITH_PDM_AUDIO_DRIVER
     1839    GEN_CHECK_SIZE(AC97DRIVER);
     1840    GEN_CHECK_OFF(AC97DRIVER, Node);
     1841    GEN_CHECK_OFF(AC97DRIVER, pAC97State);
     1842    GEN_CHECK_OFF(AC97DRIVER, Flags);
     1843    GEN_CHECK_OFF(AC97DRIVER, uLUN);
     1844    GEN_CHECK_OFF(AC97DRIVER, pConnector);
     1845    GEN_CHECK_OFF(AC97DRIVER, LineIn);
     1846    GEN_CHECK_OFF(AC97DRIVER, MicIn);
     1847    GEN_CHECK_OFF(AC97DRIVER, Out);
     1848
     1849    GEN_CHECK_SIZE(HDADRIVER);
     1850    GEN_CHECK_OFF(HDADRIVER, Node);
     1851    GEN_CHECK_OFF(HDADRIVER, pHDAState);
     1852    GEN_CHECK_OFF(HDADRIVER, Flags);
     1853    GEN_CHECK_OFF(HDADRIVER, uLUN);
     1854    GEN_CHECK_OFF(HDADRIVER, pConnector);
     1855    GEN_CHECK_OFF(HDADRIVER, LineIn);
     1856    GEN_CHECK_OFF(HDADRIVER, MicIn);
     1857    GEN_CHECK_OFF(HDADRIVER, Out);
     1858#endif
     1859
    18361860    GEN_CHECK_SIZE(HDASTATE);
    18371861    GEN_CHECK_OFF(HDASTATE, PciDev);
     
    18441868    GEN_CHECK_OFF(HDASTATE, au32Regs[0]);
    18451869    GEN_CHECK_OFF(HDASTATE, au32Regs[HDA_NREGS]);
    1846     GEN_CHECK_OFF(HDASTATE, StInBdle);
    1847     GEN_CHECK_OFF(HDASTATE, StOutBdle);
    1848     GEN_CHECK_OFF(HDASTATE, StMicBdle);
    18491870    GEN_CHECK_OFF(HDASTATE, u64CORBBase);
    18501871    GEN_CHECK_OFF(HDASTATE, u64RIRBBase);
     
    18591880    GEN_CHECK_OFF(HDASTATE, fRCEnabled);
    18601881#ifdef VBOX_WITH_PDM_AUDIO_DRIVER
    1861     GEN_CHECK_OFF(HDASTATE, cLUNs);
     1882    GEN_CHECK_OFF(HDASTATE, pTimer);
     1883    GEN_CHECK_OFF(HDASTATE, uTicks);
     1884# ifdef VBOX_WITH_STATISTICS
     1885    GEN_CHECK_OFF(HDASTATE, StatTimer);
     1886# endif
    18621887    GEN_CHECK_OFF(HDASTATE, pCodec);
    1863     GEN_CHECK_OFF(HDASTATE, paDrv);
     1888    GEN_CHECK_OFF(HDASTATE, lstDrv);
    18641889    GEN_CHECK_OFF(HDASTATE, pMixer);
    18651890    GEN_CHECK_OFF(HDASTATE, pSinkLineIn);
     
    18671892#else
    18681893    GEN_CHECK_OFF(HDASTATE, pCodec);
     1894#endif
    18691895    GEN_CHECK_OFF(HDASTATE, u64BaseTS);
    18701896    GEN_CHECK_OFF(HDASTATE, u8Counter);
    1871 #endif
    18721897
    18731898    return (0);
  • trunk/src/VBox/Main/src-client/ConsoleImpl2.cpp

    r53815 r53831  
    26882688                case AudioDriverType_WinMM:
    26892689                {
    2690 #ifdef VBOX_WITH_PDM_AUDIO_DRIVER
     2690#  ifdef VBOX_WITH_PDM_AUDIO_DRIVER
    26912691                    #error "Port WinMM audio backend!" /** @todo Still needed? */
    2692 #else
     2692#  else
    26932693                    InsertConfigString(pCfg, "AudioDriver", "winmm");
    2694 #endif
     2694#  endif
    26952695                    break;
    26962696                }
     
    27092709                case AudioDriverType_SolAudio:
    27102710                {
    2711 #ifdef VBOX_WITH_PDM_AUDIO_DRIVER
    2712                     #error "Port Solaris audio backend!" /** @todo Port Solaris driver. */
    2713 #else
     2711# ifdef VBOX_WITH_PDM_AUDIO_DRIVER
     2712                    /** @todo Hack alert: Find a better solution. */
     2713                    LogRel(("Audio: WARNING: Solaris Audio is deprecated, please switch to OSS!\n"));
     2714                    LogRel(("Audio: Automatically setting host audio backend to OSS\n"));
     2715                    /* Manually set backend to OSS for now. */
     2716                    InsertConfigString(pLunL1, "Driver", "OSSAudio");
     2717# else
    27142718                    InsertConfigString(pCfg, "AudioDriver", "solaudio");
    2715 #endif
     2719# endif
    27162720                    break;
    27172721                }
  • trunk/src/VBox/Main/src-client/DrvAudioVRDE.cpp

    r53442 r53831  
    204204                                                 pHstStrmOut->Props.fSigned);
    205205
    206     LogFlowFunc(("hz=%d, chan=%d, cBits=%d, fSigned=%RTbool, format=%ld\n",
     206    pVRDEStrmOut->old_ticks = now;
     207
     208    int cSamplesToSend = live;
     209
     210/*  if (!cSamplesToSend)
     211    {
     212        if (pcSamplesPlayed)
     213            pcSamplesPlayed = 0;
     214
     215        return 0;
     216    }*/
     217
     218    LogFlowFunc(("uFreq=%RU32, cChan=%RU8, cBits=%RU8, fSigned=%RTbool, enmFormat=%ld, cSamplesToSend=%RU32\n",
    207219                 pHstStrmOut->Props.uHz, pHstStrmOut->Props.cChannels,
    208220                 pHstStrmOut->Props.cBits, pHstStrmOut->Props.fSigned,
    209                  format));
    210 
    211     pVRDEStrmOut->old_ticks = now;
    212     int cSamplesToSend = RT_MIN(live, cSamplesPlayed);
     221                 format, cSamplesToSend));
    213222
    214223    uint32_t cReadTotal = 0;
     
    218227    int rc = audioMixBufAcquire(&pHstStrmOut->MixBuf, cSamplesToSend,
    219228                                &pSamples, &cRead);
    220     if (RT_SUCCESS(rc))
     229    if (   RT_SUCCESS(rc)
     230        && cRead)
    221231    {
    222232        cReadTotal = cRead;
     
    228238                                    &pSamples, &cRead);
    229239            if (RT_SUCCESS(rc))
    230             {
    231                 cReadTotal += cRead;
    232240                pDrv->pConsoleVRDPServer->SendAudioSamples(pSamples, cRead, format);
    233             }
     241
     242            cReadTotal += cRead;
    234243        }
    235244    }
    236245
    237     audioMixBufFinish(&pHstStrmOut->MixBuf, cReadTotal);
    238 
     246    audioMixBufFinish(&pHstStrmOut->MixBuf, cSamplesToSend);
     247
     248    /*
     249     * Always report back all samples acquired, regardless of whether the
     250     * VRDP server actually did process those.
     251     */
    239252    if (pcSamplesPlayed)
    240253        *pcSamplesPlayed = cReadTotal;
    241254
    242     LogFlowFunc(("cSamplesToSend=%RU32, rc=%Rrc\n", cSamplesToSend, rc));
     255    LogFlowFunc(("cReadTotal=%RU32, rc=%Rrc\n", cReadTotal, rc));
    243256    return rc;
    244257}
     
    269282    AssertPtrReturn(pDrv, VERR_INVALID_POINTER);
    270283
     284    PVRDESTREAMIN pVRDEStrmOut = (PVRDESTREAMIN)pHstStrmOut;
     285    AssertPtrReturn(pVRDEStrmOut, VERR_INVALID_POINTER);
     286
    271287    LogFlowFunc(("enmStreamCmd=%ld\n", enmStreamCmd));
    272288
    273     return VINF_SUCCESS;
    274 }
    275 
    276 static DECLCALLBACK(int) drvAudioVRDEControlIn(PPDMIHOSTAUDIO pInterface, PPDMAUDIOHSTSTRMIN pHstStrmIn2, /** @todo Fix param types! */
     289    audioMixBufReset(&pHstStrmOut->MixBuf);
     290
     291    return VINF_SUCCESS;
     292}
     293
     294static DECLCALLBACK(int) drvAudioVRDEControlIn(PPDMIHOSTAUDIO pInterface, PPDMAUDIOHSTSTRMIN pHstStrmIn,
    277295                                               PDMAUDIOSTREAMCMD enmStreamCmd)
    278296{
     
    280298    AssertPtrReturn(pDrv, VERR_INVALID_POINTER);
    281299
    282     PVRDESTREAMIN pVRDEStrmIn = (PVRDESTREAMIN)pHstStrmIn2;
     300    PVRDESTREAMIN pVRDEStrmIn = (PVRDESTREAMIN)pHstStrmIn;
    283301    AssertPtrReturn(pVRDEStrmIn, VERR_INVALID_POINTER);
    284302
    285     PPDMAUDIOHSTSTRMIN pHstStrmIn = &pVRDEStrmIn->HstStrmIn;
     303    PPDMAUDIOHSTSTRMIN pThisStrmIn = &pVRDEStrmIn->HstStrmIn;
    286304
    287305    LogFlowFunc(("enmStreamCmd=%ld\n", enmStreamCmd));
     306
     307    if (!pDrv->pConsoleVRDPServer)
     308        return VINF_SUCCESS;
     309
     310    audioMixBufReset(&pThisStrmIn->MixBuf);
    288311
    289312    /* Initialize only if not already done. */
    290313    if (enmStreamCmd == PDMAUDIOSTREAMCMD_ENABLE)
    291314    {
    292         int rc2 = pDrv->pConsoleVRDPServer->SendAudioInputBegin(NULL, pVRDEStrmIn, audioMixBufSize(&pHstStrmIn->MixBuf),
    293                                                                 pHstStrmIn->Props.uHz,
    294                                                                 pHstStrmIn->Props.cChannels, pHstStrmIn->Props.cBits);
     315        int rc2 = pDrv->pConsoleVRDPServer->SendAudioInputBegin(NULL, pVRDEStrmIn, audioMixBufSize(&pThisStrmIn->MixBuf),
     316                                                                pThisStrmIn->Props.uHz,
     317                                                                pThisStrmIn->Props.cChannels, pThisStrmIn->Props.cBits);
    295318#ifdef DEBUG
    296319        if (rc2 == VERR_NOT_SUPPORTED)
     
    299322    }
    300323    else if (enmStreamCmd == PDMAUDIOSTREAMCMD_DISABLE)
     324    {
    301325        pDrv->pConsoleVRDPServer->SendAudioInputEnd(NULL /* pvUserCtx */);
     326    }
    302327
    303328    return VINF_SUCCESS;
     
    345370{
    346371    LogFlowThisFunc(("fIntercept=%RTbool\n", fIntercept));
     372
    347373    return VINF_SUCCESS; /* Never veto. */
    348374}
     
    430456    /* IBase */
    431457    pDrvIns->IBase.pfnQueryInterface  = drvAudioVRDEQueryInterface;
     458    /* IHostAudioR3 */
    432459    pThis->IHostAudioR3.pfnInitIn     = drvAudioVRDEInitIn;
    433460    pThis->IHostAudioR3.pfnInitOut    = drvAudioVRDEInitOut;
Note: See TracChangeset for help on using the changeset viewer.

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