Fix on-demand playback timing drift: use absolute timing instead of sleep(0.058) to prevent audio cuts on long files

pull/26/head
Joaquin Madrid Belando 2 weeks ago
parent 2f9a363d60
commit 07a28d34c7

@ -790,16 +790,22 @@ def playFileOnRequest(self,fileNumber):
speech = pkt_gen(_source_id, _nine, bytes_4(9), 1, _say)
sleep(1)
_slot = systems[system].STATUS[2]
_next_time = time()
_pkt_count = 0
while True:
try:
pkt = next(speech)
except StopIteration:
break
sleep(0.058)
_next_time += 0.058
_delay = _next_time - time()
if _delay > 0.001:
sleep(_delay)
_stream_id = pkt[16:20]
_pkt_time = time()
reactor.callFromThread(sendVoicePacket,self,pkt,_source_id,_nine,_slot)
logger.info('(%s) On-demand playback complete: %s', system, fileNumber)
_pkt_count += 1
logger.info('(%s) On-demand playback complete: %s (%d packets)', system, fileNumber, _pkt_count)
def threadIdent():
logger.debug('(IDENT) starting ident thread')

Loading…
Cancel
Save

Powered by TurnKey Linux.