BLOCK PARTITIONING FOR A DATA STREAM
First Claim
1. A method for serving a data stream from a transmitter to a receiver, comprising:
- determining an underlying structure of the data stream;
determining at least one objective, selected from a group of (1) reducing a start-up delay between when the receiver first starts receiving the data stream from the transmitter and when the receiver can start consumption of blocks of the data stream without interruption, according to the underlying structure, (2) reducing a transmission bandwidth needed to send the data stream, and (3) ensuring that the blocks of the data stream satisfy predetermined block constraints; and
transmitting the blocks of the data stream consistent with the at least one objective and the underlying structure.
2 Assignments
0 Petitions
Accused Products
Abstract
A method for serving a data stream from a transmitter to a receiver includes: determining an underlying structure of the data stream; determining at least one objective, selected from a group of (1) reducing a start-up delay between when the receiver first starts receiving the data stream from the transmitter and when the receiver can start consumption of blocks of the data stream without interruption, according to the underlying structure, (2) reducing a transmission bandwidth needed to send the data stream, and (3) ensuring that the blocks of the data stream satisfy predetermined block constraints; and transmitting the blocks of the data stream consistent with the at least one objective and the underlying structure.
172 Citations
34 Claims
-
1. A method for serving a data stream from a transmitter to a receiver, comprising:
-
determining an underlying structure of the data stream; determining at least one objective, selected from a group of (1) reducing a start-up delay between when the receiver first starts receiving the data stream from the transmitter and when the receiver can start consumption of blocks of the data stream without interruption, according to the underlying structure, (2) reducing a transmission bandwidth needed to send the data stream, and (3) ensuring that the blocks of the data stream satisfy predetermined block constraints; and transmitting the blocks of the data stream consistent with the at least one objective and the underlying structure. - View Dependent Claims (2)
-
-
3. A method for determining a block partition for serving a data stream of bits from a transmitter to a receiver, comprising:
-
defining a start position of a first block of the data stream as a first bit position in the data stream; iteratively determining for each block, from the first block to a last possible block of the data stream, a first set of candidate start positions of a next consecutive block following a present block given that the first block starts at the first bit position of the data stream, until a first bit position after a last bit position of the data stream is in the first set of candidate start positions determined for the next consecutive block, and define a last block of the data stream as the present block; defining an end-point of the last block of the data stream as the first bit position after the last bit position of the data stream; for each block, from a block before the last block to the first block of the data stream, determining an intersection of (1) the first set of candidate start positions of a next consecutive block following a present block given that the first block starts at the first bit position of the data stream; and
(2) a second set of candidate start positions of the next consecutive block following the present block given that a block immediately following the next consecutive block starts at the end-point of the next consecutive block; anddefining an end-point of the present block of the data stream as a bit position in the intersection; and determining the block partition as the end-points of each block in the data stream. - View Dependent Claims (4, 5, 6, 7)
-
-
8. A method for determining a global block partition for serving a data stream of bits from a transmitter to a receiver, the data stream defined by a global cumulative stream size function and having a plurality of seek-points, each seek-point being a point in the data stream where the receiver can begin consuming the data stream within a predetermined start-up delay, comprising:
-
dividing the data stream into a plurality of seek-blocks, each seek-block defined by a respective local cumulative stream size function, wherein data on one side of a particular seek-point is decoding independent of data on another side of the particular seek-point; recursively defining, for each seek-block of the plurality of seek-blocks, a respective effective start-up delay that is less than or equal to the predetermined start-up delay; determining, for each seek-block of the plurality of seek-blocks, a local block partition that ensures uninterrupted presentation of the respective seek-block with the respective effective start-up delay; and determining the global block partition as the local block partitions of each seek-block of the plurality of seek-blocks in the data stream.
-
-
9. A server for serving a data stream, the server comprising:
-
a processor configured to determine an underlying structure of the data stream, and to determine at least one objective, selected from a group of (1) reducing a start-up delay between when a receiver first starts receiving the data stream from a transmitter and when the receiver can start consumption of blocks of the data stream without interruption, according to the underlying structure, (2) reducing a transmission bandwidth needed to send the data stream, and (3) ensuring that the blocks of the data stream satisfy predetermined block constraints; and a transmitter coupled to the processor and configured to transmit the blocks of the data stream consistent with the at least one objective and the underlying structure. - View Dependent Claims (10, 11)
-
-
12. A server for determining a block partition for serving a data stream of bits from a transmitter to a receiver, the server comprising:
a processor configured to define a start position of a first block of the data stream;
determine a last block of the data stream by iteratively determining for each block, from the first block to a last possible block of the data stream, a first set of candidate start positions of a next consecutive block following a present block;
define an end-point of the last block of the data stream;
iteratively defining, for each block, from a block before the last block to the first block of the data stream, an end-point of a present block of the data stream as a bit position in an intersection of the first set and a second set of candidate start positions of a next consecutive block following the present block; and
determine the block partition as the end-points of each block in the data stream.- View Dependent Claims (13, 14, 15, 16, 17)
-
18. A server for determining a global block partition for serving a data stream of bits from a transmitter to a receiver, the data stream defined by a global cumulative stream size function and having a plurality of seek-points, each seek-point being a point in the data stream where the receiver can begin consuming the data stream within a predetermined start-up delay, the apparatus comprising:
a processor configured to divide the data stream into a plurality of seek-blocks, each seek-block defined by a respective local cumulative stream size function, wherein data on one side of a particular seek-point is decoding independent of data on another side of the particular seek-point;
recursively define, for each seek-block of the plurality of seek-blocks, a respective effective start-up delay that is less than or equal to the predetermined start-up delay;
determine, for each seek-block of the plurality of seek-blocks, a local block partition that ensures uninterrupted presentation of the respective seek-block with the respective effective start-up delay; and
determine the global block partition as the local block partitions of each seek-block of the plurality of seek-blocks in the data stream.
-
19. A computer program product comprising:
a processor-readable medium storing processor-readable instructions configured to cause a processor to; determine an underlying structure of a data stream; determine at least one objective, selected from a group of (1) reducing a start-up delay between when a receiver first starts receiving the data stream from a transmitter and when the receiver can start consumption of blocks of the data stream without interruption, according to the underlying structure, (2) reducing a transmission bandwidth needed to send the data stream, and (3) ensuring that the blocks of the data stream satisfy predetermined block constraints; and determine a block partition for serving the data stream from the transmitter to the receiver, wherein the block partition ensures that transmitting and receiving the blocks of the data stream is consistent with the at least one objective and the underlying structure. - View Dependent Claims (20)
-
21. A computer program product comprising:
a processor-readable medium storing processor-readable instructions configured to cause a processor to; define a start position of a first block of a data stream as a first bit position in the data stream; iteratively determine for each block, from the first block to a last possible block of the data stream, a first set of candidate start positions of a next consecutive block following a present block given that the first block starts at the first bit position of the data stream, until a first bit position after a last bit position of the data stream is in the first set of candidate start positions determined for the next consecutive block, and define a last block of the data stream as the present block; define an end-point of the last block of the data stream as the first bit position after the last bit position of the data stream; for each block, from a block before the last block to the first block of the data stream, determine an intersection of (1) the first set of candidate start positions of a next consecutive block following a present block given that the first block starts at the first bit position of the data stream; and
(2) a second set of candidate start positions of the next consecutive block following the present block given that a block immediately following the next consecutive block starts at the end-point of the next consecutive block; anddefine an end-point of the present block of the data stream as a bit position in the intersection; and determine the block partition as the end-points of each block in the data stream. - View Dependent Claims (22, 23, 24, 25)
-
26. A computer program product comprising:
a processor-readable medium storing processor-readable instructions configured to cause a processor to; divide a data stream having a plurality of seek-points into a plurality of seek-blocks, each seek-point being a point in the data stream where the receiver can begin consuming the data stream within a predetermined start-up delay, wherein data on one side of a particular seek-point is decoding independent of data on another side of the particular seek-point; recursively define, for each seek-block of the plurality of seek-blocks, a respective effective start-up delay that is less than or equal to the predetermined start-up delay; determine, for each seek-block of the plurality of seek-blocks, a local block partition that ensures uninterrupted presentation of the respective seek-block with the respective effective start-up delay; and determine a global block partition for serving the data stream as the local block partitions of each seek-block of the plurality of seek-blocks in the data stream.
-
27. An apparatus configured to serve a data stream from a transmitter to a receiver, the apparatus comprising:
-
means for determining an underlying structure of the data stream; means for determining at least one objective, selected from a group of (1) reducing a start-up delay between when the receiver first starts receiving the data stream from the transmitter and when the receiver can start consumption of blocks of the data stream without interruption, according to the underlying structure, (2) reducing a transmission bandwidth needed to send the data stream, and (3) ensuring that the blocks of the data stream satisfy predetermined block constraints; and means for transmitting the blocks of the data stream consistent with the at least one objective and the underlying structure. - View Dependent Claims (28)
-
-
29. An apparatus configured to determine a block partition for serving a data stream of bits from a transmitter to a receiver, the apparatus comprising:
-
means for defining a start position of a first block of the data stream as a first bit position in the data stream; means for iteratively determining for each block, from the first block to a last possible block of the data stream, a first set of candidate start positions of a next consecutive block following a present block given that the first block starts at the first bit position of the data stream, until a first bit position after a last bit position of the data stream is in the first set of candidate start positions determined for the next consecutive block, and define a last block of the data stream as the present block; means for defining an end-point of the last block of the data stream as the first bit position after the last bit position of the data stream; for each block, from a block before the last block to the first block of the data stream, means for determining an intersection of (1) the first set of candidate start positions of a next consecutive block following a present block given that the first block starts at the first bit position of the data stream; and
(2) a second set of candidate start positions of the next consecutive block following the present block given that a block immediately following the next consecutive block starts at the end-point of the next consecutive block; andmeans for defining an end-point of the present block of the data stream as a bit position in the intersection; and means for determining the block partition as the end-points of each block in the data stream. - View Dependent Claims (30, 31, 32, 33)
-
-
34. An apparatus configured to determine a global block partition for serving a data stream of bits from a transmitter to a receiver, the data stream defined by a global cumulative stream size function and having a plurality of seek-points, each seek-point being a point in the data stream where the receiver can begin consuming the data stream within a predetermined start-up delay, the apparatus comprising:
-
means for dividing the data stream into a plurality of seek-blocks, each seek-block defined by a respective local cumulative stream size function, wherein data on one side of a particular seek-point is decoding independent of data on another side of the particular seek-point; means for recursively defining, for each seek-block of the plurality of seek-blocks, a respective effective start-up delay that is less than or equal to the predetermined start-up delay; means for determining, for each seek-block of the plurality of seek-blocks, a local block partition that ensures uninterrupted presentation of the respective seek-block with the respective effective start-up delay; and means for determining the global block partition as the local block partitions of each seek-block of the plurality of seek-blocks in the data stream.
-
Specification