Changeset 89332 in vbox for trunk/src/VBox/Devices/Audio/testcase
- Timestamp:
- May 28, 2021 8:23:42 AM (4 years ago)
- svn:sync-xref-src-repo-rev:
- 144681
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Devices/Audio/testcase/tstAudioMixBuffer.cpp
r89330 r89332 159 159 PDMAudioPropsClearBuffer(&Cfg441StereoU16, pbPage, PAGE_SIZE, PAGE_SIZE / 4); 160 160 for (uint32_t off = 0; off < PAGE_SIZE; off += 2) 161 RTTESTI_CHECK_MSG(pbPage[off] == 0 x80 && pbPage[off + 1] ==0, ("off=%#x: %#x %x\n", off, pbPage[off], pbPage[off + 1]));161 RTTESTI_CHECK_MSG(pbPage[off] == 0 && pbPage[off + 1] == 0x80, ("off=%#x: %#x %x\n", off, pbPage[off], pbPage[off + 1])); 162 162 163 163 memset(pbPage, 0x42, PAGE_SIZE); 164 164 PDMAudioPropsClearBuffer(&Cfg441StereoU32, pbPage, PAGE_SIZE, PAGE_SIZE / 8); 165 165 for (uint32_t off = 0; off < PAGE_SIZE; off += 4) 166 RTTESTI_CHECK(pbPage[off] == 0 x80 && pbPage[off + 1] == 0 && pbPage[off + 2] == 0 && pbPage[off + 3] ==0);166 RTTESTI_CHECK(pbPage[off] == 0 && pbPage[off + 1] == 0 && pbPage[off + 2] == 0 && pbPage[off + 3] == 0x80); 167 167 168 168 … … 175 175 PDMAudioPropsClearBuffer(&Cfg441StereoU16, pbPage, PAGE_SIZE, PAGE_SIZE); /* should adjust down the frame count. */ 176 176 for (uint32_t off = 0; off < PAGE_SIZE; off += 2) 177 RTTESTI_CHECK_MSG(pbPage[off] == 0 x80 && pbPage[off + 1] ==0, ("off=%#x: %#x %x\n", off, pbPage[off], pbPage[off + 1]));177 RTTESTI_CHECK_MSG(pbPage[off] == 0 && pbPage[off + 1] == 0x80, ("off=%#x: %#x %x\n", off, pbPage[off], pbPage[off + 1])); 178 178 179 179 memset(pbPage, 0x42, PAGE_SIZE); 180 180 PDMAudioPropsClearBuffer(&Cfg441StereoU32, pbPage, PAGE_SIZE, PAGE_SIZE); /* should adjust down the frame count. */ 181 181 for (uint32_t off = 0; off < PAGE_SIZE; off += 4) 182 RTTESTI_CHECK(pbPage[off] == 0 x80 && pbPage[off + 1] == 0 && pbPage[off + 2] == 0 && pbPage[off + 3] ==0);182 RTTESTI_CHECK(pbPage[off] == 0 && pbPage[off + 1] == 0 && pbPage[off + 2] == 0 && pbPage[off + 3] == 0x80); 183 183 RTTestRestoreAssertions(hTest); 184 184 … … 187 187 188 188 189 static int tstSingle(RTTEST hTest)189 static void tstSimple(RTTEST hTest) 190 190 { 191 RTTestSub(hTest, "Si ngle buffer");191 RTTestSub(hTest, "Simple"); 192 192 193 193 /* 44100Hz, 2 Channels, S16 */ … … 208 208 */ 209 209 AUDIOMIXBUF mb; 210 RTTESTI_CHECK_RC_OK (AudioMixBufInit(&mb, "Single", &config, cBufSize));210 RTTESTI_CHECK_RC_OK_RETV(AudioMixBufInit(&mb, "Single", &config, cBufSize)); 211 211 RTTESTI_CHECK(AudioMixBufSize(&mb) == cBufSize); 212 212 RTTESTI_CHECK(AUDIOMIXBUF_B2F(&mb, AudioMixBufSizeBytes(&mb)) == cBufSize); … … 215 215 RTTESTI_CHECK(AUDIOMIXBUF_F2B(&mb, AudioMixBufFree(&mb)) == AudioMixBufFreeBytes(&mb)); 216 216 217 /* 218 * Absolute writes. 217 AUDIOMIXBUFWRITESTATE WrState; 218 RTTESTI_CHECK_RC(AudioMixBufInitWriteState(&mb, &WrState, &config), VINF_SUCCESS); 219 220 /* 221 * A few writes (used to be the weird absolute writes). 219 222 */ 220 223 uint32_t cFramesRead = 0, cFramesWritten = 0, cFramesWrittenAbs = 0; 221 int8_t aFrames8 [2] = { 0x12, 0x34 };222 224 int16_t aFrames16[2] = { 0xAA, 0xBB }; 223 225 int32_t aFrames32[2] = { 0xCC, 0xDD }; 224 226 225 RTTESTI_CHECK_RC_OK(AudioMixBufWriteAt(&mb, 0 /* Offset */, &aFrames8, sizeof(aFrames8), &cFramesWritten));226 RTTESTI_CHECK(cFramesWritten == 0 /* Frames */);227 227 RTTESTI_CHECK(AudioMixBufUsed(&mb) == 0); 228 228 229 RTTESTI_CHECK_RC_OK(AudioMixBufWriteAt(&mb, 0 /* Offset */, &aFrames16, sizeof(aFrames16), &cFramesWritten));229 AudioMixBufWrite(&mb, &WrState, &aFrames16, sizeof(aFrames16), 0 /*offDstFrame*/, cBufSize / 4, &cFramesWritten); 230 230 RTTESTI_CHECK(cFramesWritten == 1 /* Frames */); 231 RTTESTI_CHECK(AudioMixBufUsed(&mb) == 0); 232 AudioMixBufCommit(&mb, cFramesWritten); 231 233 RTTESTI_CHECK(AudioMixBufUsed(&mb) == 1); 232 233 RTTESTI_CHECK_RC_OK(AudioMixBufWriteAt(&mb, 2 /* Offset */, &aFrames32, sizeof(aFrames32), &cFramesWritten)); 234 RTTESTI_CHECK(AudioMixBufReadPos(&mb) == 0); 235 RTTESTI_CHECK(AudioMixBufWritePos(&mb) == 1); 236 237 AudioMixBufWrite(&mb, &WrState, &aFrames32, sizeof(aFrames32), 0 /*offDstFrame*/, cBufSize / 4, &cFramesWritten); 234 238 RTTESTI_CHECK(cFramesWritten == 2 /* Frames */); 235 RTTESTI_CHECK(AudioMixBufUsed(&mb) == 2); 236 237 /* Beyond buffer. */ 238 RTTESTI_CHECK_RC(AudioMixBufWriteAt(&mb, AudioMixBufSize(&mb) + 1, &aFrames16, sizeof(aFrames16), 239 &cFramesWritten), VERR_BUFFER_OVERFLOW); 240 241 /* Offset wrap-around: When writing as much (or more) frames the mixing buffer can hold. */ 242 uint32_t cbSamples = cBufSize * sizeof(int16_t) * 2 /* Channels */; 243 RTTESTI_CHECK(cbSamples); 239 AudioMixBufCommit(&mb, cFramesWritten); 240 RTTESTI_CHECK(AudioMixBufUsed(&mb) == 3); 241 RTTESTI_CHECK(AudioMixBufReadPos(&mb) == 0); 242 RTTESTI_CHECK(AudioMixBufWritePos(&mb) == 3); 243 244 /* Pretend we read the frames.*/ 245 AudioMixBufAdvance(&mb, 3); 246 RTTESTI_CHECK(AudioMixBufUsed(&mb) == 0); 247 RTTESTI_CHECK(AudioMixBufReadPos(&mb) == 3); 248 RTTESTI_CHECK(AudioMixBufWritePos(&mb) == 3); 249 250 /* Fill up the buffer completely and check wraps. */ 251 252 uint32_t cbSamples = PDMAudioPropsFramesToBytes(&config, cBufSize); 244 253 uint16_t *paSamples = (uint16_t *)RTMemAlloc(cbSamples); 245 RTTESTI_CHECK(paSamples); 246 RTTESTI_CHECK_RC_OK(AudioMixBufWriteAt(&mb, 0 /* Offset */, paSamples, cbSamples, &cFramesWritten)); 247 RTTESTI_CHECK(cFramesWritten == cBufSize /* Frames */); 254 RTTESTI_CHECK_RETV(paSamples); 255 AudioMixBufWrite(&mb, &WrState, paSamples, cbSamples, 0 /*offDstFrame*/, cBufSize, &cFramesWritten); 256 RTTESTI_CHECK(cFramesWritten == cBufSize); 257 AudioMixBufCommit(&mb, cFramesWritten); 248 258 RTTESTI_CHECK(AudioMixBufUsed(&mb) == cBufSize); 249 RTTESTI_CHECK(AudioMixBufReadPos(&mb) == 0);250 RTTESTI_CHECK(AudioMixBufWritePos(&mb) == 0);259 RTTESTI_CHECK(AudioMixBufReadPos(&mb) == 3); 260 RTTESTI_CHECK(AudioMixBufWritePos(&mb) == 3); 251 261 RTMemFree(paSamples); 252 262 cbSamples = 0; … … 256 266 */ 257 267 AudioMixBufReset(&mb); 258 259 RTTESTI_CHECK_RC_OK(AudioMixBufWriteAt(&mb, 2 /* Offset */, &aFrames32, sizeof(aFrames32), &cFramesWritten));260 RTTESTI_CHECK(cFramesWritten == 2 /* Frames */);261 RTTESTI_CHECK(AudioMixBufUsed(&mb) == 2);262 268 263 269 cFramesWrittenAbs = AudioMixBufUsed(&mb); … … 303 309 304 310 AudioMixBufDestroy(&mb); 305 306 return RTTestSubErrorCount(hTest) ? VERR_GENERAL_FAILURE : VINF_SUCCESS;307 311 } 308 312 … … 990 994 991 995 tstBasics(hTest); 992 tstSi ngle(hTest);996 tstSimple(hTest); 993 997 //tstParentChild(hTest); 994 998 //tstConversion8(hTest);
Note:
See TracChangeset
for help on using the changeset viewer.