Methods and apparatus for scheduling, serving, receiving media-on demand for clients, servers arranged according to constraints on resources
First Claim
1. A method of scheduling a media object for transmission between a server and a client, the method comprising:
- partitioning the media object into segments, wherein the segments contain one or more blocks, wherein each block is a unit of media for which the client will wait to receive an entire block before playing out the block, and wherein each segment includes an integer number of blocks and wherein blocks are encoded into output symbols such that the output symbols generated are independent of when a client begins reception, wherein the output symbols are encoded such that they are transmittable to the client in a manner that is independent of which other output symbols were transmitted to the client;
determining one or more channels on which to serve each segment, the channels capable of carrying data between the server and the client;
determining a rate at which to serve each segment; and
determining a schedule pair for each channel, the schedule pair including a time at which the client may start receiving on the channel and a time at which the client may stop receiving on the channel.
2 Assignments
0 Petitions
Accused Products
Abstract
A media object is scheduled for transmission between a server and a client. The media object is partitioned into segments of blocks, wherein each block is a unit of media for which a client will wait to receive an entire block before playing out the block, and wherein each segment includes an integer number of blocks. One or more channels on which to serve each segment are determined, and a rate at which to serve each segment is determined. Additionally, a schedule pair for each channel is determined. The schedule pair includes a time at which the client may start receiving on the channel and a time at which the client may stop receiving on the channel.
-
Citations
94 Claims
-
1. A method of scheduling a media object for transmission between a server and a client, the method comprising:
-
partitioning the media object into segments, wherein the segments contain one or more blocks, wherein each block is a unit of media for which the client will wait to receive an entire block before playing out the block, and wherein each segment includes an integer number of blocks and wherein blocks are encoded into output symbols such that the output symbols generated are independent of when a client begins reception, wherein the output symbols are encoded such that they are transmittable to the client in a manner that is independent of which other output symbols were transmitted to the client; determining one or more channels on which to serve each segment, the channels capable of carrying data between the server and the client; determining a rate at which to serve each segment; and determining a schedule pair for each channel, the schedule pair including a time at which the client may start receiving on the channel and a time at which the client may stop receiving on the channel. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43)
-
-
44. A system for scheduling a media object for transmission between a server and a client, comprising:
-
a module for partitioning the media object into segments, wherein the segments contain one or more blocks, wherein each block is a unit of media for which the client will wait to receive an entire block before playing out the block, and wherein each segment includes an integer number of blocks and wherein blocks are encoded into output symbols such that the output symbols generated are independent of when a client begins reception wherein the output symbols are encoded such that they are transmittable to the client in a manner that is independent of which other output symbols were transmitted to the client; a module for determining one or more channels on which to serve each segment, the channels capable of carrying data between the server and the client; a module for determining a rate at which to serve each segment; and a module for determining a schedule pair for each channel, the schedule pair including a time at which the client may start receiving on the channel and a time at which the client may stop receiving on the channel.
-
-
45. A method of serving a media object, the method comprising:
-
receiving segments of a media object, wherein each segment includes an integer number of blocks, wherein each block is a unit of media for which a client will wait to receive an entire block before playing out the block, and wherein each block includes one or more input symbols; for each segment, receiving an indication of one or more channels on which to serve the segment; for each segment, receiving a rate at which to serve the segment; determining an order in which to encode blocks; generating output symbols for each block using a chain reaction code to generate the output symbols; and transmitting the output symbols on the corresponding one or more channels, wherein each segment is served at the corresponding rate. - View Dependent Claims (46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67)
-
-
68. An apparatus for serving a media object, comprising:
-
a block encoder coupled to receive segments of a media object, wherein each segment includes an integer number of blocks, wherein each block is a unit of media for which a client will wait to receive an entire block before playing out the block, wherein each block includes one or more input symbols;
the block encoder including an input to receive an order in which to encode the blocks; and
wherein the block encoder is configured to generate, in the order, output symbols for each block wherein blocks are encoded into output symbols such that the output symbols generated are independent of when a client begins reception, wherein the output symbols are encoded such that they are transmittable to the client in a manner that is independent of which other output symbols were transmitted to the client; anda transmitter coupled to receive the output symbols from the block encoder, and coupled to receive, for each segment, an indication of one or more channels on which to serve the segment and a rate at which to serve the segment; said transmitter configured to serve the output symbols on the corresponding one or more channels at the corresponding rate.
-
-
69. A method of receiving a media object that includes segments, wherein each segment includes an integer number of blocks, and wherein each block is a unit of media for which a client will wait to receive an entire block before playing out the block, the method comprising:
-
receiving a media object description of the media object; joining and leaving each of a plurality of channels according to the media object description to download the blocks as a plurality of output symbols wherein the output symbols are encoded such that the output symbols need not depend on when joining and leaving occurs, wherein the output symbols are encoded such that they are transmittable to the client in a manner that is independent of which other output symbols were transmitted to the client; reassembling the blocks in each segment; and playing the blocks out in an order after a startup latency. - View Dependent Claims (70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93)
-
-
94. A system for receiving a media object that includes segments, wherein each segment includes an integer number of blocks, and wherein each block is a unit of media for which a client will wait to receive an entire block before playing out the block, comprising:
-
a module for handling input of a media object description of the media object; a module for handling channel joins and channel leaves for each of a plurality of channels according to the media object description, wherein the channels are capable of use for downloading the blocks to the client as a plurality of output symbols wherein the output symbols are encoded such that the output symbols need not depend on when joining and leaving occurs, wherein the output symbols are encoded such that they are transmittable to the client in a manner that is independent of which other output symbols were transmitted to the client; a module for reassembling the blocks in each segment; and a module for playing the blocks out in an order after a startup latency.
-
Specification