Method and system for precise synchronization of audio and video streams during a distributed communication session with multiple participants
First Claim
Patent Images
1. A method for clock synchronization by calculating a correction value to be added or subtracted from a local time calculated comprising:
- defining a first computer A'"'"'s time as an absolute time TA and a second computer N'"'"'s time as non-absolute time TN;
assigning a current best approximation of a network round trip time between computers A and N to RTTapp;
setting initial values of registers tA,last and tN,last to zero for computer A;
exchanging synchronization packets periodically;
computer N computing t1=TLocalTimeN, wherein TLocalTimeN is a local time of computer N;
computer N writing t1 into a synchronization section in a synchronization request;
computer N sending an audio packet to computer A;
computer A receiving the audio packet;
computer A computing t2=TLocalTimeA, wherein TLocalTimeA is a local time of computer A;
computer A setting tA,last to the value of t2 and setting tN,last to the value of t1 from the audio packet if t1>
tN,last;
computer A calculating t′
2 and writing (t′
1=t1+t′
2−
t2, t′
2) into the synchronization section in a synchronization reply if the tN,last was not sent in a synchronization reply, wherein t′
2 is a local time of computer N just before an audio packet is sent to computer N;
computer A sending an audio packet to computer N;
computer N receiving the audio packet;
computer N computing t3=TLocalTimeN;
computer N computing RTT=t3−
t′
1;
computer N assigning RTTapp=RTT if RTTapp is not defined;
computer N assigning the value of minimum(RTTapp+RTTdrift, RTT) to RTTapp if RTT<
1.05*RTTapp, wherein RTTdrift is a drift in packet round trip time;
assigning a mean value of (t′
2−
(t′
1+t3)/2) of buffered data from previous synchronization cycles to Δ
TN−
A;
synchronizing clock by adding a correction value Δ
TN−
A to a local time TN.
28 Assignments
0 Petitions
Accused Products
Abstract
Described are the architecture of such a system, algorithms for time synchronization during a multiway conferencing session, methods to fight with network imperfections such as jitter to improve synchronization, methods of introducing buffering delays to create handicaps for players with faster connections, methods which help players with synchronization (such as a synchronized metronome during a music conferencing session), methods for synchronized recording and live delivery of synchronized data to the audience watching the distributed interaction live over the Internet.
11 Citations
12 Claims
-
1. A method for clock synchronization by calculating a correction value to be added or subtracted from a local time calculated comprising:
-
defining a first computer A'"'"'s time as an absolute time TA and a second computer N'"'"'s time as non-absolute time TN; assigning a current best approximation of a network round trip time between computers A and N to RTTapp; setting initial values of registers tA,last and tN,last to zero for computer A; exchanging synchronization packets periodically; computer N computing t1=TLocalTimeN, wherein TLocalTimeN is a local time of computer N; computer N writing t1 into a synchronization section in a synchronization request; computer N sending an audio packet to computer A; computer A receiving the audio packet; computer A computing t2=TLocalTimeA, wherein TLocalTimeA is a local time of computer A; computer A setting tA,last to the value of t2 and setting tN,last to the value of t1 from the audio packet if t1>
tN,last;computer A calculating t′
2 and writing (t′
1=t1+t′
2−
t2, t′
2) into the synchronization section in a synchronization reply if the tN,last was not sent in a synchronization reply, wherein t′
2 is a local time of computer N just before an audio packet is sent to computer N;computer A sending an audio packet to computer N; computer N receiving the audio packet; computer N computing t3=TLocalTimeN; computer N computing RTT=t3−
t′
1;computer N assigning RTTapp=RTT if RTTapp is not defined; computer N assigning the value of minimum(RTTapp+RTTdrift, RTT) to RTTapp if RTT<
1.05*RTTapp, wherein RTTdrift is a drift in packet round trip time;assigning a mean value of (t′
2−
(t′
1+t3)/2) of buffered data from previous synchronization cycles to Δ
TN−
A;synchronizing clock by adding a correction value Δ
TN−
A to a local time TN. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11)
-
-
12. A system comprising:
-
a plurality of computers used for a distributed communication session with multiple participants using audio and video streams, wherein each computer includes; a processor; a clock; a computer readable medium with instructions to carry out processes including; defining a first computer A'"'"'s time as an absolute time TA and a second computer N'"'"'s time as non-absolute time TN; assigning a current best approximation of a network round trip time between computers A and N to RTTapp; setting initial values of registers tA,last and tN,last to zero for computer A; exchanging synchronization packets periodically; computer N computing t1=TLocalTimeN, wherein TLocalTimeN is a local time of computer N; computer N writing t1 into a synchronization section in a synchronization request; computer N sending an audio packet to computer A; computer A receiving the audio packet; computer A computing t2=TLocalTimeA, wherein TLocalTimeA is a local time of computer A; computer A setting tA,last to the value of t2 and setting tN,last to the value of t1 from the audio packet if t1>
tN,last;computer A calculating t′
2 and writing (t′
1=t1+t′
2−
t2, t′
2) into the synchronization section in a synchronization reply if the tN,last was not sent in a synchronization reply, wherein t′
2 is a local time of computer N just before an audio packet is sent to computer N;computer A sending an audio packet to computer N; computer N receiving the audio packet; computer N computing t3=TLocalTimeN; computer N computing RTT=t3−
t′
1;computer N assigning RTTapp=RTT if RTTapp is not defined; computer N assigning the value of minimum(RTTapp+RTTdrift, RTT) to RTTapp if RTT<
1.05*RTTapp, wherein RTTdrift is a drift in packet round trip time;assigning a mean value of (t′
2−
(t′
1+t3)/2) of buffered data from previous synchronization cycles to Δ
TN−
A;synchronizing clock by adding a correction value Δ
TN−
A to a local time TN;a network interface for communication among the plurality of computers.
-
Specification