VirtualBox

Changeset 59097 in vbox for trunk/src/VBox/Devices/Audio


Ignore:
Timestamp:
Dec 11, 2015 3:43:12 PM (9 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
104663
Message:

Audio: Implemented PDMAUDIOSTREAMCMD_PAUSE/PDMAUDIOSTREAMCMD_RESUME.

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

Legend:

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

    r59086 r59097  
    429429        }
    430430
     431        case PDMAUDIOSTREAMCMD_PAUSE:
     432        {
     433            if (!(pHstStrmIn->fStatus & PDMAUDIOSTRMSTS_FLAG_PAUSED))
     434            {
     435                Assert(pHstStrmIn->fStatus & PDMAUDIOSTRMSTS_FLAG_ENABLED);
     436                rc = pThis->pHostDrvAudio->pfnControlIn(pThis->pHostDrvAudio, pHstStrmIn, PDMAUDIOSTREAMCMD_PAUSE);
     437                if (RT_SUCCESS(rc))
     438                {
     439                    LogFunc(("[%s] Pausing stream\n", pHstStrmIn->MixBuf.pszName));
     440                    pHstStrmIn->fStatus |= PDMAUDIOSTRMSTS_FLAG_PAUSED;
     441                }
     442                else
     443                    LogFlowFunc(("Backend vetoed pausing input stream, rc=%Rrc\n", rc));
     444            }
     445            else
     446                rc = VINF_SUCCESS;
     447
     448            break;
     449        }
     450
     451        case PDMAUDIOSTREAMCMD_RESUME:
     452        {
     453            if (pHstStrmIn->fStatus & PDMAUDIOSTRMSTS_FLAG_PAUSED)
     454            {
     455                Assert(pHstStrmIn->fStatus & PDMAUDIOSTRMSTS_FLAG_ENABLED);
     456                rc = pThis->pHostDrvAudio->pfnControlIn(pThis->pHostDrvAudio, pHstStrmIn, PDMAUDIOSTREAMCMD_RESUME);
     457                if (RT_SUCCESS(rc))
     458                {
     459                    pHstStrmIn->fStatus &= ~PDMAUDIOSTRMSTS_FLAG_PAUSED;
     460                    LogFunc(("[%s] Resumed stream\n", pHstStrmIn->MixBuf.pszName));
     461                }
     462                else
     463                    LogFlowFunc(("Backend vetoed resuming input stream, rc=%Rrc\n", rc));
     464            }
     465            else
     466                rc = VINF_SUCCESS;
     467
     468            break;
     469        }
     470
    431471        default:
    432472            AssertMsgFailed(("Command %ld not implemented\n", enmStreamCmd));
     
    494534            {
    495535                Assert(pHstStrmOut->fStatus & PDMAUDIOSTRMSTS_FLAG_ENABLED);
    496                 rc = pThis->pHostDrvAudio->pfnControlOut(pThis->pHostDrvAudio, pHstStrmOut, PDMAUDIOSTREAMCMD_DISABLE);
     536                rc = pThis->pHostDrvAudio->pfnControlOut(pThis->pHostDrvAudio, pHstStrmOut, PDMAUDIOSTREAMCMD_PAUSE);
    497537                if (RT_SUCCESS(rc))
    498538                {
     
    514554            {
    515555                Assert(pHstStrmOut->fStatus & PDMAUDIOSTRMSTS_FLAG_ENABLED);
    516                 rc = pThis->pHostDrvAudio->pfnControlOut(pThis->pHostDrvAudio, pHstStrmOut, PDMAUDIOSTREAMCMD_ENABLE);
     556                rc = pThis->pHostDrvAudio->pfnControlOut(pThis->pHostDrvAudio, pHstStrmOut, PDMAUDIOSTREAMCMD_RESUME);
    517557                if (RT_SUCCESS(rc))
    518558                {
  • trunk/src/VBox/Devices/Audio/DrvHostALSAAudio.cpp

    r58378 r59097  
    12401240    {
    12411241        case PDMAUDIOSTREAMCMD_ENABLE:
     1242        case PDMAUDIOSTREAMCMD_RESUME:
    12421243            rc = drvHostALSAAudioStreamCtl(pThisStrmIn->phPCM, false /* fStop */);
    12431244            break;
    12441245
    12451246        case PDMAUDIOSTREAMCMD_DISABLE:
     1247        case PDMAUDIOSTREAMCMD_PAUSE:
    12461248            rc = drvHostALSAAudioStreamCtl(pThisStrmIn->phPCM, true /* fStop */);
    12471249            break;
     
    12691271    {
    12701272        case PDMAUDIOSTREAMCMD_ENABLE:
     1273        case PDMAUDIOSTREAMCMD_RESUME:
    12711274            rc = drvHostALSAAudioStreamCtl(pThisStrmOut->phPCM, false /* fStop */);
    12721275            break;
    12731276
    12741277        case PDMAUDIOSTREAMCMD_DISABLE:
     1278        case PDMAUDIOSTREAMCMD_PAUSE:
    12751279            rc = drvHostALSAAudioStreamCtl(pThisStrmOut->phPCM, true /* fStop */);
    12761280            break;
  • trunk/src/VBox/Devices/Audio/DrvHostCoreAudio.cpp

    r58919 r59097  
    15671567    {
    15681568        case PDMAUDIOSTREAMCMD_ENABLE:
     1569        case PDMAUDIOSTREAMCMD_RESUME:
    15691570        {
    15701571            /* Only start the device if it is actually stopped */
     
    15901591
    15911592        case PDMAUDIOSTREAMCMD_DISABLE:
     1593        case PDMAUDIOSTREAMCMD_PAUSE:
    15921594        {
    15931595            /* Only stop the device if it is actually running */
     
    16411643    {
    16421644        case PDMAUDIOSTREAMCMD_ENABLE:
     1645        case PDMAUDIOSTREAMCMD_RESUME:
    16431646        {
    16441647            /* Only start the device if it is actually stopped */
     
    16641667
    16651668        case PDMAUDIOSTREAMCMD_DISABLE:
     1669        case PDMAUDIOSTREAMCMD_PAUSE:
    16661670        {
    16671671            /* Only stop the device if it is actually running */
  • trunk/src/VBox/Devices/Audio/DrvHostDSound.cpp

    r59060 r59097  
    12581258    {
    12591259        case PDMAUDIOSTREAMCMD_ENABLE:
     1260        case PDMAUDIOSTREAMCMD_RESUME:
    12601261        {
    12611262            DSLOG(("DSound: Playback PDMAUDIOSTREAMCMD_ENABLE\n"));
     
    12781279
    12791280        case PDMAUDIOSTREAMCMD_DISABLE:
     1281        case PDMAUDIOSTREAMCMD_PAUSE:
    12801282        {
    12811283            DSLOG(("DSound: Playback PDMAUDIOSTREAMCMD_DISABLE\n"));
     
    15061508    {
    15071509        case PDMAUDIOSTREAMCMD_ENABLE:
     1510        case PDMAUDIOSTREAMCMD_RESUME:
    15081511        {
    15091512            /* Try to start capture. If it fails, then reopen and try again. */
     
    15281531
    15291532        case PDMAUDIOSTREAMCMD_DISABLE:
     1533        case PDMAUDIOSTREAMCMD_PAUSE:
    15301534        {
    15311535            hr = directSoundCaptureStop(pDSoundStrmIn);
     
    15401544            rc = VERR_INVALID_PARAMETER;
    15411545            break;
    1542     }
     1546        }
    15431547    }
    15441548
  • trunk/src/VBox/Devices/Audio/DrvHostOSSAudio.cpp

    r58378 r59097  
    359359    {
    360360        case PDMAUDIOSTREAMCMD_ENABLE:
     361        case PDMAUDIOSTREAMCMD_RESUME:
    361362        {
    362363            DrvAudioClearBuf(&pHstStrmOut->Props,
     
    374375
    375376        case PDMAUDIOSTREAMCMD_DISABLE:
     377        case PDMAUDIOSTREAMCMD_PAUSE:
    376378        {
    377379            mask = 0;
  • trunk/src/VBox/Devices/Audio/DrvHostPulseAudio.cpp

    r58590 r59097  
    992992    {
    993993        case PDMAUDIOSTREAMCMD_ENABLE:
     994        case PDMAUDIOSTREAMCMD_RESUME:
    994995        {
    995996            pa_threaded_mainloop_lock(g_pMainLoop);
     
    10161017
    10171018        case PDMAUDIOSTREAMCMD_DISABLE:
     1019        case PDMAUDIOSTREAMCMD_PAUSE:
    10181020        {
    10191021            /* Pause audio output (the Pause bit of the AC97 x_CR register is set).
     
    10581060    {
    10591061        case PDMAUDIOSTREAMCMD_ENABLE:
     1062        case PDMAUDIOSTREAMCMD_RESUME:
    10601063        {
    10611064            pa_threaded_mainloop_lock(g_pMainLoop);
     
    10691072
    10701073        case PDMAUDIOSTREAMCMD_DISABLE:
     1074        case PDMAUDIOSTREAMCMD_PAUSE:
    10711075        {
    10721076            pa_threaded_mainloop_lock(g_pMainLoop);
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