VirtualBox

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


Ignore:
Timestamp:
Jun 14, 2021 3:41:09 PM (4 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
145133
Message:

Audio/ValKit: Implemented support for downloading (host) test sets. ​bugref:10008

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

Legend:

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

    r89618 r89685  
    475475        }
    476476        else
    477             AssertFailedStmt(rc = VERR_NET_PROTOCOL_ERROR);
     477        {
     478            AssertMsgFailed(("Got unexpected reply '%s'", Reply.szOp));
     479            rc = VERR_NET_PROTOCOL_ERROR;
     480        }
    478481
    479482        audioTestSvcClientReplyDestroy(&Reply);
  • trunk/src/VBox/Devices/Audio/DrvHostAudioValidationKit.cpp

    r89584 r89685  
    7777    } u;
    7878    /** The test tone instance to use. */
    79     AUDIOTESTTONE      Tone;
     79    AUDIOTESTTONE              Tone;
    8080    /** The test tone parameters to use. */
    81     AUDIOTESTTONEPARMS Parms;
     81    AUDIOTESTTONEPARMS         Parms;
    8282} VALKITTESTTONEDATA;
    8383
     
    140140    /** The Audio Test Service (ATS) instance. */
    141141    ATSSERVER           Srv;
     142    /** Absolute path to the packed up test set archive.
     143     *  Keep it simple for now and only support one (open) archive at a time. */
     144    char                szTestSetArchive[RTPATH_MAX];
     145    /** File handle to the (opened) test set archive for reading. */
     146    RTFILE              hTestSetArchive;
     147
    142148} DRVHOSTVALKITAUDIO;
    143149/** Pointer to a Validation Kit host audio driver instance. */
    144150typedef DRVHOSTVALKITAUDIO *PDRVHOSTVALKITAUDIO;
    145151
     152
     153/*********************************************************************************************************************************
     154*   Internal test handling code                                                                                                  *
     155*********************************************************************************************************************************/
    146156
    147157/**
     
    210220}
    211221
     222
     223/*********************************************************************************************************************************
     224*   ATS callback implementations                                                                                                 *
     225*********************************************************************************************************************************/
     226
    212227/** @copydoc ATSCALLBACKS::pfnTestSetEnd */
    213228static DECLCALLBACK(int) drvHostValKitTestSetEnd(void const *pvUser, const char *pszTag)
     
    224239    /* Before destroying the test environment, pack up the test set so
    225240     * that it's ready for transmission. */
    226     char szFileOut[RTPATH_MAX];
    227     int rc = AudioTestSetPack(pSet, pThis->szPathOut, szFileOut, sizeof(szFileOut));
    228     if (RT_SUCCESS(rc))
    229         LogRel(("Audio: Validation Kit: Packed up to '%s'\n", szFileOut));
     241    int rc = AudioTestSetPack(pSet, pThis->szPathOut, pThis->szTestSetArchive, sizeof(pThis->szTestSetArchive));
     242    if (RT_SUCCESS(rc))
     243        LogRel(("Audio: Validation Kit: Packed up to '%s'\n", pThis->szTestSetArchive));
    230244
    231245    int rc2 = AudioTestSetWipe(pSet);
     
    236250
    237251    if (RT_FAILURE(rc))
    238         LogRel(("Audio: Validation Kit: Test set prologue failed with %Rrc\n", rc));
     252        LogRel(("Audio: Validation Kit: Ending test set failed with %Rrc\n", rc));
    239253
    240254    return rc;
     
    312326    return VINF_SUCCESS;
    313327}
     328
     329/** @copydoc ATSCALLBACKS::pfnTestSetSendBegin */
     330static DECLCALLBACK(int) drvHostValKitTestSetSendBeginCallback(void const *pvUser, const char *pszTag)
     331{
     332    RT_NOREF(pszTag);
     333
     334    PDRVHOSTVALKITAUDIO pThis = (PDRVHOSTVALKITAUDIO)pvUser;
     335
     336    if (!RTFileExists(pThis->szTestSetArchive)) /* Has the archive successfully been created yet? */
     337        return VERR_WRONG_ORDER;
     338
     339    int rc = RTFileOpen(&pThis->hTestSetArchive, pThis->szTestSetArchive, RTFILE_O_READ | RTFILE_O_OPEN | RTFILE_O_DENY_WRITE);
     340    if (RT_SUCCESS(rc))
     341    {
     342        uint64_t uSize;
     343        rc = RTFileQuerySize(pThis->hTestSetArchive, &uSize);
     344        if (RT_SUCCESS(rc))
     345            LogRel(("Audio: Validation Kit: Sending test set '%s' (%zu bytes)\n", pThis->szTestSetArchive, uSize));
     346    }
     347
     348    return rc;
     349}
     350
     351/** @copydoc ATSCALLBACKS::pfnTestSetSendRead */
     352static DECLCALLBACK(int) drvHostValKitTestSetSendReadCallback(void const *pvUser,
     353                                                              const char *pszTag, void *pvBuf, size_t cbBuf, size_t *pcbRead)
     354{
     355    RT_NOREF(pszTag);
     356
     357    PDRVHOSTVALKITAUDIO pThis = (PDRVHOSTVALKITAUDIO)pvUser;
     358
     359    return RTFileRead(pThis->hTestSetArchive, pvBuf, cbBuf, pcbRead);
     360}
     361
     362/** @copydoc ATSCALLBACKS::pfnTestSetSendEnd */
     363static DECLCALLBACK(int) drvHostValKitTestSetSendEndCallback(void const *pvUser, const char *pszTag)
     364{
     365    RT_NOREF(pszTag);
     366
     367    PDRVHOSTVALKITAUDIO pThis = (PDRVHOSTVALKITAUDIO)pvUser;
     368
     369    int rc = RTFileClose(pThis->hTestSetArchive);
     370    if (RT_SUCCESS(rc))
     371    {
     372        pThis->hTestSetArchive = NIL_RTFILE;
     373    }
     374
     375    return rc;
     376}
     377
     378
     379/*********************************************************************************************************************************
     380*   PDMIHOSTAUDIO interface implementation                                                                                       *
     381*********************************************************************************************************************************/
    314382
    315383/**
     
    363431    return rc;
    364432}
    365 
    366433
    367434/**
     
    742809
    743810    ATSCALLBACKS Callbacks;
    744     Callbacks.pfnTestSetBegin = drvHostValKitTestSetBegin;
    745     Callbacks.pfnTestSetEnd   = drvHostValKitTestSetEnd;
    746     Callbacks.pfnTonePlay     = drvHostValKitRegisterGuestRecTest;
    747     Callbacks.pfnToneRecord   = drvHostValKitRegisterGuestPlayTest;
    748     Callbacks.pvUser          = pThis;
     811    RT_ZERO(Callbacks);
     812    Callbacks.pfnTestSetBegin     = drvHostValKitTestSetBegin;
     813    Callbacks.pfnTestSetEnd       = drvHostValKitTestSetEnd;
     814    Callbacks.pfnTonePlay         = drvHostValKitRegisterGuestRecTest;
     815    Callbacks.pfnToneRecord       = drvHostValKitRegisterGuestPlayTest;
     816    Callbacks.pfnTestSetSendBegin = drvHostValKitTestSetSendBeginCallback;
     817    Callbacks.pfnTestSetSendRead  = drvHostValKitTestSetSendReadCallback;
     818    Callbacks.pfnTestSetSendEnd   = drvHostValKitTestSetSendEndCallback;
     819    Callbacks.pvUser              = pThis;
    749820
    750821    /** @todo Make this configurable via CFGM. */
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