aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChris Robinson <[email protected]>2018-11-18 05:38:03 -0800
committerChris Robinson <[email protected]>2018-11-18 05:38:03 -0800
commitde13f30e286358d8e4f41e457421e4ec9776e3f5 (patch)
treeb0a73ddb120bdfd798814c50ae3174a1cfa08684
parent0851dc12b4f21483b6f9002db4718ded99cbeb57 (diff)
Improve audio underrun recordery in alffplay
Now it has a better idea to skip samples during refill instead of after restarting.
-rw-r--r--examples/alffplay.cpp12
1 files changed, 12 insertions, 0 deletions
diff --git a/examples/alffplay.cpp b/examples/alffplay.cpp
index 27520a6d..f02fb16b 100644
--- a/examples/alffplay.cpp
+++ b/examples/alffplay.cpp
@@ -992,6 +992,18 @@ int AudioState::handler()
*/
alSourceRewind(mSource);
alSourcei(mSource, AL_BUFFER, 0);
+ if(alcGetInteger64vSOFT)
+ {
+ /* Also update the device start time with the current device
+ * clock, so the decoder knows we're running behind.
+ */
+ int64_t devtime{};
+ alcGetInteger64vSOFT(alcGetContextsDevice(alcGetCurrentContext()),
+ ALC_DEVICE_CLOCK_SOFT, 1, &devtime);
+ auto device_time = nanoseconds{devtime};
+
+ mDeviceStartTime = device_time - mCurrentPts;
+ }
continue;
}