Receiver-driven layered error correction multicast over heterogeneous packet networks
First Claim
1. A computer-implemented error correction process for use in a receiver-driven layered multicast of real-time media over a heterogeneous packet network to a plurality of receivers, wherein the real-time media is transmitted over the network in multiple streams of packetized source data forming hierarchical layers of information, said error correction process comprising using a computer to perform the following steps:
- producing at least one stream of packetized error correction information for at least one of the streams of packetized source data, wherein each error correction stream comprises a delayed version of the stream of packetized source data associated therewith;
broadcasting the streams of packetized error correction information to said receivers to allow each receiver to replace packets of source data lost during transmission.
2 Assignments
0 Petitions
Accused Products
Abstract
Correction of errors and losses in a receiver-driven layered multicast (RLM) of real-time media over a network is augmented using one or more layers of error correction information. Each receiver separately optimizes the quality of received information by subscribing to at least one error correction layer. Ideally, each source layer in a RLM has one or more associated multicasted error correction data streams. Each error correction layer contains information for replacing lost packets from the associated source layer. More than one error correction layer is proposed to correct for lost packets in other error correction layers. Error correction streams are preferably generated using a pseudo-Automatic Repeat Request (ARQ) wherein a broadcaster sends both the source packets in a primary stream and delayed versions thereof in one or more redundant streams. A hybrid technique combines the psuedo-ARQ method with an adaptation of Forward Error Correction (FEC) techniques.
-
Citations
60 Claims
-
1. A computer-implemented error correction process for use in a receiver-driven layered multicast of real-time media over a heterogeneous packet network to a plurality of receivers, wherein the real-time media is transmitted over the network in multiple streams of packetized source data forming hierarchical layers of information, said error correction process comprising using a computer to perform the following steps:
-
producing at least one stream of packetized error correction information for at least one of the streams of packetized source data, wherein each error correction stream comprises a delayed version of the stream of packetized source data associated therewith;
broadcasting the streams of packetized error correction information to said receivers to allow each receiver to replace packets of source data lost during transmission. - View Dependent Claims (2, 3, 4, 5)
associating each stream of packetized error correction information with a one of the multiple streams of packetized source data; and
incorporating in each error correction stream information necessary to assist a receiver in recovering said packets of lost source data belonging to the particular stream of packetized source data associated with the error correction stream.
-
-
3. The process of claim 2, wherein there are multiple streams of error correction information associated with each stream of source data, and wherein the incorporating step comprises the step of incorporating error correction information in each error correction stream associated with the same source data stream which makes the streams redundant, said redundant streams making it possible for a receiver to employ more than one error correction stream and obtain a desired amount of the error correction information needed to replace packets in an associated source data stream that were lost during the transmission even if some of the error correction stream packets themselves are lost in transmission.
-
4. The process of claim 3, where in the step of broadcasting streams of packetized error correction information comprises the step of incorporating an identifier into each packet in each of the streams of packetized error correction information wherein a different identifier is employed for each of the error correction information streams, thereby allowing each receiver to select the number of error correction information streams to be received by specifying that only packets having particular identifiers be routed over the network to the receiver.
-
5. The process of claim 4, further comprising the step of a receiver improving the quality of the received broadcast by first selecting a desired number of source data streams while leaving enough bandwidth available to also select a number of error correction information streams for one or more of the source streams that will compensate, at least partially, for an inherent packet loss rate associated with the receiver'"'"'s connection to the network, and then selecting said number of error correction information streams.
-
6. A computer-implemented process for multicasting real-time media over a heterogeneous packet network to a plurality of receivers, comprising using a computer to perform the following steps:
-
forming a series of source data streams from a media signal, said source data streams comprising a base layer representing the media signal at a least acceptable level of quality, and at least one enhancement layer which when combined with the base layer improves the level of quality of the media signal derivable therefrom;
for each source data stream, creating at least one error correction information stream from the source layer, wherein each error correction stream comprises a delayed version of the stream of source data associated therewith and each error correction stream associated with the same source data stream is progressively delayed from one another;
respectively multicasting each source layer and error correction layer to a different network address for routing on to a receiver;
for each receiver, receiving at least one source data stream and periodically receiving at least one error correction stream, and reconstructing a media signal from the at least one source data stream after having used the at least one error correction stream to recover source data packets lost in transmission of the source data stream. - View Dependent Claims (7, 8, 9, 10)
subscribing over the network to at least one source data stream for each subscribed to source data stream, (i) monitoring the incoming source data stream for a missing data packet;
(ii) whenever a missing data packet is detected, subscribing to the least delayed version of the error correction streams associated with the source data stream available on the network, (iii) attempting to recover the missing source data stream packet from the subscribed to error correction stream, (iv) unsubscribing from the currently subscribed to error correction stream, (v) whenever the missing packet cannot be recovered from the previously subscribed to error correction stream, determining whether there is at least one more error correction stream associated with the source data stream available on the network for subscription (vi) whenever the is another error correction stream available, subscribing to the least delayed version of the error correction streams associated with the source data stream available on the network, which has not been subscribed to before in connection with said missing data packet, (vii) repeating steps (iii) through (vi) until the missing packet is recovered or it is determined there are no more previously unsubscribed to error correction streams available on the network, (viii) whenever the missing packet is recovered from a subscribed to error correction stream, replacing the missing source data stream packet using the recovered packet, (vi) repeating steps (i) through (viii) for the duration of the multicast.
-
-
8. The process of claim 6 wherein the receiving step comprises the steps of:
-
subscribing over the network to at least one source data stream;
for each subscribed to source data stream, (i) monitoring the incoming source data stream for a missing data packet;
(ii) whenever a missing data packet is detected, subscribing to the least delayed version of the error correction streams associated with the source data stream, (iii) attempting to recover the missing source data stream packet from the subscribed to error correction stream, (iv) unsubscribing from the subscribed to error correction stream, (v) replacing the missing source data stream packet using the recovered packet whenever the missing packet is recovered from the subscribed to error correction stream, (vi) repeating steps (i) through (v) for the duration of the multicast.
-
-
9. The process of claim 8, wherein the step of subscribing to the least delayed version of the error correction streams associated with the source data stream comprises the steps of:
-
determining a currently available bandwidth associated with the receiver'"'"'s connection to the network;
unsubscribing from a subscribed to higher level source data stream to subscribe to said least delayed version of the error correction stream whenever there is not sufficient bandwidth available to subscribe to both.
-
-
10. The process of claim 9, further comprising the step of re-subscribing to said higher-level source data stream, whenever said least delayed version of the error correction stream is unsubscribed to thereby freeing up the bandwidth needed to re-subscribe to the higher-level source data stream.
-
11. A computer-implemented process for multicasting real-time media over a heterogeneous packet network to a plurality of receivers, comprising using a computer to perform the following steps:
-
forming a series of source data streams from a media signal, said source data streams comprising a base layer representing the media signal at a least acceptable level of quality, and at least one enhancement layer which when combined with the base layer improves the level of quality of the media signal derivable therefrom;
for each source data stream, creating at least one error correction information stream from the source layer, wherein each error correction stream comprises parity packets encoded from packets of the source data stream which have been subjected to a linear transform, said linear transform producing a series of parity packets which can be employed to assist in the recovery of lost source data packets using a reverse transform, and wherein at least one of said at least one error correction information streams is delayed in comparison to the source data stream;
respectively multicasting each source layer and error correction layer to a different network address for routing on to a receiver;
for each receiver, receiving at least one of said source data stream and receiving, at least periodically, said at least one error correction layer, and reconstructing a media signal from the at least one source data stream after having used said at least one error correction stream to recover source data packets lost in transmission of the source data stream. - View Dependent Claims (12, 13, 14, 15, 16, 17, 18, 19, 20)
(a) partitioning the source data stream into a plurality of data blocks each containing k data packets;
(b) selecting a previously unselected data block;
(c) applying a Forward Error Correction (FEC) encoding technique to the chosen data block to produce n−
k parity packets for that block where n>
k;
(d) assigning each parity packet to a different error correction stream;
(e) repeating steps (b) through (d) for each data block; and
(f) assigning each error correction stream to one of W waves.
-
-
13. The process of claim 12, wherein the multicasting step comprises the steps of:
-
multicasting all the error correction streams forming a first wave without delay in comparison to the source data stream; and
multicasting the error correction streams in each subsequent wave with a delay in comparison to the immediately preceding wave.
-
-
14. The process of claim 13, wherein said receiving step comprises, the steps of:
-
subscribing over the network to at least one source data stream;
subscribing to at least one error correction information stream associated with the first wave of error correction streams for each subscribed to source data stream;
for each subscribed to source data stream, (i) receiving source data stream packets comprising a next incoming source data block of the subscribed to source data stream;
(ii) receiving parity packets associated with the incoming source data block in the subscribed to error correction information stream or streams in the first wave;
(iii) determining whether the total number of source data stream packets and parity packets received for the incoming source data block is at least equal the number of source data stream packets multicast for the block;
(iv) whenever the total number of source data stream packets and parity packets received for the incoming source data block does not equal or exceed the number of source data stream packets multicast for the block, determining whether there are any more waves available for subscription on the network, (v) if there are one or more waves available, subscribing to at least one error correction stream in a previously unsubscribed to wave having the least delay among the available waves, and attempting to capture the number of parity packets associated with the incoming data block which would cause the total number of source data stream packets and parity packets received for the incoming source data block to equal or exceed the number of source data stream packets multicast for the.block, and thereafter unsubscribing from said at least one error correction stream associated with the delayed wave, (vi) repeating step (iii) through (v) until the total number of source data stream packets and parity packets received for the incoming source data block equals or exceeds the number of source data stream packets multicast for the block, or it is determined there are no more waves available, (vii) whenever the total number of source data stream packets and parity packets received for the incoming source data block equals or exceeds the number of source data stream packets multicast for the block, recovering all the source data stream packets missing in the incoming source data block using the received parity packets, (viii) replacing said missing source data stream packets using the recovered packets, and (ix) repeating steps (i) through (viii) for each successive incoming source data block.
-
-
15. The process of claim 14, further comprising performing, prior to the step of assigning each error correction stream to one of W waves, the step of collapsing at least some of the error correction streams such that all the parity packets associated with these error correction streams are sequentially included within the collapsed error correction stream, and wherein the steps of subscribing to any error correction stream include subscribing to a collapsed error correction stream, as desired.
-
16. The process of claim 14, wherein the steps of subscribing over the network to at least one source data stream and subscribing to at least one error correction information stream associated with the first wave of error correction streams, comprises the steps of:
-
determining a currently available bandwidth associated with the receiver'"'"'s connection to the network;
determining a current packet loss rate associated with receiving data over the network;
selecting the number of source data streams and the number of associated error correction streams which are to be received so as to allow the best possible level of quality in a media signal reconstructed from received source data streams, wherein said selecting is based on the currently available bandwidth and the current packet loss rate; and
subscribing to each selected source data stream and each selected error correction information stream.
-
-
17. The process of claim 14, wherein the step of subscribing to at least one error correction stream in a previously unsubscribed to wave, comprises the steps of:
-
determining a currently available bandwidth associated with the receiver'"'"'s connection to the network;
discontinuing reception of a higher level source data stream to receive the at least one error correction stream whenever there is not sufficient bandwidth available to receive both.
-
-
18. The process of claim 13, wherein said receiving step comprises, the steps of:
-
subscribing over the network to at least one source data stream;
for each subscribed to source data stream, (i) receiving source data stream packets comprising a next incoming source data block of the subscribed to source data stream;
(ii) determining whether any of the source data stream packets in the incoming source data block were lost during transmission;
(iii) whenever it is determined that any source data stream packets were lost during transmission of the incoming source data block, determining whether there are error correction stream available for subscription on the network, (iv) if there are one or more waves available, subscribing to at least one error correction stream in a previously unsubscribed to wave having the least delay among the available waves, and attempting to capture the number of parity packets associated with the incoming data block which would cause the total number of source data stream packets and parity packets received for the incoming source data block to equal or exceed the number of source data stream packets multicast for the block, and thereafter unsubscribing from said at least one error correction stream associated with the delayed wave, (v) repeating step (iv) until the total number of source data stream packets and parity packets received for the incoming source data block equals or exceeds the number of source data stream packets multicast for the block or there are no more waves available for subscription, (vi) whenever the total number of source data stream packets and parity packets received for the incoming source data block equals or exceeds the number of source data stream packets multicast for the block, recovering all the source data stream packets missing in the incoming source data block using the received parity packets, (vii) replacing said missing source data stream packets using the recovered packets, and (ix) repeating steps (i) through (viii) for each successive incoming source data block.
-
-
19. The process of claim 18, further comprising performing, prior to the step of assigning each error correction stream to one of W waves, the step of collapsing at least some of the error correction streams such that all the parity packets associated with these error correction streams are sequentially included within the collapsed error correction stream, and wherein the steps of subscribing to any error correction stream include subscribing to a collapsed error correction stream, as desired.
-
20. The process of claim 18, wherein the step of subscribing to at least one error correction stream in a previously unsubscribed to wave, comprises the steps of:
-
determining a currently available bandwidth associated with the receiver'"'"'s connection to the network;
discontinuing reception of a higher level source data stream to receive the at least one error correction stream whenever there is not sufficient bandwidth available to receive both.
-
-
21. An error correction system for use in a receiver-driven layered multicast of real-time media over a heterogeneous packet network to a plurality of receivers, wherein the real-time media is transmitted over the network in multiple streams of packetized source data forming hierarchical layers of information, said error correction system comprising:
-
a general purpose computing device;
a computer program comprising program modules executable by the computing device, wherein the computing device is directed by the program modules of the computer program to, produce at least one stream of packetized error correction information for at least one of the streams of packetized source data, wherein each error correction stream comprises a delayed version of the stream of packetized source data associated therewith, multicast the streams of packetized error correction information to said receivers to allow each receiver to replace packets of source data lost during transmission. - View Dependent Claims (22, 23, 24, 25)
associating each stream of packetized error correction information with a one of the multiple streams of packetized source data; and
incorporating in each error correction stream information necessary to assist a receiver in recovering said packets of lost source data belonging to the particular stream of packetized source data associated with the error correction stream.
-
-
23. The system of claim 22, wherein there are multiple streams of error correction information associated with each stream of source data, and wherein the incorporating sub-module comprises a sub-module for incorporating error correction information in each error correction stream associated with the same source data stream which makes the streams redundant, said redundant streams making it possible for a receiver to employ more than one error correction stream and obtain a desired amount of the error correction information needed to replace packets in an associated source data stream that were lost during the transmission even if some of the error correction stream packets themselves are lost in transmission.
-
24. The system of claim 23, wherein the program module for multicasting streams of packetized error correction information comprises a sub-module for incorporating an identifier into each packet in each of the streams of packetized error correction information wherein a different identifier is employed for each of the error correction information streams, thereby allowing each receiver to select the number of error correction information streams to be received by specifying that only packets having particular identifiers be routed over the network to the receiver.
-
25. The system of claim 24, further comprising a program module for allowing a receiver to improve the quality of the received broadcast by first selecting a desired number of source data streams while leaving enough bandwidth available to also select a number of error correction information streams for one or more of the source streams that will compensate, at least partially, for an inherent packet loss rate associated with the receiver'"'"'s connection to the network, and then selecting said number of error correction information streams.
-
26. An error correction system for multicasting real-time media over a heterogeneous packet network to a plurality of receivers, comprising:
-
a general purpose computing device;
a computer program comprising program modules executable by the computing device, wherein the computing device is directed by the program modules of the computer program to, form a series of source data streams from a media signal, said source data streams comprising a base layer representing the media signal at a least acceptable level of quality, and at least one enhancement layer which when combined with the base layer improves the level of quality of the media signal derivable therefrom, for each source data stream, create at least one error correction information stream from the source layer, wherein each error correction stream comprises a delayed version of the stream of source data associated therewith and each error correction stream associated with the same source data stream is progressively delayed from one another, respectively multicast each source layer and error correction layer to a different network address for routing on to a receiver, and for each receiver, receive at least one source data stream and periodically receiving at least one error correction stream, and reconstructing a media signal from the at least one source data stream after having used the at least one error correction stream to recover source data packets lost in transmission of the source data stream. - View Dependent Claims (27, 28, 29, 30)
subscribing over the network to at least one source data stream for each subscribed to source data stream, (i) monitoring the incoming source data stream for a missing data packet;
(ii) whenever a missing data packet is detected, subscribing to the least delayed version of the error correction streams associated with the source data stream available on the network, (iii) attempting to recover the missing source data stream packet from the subscribed to error correction stream, (iv) unsubscribing from the currently subscribed to error correction stream, (v) whenever the missing packet cannot be recovered from the previously subscribed to error correction stream, determining whether there is at least one more error correction stream associated with the source data stream available on the network for subscription (vi) whenever the is another error correction stream available, subscribing to the least delayed version of the error correction streams associated with the source data stream available on the network, which has not been subscribed to before in connection with said missing data packet, (vii) repeating steps (iii) through (vi) until the missing packet is recovered or it is determined there are no more previously unsubscribed to error correction streams available on the network, (viii) whenever the missing packet is recovered from a subscribed to error correction stream, replacing the missing source data stream packet using the recovered packet, (vi) repeating steps (i) through (viii) for the duration of the multicast.
-
-
28. The system of claim 26 wherein the receiving program module comprises sub-modules for:
-
subscribing over the network to at least one source data stream;
for each subscribed to source data stream, (i) monitoring the incoming source data stream for a missing data packet;
(ii) whenever a missing data packet is detected, subscribing to the least delayed version of the error correction streams associated with the source data stream, (iii) attempting to recover the missing source data stream packet from the subscribed to error correction stream, (iv) unsubscribing from the subscribed to error correction stream, (v) replacing the missing source data stream packet using the recovered packet whenever the missing packet is recovered from the subscribed to error correction stream, (vi) repeating steps (i) through (v) for the duration of the multicast.
-
-
29. The system of claim 28, wherein the sub-module for subscribing to the least delayed version of the error correction streams associated with the source data stream comprises sub-modules for:
-
determining a currently available bandwidth associated with the receiver'"'"'s connection to the network;
unsubscribing from a subscribed to higher level source data stream to subscribe to said least delayed version of the error correction stream whenever there is not sufficient bandwidth available to subscribe to both.
-
-
30. The system of claim 29, further comprising a sub-module for re-subscribing to said higher-level source data stream, whenever said least delayed version of the error correction stream is unsubscribed to thereby freeing up the bandwidth needed to re-subscribe to the higher-level source data stream.
-
31. An error correction system for multicasting real-time media over a heterogeneous packet network to a plurality of receivers, comprising:
-
a general purpose computing device;
a computer program comprising program modules executable by the computing device, wherein the computing device is directed by the program modules of the computer program to, form a series of source data streams from a media signal, said source data streams comprising a base layer representing the media signal at a least acceptable level of quality, and at least one enhancement layer which when combined with the base layer improves the level of quality of the media signal derivable therefrom, for each source data stream, create at least one error correction information stream from the source layer, wherein each error correction stream comprises parity packets encoded from packets of the source data stream which have been subjected to a linear transform, said linear transform producing a series of parity packets which can be employed to assist in the recovery of lost source data packets using a reverse transform, and wherein at least one of said at least one error correction information streams is delayed in comparison to the source data stream, respectively multicasting each source layer and error correction layer to a different network address for routing on to a receiver, for each receiver, receive at least one of said source data stream and receiving, at least periodically, said at least one error correction layer, and reconstructing a media signal from the at least one source data stream after having used said at least one error correction stream to recover source data packets lost in transmission of the source data stream. - View Dependent Claims (32, 33, 34, 35, 36, 37, 38, 39, 40)
(a) partitioning the source data stream into a plurality of data blocks each containing k data packets;
(b) selecting a previously unselected data block;
(c) applying a Forward Error Correction (FEC) encoding technique to the chosen data block to produce n−
k parity packets for that block where n>
k;
(d) assigning each parity packet to a different error correction stream;
(e) repeating steps (b) through (d) for each data block; and
(f) assigning each error correction stream to one of W waves.
-
-
33. The system of claim 32, wherein the multicasting program module comprises sub-modules for:
-
multicasting all the error correction streams forming a first wave without delay in comparison to the source data stream; and
multicasting the error correction streams in each subsequent wave with a delay in comparison to the immediately preceding wave.
-
-
34. The system of claim 33, wherein the receiving sub-module comprises, sub-modules for:
-
subscribing over the network to at least one source data stream;
subscribing to at least one error correction information stream associated with the first wave of error correction streams for each subscribed to source data stream;
for each subscribed to source data stream, (i) receiving source data stream packets comprising a next incoming source data block of the subscribed to source data stream;
(ii) receiving parity packets associated with the incoming source data block in the subscribed to error correction information stream or streams in the first wave;
(iii) determining whether the total number of source data stream packets and parity packets received for the incoming source data block is at least equal the number of source data stream packets multicast for the block;
(iv) whenever the total number of source data stream packets and parity packets received for the incoming source data block does not equal or exceed the number of source data stream packets multicast for the block, determining whether there are any more waves available for subscription on the network, (v) if there are one or more waves available, subscribing to at least one error correction stream in a previously unsubscribed to wave having the least delay among the available waves, and attempting to capture the number of parity packets associated with the incoming data block which would cause the total number of source data stream packets and parity packets received for the incoming source data block to equal or exceed the number of source data stream packets multicast for the block, and thereafter unsubscribing from said at least one error correction stream associated with the delayed wave, (vi) repeating step (iii) through (v) until the total number of source data stream packets and parity packets received for the incoming source data block equals or exceeds the number of source data stream packets multicast for the block, or it is determined there are no more waves available, (vii) whenever the total number of source data stream packets and parity packets received for the incoming source data block equals or exceeds the number of source data stream packets multicast for the block, recovering all the source data stream packets missing in the incoming source data block using the received parity packets, (viii) replacing said missing source data stream packets using the recovered packets, and (ix) repeating steps (i) through (viii) for each successive incoming source data block.
-
-
35. The system of claim 34, further comprising, prior to executing the sub-module for assigning each error correction stream to one of W waves, a sub-module for collapsing at least some of the error correction streams such that all the parity packets associated with these error correction streams are sequentially included within the collapsed error correction stream, and wherein the sub-module for subscribing to any error correction stream includes a sub-module for subscribing to a collapsed error correction stream, as desired.
-
36. The system of claim 34, wherein the sub-module for subscribing over the network to at least one source data stream and subscribing to at least one error correction information stream associated with the first wave of error correction streams, comprises sub-modules for:
-
determining a currently available bandwidth associated with the receiver'"'"'s connection to the network;
determining a current packet loss rate associated with receiving data over the network;
selecting the number of source data streams and the number of associated error correction streams which are to be received so as to allow the best possible level of quality in a media signal reconstructed from received source data streams, wherein said selecting is based on the currently available bandwidth and the current packet loss rate; and
subscribing to each selected source data stream and each selected error correction information stream.
-
-
37. The system of claim 34, wherein the sub-module for subscribing to at least one error correction stream in a previously unsubscribed to wave, comprises the sub-module for:
-
determining a currently available bandwidth associated with the receiver'"'"'s connection to the network;
discontinuing reception of a higher level source data stream to receive the at least one error correction stream whenever there is not sufficient bandwidth available to receive both.
-
-
38. The system of claim 33, wherein said receiving program module comprises, sub-modules for:
-
subscribing over the network to at least one source data stream;
for each subscribed to source data stream, (i) receiving source data stream packets comprising a next incoming source data block of the subscribed to source data stream;
(ii) determining whether any of the source data stream packets in the incoming source data block were lost during transmission;
(iii) whenever it is determined that any source data stream packets were lost during transmission of the incoming source data block, determining whether there are error correction stream available for subscription on the network, (iv) if there are one or more waves available, subscribing to at least one error correction stream in a previously unsubscribed to wave having the least delay among the available waves, and attempting to capture the number of parity packets associated with the incoming data block which would cause the total number of source data stream packets and parity packets received for the incoming source data block to equal or exceed the number of source data stream packets multicast for the block, and thereafter unsubscribing from said at least one error correction stream associated with the delayed wave, (v) repeating step (iv) until the total number of source data stream packets and parity packets received for the incoming source data block equals or exceeds the number of source data stream packets multicast for the block or there are no more waves available for subscription, (vi) whenever the total number of source data stream packets and parity packets received for the incoming source data block equals or exceeds the number of source data stream packets multicast for the block, recovering all the source data stream packets missing in the incoming source data block using the received parity packets, (vii) replacing said missing source data stream packets using the recovered packets, and (ix) repeating steps (i) through (viii) for each successive incoming source data block.
-
-
39. The system of claim 38, further comprising executing, prior to the sub-module for assigning each error correction stream to one of W waves, a sub-module for collapsing at least some of the error correction streams such that all the parity packets associated with these error correction streams are sequentially included within the collapsed error correction stream, and wherein the sub-modules for subscribing to any error correction stream include subscribing to a collapsed error correction stream, as desired.
-
40. The system of claim 38, wherein the sub-module for subscribing to at least one error correction stream in a previously unsubscribed to wave, comprises sub-modules for:
-
determining a currently available bandwidth associated with the receiver'"'"'s connection to the network;
discontinuing reception of a higher level source data stream to receive the at least one error correction stream whenever there is not sufficient bandwidth available to receive both.
-
-
41. A computer-readable memory for use in a receiver-driven layered multicast of real-time media over a heterogeneous packet network to a plurality of receivers, wherein the real-time media is transmitted over the network in multiple streams of packetized source data forming hierarchical layers of information, comprising:
-
a computer-readable storage medium; and
a computer program comprising program modules stored in the storage medium, wherein the storage medium is so configured by the computer program that it causes the computer to, produce at least one stream of packetized error correction information for at least one of the streams of packetized source data, wherein each error correction stream comprises a delayed version of the stream of packetized source data associated therewith, multicast the streams of packetized error correction information to said receivers to allow each receiver to replace packets of source data lost during transmission. - View Dependent Claims (42, 43, 44, 45)
associating each stream of packetized error correction information with a one of the multiple streams of packetized source data; and
incorporating in each error correction stream information necessary to assist a receiver in recovering said packets of lost source data belonging to the particular stream of packetized source data associated with the error correction stream.
-
-
43. The computer-readable memory of claim 42, wherein there are multiple streams of error correction information associated with each stream of source data, and wherein the incorporating sub-module comprises a sub-module for incorporating error correction information in each error correction stream associated with the same source data stream which makes the streams redundant, said redundant streams making it possible for a receiver to employ more than one error correction stream and obtain a desired. amount of the error correction information needed to replace packets in an associated source data stream that were lost during the transmission even if some of the error correction stream packets themselves are lost in transmission.
-
44. The computer-readable memory of claim 43, wherein the program module for multicasting streams of packetized error correction information comprises a sub-module for incorporating an identifier into each packet in each of the streams of packetized error correction information wherein a different identifier is employed for each of the error correction information streams, thereby allowing each receiver to select the number of error correction information streams to be received by specifying that only packets having particular identifiers be routed over the network to the receiver.
-
45. The computer-readable memory of claim 44, further comprising a program module for allowing a receiver to improve the quality of the received broadcast by first selecting a desired number of source data streams while leaving enough bandwidth available to also select a number of error correction information streams for one or more of the source streams that will compensate, at least partially, for an inherent packet loss rate associated with the receiver'"'"'s connection to the network, and then selecting said number of error correction information streams.
-
46. A computer-readable memory for multicasting real-time media over a heterogeneous packet network to a plurality of receivers, comprising:
-
a computer-readable storage medium; and
a computer program comprising program modules stored in the storage medium, wherein the storage medium is so configured by the computer program that it causes the computer to, form a series of source data streams from a media signal, said source data streams comprising a base layer representing the media signal at a least acceptable level of quality, and at least one enhancement layer which when combined with the base layer improves the level of quality of the media signal derivable therefrom, for each source data stream, create at least one error correction information stream from the source layer, wherein each error correction stream comprises a delayed version of the stream of source data associated therewith and each error correction stream associated with the same source data stream is progressively delayed from one another, respectively multicast each source layer and error correction layer to a different network address for routing on to a receiver, and for each receiver, receive at least one source data stream and periodically receiving at least one error correction stream, and reconstructing a media signal from the at least one source data stream after having used the at least one error correction stream to recover source data packets lost in transmission of the source data stream. - View Dependent Claims (47, 48, 49, 50)
subscribing over the network to at least one source data stream for each subscribed to source data stream, (i) monitoring the incoming source data stream for a missing data packet;
(ii) whenever a missing data packet is detected, subscribing to the least delayed version of the error correction streams associated with the source data stream available on the network, (iii) attempting to recover the missing source data stream packet from the subscribed to error correction stream, (iv) unsubscribing from the currently subscribed to error correction stream, (v) whenever the missing packet cannot be recovered from the previously subscribed to error correction stream, determining whether there is at least one more error correction stream associated with the source data stream available on the network for subscription (vi) whenever the is another error correction stream available, subscribing to the least delayed version of the error correction streams associated with the source data stream available on the network, which has not been subscribed to before in connection with said missing data packet, (vii) repeating steps (iii) through (vi) until the missing packet is recovered or it is determined there are no more previously unsubscribed to error correction streams available on the network, (viii) whenever the missing packet is recovered from a subscribed to error correction stream, replacing the missing source data stream packet using the recovered packet, (vi) repeating steps (i) through (viii) for the duration of the multicast.
-
-
48. The computer-readable memory of claim 46 wherein the receiving program module comprises sub-modules for:
-
subscribing over the network to at least one source data stream;
for each subscribed to source data stream, (i) monitoring the incoming source data stream for a missing data packet;
(ii) whenever a missing data packet is detected, subscribing to the least delayed version of the error correction streams associated with the source data stream, (iii) attempting to recover the missing source data stream packet from the subscribed to error correction stream, (iv) unsubscribing from the subscribed to error correction stream, (v) replacing the missing source data stream packet using the recovered packet whenever the missing packet is recovered from the subscribed to error correction stream, (vi) repeating steps (i) through (v) for the duration of the multicast.
-
-
49. The computer-readable memory of claim 48, wherein the sub-module for subscribing to the least delayed version of the error correction streams associated with the source data stream comprises sub-modules for:
-
determining a currently available bandwidth associated with the receiver'"'"'s connection to the network;
unsubscribing from a subscribed to higher level source data stream to subscribe to said least delayed version of the error correction stream whenever there is not sufficient bandwidth available to subscribe to both.
-
-
50. The computer-readable memory of claim 49, further comprising a sub-module for re-subscribing to said higher-level source data stream, whenever said least delayed version of the error correction stream is unsubscribed to thereby freeing up the bandwidth needed to re-subscribe to the higher-level source data stream.
-
51. A computer-readable memory for multicasting real-time media over a heterogeneous packet network to a plurality of receivers, comprising:
-
a computer-readable storage medium; and
a computer program comprising program modules stored in the storage medium, wherein the storage medium is so configured by the computer program that it causes the computer to, form a series of source data streams from a media signal, said source data streams comprising a base layer representing the media signal at a least acceptable level of quality, and at least one enhancement layer which when combined with the base layer improves the level of quality of the media signal derivable therefrom, for each source data stream, create at least one error correction information stream from the source layer, wherein each error correction stream comprises parity packets encoded from packets of the source data stream which have been subjected to a linear transform, said linear transform producing a series of parity packets which can be employed to assist in the recovery of lost source data packets using a reverse transform, and wherein at least one of said at least one error correction information streams is delayed in comparison to the source data stream, respectively multicasting each source layer and error correction layer to a different network address for routing on to a receiver, for each receiver, receive at least one of said source data stream and receiving, at least periodically, said at least one error correction layer, and reconstructing a media signal from the at least one source data stream after having used said at least one error correction stream to recover source data packets lost in transmission of the source data stream. - View Dependent Claims (52, 53, 54, 55, 56, 57, 58, 59, 60)
(a) partitioning the source data stream into a plurality of data blocks each containing k data packets;
(b) selecting a previously unselected data block;
(c) applying a Forward Error Correction (FEC) encoding technique to the chosen data block to produce n−
k parity packets for that block where n>
k;
(d) assigning each parity packet to a different error correction stream;
(e) repeating steps (b) through (d) for each data block; and
(f) assigning each error correction stream to one of W waves.
-
-
53. The computer-readable memory of claim 52, wherein the multicasting program module comprises sub-modules for:
-
multicasting all the error correction streams forming a first wave without delay in comparison to the source data stream; and
multicasting the error correction streams in each subsequent wave with a delay in comparison to the immediately preceding wave.
-
-
54. The computer-readable memory of claim 53, wherein the receiving sub-module comprises, sub-modules for:
-
subscribing over the network to at least one source data stream;
subscribing to at least one error correction information stream associated with the first wave of error correction streams for each subscribed to source data stream;
for each subscribed to source data stream, (i) receiving source data stream packets comprising a next incoming source data block of the subscribed to source data stream;
(ii) receiving parity packets associated with the incoming source data block in the subscribed to error correction information stream or streams in the first wave;
(iii) determining whether the total number of source data stream packets and parity packets received for the incoming source data block is at least equal the number of source data stream packets multicast for the block;
(iv) whenever the total number of source data stream packets and parity packets received for the incoming source data block does not equal or exceed the number of source data stream packets multicast for the block, determining whether there are any more waves available for -subscription on the network, (v) if there are one or more waves available, subscribing to at least one error correction stream in a previously unsubscribed to wave having the least delay among the available waves, and attempting to capture the number of parity packets associated with the incoming data block which would cause the total number of source data stream packets and parity packets received for the incoming source data block to equal or exceed the number of source data stream packets multicast for the block, and thereafter unsubscribing from said at least one error correction stream associated with the delayed wave, (vi) repeating step (iii) through (v) until the total number of source data stream packets and parity packets received for the incoming source data block equals or exceeds the number of source data stream packets multicast for the block, or it is determined there are no more waves available, (vii) whenever the total number of source data stream packets and parity packets received for the incoming source data block equals or exceeds the number of source data stream packets multicast for the block, recovering all the source data stream packets missing in the incoming source data block using the received parity packets, (viii) replacing said missing source data stream packets using the recovered packets, and (ix) repeating steps (i) through (viii) for each successive incoming source data block.
-
-
55. The computer-readable memory of claim 54, further comprising, prior to executing the sub-module for assigning each error correction stream to one of W waves, a sub-module for collapsing at least some of the error correction streams such that all the parity packets associated with these error correction streams are sequentially included within the collapsed error correction stream, and wherein the sub-module for subscribing to any error correction stream includes a sub-module for subscribing to a collapsed error correction stream, as desired.
-
56. The computer-readable memory of claim 54, wherein the sub-module for subscribing over the network to at least one source data stream and subscribing to at least one error correction information stream associated with the first wave of error correction streams, comprises sub-modules for:
-
determining a currently available bandwidth associated with the receiver'"'"'s connection to the network;
determining a current packet loss rate associated with receiving data over the network;
selecting the number of source data streams and the number of associated error correction streams which are to be received so as to allow the best possible level of quality in a media signal reconstructed from received source data streams, wherein said selecting is based on the currently available bandwidth and the current packet loss rate; and
subscribing to each selected source data stream and each selected error correction information stream.
-
-
57. The computer-readable memory of claim 54, wherein the sub-module for subscribing to at least one error correction stream in a previously unsubscribed to wave, comprises the sub-module for:
-
determining a currently available bandwidth associated with the receiver'"'"'s connection to the network;
discontinuing reception of a higher level source data stream to receive the at least one error correction stream whenever there is not sufficient bandwidth available to receive both.
-
-
58. The computer-readable memory of claim 53, wherein said receiving program module comprises, sub-modules for:
-
subscribing over the network to at least one source data stream;
for each subscribed to source data stream, (i) receiving source data stream packets comprising a next incoming source data block of the subscribed to source data stream;
(ii) determining whether any of the source data stream packets in the incoming source data block were lost during transmission;
(iii) whenever it is determined that any source data stream packets were lost during transmission of the incoming source data block, determining whether there are error correction stream available for subscription on the network, (iv) if there are one or more waves available, subscribing to at least one error correction stream in a previously unsubscribed to wave having the least delay among the available waves, and attempting to capture the number of parity packets associated with the incoming data block which would cause the total number of source data stream packets and parity packets received for the incoming source data block to equal or exceed the number of source data stream packets multicast for the block, and thereafter unsubscribing from said at least one error correction stream associated with the delayed wave, (v) repeating step (iv) until the total number of source data stream packets and parity packets received for the incoming source data block equals or exceeds the number of source data stream packets multicast for the block or there are no more waves available for subscription, (vi) whenever the total number of source data stream packets and parity packets received for the incoming source data block equals or exceeds the number of source data stream packets multicast for the block, recovering all the source data stream packets missing in the incoming source data block using the received parity packets, (vii) replacing said missing source data stream packets using the recovered packets, and (ix) repeating steps (i) through (viii) for each successive incoming source data block.
-
-
59. The computer-readable memory of claim 58, further comprising executing, prior to the sub-module for assigning each error correction stream to one of W waves, a sub-module for collapsing at least some of the error correction streams such that all the parity packets associated with these error correction streams are sequentially included within the collapsed error correction stream, and wherein the sub-modules for subscribing to any error correction stream include subscribing to a collapsed error correction stream, as desired.
-
60. The computer-readable memory of claim 58, wherein the sub-module for subscribing to at least one error correction stream in a previously unsubscribed to wave, comprises sub-modules for:
-
determining a currently available bandwidth associated with the receiver'"'"'s connection to the network;
discontinuing reception of a higher level source data stream to receive the at least one error correction stream whenever there is not sufficient bandwidth available to receive both.
-
Specification