Systems and methods for transmitting segment-quality units of a streaming video session
AssigneePanopto, Inc.
InventorsHiroshi Ohno, Eric Burns, Timothy R. Sullivan, Zac Rumford
Life of this patent
Estimating the term…
Abstract
Systems and methods are provided for providing streaming video to a client computer. A system includes a broadcast sender configured to provide a plurality of video segments at each of a plurality of quality levels as segment-quality units. A load balancer is configured to transmit the segment-quality units to one of a plurality of upload servers. The upload servers are configured to update a record of received segment-quality units, and to generate updates for a streaming video manifest corresponding to the streaming video.
Claims14
A computer-implemented method for providing streaming video to a client computer, the method comprising:
- maintaining, at a computing system, a received segment record comprised of indications of segment-quality units that have been received and that have not been received by the computing system, wherein each segment-quality unit corresponds to a segment of a streaming video and a quality level at which the segment is encoded, and wherein indicating a segment-quality unit as received in the received segment record does not make the segment-quality unit available to the client computer;
- receiving, at the computing system, segment-quality units from a broadcast sender;
- updating, at the computing system, the received segment record based on the received segment-quality units to generate an updated received segment record;
- determining, based on the updated received segment record, whether to update a streaming video manifest, wherein the streaming video manifest indicates the availability and location of segment-quality units of the streaming video to the client computer;
- and
- updating, based on the determining, the streaming video manifest based on the updated received segment record of segment-quality units, wherein updating the streaming video manifest comprises:
- identifying a completed segment in the updated received segment record, wherein the completed segment comprises received segment-quality units for all of the quality levels of the completed segment, wherein the received segment-quality units of the completed segment have not been indicated as available in the streaming video manifest;
- identifying an interpolation segment in the updated received segment record, wherein the interpolation segment comprises:
- (a) at least one segment-quality unit that has been received, wherein the at least one segment-quality unit that has been received has a first quality level of the interpolation segment, and
- (b) at least one other segment-quality unit that has not been received, wherein the at least one other segment-quality unit that has not been received has a second quality level of the interpolation segment, and wherein the at least one segment-quality unit that has been received of the interpolation segment has not been indicated as available in the streaming video manifest;
- identifying a filler gap in the updated received segment record, wherein the filler gap comprises segments for which no segment-quality units have been received;
- generating a manifest update, wherein the manifest update indicates to the streaming video manifest the availability of the received segment-quality units for all of the quality levels of the completed segment, a filler segment-quality unit for a quality level of the filler gap, the at least one segment-quality unit that has been received of the interpolation segment, and the at least one other segment-quality unit that has not been received of the interpolation segment, wherein the availability of the at least one other segment-quality unit that has not been received indexes to an interpolation segment-quality unit, and
- transmitting the manifest update to the streaming video manifest, and
- wherein the manifest update causes the received segment-quality unit in the updated received segment record to appear available to the client computer.
A non-transitory computer-readable medium encoded with instructions that, when executed by a processor, perform a method for providing streaming video to a client computer, the method comprising:
- maintaining, at a computing system, a received segment record comprised of indications of segment-quality units that have been received and that have not been received by the computing system, wherein each segment-quality unit corresponds to a segment of a streaming video and a quality level at which the segment is encoded, and wherein indicating a segment-quality unit as received in the received segment record does not make the segment-quality unit available to the client computer;
- receiving, at the computing system, segment-quality units from a broadcast sender;
- updating, at the computing system, the received segment record based on the received segment-quality units to generate an updated received segment record;
- determining, based on the updated received segment record, whether to update a streaming video manifest, wherein the streaming video manifest indicates the availability and location of segment-quality units of the streaming video to the client computer;
- and
- updating, based on the determining, the streaming video manifest based on the updated received segment record of segment-quality units, wherein updating the streaming video manifest comprises:
- identifying a completed segment in the updated received segment record, wherein the completed segment comprises received segment-quality units for all of the quality levels of the completed segment, wherein the received segment-quality units of the completed segment have not been indicated as available in the streaming video manifest;
- identifying an interpolation segment in the updated received segment record, wherein the interpolation segment comprises:
- (a) at least one segment-quality unit that has been received, wherein the at least one segment-quality unit that has been received has a first quality level of the interpolation segment, and
- (b) at least one other segment-quality unit that has not been received, wherein the at least one other segment-quality unit that has not been received has a second quality level of the interpolation segment, and wherein the at least one segment-quality unit that has been received of the interpolation segment has not been indicated as available in the streaming video manifest;
- identifying a filler gap in the updated received segment record, wherein the filler gap comprises segments for which no segment-quality units have been received;
- generating a manifest update, wherein the manifest update indicates to the streaming video manifest the availability of the received segment-quality units for all of the quality levels of the completed segment, a filler segment-quality unit for the filler gap, the at least one segment-quality unit that has been received of the interpolation segment, and the at least one other segment-quality unit that has not been received of the interpolation segment, wherein the availability of the at least one other segment-quality unit that has not been received indexes to an interpolation segment-quality unit, and
- transmitting the manifest update to the streaming video manifest, and
- wherein the manifest update causes the received segment-quality unit in the updated received segment record to appear available to the client computer.
Dependencies are inferred from the claim text.