VirtualBox

Changeset 70927 in vbox for trunk/src/VBox/Devices


Ignore:
Timestamp:
Feb 9, 2018 10:35:53 AM (7 years ago)
Author:
vboxsync
Message:

Audio/DrvHostDSound.cpp: Added underrun / overrun counters.

File:
1 edited

Legend:

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

    r70926 r70927  
    136136            /** Current read offset (in bytes) within the DSB. */
    137137            DWORD                       offReadPos;
     138            /** Number of buffer overruns happened. Used for logging. */
     139            uint8_t                     cOverruns;
    138140        } In;
    139141        struct
     
    154156            /** Timestamp (in ms) of When the last playback has happened. */
    155157            uint64_t                    tsLastPlayMs;
     158            /** Number of buffer underruns happened. Used for logging. */
     159            uint8_t                     cUnderruns;
    156160        } Out;
    157161    };
     
    922926    Assert(pStreamDS->fEnabled == false);
    923927
     928    pStreamDS->fEnabled           = true;
     929
    924930    pStreamDS->Out.fFirstPlayback = true;
    925     pStreamDS->fEnabled           = true;
     931    pStreamDS->Out.cUnderruns     = 0;
    926932
    927933    DSLOG(("DSound: Playback started\n"));
     
    13171323                {
    13181324                    pStreamDS->fEnabled = true;
     1325
     1326                    pStreamDS->In.cOverruns = 0;
    13191327                }
    13201328                else
     
    19681976
    19691977                    uint32_t cbFree = (uint32_t)RTCircBufFree(pCircBuf);
    1970                     if (!cbFree)
     1978                    if (   !cbFree
     1979                        || pStreamDS->In.cOverruns < 32) /** @todo Make this configurable. */
     1980                    {
    19711981                        DSLOG(("DSound: Warning: Capture buffer full, skipping to record data (%RU32 bytes)\n", cbUsed));
     1982                        pStreamDS->In.cOverruns++;
     1983                    }
    19721984
    19731985                    DWORD cbToCapture = RT_MIN(cbUsed, cbFree);
     
    20662078
    20672079                    DWORD cbUsed   = (uint32_t)RTCircBufUsed(pCircBuf);
    2068                     if (!cbUsed)
     2080                    if (   !cbUsed
     2081                        || pStreamDS->Out.cUnderruns < 32) /** @todo Make this configurable. */
     2082                    {
    20692083                        DSLOG(("DSound: Warning: No more playback data available within time (%RU32 bytes free)\n", cbFree));
     2084                        pStreamDS->Out.cUnderruns++;
     2085                    }
    20702086
    20712087                    DWORD cbToPlay = RT_MIN(cbFree, cbUsed);
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