Changeset 55920 in vbox for trunk/src/VBox/Devices/Audio/testcase
- Timestamp:
- May 18, 2015 7:11:51 PM (10 years ago)
- svn:sync-xref-src-repo-rev:
- 100386
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Devices/Audio/testcase/tstAudioMixBuffer.cpp
r55495 r55920 59 59 */ 60 60 PDMAUDIOMIXBUF mb; 61 RTTESTI_CHECK_RC_OK( audioMixBufInit(&mb, "Single", &props, cBufSize));62 RTTESTI_CHECK( audioMixBufSize(&mb) == cBufSize);63 RTTESTI_CHECK(AUDIOMIXBUF_B2S(&mb, audioMixBufSizeBytes(&mb)) == cBufSize);64 RTTESTI_CHECK(AUDIOMIXBUF_S2B(&mb, audioMixBufSize(&mb)) == audioMixBufSizeBytes(&mb));65 RTTESTI_CHECK( audioMixBufFree(&mb) == cBufSize);66 RTTESTI_CHECK(AUDIOMIXBUF_S2B(&mb, audioMixBufFree(&mb)) == audioMixBufFreeBytes(&mb));61 RTTESTI_CHECK_RC_OK(AudioMixBufInit(&mb, "Single", &props, cBufSize)); 62 RTTESTI_CHECK(AudioMixBufSize(&mb) == cBufSize); 63 RTTESTI_CHECK(AUDIOMIXBUF_B2S(&mb, AudioMixBufSizeBytes(&mb)) == cBufSize); 64 RTTESTI_CHECK(AUDIOMIXBUF_S2B(&mb, AudioMixBufSize(&mb)) == AudioMixBufSizeBytes(&mb)); 65 RTTESTI_CHECK(AudioMixBufFree(&mb) == cBufSize); 66 RTTESTI_CHECK(AUDIOMIXBUF_S2B(&mb, AudioMixBufFree(&mb)) == AudioMixBufFreeBytes(&mb)); 67 67 68 68 /* … … 75 75 int64_t samples64[2] = { 0xEE, 0xFF }; 76 76 77 RTTESTI_CHECK_RC_OK( audioMixBufWriteAt(&mb, 0, &samples8, sizeof(samples8), &written));77 RTTESTI_CHECK_RC_OK(AudioMixBufWriteAt(&mb, 0, &samples8, sizeof(samples8), &written)); 78 78 RTTESTI_CHECK(written == 0 /* Samples */); 79 79 80 RTTESTI_CHECK_RC_OK( audioMixBufWriteAt(&mb, 0, &samples16, sizeof(samples16), &written));80 RTTESTI_CHECK_RC_OK(AudioMixBufWriteAt(&mb, 0, &samples16, sizeof(samples16), &written)); 81 81 RTTESTI_CHECK(written == 1 /* Samples */); 82 82 83 RTTESTI_CHECK_RC_OK( audioMixBufWriteAt(&mb, 2, &samples32, sizeof(samples32), &written));83 RTTESTI_CHECK_RC_OK(AudioMixBufWriteAt(&mb, 2, &samples32, sizeof(samples32), &written)); 84 84 RTTESTI_CHECK(written == 2 /* Samples */); 85 85 written_abs = 0; 86 86 87 87 /* Beyond buffer. */ 88 RTTESTI_CHECK_RC( audioMixBufWriteAt(&mb, audioMixBufSize(&mb) + 1, &samples16, sizeof(samples16),88 RTTESTI_CHECK_RC(AudioMixBufWriteAt(&mb, AudioMixBufSize(&mb) + 1, &samples16, sizeof(samples16), 89 89 &written), VERR_BUFFER_OVERFLOW); 90 90 … … 92 92 * Circular writes. 93 93 */ 94 uint32_t cToWrite = audioMixBufSize(&mb) - written_abs - 1; /* -1 as padding plus -2 samples for above. */94 uint32_t cToWrite = AudioMixBufSize(&mb) - written_abs - 1; /* -1 as padding plus -2 samples for above. */ 95 95 for (uint32_t i = 0; i < cToWrite; i++) 96 96 { 97 RTTESTI_CHECK_RC_OK( audioMixBufWriteCirc(&mb, &samples16, sizeof(samples16), &written));97 RTTESTI_CHECK_RC_OK(AudioMixBufWriteCirc(&mb, &samples16, sizeof(samples16), &written)); 98 98 RTTESTI_CHECK(written == 1); 99 99 } 100 RTTESTI_CHECK(! audioMixBufIsEmpty(&mb));101 RTTESTI_CHECK( audioMixBufFree(&mb) == 1);102 RTTESTI_CHECK( audioMixBufFreeBytes(&mb) == AUDIOMIXBUF_S2B(&mb, 1U));103 RTTESTI_CHECK( audioMixBufProcessed(&mb) == cToWrite + written_abs /* + last absolute write */);104 105 RTTESTI_CHECK_RC_OK( audioMixBufWriteCirc(&mb, &samples16, sizeof(samples16), &written));100 RTTESTI_CHECK(!AudioMixBufIsEmpty(&mb)); 101 RTTESTI_CHECK(AudioMixBufFree(&mb) == 1); 102 RTTESTI_CHECK(AudioMixBufFreeBytes(&mb) == AUDIOMIXBUF_S2B(&mb, 1U)); 103 RTTESTI_CHECK(AudioMixBufProcessed(&mb) == cToWrite + written_abs /* + last absolute write */); 104 105 RTTESTI_CHECK_RC_OK(AudioMixBufWriteCirc(&mb, &samples16, sizeof(samples16), &written)); 106 106 RTTESTI_CHECK(written == 1); 107 RTTESTI_CHECK( audioMixBufFree(&mb) == 0);108 RTTESTI_CHECK( audioMixBufFreeBytes(&mb) == AUDIOMIXBUF_S2B(&mb, 0));109 RTTESTI_CHECK( audioMixBufProcessed(&mb) == cBufSize);107 RTTESTI_CHECK(AudioMixBufFree(&mb) == 0); 108 RTTESTI_CHECK(AudioMixBufFreeBytes(&mb) == AUDIOMIXBUF_S2B(&mb, 0)); 109 RTTESTI_CHECK(AudioMixBufProcessed(&mb) == cBufSize); 110 110 111 111 /* Circular reads. */ 112 uint32_t cToRead = audioMixBufSize(&mb) - written_abs - 1;112 uint32_t cToRead = AudioMixBufSize(&mb) - written_abs - 1; 113 113 for (uint32_t i = 0; i < cToWrite; i++) 114 114 { 115 RTTESTI_CHECK_RC_OK( audioMixBufReadCirc(&mb, &samples16, sizeof(samples16), &read));115 RTTESTI_CHECK_RC_OK(AudioMixBufReadCirc(&mb, &samples16, sizeof(samples16), &read)); 116 116 RTTESTI_CHECK(read == 1); 117 audioMixBufFinish(&mb, read);118 } 119 RTTESTI_CHECK(! audioMixBufIsEmpty(&mb));120 RTTESTI_CHECK( audioMixBufFree(&mb) == audioMixBufSize(&mb) - written_abs - 1);121 RTTESTI_CHECK( audioMixBufFreeBytes(&mb) == AUDIOMIXBUF_S2B(&mb, cBufSize - written_abs - 1));122 RTTESTI_CHECK( audioMixBufProcessed(&mb) == cBufSize - cToRead + written_abs);123 124 RTTESTI_CHECK_RC_OK( audioMixBufReadCirc(&mb, &samples16, sizeof(samples16), &read));117 AudioMixBufFinish(&mb, read); 118 } 119 RTTESTI_CHECK(!AudioMixBufIsEmpty(&mb)); 120 RTTESTI_CHECK(AudioMixBufFree(&mb) == AudioMixBufSize(&mb) - written_abs - 1); 121 RTTESTI_CHECK(AudioMixBufFreeBytes(&mb) == AUDIOMIXBUF_S2B(&mb, cBufSize - written_abs - 1)); 122 RTTESTI_CHECK(AudioMixBufProcessed(&mb) == cBufSize - cToRead + written_abs); 123 124 RTTESTI_CHECK_RC_OK(AudioMixBufReadCirc(&mb, &samples16, sizeof(samples16), &read)); 125 125 RTTESTI_CHECK(read == 1); 126 audioMixBufFinish(&mb, read);127 RTTESTI_CHECK( audioMixBufFree(&mb) == cBufSize - written_abs);128 RTTESTI_CHECK( audioMixBufFreeBytes(&mb) == AUDIOMIXBUF_S2B(&mb, cBufSize - written_abs));129 RTTESTI_CHECK( audioMixBufProcessed(&mb) == written_abs);130 131 audioMixBufDestroy(&mb);126 AudioMixBufFinish(&mb, read); 127 RTTESTI_CHECK(AudioMixBufFree(&mb) == cBufSize - written_abs); 128 RTTESTI_CHECK(AudioMixBufFreeBytes(&mb) == AUDIOMIXBUF_S2B(&mb, cBufSize - written_abs)); 129 RTTESTI_CHECK(AudioMixBufProcessed(&mb) == written_abs); 130 131 AudioMixBufDestroy(&mb); 132 132 133 133 return RTTestSubErrorCount(hTest) ? VERR_GENERAL_FAILURE : VINF_SUCCESS; … … 153 153 154 154 PDMAUDIOMIXBUF parent; 155 RTTESTI_CHECK_RC_OK( audioMixBufInit(&parent, "Parent", &props, cBufSize));155 RTTESTI_CHECK_RC_OK(AudioMixBufInit(&parent, "Parent", &props, cBufSize)); 156 156 157 157 PDMAUDIOSTREAMCFG cfg_c1 = /* Upmixing to parent */ … … 167 167 168 168 PDMAUDIOMIXBUF child1; 169 RTTESTI_CHECK_RC_OK( audioMixBufInit(&child1, "Child1", &props, cBufSize));170 RTTESTI_CHECK_RC_OK( audioMixBufLinkTo(&child1, &parent));169 RTTESTI_CHECK_RC_OK(AudioMixBufInit(&child1, "Child1", &props, cBufSize)); 170 RTTESTI_CHECK_RC_OK(AudioMixBufLinkTo(&child1, &parent)); 171 171 172 172 PDMAUDIOSTREAMCFG cfg_c2 = /* Downmixing to parent */ … … 182 182 183 183 PDMAUDIOMIXBUF child2; 184 RTTESTI_CHECK_RC_OK( audioMixBufInit(&child2, "Child2", &props, cBufSize));185 RTTESTI_CHECK_RC_OK( audioMixBufLinkTo(&child2, &parent));184 RTTESTI_CHECK_RC_OK(AudioMixBufInit(&child2, "Child2", &props, cBufSize)); 185 RTTESTI_CHECK_RC_OK(AudioMixBufLinkTo(&child2, &parent)); 186 186 187 187 /* … … 208 208 { 209 209 RTTestPrintf(hTest, RTTESTLVL_DEBUG, "i=%RU32\n", i); 210 RTTESTI_CHECK_RC_OK_BREAK( audioMixBufWriteAt(&child1, 0, &samples, sizeof(samples), &written));210 RTTESTI_CHECK_RC_OK_BREAK(AudioMixBufWriteAt(&child1, 0, &samples, sizeof(samples), &written)); 211 211 RTTESTI_CHECK_MSG_BREAK(written == cSamplesChild1, ("Child1: Expected %RU32 written samples, got %RU32\n", cSamplesChild1, written)); 212 RTTESTI_CHECK_RC_OK_BREAK( audioMixBufMixToParent(&child1, written, &mixed));213 temp = audioMixBufProcessed(&parent) - audioMixBufMixed(&child2);214 RTTESTI_CHECK_MSG_BREAK( audioMixBufMixed(&child1) == temp, ("Child1: Expected %RU32 mixed samples, got %RU32\n", audioMixBufMixed(&child1), temp));215 216 RTTESTI_CHECK_RC_OK_BREAK( audioMixBufWriteAt(&child2, 0, &samples, sizeof(samples), &written));212 RTTESTI_CHECK_RC_OK_BREAK(AudioMixBufMixToParent(&child1, written, &mixed)); 213 temp = AudioMixBufProcessed(&parent) - AudioMixBufMixed(&child2); 214 RTTESTI_CHECK_MSG_BREAK(AudioMixBufMixed(&child1) == temp, ("Child1: Expected %RU32 mixed samples, got %RU32\n", AudioMixBufMixed(&child1), temp)); 215 216 RTTESTI_CHECK_RC_OK_BREAK(AudioMixBufWriteAt(&child2, 0, &samples, sizeof(samples), &written)); 217 217 RTTESTI_CHECK_MSG_BREAK(written == cSamplesChild2, ("Child2: Expected %RU32 written samples, got %RU32\n", cSamplesChild2, written)); 218 RTTESTI_CHECK_RC_OK_BREAK( audioMixBufMixToParent(&child2, written, &mixed));219 temp = audioMixBufProcessed(&parent) - audioMixBufMixed(&child1);220 RTTESTI_CHECK_MSG_BREAK( audioMixBufMixed(&child2) == temp, ("Child2: Expected %RU32 mixed samples, got %RU32\n", audioMixBufMixed(&child2), temp));221 } 222 223 RTTESTI_CHECK( audioMixBufProcessed(&parent) == audioMixBufMixed(&child1) + audioMixBufMixed(&child2));218 RTTESTI_CHECK_RC_OK_BREAK(AudioMixBufMixToParent(&child2, written, &mixed)); 219 temp = AudioMixBufProcessed(&parent) - AudioMixBufMixed(&child1); 220 RTTESTI_CHECK_MSG_BREAK(AudioMixBufMixed(&child2) == temp, ("Child2: Expected %RU32 mixed samples, got %RU32\n", AudioMixBufMixed(&child2), temp)); 221 } 222 223 RTTESTI_CHECK(AudioMixBufProcessed(&parent) == AudioMixBufMixed(&child1) + AudioMixBufMixed(&child2)); 224 224 225 225 for (;;) 226 226 { 227 RTTESTI_CHECK_RC_OK_BREAK( audioMixBufReadCirc(&parent, pvBuf, cbBuf, &read));227 RTTESTI_CHECK_RC_OK_BREAK(AudioMixBufReadCirc(&parent, pvBuf, cbBuf, &read)); 228 228 if (!read) 229 229 break; 230 audioMixBufFinish(&parent, read);231 } 232 233 RTTESTI_CHECK( audioMixBufProcessed(&parent) == 0);234 RTTESTI_CHECK( audioMixBufMixed(&child1) == 0);235 RTTESTI_CHECK( audioMixBufMixed(&child2) == 0);236 237 audioMixBufDestroy(&parent);238 audioMixBufDestroy(&child1);239 audioMixBufDestroy(&child2);230 AudioMixBufFinish(&parent, read); 231 } 232 233 RTTESTI_CHECK(AudioMixBufProcessed(&parent) == 0); 234 RTTESTI_CHECK(AudioMixBufMixed(&child1) == 0); 235 RTTESTI_CHECK(AudioMixBufMixed(&child2) == 0); 236 237 AudioMixBufDestroy(&parent); 238 AudioMixBufDestroy(&child1); 239 AudioMixBufDestroy(&child2); 240 240 241 241 return RTTestSubErrorCount(hTest) ? VERR_GENERAL_FAILURE : VINF_SUCCESS; … … 264 264 265 265 PDMAUDIOMIXBUF parent; 266 RTTESTI_CHECK_RC_OK( audioMixBufInit(&parent, "Parent", &props, cBufSize));266 RTTESTI_CHECK_RC_OK(AudioMixBufInit(&parent, "Parent", &props, cBufSize)); 267 267 268 268 /* Child uses half the sample rate; that ensures the mixing engine can't … … 285 285 286 286 PDMAUDIOMIXBUF child; 287 RTTESTI_CHECK_RC_OK( audioMixBufInit(&child, "Child", &props, cBufSize));288 RTTESTI_CHECK_RC_OK( audioMixBufLinkTo(&child, &parent));287 RTTESTI_CHECK_RC_OK(AudioMixBufInit(&child, "Child", &props, cBufSize)); 288 RTTESTI_CHECK_RC_OK(AudioMixBufLinkTo(&child, &parent)); 289 289 290 290 /* 8-bit unsigned samples. Often used with SB16 device. */ … … 307 307 /**** 8-bit unsigned samples ****/ 308 308 RTTestPrintf(hTest, RTTESTLVL_DEBUG, "Conversion test %uHz %uch 8-bit\n", cfg_c.uHz, cfg_c.cChannels); 309 RTTESTI_CHECK_RC_OK( audioMixBufWriteAt(&child, 0, &samples, sizeof(samples), &written));309 RTTESTI_CHECK_RC_OK(AudioMixBufWriteAt(&child, 0, &samples, sizeof(samples), &written)); 310 310 RTTESTI_CHECK_MSG(written == cSamplesChild, ("Child: Expected %RU32 written samples, got %RU32\n", cSamplesChild, written)); 311 RTTESTI_CHECK_RC_OK( audioMixBufMixToParent(&child, written, &mixed));312 temp = audioMixBufProcessed(&parent);313 RTTESTI_CHECK_MSG( audioMixBufMixed(&child) == temp, ("Child: Expected %RU32 mixed samples, got %RU32\n", audioMixBufMixed(&child), temp));314 315 RTTESTI_CHECK( audioMixBufProcessed(&parent) == audioMixBufMixed(&child));311 RTTESTI_CHECK_RC_OK(AudioMixBufMixToParent(&child, written, &mixed)); 312 temp = AudioMixBufProcessed(&parent); 313 RTTESTI_CHECK_MSG(AudioMixBufMixed(&child) == temp, ("Child: Expected %RU32 mixed samples, got %RU32\n", AudioMixBufMixed(&child), temp)); 314 315 RTTESTI_CHECK(AudioMixBufProcessed(&parent) == AudioMixBufMixed(&child)); 316 316 317 317 for (;;) 318 318 { 319 RTTESTI_CHECK_RC_OK_BREAK( audioMixBufReadCirc(&parent, achBuf, cbBuf, &read));319 RTTESTI_CHECK_RC_OK_BREAK(AudioMixBufReadCirc(&parent, achBuf, cbBuf, &read)); 320 320 if (!read) 321 321 break; 322 322 cSamplesRead += read; 323 audioMixBufFinish(&parent, read);323 AudioMixBufFinish(&parent, read); 324 324 } 325 325 RTTESTI_CHECK_MSG(cSamplesRead == cSamplesParent, ("Parent: Expected %RU32 mixed samples, got %RU32\n", cSamplesParent, cSamplesRead)); … … 337 337 } 338 338 339 RTTESTI_CHECK( audioMixBufProcessed(&parent) == 0);340 RTTESTI_CHECK( audioMixBufMixed(&child) == 0);341 342 audioMixBufDestroy(&parent);343 audioMixBufDestroy(&child);339 RTTESTI_CHECK(AudioMixBufProcessed(&parent) == 0); 340 RTTESTI_CHECK(AudioMixBufMixed(&child) == 0); 341 342 AudioMixBufDestroy(&parent); 343 AudioMixBufDestroy(&child); 344 344 345 345 return RTTestSubErrorCount(hTest) ? VERR_GENERAL_FAILURE : VINF_SUCCESS; … … 368 368 369 369 PDMAUDIOMIXBUF parent; 370 RTTESTI_CHECK_RC_OK( audioMixBufInit(&parent, "Parent", &props, cBufSize));370 RTTESTI_CHECK_RC_OK(AudioMixBufInit(&parent, "Parent", &props, cBufSize)); 371 371 372 372 PDMAUDIOSTREAMCFG cfg_c = /* Upmixing to parent */ … … 382 382 383 383 PDMAUDIOMIXBUF child; 384 RTTESTI_CHECK_RC_OK( audioMixBufInit(&child, "Child", &props, cBufSize));385 RTTESTI_CHECK_RC_OK( audioMixBufLinkTo(&child, &parent));384 RTTESTI_CHECK_RC_OK(AudioMixBufInit(&child, "Child", &props, cBufSize)); 385 RTTESTI_CHECK_RC_OK(AudioMixBufLinkTo(&child, &parent)); 386 386 387 387 /* 16-bit signed. More or less exclusively used as output, and usually as input, too. */ … … 404 404 /**** 16-bit signed samples ****/ 405 405 RTTestPrintf(hTest, RTTESTLVL_DEBUG, "Conversion test %uHz %uch 16-bit\n", cfg_c.uHz, cfg_c.cChannels); 406 RTTESTI_CHECK_RC_OK( audioMixBufWriteAt(&child, 0, &samples, sizeof(samples), &written));406 RTTESTI_CHECK_RC_OK(AudioMixBufWriteAt(&child, 0, &samples, sizeof(samples), &written)); 407 407 RTTESTI_CHECK_MSG(written == cSamplesChild, ("Child: Expected %RU32 written samples, got %RU32\n", cSamplesChild, written)); 408 RTTESTI_CHECK_RC_OK( audioMixBufMixToParent(&child, written, &mixed));409 temp = audioMixBufProcessed(&parent);410 RTTESTI_CHECK_MSG( audioMixBufMixed(&child) == temp, ("Child: Expected %RU32 mixed samples, got %RU32\n", audioMixBufMixed(&child), temp));411 412 RTTESTI_CHECK( audioMixBufProcessed(&parent) == audioMixBufMixed(&child));408 RTTESTI_CHECK_RC_OK(AudioMixBufMixToParent(&child, written, &mixed)); 409 temp = AudioMixBufProcessed(&parent); 410 RTTESTI_CHECK_MSG(AudioMixBufMixed(&child) == temp, ("Child: Expected %RU32 mixed samples, got %RU32\n", AudioMixBufMixed(&child), temp)); 411 412 RTTESTI_CHECK(AudioMixBufProcessed(&parent) == AudioMixBufMixed(&child)); 413 413 414 414 for (;;) 415 415 { 416 RTTESTI_CHECK_RC_OK_BREAK( audioMixBufReadCirc(&parent, achBuf, cbBuf, &read));416 RTTESTI_CHECK_RC_OK_BREAK(AudioMixBufReadCirc(&parent, achBuf, cbBuf, &read)); 417 417 if (!read) 418 418 break; 419 419 cSamplesRead += read; 420 audioMixBufFinish(&parent, read);420 AudioMixBufFinish(&parent, read); 421 421 } 422 422 RTTESTI_CHECK_MSG(cSamplesRead == cSamplesParent, ("Parent: Expected %RU32 mixed samples, got %RU32\n", cSamplesParent, cSamplesRead)); … … 434 434 } 435 435 436 RTTESTI_CHECK( audioMixBufProcessed(&parent) == 0);437 RTTESTI_CHECK( audioMixBufMixed(&child) == 0);438 439 audioMixBufDestroy(&parent);440 audioMixBufDestroy(&child);436 RTTESTI_CHECK(AudioMixBufProcessed(&parent) == 0); 437 RTTESTI_CHECK(AudioMixBufMixed(&child) == 0); 438 439 AudioMixBufDestroy(&parent); 440 AudioMixBufDestroy(&child); 441 441 442 442 return RTTestSubErrorCount(hTest) ? VERR_GENERAL_FAILURE : VINF_SUCCESS; … … 467 467 PDMAUDIOVOLUME vol = { false, 0, 0 }; /* Not muted. */ 468 468 PDMAUDIOMIXBUF parent; 469 RTTESTI_CHECK_RC_OK( audioMixBufInit(&parent, "Parent", &props, cBufSize));469 RTTESTI_CHECK_RC_OK(AudioMixBufInit(&parent, "Parent", &props, cBufSize)); 470 470 471 471 PDMAUDIOMIXBUF child; 472 RTTESTI_CHECK_RC_OK( audioMixBufInit(&child, "Child", &props, cBufSize));473 RTTESTI_CHECK_RC_OK( audioMixBufLinkTo(&child, &parent));472 RTTESTI_CHECK_RC_OK(AudioMixBufInit(&child, "Child", &props, cBufSize)); 473 RTTESTI_CHECK_RC_OK(AudioMixBufLinkTo(&child, &parent)); 474 474 475 475 /* A few 16-bit signed samples. */ … … 497 497 /* 1) Full volume/0dB attenuation (255). */ 498 498 vol.uLeft = vol.uRight = 255; 499 audioMixBufSetVolume(&child, &vol);500 501 RTTESTI_CHECK_RC_OK( audioMixBufWriteAt(&child, 0, &samples, sizeof(samples), &written));499 AudioMixBufSetVolume(&child, &vol); 500 501 RTTESTI_CHECK_RC_OK(AudioMixBufWriteAt(&child, 0, &samples, sizeof(samples), &written)); 502 502 RTTESTI_CHECK_MSG(written == cSamplesChild, ("Child: Expected %RU32 written samples, got %RU32\n", cSamplesChild, written)); 503 RTTESTI_CHECK_RC_OK( audioMixBufMixToParent(&child, written, &mixed));503 RTTESTI_CHECK_RC_OK(AudioMixBufMixToParent(&child, written, &mixed)); 504 504 505 505 cSamplesRead = 0; 506 506 for (;;) 507 507 { 508 RTTESTI_CHECK_RC_OK_BREAK( audioMixBufReadCirc(&parent, achBuf, cbBuf, &read));508 RTTESTI_CHECK_RC_OK_BREAK(AudioMixBufReadCirc(&parent, achBuf, cbBuf, &read)); 509 509 if (!read) 510 510 break; 511 511 cSamplesRead += read; 512 audioMixBufFinish(&parent, read);512 AudioMixBufFinish(&parent, read); 513 513 } 514 514 RTTESTI_CHECK_MSG(cSamplesRead == cSamplesParent, ("Parent: Expected %RU32 mixed samples, got %RU32\n", cSamplesParent, cSamplesRead)); … … 524 524 ++pDst16; 525 525 } 526 audioMixBufReset(&child);526 AudioMixBufReset(&child); 527 527 528 528 /* 2) Half volume/-6dB attenuation (16 steps down). */ 529 529 vol.uLeft = vol.uRight = 255 - 16; 530 audioMixBufSetVolume(&child, &vol);531 532 RTTESTI_CHECK_RC_OK( audioMixBufWriteAt(&child, 0, &samples, sizeof(samples), &written));530 AudioMixBufSetVolume(&child, &vol); 531 532 RTTESTI_CHECK_RC_OK(AudioMixBufWriteAt(&child, 0, &samples, sizeof(samples), &written)); 533 533 RTTESTI_CHECK_MSG(written == cSamplesChild, ("Child: Expected %RU32 written samples, got %RU32\n", cSamplesChild, written)); 534 RTTESTI_CHECK_RC_OK( audioMixBufMixToParent(&child, written, &mixed));534 RTTESTI_CHECK_RC_OK(AudioMixBufMixToParent(&child, written, &mixed)); 535 535 536 536 cSamplesRead = 0; 537 537 for (;;) 538 538 { 539 RTTESTI_CHECK_RC_OK_BREAK( audioMixBufReadCirc(&parent, achBuf, cbBuf, &read));539 RTTESTI_CHECK_RC_OK_BREAK(AudioMixBufReadCirc(&parent, achBuf, cbBuf, &read)); 540 540 if (!read) 541 541 break; 542 542 cSamplesRead += read; 543 audioMixBufFinish(&parent, read);543 AudioMixBufFinish(&parent, read); 544 544 } 545 545 RTTESTI_CHECK_MSG(cSamplesRead == cSamplesParent, ("Parent: Expected %RU32 mixed samples, got %RU32\n", cSamplesParent, cSamplesRead)); … … 557 557 } 558 558 559 audioMixBufDestroy(&parent);560 audioMixBufDestroy(&child);559 AudioMixBufDestroy(&parent); 560 AudioMixBufDestroy(&child); 561 561 562 562 return RTTestSubErrorCount(hTest) ? VERR_GENERAL_FAILURE : VINF_SUCCESS;
Note:
See TracChangeset
for help on using the changeset viewer.