IP Library Granted Patent US 9,794,604
Granted Patent B2
US 9,794,604 · App. 14/942,917 · Granted Oct 17, 2017

Systems and methods for transmitting segment-quality units of a streaming video session

Inventors: Hiroshi Ohno (Bellevue, WA); Eric Burns (Seattle, WA); Timothy R. Sullivan (Seattle, WA); Zac Rumford (Seattle, WA)
Assignee: Panopto, Inc.
H04N21/2402H04N21/234345H04N21/234363H04N21/845H04N21/8456
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,794,604
App. No.
14/942,917
Granted
Oct 17, 2017
Kind
B2
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.

Claims (44)

1. 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.

2. The method of claim 1 wherein the at least one segment-quality unit that has been received of the interpolation segment corresponds to a lower quality level than the quality level of the at least one other segment-quality unit that has not been received of the interpolation segment.

3. The method of claim 1 , wherein the manifest update indicates the availability of all quality levels of the filler gap.

4. The method of claim 1 wherein the filler segment-quality unit encodes a static image.

5. The method of claim 1 , further comprising:

transmitting, to the broadcast sender, an indication of segment-quality units that were not received based on the received segment record; and

receiving, based on the transmitted indication, at least one segment-quality unite previously indicated as not received.

6. The method of claim 1 wherein the computing system is a first computing system, and wherein the streaming video manifest is maintained at a second computing system, wherein the second computing system is different from the first computing system.

7. The method of claim 1 wherein segments of the streaming video are ten seconds or less in length.

8. The method of claim 1 wherein the segment-quality units are received while the streaming video is being recorded by a recording device.

9. The method of claim 1 further comprising transmitting the received segment-quality units to a hypertext transfer protocol (HTTP) server.

10. The method of claim 1 further comprising transmitting the received segment-quality units to a content distribution network (CDN).

11. The method of claim 1 wherein the streaming video is provided according to an HTTP live streaming (HLS) or MPEG dynamic adaptive streaming over HTTP (DASH) streaming protocol.

12. 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.

13. The non-transitory computer-readable medium of claim 12 wherein the manifest update indicates the availability of all quality levels of the filler gap.

14. The non-transitory computer-readable medium of claim 12 , further comprising:

transmitting, to the broadcast sender, an indication of segment-quality units that were not received based on the received segment record; and

receiving, based on the transmitted indication, at least one segment-quality units previously indicated as not received.

Assignments (8)
SECURITY INTEREST Recorded Jun 5, 2022
From: PANOPTO, INC.; SYMPHONY VIDEO, INC.
To: PNC BANK, NATIONAL ASSOCIATION
Reel/Frame 060103/0682 →
RELEASE OF SECURITY INTEREST Recorded Jun 3, 2022
From: WELLS FARGO BANK, NATIONAL ASSOCIATION, AS AGENT
To: PANOPTO, INC.; SYMPHONY VIDEO, INC.
Reel/Frame 060098/0724 →
SECURITY INTEREST Recorded Mar 31, 2021
From: PANOPTO, INC.; SYMPHONY VIDEO, INC.
To: WELLS FARGO BANK, NATIONAL ASSOCIATION, AS AGENT
Reel/Frame 055786/0301 →
RELEASE OF SECURITY INTEREST Recorded Mar 30, 2021
From: WELLS FARGO BANK, NATIONAL ASSOCIATION
To: PANOPTO, INC.
Reel/Frame 055842/0068 →
RELEASE OF SECURITY INTEREST Recorded Mar 13, 2018
From: PACIFIC WESTERN BANK
To: PANOPTO, INC.
Reel/Frame 045190/0370 →
SECURITY INTEREST Recorded Mar 12, 2018
From: PANOPTO, INC.
To: WELLS FARGO BANK, NATIONAL ASSOCIATION, AS ADMINISTRATIVE AGENT
Reel/Frame 045176/0850 →
SECURITY INTEREST Recorded Aug 29, 2016
From: PANOPTO, INC.
To: PACIFIC WESTERN BANK
Reel/Frame 039567/0594 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 24, 2015
From: OHNO, HIROSHI; BURNS, ERIC; SULLIVAN, TIMOTHY; RUMFORD, ZAC
To: PANOPTO, INC.
Reel/Frame 037132/0416 →
Continuity (2)
Provisional Application 62079934 · Nov 14, 2014
Related Publication 20160142752A1 · May 19, 2016