mirror of
https://github.com/servalproject/serval-dna.git
synced 2025-02-21 01:42:18 +00:00
Make sure audio clock doesn't jump back due to out of order packets
This commit is contained in:
parent
6a89f7a321
commit
5fc9264c49
22
vomp.c
22
vomp.c
@ -727,20 +727,32 @@ static int vomp_process_audio(struct vomp_call_state *call, overlay_mdp_frame *m
|
||||
ofs+=2;
|
||||
|
||||
// rebuild absolute time value from short relative time.
|
||||
call->remote_audio_clock=to_absolute_value(time, call->remote_audio_clock);
|
||||
call->remote.sequence=to_absolute_value(sequence, call->remote.sequence);
|
||||
int decoded_time = to_absolute_value(time, call->remote_audio_clock);
|
||||
int decoded_sequence = to_absolute_value(sequence, call->remote.sequence);
|
||||
|
||||
time=call->remote_audio_clock * 20;
|
||||
if (call->remote_audio_clock < decoded_time &&
|
||||
call->remote.sequence < decoded_sequence){
|
||||
call->remote_audio_clock = decoded_time;
|
||||
call->remote.sequence = decoded_sequence;
|
||||
}else if (call->remote_audio_clock < decoded_time ||
|
||||
call->remote.sequence < decoded_sequence){
|
||||
WARNF("Mismatch while decoding sequence and time offset (%d, %d) + (%d, %d) = (%d, %d)",
|
||||
time, sequence,
|
||||
call->remote_audio_clock, call->remote.sequence,
|
||||
decoded_time, decoded_sequence);
|
||||
}
|
||||
|
||||
decoded_time=decoded_time * 20;
|
||||
|
||||
int audio_len = mdp->in.payload_length - ofs;
|
||||
int delay=0;
|
||||
|
||||
if (store_jitter_sample(&call->jitter, time, now, &delay))
|
||||
if (store_jitter_sample(&call->jitter, decoded_time, now, &delay))
|
||||
return 0;
|
||||
|
||||
/* Pass audio frame to all registered listeners */
|
||||
if (monitor_socket_count)
|
||||
monitor_send_audio(call, codec, time, call->remote.sequence,
|
||||
monitor_send_audio(call, codec, decoded_time, decoded_sequence,
|
||||
&mdp->in.payload[ofs],
|
||||
audio_len, delay);
|
||||
return 0;
|
||||
|
Loading…
x
Reference in New Issue
Block a user