VirtualBox

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


Ignore:
Timestamp:
Jun 9, 2021 9:16:59 AM (4 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
145012
Message:

Audio/ValKit: More code for completely self-contained (self) testing. bugref:10008

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

Legend:

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

    r89567 r89575  
    905905     * Initialize the transport layer.
    906906     */
    907     int rc = pThis->pTransport->pfnInit(&pThis->TransportInst, pszBindAddr ? pszBindAddr : "127.0.0.1",
    908                                          uBindPort ? uBindPort : ATS_TCP_DEFAULT_PORT);
     907    int rc = pThis->pTransport->pfnInit(&pThis->TransportInst, pszBindAddr ? pszBindAddr : ATS_TCP_HOST_DEFAULT_ADDR_STR,
     908                                         uBindPort ? uBindPort : ATS_TCP_HOST_DEFAULT_PORT);
    909909    if (RT_SUCCESS(rc))
    910910    {
  • trunk/src/VBox/Devices/Audio/AudioTestService.h

    r89541 r89575  
    2525
    2626
    27 /** Default TCP/IP port the ATS (Audio Test Service) is running on. */
    28 #define ATS_TCP_DEFAULT_PORT        6052
    29 /** Alternative TCP/IP port the ATS (Audio Test Service) is running on. */
    30 #define ATS_TCP_ALT_PORT            6042
     27/** Default TCP/IP port the host ATS (Audio Test Service) is running on. */
     28#define ATS_TCP_HOST_DEFAULT_PORT        6052
     29/** Default TCP/IP address the host ATS (Audio Test Service) is running on. */
     30#define ATS_TCP_HOST_DEFAULT_ADDR_STR    "127.0.0.1"
     31/** Default TCP/IP port the guest ATS (Audio Test Service) is running on. */
     32#define ATS_TCP_GUEST_DEFAULT_PORT       6042
    3133
    3234/**
  • trunk/src/VBox/Devices/Audio/AudioTestServiceClient.cpp

    r89541 r89575  
    294294    audioTestSvcClientInit(pClient);
    295295
    296     /* For simplicity we always run on the same port, localhost only. */
    297     int rc = RTTcpClientConnect(pszAddr ? pszAddr : "127.0.0.1", uPort == 0 ? ATS_TCP_DEFAULT_PORT : uPort, &pClient->hSock);
     296    int rc = RTTcpClientConnect(pszAddr ? pszAddr : ATS_TCP_HOST_DEFAULT_ADDR_STR, uPort == 0 ? ATS_TCP_HOST_DEFAULT_PORT : uPort, &pClient->hSock);
    298297    if (RT_SUCCESS(rc))
    299298    {
  • trunk/src/VBox/Devices/Audio/DrvHostAudioValidationKit.cpp

    r89567 r89575  
    2121*********************************************************************************************************************************/
    2222#define LOG_GROUP LOG_GROUP_DRV_HOST_AUDIO
     23#include <iprt/dir.h>
    2324#include <iprt/env.h>
    2425#include <iprt/mem.h>
     
    196197}
    197198
     199/** @copydoc ATSCALLBACKS::pfnTestSetBegin */
    198200static DECLCALLBACK(int) drvHostValKitTestSetBegin(void const *pvUser, const char *pszTag)
    199201{
     
    201203
    202204    LogRel(("Audio: Validation Kit: Beginning test set '%s'\n", pszTag));
    203 
    204205    return AudioTestSetCreate(&pThis->Set, pThis->szPathTemp, pszTag);
    205 
    206 }
    207 
     206}
     207
     208/** @copydoc ATSCALLBACKS::pfnTestSetEnd */
    208209static DECLCALLBACK(int) drvHostValKitTestSetEnd(void const *pvUser, const char *pszTag)
    209210{
     
    239240 *
    240241 * Creates and registers a new test tone guest recording test.
     242 * This backend will play (inject) input data to the guest.
    241243 */
    242244static DECLCALLBACK(int) drvHostValKitRegisterGuestRecTest(void const *pvUser, PAUDIOTESTTONEPARMS pToneParms)
     
    273275 *
    274276 * Creates and registers a new test tone guest playback test.
     277 * This backend will record the guest output data.
    275278 */
    276279static DECLCALLBACK(int) drvHostValKitRegisterGuestPlayTest(void const *pvUser, PAUDIOTESTTONEPARMS pToneParms)
     
    283286    memcpy(&pTestData->t.TestTone.Parms, pToneParms, sizeof(AUDIOTESTTONEPARMS));
    284287
    285     pTestData->t.TestTone.u.Rec.cbToWrite = PDMAudioPropsMilliToBytes(&pToneParms->Props,
     288    pTestData->t.TestTone.u.Play.cbToRead = PDMAudioPropsMilliToBytes(&pToneParms->Props,
    286289                                                                      pTestData->t.TestTone.Parms.msDuration);
    287290    int rc = RTCritSectEnter(&pThis->CritSect);
     
    289292    {
    290293        LogRel(("Audio: Validation Kit: Registered guest playback test (%RU32ms, %RU64 bytes)\n",
    291                 pTestData->t.TestTone.Parms.msDuration, pTestData->t.TestTone.u.Rec.cbToWrite));
     294                pTestData->t.TestTone.Parms.msDuration, pTestData->t.TestTone.u.Play.cbToRead));
    292295
    293296        RTListAppend(&pThis->lstTestsPlay, &pTestData->Node);
     
    501504        AUDIOTESTPARMS Parms;
    502505        RT_ZERO(Parms);
     506        Parms.enmDir   = PDMAUDIODIR_IN;
     507        Parms.enmType  = AUDIOTESTTYPE_TESTTONE_RECORD;
    503508        Parms.TestTone = pTst->t.TestTone.Parms;
    504509
     
    513518            pTst->msStartedTS = RTTimeMilliTS();
    514519            LogRel(("Audio: Validation Kit: Recording audio data (%RU16Hz, %RU32ms) started\n",
    515                     (uint16_t)pTst->t.TestTone.Tone.rdFreqHz,
    516                     pTst->t.TestTone.Parms.msDuration));
     520                    (uint16_t)Parms.TestTone.dbFreqHz, Parms.TestTone.msDuration));
    517521        }
    518522    }
     
    523527    {
    524528        uint32_t cbToRead = RT_MIN(cbBuf,
    525                                    pTst->t.TestTone.u.Play.cbToRead- pTst->t.TestTone.u.Play.cbRead);
     529                                   pTst->t.TestTone.u.Play.cbToRead - pTst->t.TestTone.u.Play.cbRead);
    526530
    527531        rc = AudioTestSetObjWrite(pTst->pObj, pvBuf, cbToRead);
     
    544548                    drvHostValKiUnregisterPlayTest(pThis, pTst);
    545549
     550                    pThis->pTestCur = NULL;
     551
    546552                    int rc2 = RTCritSectLeave(&pThis->CritSect);
    547553                    AssertRC(rc2);
    548554                }
    549555            }
     556
     557            cbWritten = cbToRead;
    550558        }
    551559    }
     
    597605        AUDIOTESTPARMS Parms;
    598606        RT_ZERO(Parms);
     607        Parms.enmDir   = PDMAUDIODIR_OUT;
     608        Parms.enmType  = AUDIOTESTTYPE_TESTTONE_PLAY;
    599609        Parms.TestTone = pTst->t.TestTone.Parms;
    600610
     
    622632            rc = AudioTestToneGenerate(&pTst->t.TestTone.Tone, pvBuf, RT_MIN(cbToWrite, cbBuf), &cbRead);
    623633        if (   RT_SUCCESS(rc)
    624             && cbToWrite)
     634            && cbRead)
    625635        {
    626             rc = AudioTestSetObjWrite(pTst->pObj, pvBuf, cbToWrite);
     636            rc = AudioTestSetObjWrite(pTst->pObj, pvBuf, cbRead);
    627637            if (RT_SUCCESS(rc))
    628638            {
     
    641651                    {
    642652                        drvHostValKiUnregisterRecTest(pThis, pTst);
     653
     654                        pThis->pTestCur = NULL;
    643655
    644656                        int rc2 = RTCritSectLeave(&pThis->CritSect);
     
    730742
    731743    /** @todo Make this configurable via CFGM. */
    732     const char *pszTcpAddr = "127.0.0.1";
    733        uint32_t uTcpPort   = ATS_TCP_DEFAULT_PORT;
     744    const char *pszTcpAddr = ATS_TCP_HOST_DEFAULT_ADDR_STR;
     745       uint32_t uTcpPort   = ATS_TCP_HOST_DEFAULT_PORT;
    734746
    735747    LogRel(("Audio: Validation Kit: Starting Audio Test Service (ATS) at %s:%RU32...\n",
     
    798810    else
    799811        LogRel(("Audio: Validation Kit: Shutdown of Audio Test Service failed, rc=%Rrc\n", rc));
     812
     813    /* Try cleaning up a bit. */
     814    RTDirRemove(pThis->szPathTemp);
     815    RTDirRemove(pThis->szPathOut);
    800816
    801817    if (RTCritSectIsInitialized(&pThis->CritSect))
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