Changeset 65624 in vbox for trunk/src/VBox/Devices/Audio/testcase
- Timestamp:
- Feb 6, 2017 2:13:36 PM (8 years ago)
- svn:sync-xref-src-repo-rev:
- 113296
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Devices/Audio/testcase/tstAudioMixBuffer.cpp
r63362 r65624 46 46 PDMAUDIODIR_OUT, 47 47 { PDMAUDIOPLAYBACKDEST_UNKNOWN }, 48 44100, /* Hz */ 49 2 /* Channels */, 50 PDMAUDIOFMT_S16 /* Format */, 51 PDMAUDIOENDIANNESS_LITTLE /* ENDIANNESS */ 52 }; 53 PDMAUDIOPCMPROPS props; 54 55 int rc = DrvAudioHlpStreamCfgToProps(&config, &props); 56 AssertRC(rc); 48 { 16, /* Bits */ 49 true, /* Signed */ 50 1, /* Shift */ 51 2, /* Channels */ 52 44100, /* Hz */ 53 false /* Swap Endian */ }, 54 0 /* cSampleBufferSize */ 55 }; 56 57 RTTESTI_CHECK(DrvAudioHlpStreamCfgIsValid(&config)); 57 58 58 59 uint32_t cBufSize = _1K; … … 62 63 */ 63 64 PDMAUDIOMIXBUF mb; 64 RTTESTI_CHECK_RC_OK(AudioMixBufInit(&mb, "Single", & props, cBufSize));65 RTTESTI_CHECK_RC_OK(AudioMixBufInit(&mb, "Single", &config.Props, cBufSize)); 65 66 RTTESTI_CHECK(AudioMixBufSize(&mb) == cBufSize); 66 67 RTTESTI_CHECK(AUDIOMIXBUF_B2S(&mb, AudioMixBufSizeBytes(&mb)) == cBufSize); … … 149 150 PDMAUDIODIR_OUT, 150 151 { PDMAUDIOPLAYBACKDEST_UNKNOWN }, 151 44100, /* Hz */ 152 2 /* Channels */, 153 PDMAUDIOFMT_S16 /* Format */, 154 PDMAUDIOENDIANNESS_LITTLE /* ENDIANNESS */ 155 }; 156 157 PDMAUDIOPCMPROPS props; 158 int rc = DrvAudioHlpStreamCfgToProps(&cfg_p, &props); 159 AssertRC(rc); 152 { 16, /* Bits */ 153 true, /* Signed */ 154 1, /* Shift */ 155 2, /* Channels */ 156 44100, /* Hz */ 157 false /* Swap Endian */ }, 158 0 /* cSampleBufferSize */ 159 }; 160 161 RTTESTI_CHECK(DrvAudioHlpStreamCfgIsValid(&cfg_p)); 160 162 161 163 PDMAUDIOMIXBUF parent; 162 RTTESTI_CHECK_RC_OK(AudioMixBufInit(&parent, "Parent", & props, cBufSize));164 RTTESTI_CHECK_RC_OK(AudioMixBufInit(&parent, "Parent", &cfg_p.Props, cBufSize)); 163 165 164 166 PDMAUDIOSTREAMCFG cfg_c1 = /* Upmixing to parent */ … … 167 169 PDMAUDIODIR_OUT, 168 170 { PDMAUDIOPLAYBACKDEST_UNKNOWN }, 169 22050, /* Hz */ 170 2 /* Channels */, 171 PDMAUDIOFMT_S16 /* Format */, 172 PDMAUDIOENDIANNESS_LITTLE /* ENDIANNESS */ 173 }; 174 175 rc = DrvAudioHlpStreamCfgToProps(&cfg_c1, &props); 176 AssertRC(rc); 171 { 16, /* Bits */ 172 true, /* Signed */ 173 1, /* Shift */ 174 2, /* Channels */ 175 22050, /* Hz */ 176 false /* Swap Endian */ }, 177 0 /* cSampleBufferSize */ 178 }; 179 180 RTTESTI_CHECK(DrvAudioHlpStreamCfgIsValid(&cfg_c1)); 177 181 178 182 PDMAUDIOMIXBUF child1; 179 RTTESTI_CHECK_RC_OK(AudioMixBufInit(&child1, "Child1", & props, cBufSize));183 RTTESTI_CHECK_RC_OK(AudioMixBufInit(&child1, "Child1", &cfg_c1.Props, cBufSize)); 180 184 RTTESTI_CHECK_RC_OK(AudioMixBufLinkTo(&child1, &parent)); 181 185 … … 185 189 PDMAUDIODIR_OUT, 186 190 { PDMAUDIOPLAYBACKDEST_UNKNOWN }, 187 48000, /* Hz */ 188 2 /* Channels */, 189 PDMAUDIOFMT_S16 /* Format */, 190 PDMAUDIOENDIANNESS_LITTLE /* ENDIANNESS */ 191 }; 192 193 rc = DrvAudioHlpStreamCfgToProps(&cfg_c2, &props); 194 AssertRC(rc); 191 { 16, /* Bits */ 192 true, /* Signed */ 193 1, /* Shift */ 194 2, /* Channels */ 195 48000, /* Hz */ 196 false /* Swap Endian */ }, 197 0 /* cSampleBufferSize */ 198 }; 199 200 RTTESTI_CHECK(DrvAudioHlpStreamCfgIsValid(&cfg_c2)); 195 201 196 202 PDMAUDIOMIXBUF child2; 197 RTTESTI_CHECK_RC_OK(AudioMixBufInit(&child2, "Child2", & props, cBufSize));203 RTTESTI_CHECK_RC_OK(AudioMixBufInit(&child2, "Child2", &cfg_c2.Props, cBufSize)); 198 204 RTTESTI_CHECK_RC_OK(AudioMixBufLinkTo(&child2, &parent)); 199 205 … … 262 268 unsigned i; 263 269 uint32_t cBufSize = 256; 264 PDMAUDIOPCMPROPS props;265 270 266 271 RTTestSubF(hTest, "Sample conversion (U8)"); … … 271 276 PDMAUDIODIR_OUT, 272 277 { PDMAUDIOPLAYBACKDEST_UNKNOWN }, 273 44100, /* Hz */ 274 1 /* Channels */, 275 PDMAUDIOFMT_U8 /* Format */, 276 PDMAUDIOENDIANNESS_LITTLE /* ENDIANNESS */ 277 }; 278 279 int rc = DrvAudioHlpStreamCfgToProps(&cfg_p, &props); 280 AssertRC(rc); 278 { 8, /* Bits */ 279 false, /* Signed */ 280 1, /* Shift */ 281 1, /* Channels */ 282 44100, /* Hz */ 283 false /* Swap Endian */ }, 284 0 /* cSampleBufferSize */ 285 }; 286 287 RTTESTI_CHECK(DrvAudioHlpStreamCfgIsValid(&cfg_p)); 281 288 282 289 PDMAUDIOMIXBUF parent; 283 RTTESTI_CHECK_RC_OK(AudioMixBufInit(&parent, "Parent", & props, cBufSize));290 RTTESTI_CHECK_RC_OK(AudioMixBufInit(&parent, "Parent", &cfg_p.Props, cBufSize)); 284 291 285 292 /* Child uses half the sample rate; that ensures the mixing engine can't … … 295 302 PDMAUDIODIR_OUT, 296 303 { PDMAUDIOPLAYBACKDEST_UNKNOWN }, 297 22050, /* Hz */ 298 1 /* Channels */, 299 PDMAUDIOFMT_U8 /* Format */, 300 PDMAUDIOENDIANNESS_LITTLE /* ENDIANNESS */ 301 }; 302 303 rc = DrvAudioHlpStreamCfgToProps(&cfg_c, &props); 304 AssertRC(rc); 304 { 8, /* Bits */ 305 false, /* Signed */ 306 1, /* Shift */ 307 1, /* Channels */ 308 22050, /* Hz */ 309 false /* Swap Endian */ }, 310 0 /* cSampleBufferSize */ 311 }; 312 313 RTTESTI_CHECK(DrvAudioHlpStreamCfgIsValid(&cfg_c)); 305 314 306 315 PDMAUDIOMIXBUF child; 307 RTTESTI_CHECK_RC_OK(AudioMixBufInit(&child, "Child", & props, cBufSize));316 RTTESTI_CHECK_RC_OK(AudioMixBufInit(&child, "Child", &cfg_c.Props, cBufSize)); 308 317 RTTESTI_CHECK_RC_OK(AudioMixBufLinkTo(&child, &parent)); 309 318 … … 324 333 325 334 /**** 8-bit unsigned samples ****/ 326 RTTestPrintf(hTest, RTTESTLVL_DEBUG, "Conversion test %uHz %uch 8-bit\n", cfg_c. uHz, cfg_c.cChannels);335 RTTestPrintf(hTest, RTTESTLVL_DEBUG, "Conversion test %uHz %uch 8-bit\n", cfg_c.Props.uHz, cfg_c.Props.cChannels); 327 336 RTTESTI_CHECK_RC_OK(AudioMixBufWriteCirc(&child, &samples, sizeof(samples), &cSamplesWritten)); 328 337 RTTESTI_CHECK_MSG(cSamplesWritten == cSamplesChild, ("Child: Expected %RU32 written samples, got %RU32\n", cSamplesChild, cSamplesWritten)); … … 370 379 unsigned i; 371 380 uint32_t cBufSize = 256; 372 PDMAUDIOPCMPROPS props;373 381 374 382 RTTestSubF(hTest, "Sample conversion (S16)"); … … 379 387 PDMAUDIODIR_OUT, 380 388 { PDMAUDIOPLAYBACKDEST_UNKNOWN }, 381 44100, /* Hz */ 382 1 /* Channels */, 383 PDMAUDIOFMT_S16 /* Format */, 384 PDMAUDIOENDIANNESS_LITTLE /* ENDIANNESS */ 385 }; 386 387 int rc = DrvAudioHlpStreamCfgToProps(&cfg_p, &props); 388 AssertRC(rc); 389 { 16, /* Bits */ 390 true, /* Signed */ 391 1, /* Shift */ 392 1, /* Channels */ 393 44100, /* Hz */ 394 false /* Swap Endian */ }, 395 0 /* cSampleBufferSize */ 396 }; 397 398 RTTESTI_CHECK(DrvAudioHlpStreamCfgIsValid(&cfg_p)); 389 399 390 400 PDMAUDIOMIXBUF parent; 391 RTTESTI_CHECK_RC_OK(AudioMixBufInit(&parent, "Parent", & props, cBufSize));401 RTTESTI_CHECK_RC_OK(AudioMixBufInit(&parent, "Parent", &cfg_p.Props, cBufSize)); 392 402 393 403 PDMAUDIOSTREAMCFG cfg_c = /* Upmixing to parent */ … … 396 406 PDMAUDIODIR_OUT, 397 407 { PDMAUDIOPLAYBACKDEST_UNKNOWN }, 398 22050, /* Hz */ 399 1 /* Channels */, 400 PDMAUDIOFMT_S16 /* Format */, 401 PDMAUDIOENDIANNESS_LITTLE /* ENDIANNESS */ 402 }; 403 404 rc = DrvAudioHlpStreamCfgToProps(&cfg_c, &props); 405 AssertRC(rc); 408 { 16, /* Bits */ 409 true, /* Signed */ 410 1, /* Shift */ 411 1, /* Channels */ 412 22050, /* Hz */ 413 false /* Swap Endian */ }, 414 0 /* cSampleBufferSize */ 415 }; 416 417 RTTESTI_CHECK(DrvAudioHlpStreamCfgIsValid(&cfg_c)); 406 418 407 419 PDMAUDIOMIXBUF child; 408 RTTESTI_CHECK_RC_OK(AudioMixBufInit(&child, "Child", & props, cBufSize));420 RTTESTI_CHECK_RC_OK(AudioMixBufInit(&child, "Child", &cfg_c.Props, cBufSize)); 409 421 RTTESTI_CHECK_RC_OK(AudioMixBufLinkTo(&child, &parent)); 410 422 … … 425 437 426 438 /**** 16-bit signed samples ****/ 427 RTTestPrintf(hTest, RTTESTLVL_DEBUG, "Conversion test %uHz %uch 16-bit\n", cfg_c. uHz, cfg_c.cChannels);439 RTTestPrintf(hTest, RTTESTLVL_DEBUG, "Conversion test %uHz %uch 16-bit\n", cfg_c.Props.uHz, cfg_c.Props.cChannels); 428 440 RTTESTI_CHECK_RC_OK(AudioMixBufWriteCirc(&child, &samples, sizeof(samples), &cSamplesWritten)); 429 441 RTTESTI_CHECK_MSG(cSamplesWritten == cSamplesChild, ("Child: Expected %RU32 written samples, got %RU32\n", cSamplesChild, cSamplesWritten)); … … 470 482 unsigned i; 471 483 uint32_t cBufSize = 256; 472 PDMAUDIOPCMPROPS props;473 484 474 485 RTTestSubF(hTest, "Volume control"); … … 480 491 PDMAUDIODIR_OUT, 481 492 { PDMAUDIOPLAYBACKDEST_UNKNOWN }, 482 44100, /* Hz */ 483 2 /* Channels */, 484 PDMAUDIOFMT_S16 /* Format */, 485 PDMAUDIOENDIANNESS_LITTLE /* ENDIANNESS */ 486 }; 487 488 int rc = DrvAudioHlpStreamCfgToProps(&cfg, &props); 489 AssertRC(rc); 493 { 16, /* Bits */ 494 true, /* Signed */ 495 1, /* Shift */ 496 2, /* Channels */ 497 44100, /* Hz */ 498 false /* Swap Endian */ }, 499 0 /* cSampleBufferSize */ 500 }; 501 502 RTTESTI_CHECK(DrvAudioHlpStreamCfgIsValid(&cfg)); 490 503 491 504 PDMAUDIOVOLUME vol = { false, 0, 0 }; /* Not muted. */ 492 505 PDMAUDIOMIXBUF parent; 493 RTTESTI_CHECK_RC_OK(AudioMixBufInit(&parent, "Parent", & props, cBufSize));506 RTTESTI_CHECK_RC_OK(AudioMixBufInit(&parent, "Parent", &cfg.Props, cBufSize)); 494 507 495 508 PDMAUDIOMIXBUF child; 496 RTTESTI_CHECK_RC_OK(AudioMixBufInit(&child, "Child", & props, cBufSize));509 RTTESTI_CHECK_RC_OK(AudioMixBufInit(&child, "Child", &cfg.Props, cBufSize)); 497 510 RTTESTI_CHECK_RC_OK(AudioMixBufLinkTo(&child, &parent)); 498 511 … … 515 528 516 529 /**** Volume control test ****/ 517 RTTestPrintf(hTest, RTTESTLVL_DEBUG, "Volume control test %uHz %uch \n", cfg. uHz, cfg.cChannels);530 RTTestPrintf(hTest, RTTESTLVL_DEBUG, "Volume control test %uHz %uch \n", cfg.Props.uHz, cfg.Props.cChannels); 518 531 519 532 /* 1) Full volume/0dB attenuation (255). */
Note:
See TracChangeset
for help on using the changeset viewer.