VirtualBox

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


Ignore:
Timestamp:
Jul 2, 2021 9:41:02 AM (4 years ago)
Author:
vboxsync
Message:

Audio/ValKit: Cleaned up test object API + handling. bugref:10008

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

Legend:

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

    r89990 r89994  
    7575*********************************************************************************************************************************/
    7676/**
    77  * Structure for an internal object handle.
    78  */
    79 typedef struct AUDIOTESTOBJHANDLE
    80 {
     77 * Enumeration for an audio test object type.
     78 */
     79typedef enum AUDIOTESTOBJTYPE
     80{
     81    /** Unknown / invalid, do not use. */
     82    AUDIOTESTOBJTYPE_UNKNOWN = 0,
     83    /** The test object is a file. */
     84    AUDIOTESTOBJTYPE_FILE,
     85    /** The usual 32-bit hack. */
     86    AUDIOTESTOBJTYPE_32BIT_HACK = 0x7fffffff
     87} AUDIOTESTOBJTYPE;
     88
     89/**
     90 * Structure for keeping an audio test object file.
     91 */
     92typedef struct AUDIOTESTOBJFILE
     93{
     94    /** File handle. */
     95    RTFILE              hFile;
     96    /** Total size (in bytes). */
     97    size_t              cbSize;
     98} AUDIOTESTOBJFILE;
     99/** Pointer to an audio test object file. */
     100typedef AUDIOTESTOBJFILE *PAUDIOTESTOBJFILE;
     101
     102/**
     103 * Enumeration for an audio test object meta data type.
     104 */
     105typedef enum AUDIOTESTOBJMETADATATYPE
     106{
     107    /** Unknown / invalid, do not use. */
     108    AUDIOTESTOBJMETADATATYPE_INVALID = 0,
     109    /** Meta data is an UTF-8 string. */
     110    AUDIOTESTOBJMETADATATYPE_STRING,
     111    /** The usual 32-bit hack. */
     112    AUDIOTESTOBJMETADATATYPE_32BIT_HACK = 0x7fffffff
     113} AUDIOTESTOBJMETADATATYPE;
     114
     115/**
     116 * Structure for keeping a meta data block.
     117 */
     118typedef struct AUDIOTESTOBJMETA
     119{
     120    /** List node. */
     121    RTLISTNODE                Node;
     122    /** Meta data type. */
     123    AUDIOTESTOBJMETADATATYPE  enmType;
     124    /** Meta data block. */
     125    void                     *pvMeta;
     126    /** Size (in bytes) of \a pvMeta. */
     127    size_t                    cbMeta;
     128} AUDIOTESTOBJMETA;
     129/** Pointer to an audio test object file. */
     130typedef AUDIOTESTOBJMETA *PAUDIOTESTOBJMETA;
     131
     132/**
     133 * Structure for keeping a single audio test object.
     134 *
     135 * A test object is data which is needed in order to perform and verify one or
     136 * more audio test case(s).
     137 */
     138typedef struct AUDIOTESTOBJINT
     139{
     140    /** List node. */
     141    RTLISTNODE           Node;
    81142    /** Pointer to test set this handle is bound to. */
    82     PAUDIOTESTSET       pSet;
     143    PAUDIOTESTSET        pSet;
    83144    /** As we only support .INI-style files for now, this only has the object's section name in it. */
    84145    /** @todo Make this more generic (union, ++). */
    85     char                szSec[AUDIOTEST_MAX_SEC_LEN];
    86 } AUDIOTESTOBJHANDLE;
    87 /** Pointer to an audio test object handle. */
    88 typedef AUDIOTESTOBJHANDLE* PAUDIOTESTOBJHANDLE;
     146    char                 szSec[AUDIOTEST_MAX_SEC_LEN];
     147    /** The UUID of the object.
     148     *  Used to identify an object within a test set. */
     149    RTUUID               Uuid;
     150    /** Number of references to this test object. */
     151    uint32_t             cRefs;
     152    /** Name of the test object.
     153     *  Must not contain a path and has to be able to serialize to disk. */
     154    char                 szName[64];
     155    /** The object type. */
     156    AUDIOTESTOBJTYPE     enmType;
     157    /** Meta data list. */
     158    RTLISTANCHOR         lstMeta;
     159    /** Union for holding the object type-specific data. */
     160    union
     161    {
     162        AUDIOTESTOBJFILE File;
     163    };
     164} AUDIOTESTOBJINT;
     165/** Pointer to an audio test object. */
     166typedef AUDIOTESTOBJINT *PAUDIOTESTOBJINT;
    89167
    90168/**
     
    131209*   Internal Functions                                                                                                           *
    132210*********************************************************************************************************************************/
    133 static int  audioTestSetObjCloseInternal(PAUDIOTESTOBJ pObj);
    134 static void audioTestSetObjFinalize(PAUDIOTESTOBJ pObj);
     211static int  audioTestObjCloseInternal(PAUDIOTESTOBJINT pObj);
     212static void audioTestObjFinalize(PAUDIOTESTOBJINT pObj);
    135213
    136214
     
    703781 * @param   cbVal               Size (in bytes) of \a pszVal.
    704782 */
    705 static int audioTestObjGetStr(PAUDIOTESTOBJHANDLE phObj, const char *pszKey, char *pszVal, size_t cbVal)
     783static int audioTestObjGetStr(PAUDIOTESTOBJINT phObj, const char *pszKey, char *pszVal, size_t cbVal)
    706784{
    707785    /** @todo For now we only support .INI-style files. */
     
    718796 * @param   pbVal               Where to return the value on success.
    719797 */
    720 static int audioTestObjGetBool(PAUDIOTESTOBJHANDLE phObj, const char *pszKey, bool *pbVal)
     798static int audioTestObjGetBool(PAUDIOTESTOBJINT phObj, const char *pszKey, bool *pbVal)
    721799{
    722800    char szVal[_1K];
     
    736814 * @param   puVal               Where to return the value on success.
    737815 */
    738 static int audioTestObjGetUInt8(PAUDIOTESTOBJHANDLE phObj, const char *pszKey, uint8_t *puVal)
     816static int audioTestObjGetUInt8(PAUDIOTESTOBJINT phObj, const char *pszKey, uint8_t *puVal)
    739817{
    740818    char szVal[_1K];
     
    754832 * @param   puVal               Where to return the value on success.
    755833 */
    756 static int audioTestObjGetUInt32(PAUDIOTESTOBJHANDLE phObj, const char *pszKey, uint32_t *puVal)
     834static int audioTestObjGetUInt32(PAUDIOTESTOBJINT phObj, const char *pszKey, uint32_t *puVal)
    757835{
    758836    char szVal[_1K];
     
    894972        return rc;
    895973
    896     PAUDIOTESTOBJ pObj, pObjNext;
    897     RTListForEachSafe(&pSet->lstObj, pObj, pObjNext, AUDIOTESTOBJ, Node)
    898     {
    899         rc = audioTestSetObjCloseInternal(pObj);
     974    PAUDIOTESTOBJINT pObj, pObjNext;
     975    RTListForEachSafe(&pSet->lstObj, pObj, pObjNext, AUDIOTESTOBJINT, Node)
     976    {
     977        rc = audioTestObjCloseInternal(pObj);
    900978        if (RT_SUCCESS(rc))
    901979        {
     
    10331111    AssertRCReturn(rc, rc);
    10341112
    1035     PAUDIOTESTOBJ pObj;
    1036     RTListForEach(&pSet->lstObj, pObj, AUDIOTESTOBJ, Node)
     1113    PAUDIOTESTOBJINT pObj;
     1114    RTListForEach(&pSet->lstObj, pObj, AUDIOTESTOBJINT, Node)
    10371115    {
    10381116        rc = audioTestManifestWrite(pSet, "\n");
     
    11031181    char szFilePath[RTPATH_MAX];
    11041182
    1105     PAUDIOTESTOBJ pObj;
    1106     RTListForEach(&pSet->lstObj, pObj, AUDIOTESTOBJ, Node)
    1107     {
    1108         int rc2 = audioTestSetObjCloseInternal(pObj);
     1183    PAUDIOTESTOBJINT pObj;
     1184    RTListForEach(&pSet->lstObj, pObj, AUDIOTESTOBJINT, Node)
     1185    {
     1186        int rc2 = audioTestObjCloseInternal(pObj);
    11091187        if (RT_SUCCESS(rc2))
    11101188        {
     
    11391217 * @param   pSet                Test set to create and register new object for.
    11401218 * @param   pszName             Name of new object to create.
    1141  * @param   ppObj               Where to return the pointer to the newly created object on success.
    1142  */
    1143 int AudioTestSetObjCreateAndRegister(PAUDIOTESTSET pSet, const char *pszName, PAUDIOTESTOBJ *ppObj)
     1219 * @param   pObj                Where to return the pointer to the newly created object on success.
     1220 */
     1221int AudioTestSetObjCreateAndRegister(PAUDIOTESTSET pSet, const char *pszName, PAUDIOTESTOBJ pObj)
    11441222{
    11451223    AssertReturn(pSet->cTestsRunning == 1, VERR_WRONG_ORDER); /* No test nesting allowed. */
     
    11471225    AssertPtrReturn(pszName, VERR_INVALID_POINTER);
    11481226
    1149     PAUDIOTESTOBJ pObj = (PAUDIOTESTOBJ)RTMemAlloc(sizeof(AUDIOTESTOBJ));
    1150     AssertPtrReturn(pObj, VERR_NO_MEMORY);
    1151 
    1152     RTListInit(&pObj->lstMeta);
    1153 
    1154     if (RTStrPrintf2(pObj->szName, sizeof(pObj->szName), "%04RU32-%s", pSet->cObj, pszName) <= 0)
     1227    PAUDIOTESTOBJINT pThis = (PAUDIOTESTOBJINT)RTMemAlloc(sizeof(AUDIOTESTOBJINT));
     1228    AssertPtrReturn(pThis, VERR_NO_MEMORY);
     1229
     1230    RTListInit(&pThis->lstMeta);
     1231
     1232    if (RTStrPrintf2(pThis->szName, sizeof(pThis->szName), "%04RU32-%s", pSet->cObj, pszName) <= 0)
    11551233        AssertFailedReturn(VERR_BUFFER_OVERFLOW);
    11561234
     
    11581236
    11591237    char szObjPathAbs[RTPATH_MAX];
    1160     int rc = audioTestSetGetObjPath(pSet, szObjPathAbs, sizeof(szObjPathAbs), pObj->szName);
     1238    int rc = audioTestSetGetObjPath(pSet, szObjPathAbs, sizeof(szObjPathAbs), pThis->szName);
    11611239    if (RT_SUCCESS(rc))
    11621240    {
    1163         rc = RTFileOpen(&pObj->File.hFile, szObjPathAbs, RTFILE_O_CREATE | RTFILE_O_WRITE | RTFILE_O_DENY_WRITE);
     1241        rc = RTFileOpen(&pThis->File.hFile, szObjPathAbs, RTFILE_O_CREATE | RTFILE_O_WRITE | RTFILE_O_DENY_WRITE);
    11641242        if (RT_SUCCESS(rc))
    11651243        {
    1166             pObj->enmType = AUDIOTESTOBJTYPE_FILE;
    1167             pObj->cRefs   = 1; /* Currently only 1:1 mapping. */
    1168 
    1169             RTListAppend(&pSet->lstObj, &pObj->Node);
     1244            pThis->enmType = AUDIOTESTOBJTYPE_FILE;
     1245            pThis->cRefs   = 1; /* Currently only 1:1 mapping. */
     1246
     1247            RTListAppend(&pSet->lstObj, &pThis->Node);
    11701248            pSet->cObj++;
    11711249
    11721250            /* Generate + set an UUID for the object and assign it to the current test. */
    1173             rc = RTUuidCreate(&pObj->Uuid);
     1251            rc = RTUuidCreate(&pThis->Uuid);
    11741252            AssertRCReturn(rc, rc);
    11751253            char szUuid[AUDIOTEST_MAX_OBJ_LEN];
    1176             rc = RTUuidToStr(&pObj->Uuid, szUuid, sizeof(szUuid));
     1254            rc = RTUuidToStr(&pThis->Uuid, szUuid, sizeof(szUuid));
    11771255            AssertRCReturn(rc, rc);
    11781256
     
    11831261            pSet->pTestCur->cObj++;
    11841262
    1185             *ppObj = pObj;
     1263            *pObj = pThis;
    11861264        }
    11871265    }
    11881266
    11891267    if (RT_FAILURE(rc))
    1190         RTMemFree(pObj);
     1268        RTMemFree(pThis);
    11911269
    11921270    return rc;
     
    11971275 *
    11981276 * @returns VBox status code.
    1199  * @param   pObj                Audio test object to write to.
     1277 * @param   Obj                 Audio test object to write to.
    12001278 * @param   pvBuf               Pointer to data to write.
    12011279 * @param   cbBuf               Size (in bytes) of \a pvBuf to write.
    12021280 */
    1203 int AudioTestSetObjWrite(PAUDIOTESTOBJ pObj, const void *pvBuf, size_t cbBuf)
    1204 {
     1281int AudioTestObjWrite(AUDIOTESTOBJ Obj, const void *pvBuf, size_t cbBuf)
     1282{
     1283    AUDIOTESTOBJINT *pThis = Obj;
     1284
    12051285    /** @todo Generalize this function more once we have more object types. */
    1206     AssertReturn(pObj->enmType == AUDIOTESTOBJTYPE_FILE, VERR_INVALID_PARAMETER);
    1207 
    1208     return RTFileWrite(pObj->File.hFile, pvBuf, cbBuf, NULL);
     1286    AssertReturn(pThis->enmType == AUDIOTESTOBJTYPE_FILE, VERR_INVALID_PARAMETER);
     1287
     1288    return RTFileWrite(pThis->File.hFile, pvBuf, cbBuf, NULL);
    12091289}
    12101290
     
    12131293 *
    12141294 * @returns VBox status code.
    1215  * @param   pObj                Test object to add meta data for.
     1295 * @param   Obj                 Test object to add meta data for.
    12161296 * @param   pszFormat           Format string to add.
    12171297 * @param   va                  Variable arguments list to use for the format string.
    12181298 */
    1219 static int audioTestSetObjAddMetadataStrV(PAUDIOTESTOBJ pObj, const char *pszFormat, va_list va)
     1299static int audioTestObjAddMetadataStrV(PAUDIOTESTOBJINT pObj, const char *pszFormat, va_list va)
    12201300{
    12211301    PAUDIOTESTOBJMETA pMeta = (PAUDIOTESTOBJMETA)RTMemAlloc(sizeof(AUDIOTESTOBJMETA));
     
    12371317 *
    12381318 * @returns VBox status code.
    1239  * @param   pObj                Test object to add meta data for.
     1319 * @param   Obj                 Test object to add meta data for.
    12401320 * @param   pszFormat           Format string to add.
    12411321 * @param   ...                 Variable arguments for the format string.
    12421322 */
    1243 int AudioTestSetObjAddMetadataStr(PAUDIOTESTOBJ pObj, const char *pszFormat, ...)
    1244 {
     1323int AudioTestObjAddMetadataStr(AUDIOTESTOBJ Obj, const char *pszFormat, ...)
     1324{
     1325    AUDIOTESTOBJINT *pThis = Obj;
     1326
    12451327    va_list va;
    12461328
    12471329    va_start(va, pszFormat);
    1248     int rc = audioTestSetObjAddMetadataStrV(pObj, pszFormat, va);
     1330    int rc = audioTestObjAddMetadataStrV(pThis, pszFormat, va);
    12491331    va_end(va);
    12501332
     
    12561338 *
    12571339 * @returns VBox status code.
    1258  * @param   pObj                Audio test object to close.
    1259  */
    1260 int AudioTestSetObjClose(PAUDIOTESTOBJ pObj)
    1261 {
    1262     if (!pObj)
     1340 * @param   Obj                 Audio test object to close.
     1341 */
     1342int AudioTestObjClose(AUDIOTESTOBJ Obj)
     1343{
     1344    AUDIOTESTOBJINT *pThis = Obj;
     1345
     1346    if (!pThis)
    12631347        return VINF_SUCCESS;
    12641348
    1265     audioTestSetObjFinalize(pObj);
    1266 
    1267     return audioTestSetObjCloseInternal(pObj);
     1349    audioTestObjFinalize(pThis);
     1350
     1351    return audioTestObjCloseInternal(pThis);
    12681352}
    12691353
     
    12751359 * @param   pszDesc             Test description.
    12761360 * @param   pParms              Test parameters to use.
    1277  * @param   ppEntry             Where to return the new test handle.
     1361 * @param   ppEntry             Where to return the new test
    12781362 */
    12791363int AudioTestSetTestBegin(PAUDIOTESTSET pSet, const char *pszDesc, PAUDIOTESTPARMS pParms, PAUDIOTESTENTRY *ppEntry)
     
    15391623 * @param   phSec               Where to store the object handle on success.
    15401624 */
    1541 static int audioTestSetGetSection(PAUDIOTESTSET pSet, const char *pszSec, PAUDIOTESTOBJHANDLE phSec)
     1625static int audioTestSetGetSection(PAUDIOTESTSET pSet, const char *pszSec, PAUDIOTESTOBJINT phSec)
    15421626{
    15431627    int rc = RTStrCopy(phSec->szSec, sizeof(phSec->szSec), pszSec);
     
    15611645 * @param   phTst               Where to store the object handle on success.
    15621646 */
    1563 static int audioTestSetGetTest(PAUDIOTESTSET pSet, uint32_t idxTst, PAUDIOTESTOBJHANDLE phTst)
     1647static int audioTestSetGetTest(PAUDIOTESTSET pSet, uint32_t idxTst, PAUDIOTESTOBJINT phTst)
    15641648{
    15651649    char szSec[AUDIOTEST_MAX_SEC_LEN];
     
    15711655
    15721656/**
    1573  * Retrieves an object handle of a specific object.
    1574  *
    1575  * @returns VBox status code.
    1576  * @param   phParent            Object handle (parent) the object contains.
     1657 * Retrieves a child object of a specific parent object.
     1658 *
     1659 * @returns VBox status code.
     1660 * @param   phParent            Parent object the child object contains.
    15771661 * @param   idxObj              Index of object to retrieve the object handle for.
    15781662 * @param   phObj               Where to store the object handle on success.
    15791663 */
    1580 static int audioTestSetGetObj(PAUDIOTESTOBJHANDLE phParent, uint32_t idxObj, PAUDIOTESTOBJHANDLE phObj)
     1664static int audioTestObjGetChild(PAUDIOTESTOBJINT phParent, uint32_t idxObj, PAUDIOTESTOBJINT phObj)
    15811665{
    15821666    char szObj[AUDIOTEST_MAX_SEC_LEN];
     
    16131697 */
    16141698static int audioTestVerifyValue(PAUDIOTESTVERIFYJOB pVerify,
    1615                                 PAUDIOTESTOBJHANDLE phObjA, PAUDIOTESTOBJHANDLE phObjB, const char *pszKey, const char *pszVal, const char *pszErrFmt, ...)
     1699                                PAUDIOTESTOBJINT phObjA, PAUDIOTESTOBJINT phObjB, const char *pszKey, const char *pszVal, const char *pszErrFmt, ...)
    16161700{
    16171701    va_list va;
     
    16561740 * @param   ppObj               Where to return the pointer of the allocated and registered audio test object.
    16571741 */
    1658 static int audioTestSetObjOpen(PAUDIOTESTOBJHANDLE phObj, PAUDIOTESTOBJ *ppObj)
    1659 {
    1660     PAUDIOTESTOBJ pObj = (PAUDIOTESTOBJ)RTMemAlloc(sizeof(AUDIOTESTOBJ));
     1742static int audioTestObjOpen(PAUDIOTESTOBJINT phObj, PAUDIOTESTOBJINT *ppObj)
     1743{
     1744    PAUDIOTESTOBJINT pObj = (PAUDIOTESTOBJINT)RTMemAlloc(sizeof(AUDIOTESTOBJINT));
    16611745    AssertPtrReturn(pObj, VERR_NO_MEMORY);
    16621746
     
    16971781 *
    16981782 * @returns VBox status code.
    1699  * @param   pObj                Object to close.
    1700  */
    1701 static int audioTestSetObjCloseInternal(PAUDIOTESTOBJ pObj)
     1783 * @param   Obj                 Object to close.
     1784 */
     1785static int audioTestObjCloseInternal(PAUDIOTESTOBJINT pObj)
    17021786{
    17031787    int rc;
     
    17211805 * Finalizes an audio test set object.
    17221806 *
    1723  * @param   pObj                Test object to finalize.
    1724  */
    1725 static void audioTestSetObjFinalize(PAUDIOTESTOBJ pObj)
     1807 * @param   Obj                 Test object to finalize.
     1808 */
     1809static void audioTestObjFinalize(PAUDIOTESTOBJINT pObj)
    17261810{
    17271811    /** @todo Generalize this function more once we have more object types. */
     
    17391823 * @param   pProps              Where to store the PCM properties on success.
    17401824 */
    1741 static int audioTestSetObjGetTonePcmProps(PAUDIOTESTOBJHANDLE phObj, PPDMAUDIOPCMPROPS pProps)
     1825static int audioTestObjGetTonePcmProps(PAUDIOTESTOBJINT phObj, PPDMAUDIOPCMPROPS pProps)
    17421826{
    17431827    int rc;
     
    18271911 * @param   phTestB             Test handle B of test to verify PCM data for.
    18281912 */
    1829 static int audioTestVerifyTestToneData(PAUDIOTESTVERIFYJOB pVerJob, PAUDIOTESTOBJHANDLE phTestA, PAUDIOTESTOBJHANDLE phTestB)
     1913static int audioTestVerifyTestToneData(PAUDIOTESTVERIFYJOB pVerJob, PAUDIOTESTOBJINT phTestA, PAUDIOTESTOBJINT phTestB)
    18301914{
    18311915    int rc;
     
    18331917    /** @todo For now ASSUME that we only have one object per test. */
    18341918
    1835     AUDIOTESTOBJHANDLE hObjA;
    1836 
    1837     rc = audioTestSetGetObj(phTestA, 0 /* idxObj */, &hObjA);
     1919    AUDIOTESTOBJINT hObjA;
     1920
     1921    rc = audioTestObjGetChild(phTestA, 0 /* idxObj */, &hObjA);
    18381922    CHECK_RC_MSG_MAYBE_RET(rc, pVerJob, "Unable to get object A");
    18391923
    1840     PAUDIOTESTOBJ pObjA;
    1841     rc = audioTestSetObjOpen(&hObjA, &pObjA);
     1924    PAUDIOTESTOBJINT pObjA;
     1925    rc = audioTestObjOpen(&hObjA, &pObjA);
    18421926    CHECK_RC_MSG_MAYBE_RET(rc, pVerJob, "Unable to open object A");
    18431927
    1844     AUDIOTESTOBJHANDLE hObjB;
    1845     rc = audioTestSetGetObj(phTestB, 0 /* idxObj */, &hObjB);
     1928    AUDIOTESTOBJINT hObjB;
     1929    rc = audioTestObjGetChild(phTestB, 0 /* idxObj */, &hObjB);
    18461930    CHECK_RC_MSG_MAYBE_RET(rc, pVerJob, "Unable to get object B");
    18471931
    1848     PAUDIOTESTOBJ pObjB;
    1849     rc = audioTestSetObjOpen(&hObjB, &pObjB);
     1932    PAUDIOTESTOBJINT pObjB;
     1933    rc = audioTestObjOpen(&hObjB, &pObjB);
    18501934    CHECK_RC_MSG_MAYBE_RET(rc, pVerJob, "Unable to open object B");
    18511935    AssertReturn(pObjA->enmType == AUDIOTESTOBJTYPE_FILE, VERR_NOT_SUPPORTED);
     
    19021986    }
    19031987
    1904     rc = audioTestSetObjCloseInternal(pObjA);
    1905     AssertRCReturn(rc, rc);
    1906     rc = audioTestSetObjCloseInternal(pObjB);
     1988    rc = audioTestObjCloseInternal(pObjA);
     1989    AssertRCReturn(rc, rc);
     1990    rc = audioTestObjCloseInternal(pObjB);
    19071991    AssertRCReturn(rc, rc);
    19081992
     
    19202004 * @param   phTestB             Test handle of test tone B to verify tone A with.*
    19212005 */
    1922 static int audioTestVerifyTestTone(PAUDIOTESTVERIFYJOB pVerify, PAUDIOTESTOBJHANDLE phTestA, PAUDIOTESTOBJHANDLE phTestB)
     2006static int audioTestVerifyTestTone(PAUDIOTESTVERIFYJOB pVerify, PAUDIOTESTOBJINT phTestA, PAUDIOTESTOBJINT phTestB)
    19232007{
    19242008    int rc;
     
    19512035    CHECK_RC_MAYBE_RET(rc, pVerify);
    19522036
    1953     rc = audioTestSetObjGetTonePcmProps(phTestA, &pVerify->PCMProps);
     2037    rc = audioTestObjGetTonePcmProps(phTestA, &pVerify->PCMProps);
    19542038    CHECK_RC_MAYBE_RET(rc, pVerify);
    19552039
     
    20002084     * Compare obvious values first.
    20012085     */
    2002     AUDIOTESTOBJHANDLE hHdrA;
     2086    AUDIOTESTOBJINT hHdrA;
    20032087    rc = audioTestSetGetSection(pVerJob->pSetA, AUDIOTEST_SEC_HDR_STR, &hHdrA);
    20042088    CHECK_RC_MAYBE_RET(rc, pVerJob);
    20052089
    2006     AUDIOTESTOBJHANDLE hHdrB;
     2090    AUDIOTESTOBJINT hHdrB;
    20072091    rc = audioTestSetGetSection(pVerJob->pSetB, AUDIOTEST_SEC_HDR_STR, &hHdrB);
    20082092    CHECK_RC_MAYBE_RET(rc, pVerJob);
     
    20302114        VerJob.idxTest = i;
    20312115
    2032         AUDIOTESTOBJHANDLE hTestA;
     2116        AUDIOTESTOBJINT hTestA;
    20332117        rc = audioTestSetGetTest(VerJob.pSetA, i, &hTestA);
    20342118        CHECK_RC_MSG_MAYBE_RET(rc, pVerJob, "Test A not found");
    20352119
    2036         AUDIOTESTOBJHANDLE hTestB;
     2120        AUDIOTESTOBJINT hTestB;
    20372121        rc = audioTestSetGetTest(VerJob.pSetB, i, &hTestB);
    20382122        CHECK_RC_MSG_MAYBE_RET(rc, pVerJob, "Test B not found");
  • trunk/src/VBox/Devices/Audio/AudioTest.h

    r89984 r89994  
    152152typedef AUDIOTESTPARMS *PAUDIOTESTPARMS;
    153153
    154 /**
    155  * Enumeration for an audio test object type.
    156  */
    157 typedef enum AUDIOTESTOBJTYPE
    158 {
    159     /** Unknown / invalid, do not use. */
    160     AUDIOTESTOBJTYPE_UNKNOWN = 0,
    161     /** The test object is a file. */
    162     AUDIOTESTOBJTYPE_FILE,
    163     /** The usual 32-bit hack. */
    164     AUDIOTESTOBJTYPE_32BIT_HACK = 0x7fffffff
    165 } AUDIOTESTOBJTYPE;
    166 
    167 /**
    168  * Structure for keeping an audio test object file.
    169  */
    170 typedef struct AUDIOTESTOBJFILE
    171 {
    172     /** File handle. */
    173     RTFILE              hFile;
    174     /** Total size (in bytes). */
    175     size_t              cbSize;
    176 } AUDIOTESTOBJFILE;
    177 /** Pointer to an audio test object file. */
    178 typedef AUDIOTESTOBJFILE *PAUDIOTESTOBJFILE;
    179 
    180 /**
    181  * Enumeration for an audio test object meta data type.
    182  */
    183 typedef enum AUDIOTESTOBJMETADATATYPE
    184 {
    185     /** Unknown / invalid, do not use. */
    186     AUDIOTESTOBJMETADATATYPE_INVALID = 0,
    187     /** Meta data is an UTF-8 string. */
    188     AUDIOTESTOBJMETADATATYPE_STRING,
    189     /** The usual 32-bit hack. */
    190     AUDIOTESTOBJMETADATATYPE_32BIT_HACK = 0x7fffffff
    191 } AUDIOTESTOBJMETADATATYPE;
    192 
    193 /**
    194  * Structure for keeping a meta data block.
    195  */
    196 typedef struct AUDIOTESTOBJMETA
    197 {
    198     /** List node. */
    199     RTLISTNODE                Node;
    200     /** Meta data type. */
    201     AUDIOTESTOBJMETADATATYPE  enmType;
    202     /** Meta data block. */
    203     void                     *pvMeta;
    204     /** Size (in bytes) of \a pvMeta. */
    205     size_t                    cbMeta;
    206 } AUDIOTESTOBJMETA;
    207 /** Pointer to an audio test object file. */
    208 typedef AUDIOTESTOBJMETA *PAUDIOTESTOBJMETA;
    209 
    210 /**
    211  * Structure for keeping a single audio test object.
    212  *
    213  * A test object is data which is needed in order to perform and verify one or
    214  * more audio test case(s).
    215  */
    216 typedef struct AUDIOTESTOBJ
    217 {
    218     /** List node. */
    219     RTLISTNODE           Node;
    220     /** The UUID of the object.
    221      *  Used to identify an object within a test set. */
    222     RTUUID               Uuid;
    223     /** Number of references to this test object. */
    224     uint32_t             cRefs;
    225     /** Name of the test object.
    226      *  Must not contain a path and has to be able to serialize to disk. */
    227     char                 szName[64];
    228     /** The object type. */
    229     AUDIOTESTOBJTYPE     enmType;
    230     /** Meta data list. */
    231     RTLISTANCHOR         lstMeta;
    232     /** Union for holding the object type-specific data. */
    233     union
    234     {
    235         AUDIOTESTOBJFILE File;
    236     };
    237 } AUDIOTESTOBJ;
    238 /** Pointer to an audio test object. */
    239 typedef AUDIOTESTOBJ *PAUDIOTESTOBJ;
     154/** Test object handle. */
     155typedef R3R0PTRTYPE(struct AUDIOTESTOBJINT RT_FAR *)      AUDIOTESTOBJ;
     156/** Pointer to test object handle. */
     157typedef AUDIOTESTOBJ                              RT_FAR *PAUDIOTESTOBJ;
     158/** Nil test object handle. */
     159#define NIL_AUDIOTESTOBJ                                  ((AUDIOTESTOBJ)~(RTHCINTPTR)0)
    240160
    241161struct AUDIOTESTSET;
     
    351271int    AudioTestPathCreate(char *pszPath, size_t cbPath, const char *pszUUID);
    352272
    353 int    AudioTestSetObjCreateAndRegister(PAUDIOTESTSET pSet, const char *pszName, PAUDIOTESTOBJ *ppObj);
    354 int    AudioTestSetObjWrite(PAUDIOTESTOBJ pObj, const void *pvBuf, size_t cbBuf);
    355 int    AudioTestSetObjAddMetadataStr(PAUDIOTESTOBJ pObj, const char *pszFormat, ...);
    356 int    AudioTestSetObjClose(PAUDIOTESTOBJ pObj);
     273int    AudioTestSetObjCreateAndRegister(PAUDIOTESTSET pSet, const char *pszName, PAUDIOTESTOBJ pObj);
     274
     275int    AudioTestObjWrite(AUDIOTESTOBJ Obj, const void *pvBuf, size_t cbBuf);
     276int    AudioTestObjAddMetadataStr(AUDIOTESTOBJ Obj, const char *pszFormat, ...);
     277int    AudioTestObjClose(AUDIOTESTOBJ Obj);
    357278
    358279int    AudioTestSetTestBegin(PAUDIOTESTSET pSet, const char *pszDesc, PAUDIOTESTPARMS pParms, PAUDIOTESTENTRY *ppEntry);
  • trunk/src/VBox/Devices/Audio/DrvHostAudioValidationKit.cpp

    r89992 r89994  
    9595    PAUDIOTESTENTRY        pEntry;
    9696    /** Current test object to process. */
    97     PAUDIOTESTOBJ          pObj;
     97    AUDIOTESTOBJ           Obj;
    9898    /** Stream configuration to use for this test. */
    9999    PDMAUDIOSTREAMCFG      StreamCfg;
     
    170170    RTListNodeRemove(&pTst->Node);
    171171
    172     AudioTestSetObjClose(pTst->pObj);
    173     pTst->pObj = NULL;
     172    AudioTestObjClose(pTst->Obj);
     173    pTst->Obj = NULL;
    174174
    175175    if (pTst->pEntry) /* Set set entry assign? Mark as done. */
     
    777777                                    &Parms, &pTst->pEntry);
    778778        if (RT_SUCCESS(rc))
    779             rc = AudioTestSetObjCreateAndRegister(&pThis->Set, "host-tone-rec.pcm", &pTst->pObj);
     779            rc = AudioTestSetObjCreateAndRegister(&pThis->Set, "host-tone-rec.pcm", &pTst->Obj);
    780780
    781781        if (RT_SUCCESS(rc))
     
    794794            || (fIsSilence && fHandleSilence))
    795795        {
    796             rc = AudioTestSetObjWrite(pTst->pObj, pvBuf, cbBuf);
     796            rc = AudioTestObjWrite(pTst->Obj, pvBuf, cbBuf);
    797797            pTst->t.TestTone.u.Play.cbRead += cbBuf;
    798798
     
    894894                                    &Parms, &pTst->pEntry);
    895895        if (RT_SUCCESS(rc))
    896             rc = AudioTestSetObjCreateAndRegister(&pThis->Set, "host-tone-play.pcm", &pTst->pObj);
     896            rc = AudioTestSetObjCreateAndRegister(&pThis->Set, "host-tone-play.pcm", &pTst->Obj);
    897897
    898898        if (RT_SUCCESS(rc))
     
    915915            && cbRead)
    916916        {
    917             rc = AudioTestSetObjWrite(pTst->pObj, pvBuf, cbRead);
     917            rc = AudioTestObjWrite(pTst->Obj, pvBuf, cbRead);
    918918            if (RT_SUCCESS(rc))
    919919            {
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