System for and method of recovering temporal alignment of digitally encoded audio data transmitted over digital data networks
First Claim
1. For a plurality of digital data chunks sequentially generated by a data transmitter according to a natural temporal order and a natural time alignment, and thereupon transmitted across a digital data network to a receiver, such that said digital data chunks arrive at said receiver in a received temporal order substantially independent of said natural temporal order and in a received time alignment substantially independent of said natural time alignment, a system for re-sequencing said plurality of digital data chunks at said receiver so as to transform said received temporal order into said natural temporal order, comprising:
- a chunk sorter for storing said digital data chunks in a data buffer and thereafter sequentially transferring, in said natural temporal order and at a chunk transfer rate compatible with a playout rate, said digital data chunks to a playout destination according to said natural temporal order, wherein said chunk sorter further includes;
(i) a packet unassembly buffer for receiving a plurality of packets of said digital data chunks;
(ii) a jitter buffer having a plurality of storage slots for storing said data chunks, wherein said chunk sorter zero-fills said storage slots so as to accommodate data chunks having a data width less than a width of said storage slots; and
, (iii) a digital signal processor for receiving said data chunks from said jitter buffer and sequentially playing out said data chunks in said natural temporal order at said playout rate; and
a chunk sequence analyzer for measuring an average time that said digital data chunks remain in said data buffer prior to playout, and for adjusting said playout rate so as to balance (a) an increase in said average time, with (b) an amount of data chunks lost due to arriving late and missing a playout deadline.
2 Assignments
0 Petitions
Accused Products
Abstract
A system for receiving and re-sequencing a plurality of digital data chunks after transmission across a digital data network, so as to recover the natural temporal order of the data chunks as defined at the transmitter, including a chunk sorter for storing the, digital data chunks in a data buffer. The system thereafter sequentially transfers, at a chunk transfer rate compatible with the system playout rate, the digital data chunks to a playout destination according to the natural temporal order. The system further includes a chunk sequence analyzer for measuring the average time that the digital data chunks remain in the data buffer. The chunk sequence analyzer adjusts the playout rate so as to balance an increase in the average time, with an amount of data chunks lost due to arriving late and missing a playout deadline.
75 Citations
39 Claims
-
1. For a plurality of digital data chunks sequentially generated by a data transmitter according to a natural temporal order and a natural time alignment, and thereupon transmitted across a digital data network to a receiver, such that said digital data chunks arrive at said receiver in a received temporal order substantially independent of said natural temporal order and in a received time alignment substantially independent of said natural time alignment, a system for re-sequencing said plurality of digital data chunks at said receiver so as to transform said received temporal order into said natural temporal order, comprising:
-
a chunk sorter for storing said digital data chunks in a data buffer and thereafter sequentially transferring, in said natural temporal order and at a chunk transfer rate compatible with a playout rate, said digital data chunks to a playout destination according to said natural temporal order, wherein said chunk sorter further includes;
(i) a packet unassembly buffer for receiving a plurality of packets of said digital data chunks;
(ii) a jitter buffer having a plurality of storage slots for storing said data chunks, wherein said chunk sorter zero-fills said storage slots so as to accommodate data chunks having a data width less than a width of said storage slots; and
,(iii) a digital signal processor for receiving said data chunks from said jitter buffer and sequentially playing out said data chunks in said natural temporal order at said playout rate; and
a chunk sequence analyzer for measuring an average time that said digital data chunks remain in said data buffer prior to playout, and for adjusting said playout rate so as to balance (a) an increase in said average time, with (b) an amount of data chunks lost due to arriving late and missing a playout deadline.
-
-
2. For a plurality of digital data chunks sequentially generated by a data transmitter according to a natural temporal order and a natural time alignment, and thereupon transmitted across a digital data network to a receiver, such that said digital data chunks arrive at said receiver in a received temporal order substantially independent of said natural temporal order and in a received time alignment substantially independent of said natural time alignment, a system for re-sequencing said plurality of digital data chunks at said receiver so as to transform said received temporal order into said natural temporal order, comprising:
-
a chunk sorter for storing said digital data chunks in a data buffer and thereafter sequentially transferring at a chunk transfer rate compatible with a playout rate, said digital data chunks to a playout destination according to said natural temporal order, and, a chunk sequence analyzer for measuring an average time that said digital data chunks remain in said data buffer prior to playout, and for adjusting said playout rate so as to balance (a) an increase in said average time, with (b) an amount of data chunks lost due to arriving late and missing a playout deadline, wherein said chunk sequence analyzer further includes (i) a chunk holding time calculator for determining a chunk holding time for each of said data chunks in said data buffer;
(ii) a mean holding time calculator for receiving said chunk holding time corresponding to each of said data chunks, and averaging a predetermined number of said chunk holding times, so as to produce a mean holding time corresponding to a set of data chunks in said data buffer;
(iii) a smoothed mean holding time calculator for receiving said mean holding time corresponding to each of said sets of data chunks in said data buffer, and averaging a predetermined number of said mean holding times within a time window, so as to produce a smoothed mean holding time. - View Dependent Claims (3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18)
(i) determines, for each data chunk, an arrival margin by which said data chunk either (a) achieves storage in said data buffer prior to playout, or (b) does not achieve storage in said data buffer due to missing said playout deadline;
(ii) sorts said arrival margins into a predetermined set of arrival margin bins; and
,(iii) adjusts said chunk holding time goal as a predetermined function of said sorted arrival margins.
-
-
17. A system according to claim 16, wherein said arrival margin is a predetermined function of an associated chunk holding time, an associated smoothed mean holding time, and a previous holding time goal value.
-
18. A system according to claim 16, wherein said chunk holding time goal is further a predetermined function of a loss tolerance value and a margin value width of said arrival margin bins.
-
19. For a plurality of digital data chunks sequentially generated by a data transmitter according to a natural temporal order, and thereupon transmitted across a digital data network to a receiver, such that said digital data chunks arrive at said receiver in a received temporal order substantially independent of said natural temporal order, a method of re-sequencing said plurality of digital data chunks at said receiver so as to transform said received temporal order into said natural temporal order, comprising the steps of:
-
storing said digital data chunks in a data buffer and thereafter sequentially transferring, at a chunk transfer rate compatible with a playout rate, said digital data chunks to a playout destination according to said natural temporal order;
including the steps of;
(i) receiving a plurality of packets of said digital data chunks in a packet unassembly buffer;
(ii) storing said data chunks in a jitter buffer having a plurality of storage slots; and
,(iii) receiving said data chunks from said jitter buffer and sequentially playing out said data chunks in said natural temporal order at said playout rate;
(iv) zero-filling said storage slots so as to accommodate data chunks having a data width less than a width of said storage slots, and, measuring an average time that said digital data chunks remain in said data buffer prior to playout, and adjusting said playout rate so as to balance (a) an increase in said average time, with (b) an amount of data chunks lost due to arriving late and missing a playout deadline.
-
-
20. For a plurality of digital data chunks sequentially generated by a data transmitter according to a natural temporal order, and thereupon transmitted across a digital data network to a receiver, such that said digital data chunks arrive at said receiver in a received temporal order substantially independent of said natural temporal order, a method of re-sequencing said plurality of digital data chunks at said receiver so as to transform said received temporal order into said natural temporal order, comprising the steps of:
-
storing said digital data chunks in a data buffer and thereafter sequentially transferring, at a chunk transfer rate compatible with a playout rate, said digital data chunks to a playout destination according to said natural temporal order; and
,measuring an average time that said digital data chunks remain in said data buffer prior to playout, and adjusting said playout rate so as to balance (a) an increase in said average time, with (b) an amount of data chunks lost due to arriving late and missing a playout deadline, further including the steps of;
(i) determining a chunk holding time for each of said data chunks in said data buffer;
(ii) receiving said chunk holding time corresponding to each of said data chunks, and averaging a predetermined number of said chunk holding times, so as to produce a mean holding time corresponding to a set of data chunks in said data buffer;
(iii) receiving said mean holding time corresponding to each of said sets of data chunks in said data buffer, and averaging a predetermined number of said mean holding times within a time window, so as to produce a smoothed mean holding time. - View Dependent Claims (21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32)
(i) determining, for each data chunk, an arrival margin by which said data chunk either (a) achieves storage in said data buffer prior to playout, or (b) avoids storage in said data buffer due to missing said playout deadline;
(ii) sorting said arrival margins into a predetermined set of arrival margin bins; and
,(iii) adjusting said chunk holding time goal as a predetermined function of said sorted arrival margins.
-
-
33. An apparatus for recovering temporal alignment of digitally encoded speech chunks having a natural temporal order, transmitted over a packet-switched data network providing best-effort connectionless service such that said packets conveyed thereby are subject to transit delay, variation in transit delay from one packet to another, packet loss, packet duplication, and out-of-order packet delivery, the apparatus comprising:
-
a first software module for (a) storing speech data packets in a data buffer as said packets arrive from a data network and (b) retrieving said data packets from said data buffer in said natural temporal order and at a time at which said speech data packets should be played out to a receiving party; and
a second software module for (a) measuring and (b) adjusting an average time that said speech data packets spend in storage, so as to balance an additional delay with an occurrence of said speech data that arrives from said data network too late for playout, and wherein the first software module recovers the sequence in which said encoded speech data is played out by storage of said speech chunks in a Jitter Buffer, according to a relative playout time value provided by a packet protocol header, and independent of a packet arrival order, and furthermore said Jitter Buffer is divided into storage partitions into each of which encoded speech data representing a known time interval is stored, and said time interval is configurable according to a speech encoding method in use. - View Dependent Claims (34, 35, 36, 37, 38, 39)
-
Specification