void testTickerNotification() { CallbackUserData userData; RTL_START(1000000); calculateSampleData(); OUTPUT_DRIVER driver(OUTPUT_DRIVER_CONSTRUCTOR_PARAMS); userData.mDriver = &driver; OsCallback notificationCallback((intptr_t)&userData, &driverCallback); frameTime = 0; sampleDataSz = TEST_SAMPLE_DATA_SIZE; driver.enableDevice(TEST_SAMPLES_PER_FRAME_SIZE, TEST_SAMPLES_PER_SECOND, 0, notificationCallback); // Wait defined amount of time. OsTask::delay(TEST_SAMPLE_DATA_LENGTH_SEC*1000); driver.disableDevice(); CPPUNIT_ASSERT(!driver.isEnabled()); CPPUNIT_ASSERT(frameInCallback > TEST_SAMPLE_DATA_LENGTH_SEC*TEST_FRAME_RATE); RTL_WRITE("testTickerNotification.rtl"); RTL_STOP }
void testMixing() { MpOutputDeviceHandle deviceId; OUTPUT_DRIVER device(OUTPUT_DRIVER_CONSTRUCTOR_PARAMS); CPPUNIT_ASSERT(!device.isEnabled()); for (int i=0; i<TICKER_TEST_WRITE_RUNS_NUMBER; i++) { MpOutputDeviceManager deviceManager(TEST_SAMPLES_PER_FRAME_SIZE, TEST_SAMPLES_PER_SECOND, TEST_MIXER_BUFFER_LENGTH); MpAudioBufPtr pBuffer = mpPool->getBuffer(); deviceId = deviceManager.addDevice(&device); CPPUNIT_ASSERT(deviceId > 0); deviceManager.enableDevice(deviceId); CPPUNIT_ASSERT(deviceManager.isDeviceEnabled(deviceId)); // Get current frame time and step to middle of mixer buffer to be in // time with output audio connection. MpFrameTime frameTime=deviceManager.getCurrentFrameTime(deviceId); frameTime += TEST_MIXER_BUFFER_LENGTH/2; // Write some data to device. for (int frame=0; frame<TEST_SAMPLE_FRAMES/TEST_SAMPLES_PER_FRAME_SIZE; frame++) { calculateSampleData(frameTime, pBuffer); OsTask::delay(TEST_FRAME_LENGTH_MS); CPPUNIT_ASSERT_EQUAL(OS_SUCCESS, deviceManager.pushFrame(deviceId, frameTime, pBuffer)); frameTime += TEST_FRAME_LENGTH_MS; } deviceManager.disableDevice(deviceId); CPPUNIT_ASSERT(!deviceManager.isDeviceEnabled(deviceId)); CPPUNIT_ASSERT(deviceManager.removeDevice(deviceId) == &device); } }