mirror of
https://github.com/firestar5683/StarPilot.git
synced 2026-10-04 13:24:13 +08:00
Accept advancing DAC batches with repeated CoreAudio current timestamps
This commit is contained in:
@@ -25,7 +25,7 @@ class StreamClockBridge:
|
||||
if (not all(type(value) in (int,float) and math.isfinite(value) for value in (wall,current,dac))
|
||||
or current<=0 or dac<=0 or not -.02<=dac-current<=5):
|
||||
raise ValueError('Invalid callback clock sample')
|
||||
if previous is not None and (wall<previous[0] or current<=previous[1] or dac<=previous[2]):
|
||||
if previous is not None and (wall<previous[0] or current<previous[1] or dac<=previous[2]):
|
||||
raise ValueError('Output callback clock did not advance')
|
||||
previous=(wall,current,dac)
|
||||
offsets.append(wall-current)
|
||||
|
||||
@@ -47,5 +47,11 @@ class StreamClockBridgeTests(unittest.TestCase):
|
||||
for samples in ([(1.,0.,0.)]*8,[(1.+i*.02,500.,500.04) for i in range(8)],[]):
|
||||
with self.assertRaises(ValueError):StreamClockBridge.from_callbacks(samples)
|
||||
|
||||
def test_coreaudio_batch_may_repeat_current_time_while_dac_advances(self):
|
||||
samples=[(100.+i*.02,500.+(i//2)*.04,500.1+i*.02) for i in range(8)]
|
||||
bridge=StreamClockBridge.from_callbacks(samples)
|
||||
self.assertAlmostEqual(bridge.offset,-400.)
|
||||
self.assertAlmostEqual(bridge.dac_wall(501.),101.)
|
||||
|
||||
|
||||
if __name__=='__main__':unittest.main()
|
||||
|
||||
Reference in New Issue
Block a user