Changeset 89308 in vbox
- Timestamp:
- May 27, 2021 9:36:18 AM (4 years ago)
- svn:sync-xref-src-repo-rev:
- 144655
- Location:
- trunk/src/VBox
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Devices/Audio/AudioTest.cpp
r89293 r89308 88 88 * Returns a random test tone frequency. 89 89 */ 90 DECLINLINE(double) audioTest GetRandomFreq(void)90 DECLINLINE(double) audioTestToneGetRandomFreq(void) 91 91 { 92 92 return s_aAudioTestToneFreqsHz[RTRandU32Ex(0, RT_ELEMENTS(s_aAudioTestToneFreqsHz) - 1)]; … … 105 105 { 106 106 if (dbFreq == 0.0) 107 dbFreq = audioTestGetRandomFreq(); 108 109 /* Pick a frequency from our selection, so that every time a recording starts 110 * we'll hopfully generate a different note. */ 107 dbFreq = audioTestToneGetRandomFreq(); 108 111 109 pTone->rdFreqHz = dbFreq; 112 110 pTone->rdFixed = 2.0 * M_PI * pTone->rdFreqHz / PDMAudioPropsHz(pProps); … … 262 260 /** @todo Make this a bit more sophisticated later, e.g. muting and prequel/sequel are not very balanced. */ 263 261 262 pToneParams->dbFreqHz = audioTestToneGetRandomFreq(); 264 263 pToneParams->msPrequel = RTRandU32Ex(0, RT_MS_5SEC); 265 264 #ifdef DEBUG_andy … … 335 334 AssertRCReturn(rc, rc); 336 335 336 #ifndef DEBUG /* Makes debugging easier to have a deterministic directory. */ 337 337 char szTime[64]; 338 338 RTTIMESPEC time; … … 347 347 rc = RTPathAppend(pszPath, cbPath, szTime); 348 348 AssertRCReturn(rc, rc); 349 #endif 349 350 350 351 return RTDirCreateFullPath(pszPath, RTFS_UNIX_IRWXU); … … 431 432 432 433 /** @todo Keep it as simple as possible for now. Improve this later. */ 433 int rc = audioTestManifestWrite(pSet, "[%N] ", pszSection, &va);434 int rc = audioTestManifestWrite(pSet, "[%N]\n", pszSection, &va); 434 435 435 436 va_end(va); … … 968 969 rc = audioTestManifestWrite(pSet, "test_type=%RU32\n", pParms->enmType); 969 970 AssertRCReturn(rc, rc); 970 rc = audioTestManifestWrite(pSet, "test_iterations=%RU32\n", pParms->cIterations);971 AssertRCReturn(rc, rc);972 971 rc = audioTestManifestWrite(pSet, "test_delay_ms=%RU32\n", pParms->msDelay); 973 972 AssertRCReturn(rc, rc); … … 977 976 switch (pParms->enmType) 978 977 { 979 case AUDIOTESTTYPE_TESTTONE: 978 case AUDIOTESTTYPE_TESTTONE_PLAY: 979 RT_FALL_THROUGH(); 980 case AUDIOTESTTYPE_TESTTONE_RECORD: 980 981 { 982 rc = audioTestManifestWrite(pSet, "tone_freq_hz=%RU16\n", (uint16_t)pParms->TestTone.dbFreqHz); 983 AssertRCReturn(rc, rc); 981 984 rc = audioTestManifestWrite(pSet, "tone_prequel_ms=%RU32\n", pParms->TestTone.msPrequel); 982 985 AssertRCReturn(rc, rc); -
trunk/src/VBox/Devices/Audio/AudioTest.h
r89294 r89308 80 80 /** Tone frequency (in Hz) to use. 81 81 * Will be later converted to a double value. */ 82 uint16_t uFreq;82 double dbFreqHz; 83 83 /** Prequel (in ms) to play silence. Optional and can be set to 0. */ 84 84 RTMSINTERVAL msPrequel; … … 117 117 AUDIOTESTTYPE_INVALID = 0, 118 118 /** Play a test tone. */ 119 AUDIOTESTTYPE_TESTTONE, 119 AUDIOTESTTYPE_TESTTONE_PLAY, 120 /** Record a test tone. */ 121 AUDIOTESTTYPE_TESTTONE_RECORD, 120 122 /** The usual 32-bit hack. */ 121 123 AUDIOTESTTYPE_32BIT_HACK = 0x7fffffff … … 131 133 /** How many iterations the test should be executed. */ 132 134 uint32_t cIterations; 135 /** PCM audio stream properties to use. */ 136 PDMAUDIOPCMPROPS Props; 133 137 /** Audio device to use. */ 134 138 PDMAUDIOHOSTDEV Dev; -
trunk/src/VBox/Devices/Audio/AudioTestServiceProtocol.h
r89294 r89308 135 135 /** Test tone parameters for playback. */ 136 136 AUDIOTESTTONEPARMS ToneParms; 137 uint8_t aPadding[ 12];137 uint8_t aPadding[4]; 138 138 } ATSPKTREQTONEPLAY; 139 139 AssertCompileSizeAlignment(ATSPKTREQTONEPLAY, ATSPKT_ALIGNMENT); -
trunk/src/VBox/Devices/Audio/DrvHostAudioValidationKit.cpp
r89294 r89308 149 149 memcpy(&pTestData->t.TestTone.Parms, pToneParms, sizeof(AUDIOTESTTONEPARMS)); 150 150 151 AudioTestToneInit(&pTestData->t.TestTone.Tone, &pStreamCfg->Props, pTestData->t.TestTone.Parms. uFreq);151 AudioTestToneInit(&pTestData->t.TestTone.Tone, &pStreamCfg->Props, pTestData->t.TestTone.Parms.dbFreqHz); 152 152 153 153 pTestData->t.TestTone.cbToWrite = PDMAudioPropsMilliToBytes(&pStreamCfg->Props, -
trunk/src/VBox/ValidationKit/utils/audio/vkat.cpp
r89297 r89308 1681 1681 { 1682 1682 AUDIOTESTTONE TstTone; 1683 AudioTestToneInit Random(&TstTone, &pParms->Props);1683 AudioTestToneInit(&TstTone, &pParms->Props, pParms->dbFreqHz); 1684 1684 1685 1685 const char *pcszPathOut = pTstEnv->Set.szPathAbs; 1686 1686 1687 RTTestPrintf(g_hTest, RTTESTLVL_ALWAYS, "Playing test tone (tone frequency is %RU16Hz, %RU32ms)\n", TstTone.rdFreqHz, pParms->msDuration);1687 RTTestPrintf(g_hTest, RTTESTLVL_ALWAYS, "Playing test tone (tone frequency is %RU16Hz, %RU32ms)\n", (uint16_t)pParms->dbFreqHz, pParms->msDuration); 1688 1688 RTTestPrintf(g_hTest, RTTESTLVL_DEBUG, "Writing to '%s'\n", pcszPathOut); 1689 1689 … … 1766 1766 RT_NOREF(pTstEnv, pTstDesc, ppvCtx); 1767 1767 1768 pTstParmsAcq->enmType = AUDIOTESTTYPE_TESTTONE ;1769 1770 PDMAudioPropsInit(&pTstParmsAcq-> TestTone.Props, 16 /* bit */ / 8, true /* fSigned */, 2 /* Channels */, 44100 /* Hz */);1768 pTstParmsAcq->enmType = AUDIOTESTTYPE_TESTTONE_PLAY; 1769 1770 PDMAudioPropsInit(&pTstParmsAcq->Props, 16 /* bit */ / 8, true /* fSigned */, 2 /* Channels */, 44100 /* Hz */); 1771 1771 1772 1772 pTstParmsAcq->enmDir = PDMAUDIODIR_OUT; … … 1793 1793 for (uint32_t i = 0; i < pTstParms->cIterations; i++) 1794 1794 { 1795 AudioTestToneParamsInitRandom(&pTstParms->TestTone, &pTstParms->Props); 1796 1795 1797 PAUDIOTESTENTRY pTst; 1796 1798 rc = AudioTestSetTestBegin(&pTstEnv->Set, "Playing test tone", pTstParms, &pTst); 1797 1799 if (RT_SUCCESS(rc)) 1798 1800 { 1799 AudioTestToneParamsInitRandom(&pTstParms->TestTone, &pTstParms->TestTone.Props);1800 1801 rc = audioTestCreateStreamDefaultOut(pTstEnv, pStream, &pTstParms->TestTone.Props); 1801 1802 if (RT_SUCCESS(rc)) … … 1840 1841 RT_NOREF(pTstEnv, pTstDesc, ppvCtx); 1841 1842 1842 pTstParmsAcq->enmType = AUDIOTESTTYPE_TESTTONE; 1843 1843 pTstParmsAcq->enmType = AUDIOTESTTYPE_TESTTONE_RECORD; 1844 1845 RT_ZERO(pTstParmsAcq->TestTone); 1844 1846 PDMAudioPropsInit(&pTstParmsAcq->TestTone.Props, 16 /* bit */ / 8, true /* fSigned */, 2 /* Channels */, 44100 /* Hz */); 1845 1847 … … 1864 1866 for (uint32_t i = 0; i < pTstParms->cIterations; i++) 1865 1867 { 1868 pTstParms->TestTone.msDuration = RTRandU32Ex(50 /* ms */, RT_MS_10SEC); /** @todo Record even longer? */ 1869 1866 1870 PAUDIOTESTENTRY pTst; 1867 1871 rc = AudioTestSetTestBegin(&pTstEnv->Set, "Recording test tone", pTstParms, &pTst); … … 1871 1875 rc = audioTestCreateStreamDefaultIn(pTstEnv, pStream, &pTstParms->TestTone.Props); 1872 1876 if (RT_SUCCESS(rc)) 1873 {1874 pTstParms->TestTone.msDuration = RTRandU32Ex(50 /* ms */, RT_MS_10SEC); /** @todo Record even longer? */1875 1876 1877 rc = audioTestRecordTone(pTstEnv, pStream, &pTstParms->TestTone); 1877 }1878 1878 1879 1879 int rc2 = audioTestStreamDestroy(pTstEnv, pStream);
Note:
See TracChangeset
for help on using the changeset viewer.