IP Library Granted Patent US 10,757,153
Granted Patent B2
US 10,757,153 · App. 16/266,402 · Granted Aug 25, 2020

Extended selection and alignment of video segments for adaptive streaming

Inventor: Francis DeGrange (San Jose, CA)
Assignee: Roku, Inc.
H04L65/4069G06F13/1673G06F13/4068H04L65/607H04N21/23406H04N21/23424H04N21/23439H04N21/23605H04N21/8455H04N21/8456H04N21/8547
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 10,757,153
App. No.
16/266,402
Granted
Aug 25, 2020
Kind
B2
Abstract

Disclosed herein are system, apparatus, article of manufacture, method, and/or computer program product embodiments for extended selection and alignment of video segments for adaptive streaming. An embodiment operates by receiving variant segments, the variant segments including a first and a second variant segment having a first bitrate, and third and fourth variant segments having a second bitrate, for decoding and playback, generating a first, second, and third packetized elementary stream (PES) collections based on the first, second, and third variant segments. The embodiment further operate by storing the generated first, second, and third PES collections in a processing buffer, and determining, based on a maximum tolerance offset, a first and a second out-of-tolerance splicing locations and associated first and second out-of-tolerance offsets between the first PES collection and the second PES collection and between the first PES collection and the third PES collection.

Claims (61)

1. An apparatus comprising:

at least one processor; and

a memory operatively coupled to the at least one processor, wherein the processor is configured to:

receive one or more variant segments for decoding and playback, the one or more variant segments including a first and second variant segments having a first bitrate, and a third, fourth, and fifth variant segments having a second bitrate,

generate corresponding first, second, third, fourth, and fifth packetized elementary stream (PES) collections based on at least the first, second, third, fourth and fifth variant segments,

store the generated first, second, third, fourth, and fifth PES collections in a processing buffer,

determine a third in-tolerance splicing location between the first and the fifth PES collections, the first and the fourth PES collections, and/or the second and the fifth PES collections based on at least a tolerance offset.

2. The apparatus of claim 1 , wherein

the first variant segment is temporally prior and adjacent to the second variant segment,

the fifth variant segment is temporally prior and adjacent to the fourth variant segment,

the fourth variant segment is temporally prior and adjacent to the third variant segment, and the first bitrate is different than the second bitrate.

3. The apparatus of claim 2 , wherein to determine the third in-tolerance splicing location, the at least one processor is further configured to:

generate corresponding first, second, third, fourth, and fifth key frames collections based on at least the first, second, third, fourth, and fifth PES collections, wherein each of the first, second, third, fourth, and fifth key frames collections includes one or more key frame collection elements, and each of the one or more key frames collection elements includes a PES packet that encapsulates a key frame and an associated presentation timestamp (PTS).

4. The apparatus of claim 3 , wherein the at least one processor is further configured to:

splice the first and the fifth PES collections, the first and the fourth PES collections, or the second and the fifth PES collections based on the third in-tolerance splicing location.

5. The apparatus of claim 4 , wherein the at least one processor is further configured to:

realign the processing buffer based on PTS associated with one or more PES collections stored in the processing buffer, wherein the processing buffer is configured as a first-in-first-out (FIFO) queue.

6. The apparatus of claim 5 , wherein to realign the processing buffer, the at least one processor is further configured to:

move the one or more PES collections stored in the processing buffer, such that the first, second, third, fourth, and fifth PES collections stored in the processing buffer are ordered in increasing PTS order, and

remove at least one PES collection stored in the processing buffer based on a bitrate transition associated with the third in-tolerance splicing location.

7. The apparatus of claim 1 , wherein the tolerance offset is plus or minus one frame for a given frame rate determined based on at least parameter information associated with a key frame.

8. A computer implemented method, comprising:

receiving one or more variant segments for decoding and playback, the one or more variant segments including a first and second variant segments having a first bitrate, and a third, fourth, and fifth variant segments having a second bitrate;

generating corresponding first, second, third, fourth, and fifth packetized elementary stream (PES) collections based on at least the first, second, third, fourth, and fifth variant segments;

storing the generated first, second, third, fourth, and fifth PES collections in a processing buffer, and

determining a third in-tolerance splicing location between the first and the fifth PES collections, the first and the fourth PES collections, and/or the second and the fifth PES collections based on at least a tolerance offset.

9. The computer implemented method of claim 8 , wherein

the first variant segment is temporally prior and adjacent to the second variant segment,

the fifth variant segment is temporally prior and adjacent to the fourth variant segment,

the fourth variant segment is temporally prior and adjacent to the third variant segment, and the first bitrate is different than the second bitrate.

10. The computer implemented method of claim 9 , further comprising:

splicing the first and the fifth PES collections, the first and the fourth PES collections, or the second and the fifth PES collections based on the third in-tolerance splicing location.

11. The computer implemented method of claim 8 , wherein the determining of the third in-tolerance splicing location further comprises:

generating corresponding first, second, third, fourth, and fifth key frames collections based on at least the first, second, third, fourth, and fifth PES collections, wherein each of the first, second, third, fourth, and fifth key frames collections includes one or more key frame collection elements, and each of the one or more key frames collection elements includes a key frame, associated parameter information, and corresponding presentation timestamp (PTS).

12. The computer implemented method of claim 11 , wherein the determining of the third in-tolerance splicing location further comprises:

determining whether a PTS of the first key frames collection substantially matches a PTS of the fifth key frames collection; and

generating the third in-tolerance splicing location, in response to determining that the PTS of the first key frames collection substantially matches the PTS of the fifth key frames collection.

13. The computer implemented method of claim 11 , wherein the determining of the third in-tolerance splicing location further comprises:

determining whether a PTS of the first key frames collection substantially matches a PTS of the fourth key frames collection; and

generating the third in-tolerance splicing location, in response to determining that the PTS of the first key frames collection substantially matches the PTS of the fourth key frames collection.

14. The computer implemented method of claim 11 , wherein the determining of the third in-tolerance splicing location further comprises:

determining whether a PTS of the second key frames collection substantially matches a PTS of the fifth key frames collection; and

generating the third in-tolerance splicing location, in response to determining that the PTS of the second key frames collection substantially matches the PTS of the fifth key frames collection.

15. A tangible computer-readable device having instructions stored thereon that, when executed by at least one computing device, causes the at least one computing device to perform operations comprising:

receiving one or more variant segments for decoding and playback, the one or more variant segments including a first and second variant segments having a first bitrate, and a third, fourth, and fifth variant segments having a second bitrate;

generating corresponding first, second, third, fourth, and fifth packetized elementary stream (PES) collections based on at least the first, second, third, fourth and fifth variant segments;

storing the generated first, second, third, fourth, and fifth PES collections in a processing buffer; and

determining a third in-tolerance splicing location between the first and the fifth PES collections, the first and the fourth PES collections, and/or the second and the fifth PES collections based on at least a tolerance offset.

16. The computer-readable device of claim 15 , wherein

the first variant segment is temporally prior and adjacent to the second variant segment,

the fifth variant segment is temporally prior and adjacent to the fourth variant segment,

the fourth variant segment is temporally prior and adjacent to the third variant segment, and the first bitrate is different than the second bitrate.

17. The computer-readable device of claim 16 , wherein the operation of determining the third in-tolerance splicing location further comprises:

generating corresponding first, second, third, fourth, and fifth key frames collections based on at least the first, second, third, fourth, and fifth PES collections, wherein each of the first, second, third, fourth, and fifth key frames collections includes one or more key frame collection elements, and each of the one or more key frames collection elements includes a PES packet that encapsulates a key frame and an associated presentation timestamp (PTS).

18. The computer-readable device of claim 17 , wherein the operations further comprising:

splicing the first and the fifth PES collections, the first and the fourth PES collections, or the second and the fifth PES collections based on the third in-tolerance splicing location.

19. The computer-readable device of claim 18 , wherein the operations further comprises:

realigning the processing buffer based on PTS associated with one or more PES collections stored in the processing buffer, wherein the processing buffer is configured as a first-in-first-out (FIFO) queue.

20. The computer-readable device of claim 19 , wherein the operation of realigning the processing buffer further comprises:

moving the one or more PES collections stored in the processing buffer, such that the PES collections stored in the processing buffer are ordered in increasing PTS order; and

removing at least one PES collection stored in the processing buffer based on a bitrate transition associated with the third in-tolerance splicing location.

Assignments (4)
SECURITY INTEREST Recorded Sep 18, 2024
From: ROKU, INC.
To: CITIBANK, N.A.
Reel/Frame 068982/0377 →
TERMINATION AND RELEASE OF INTELLECTUAL PROPERTY SECURITY AGREEMENT (REEL/FRAME 051300/0931) Recorded Feb 22, 2023
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: ROKU, INC.; ROKU DX HOLDINGS, INC.
Reel/Frame 062826/0205 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 29, 2022
From: DEGRANGE, FRANCIS
To: ROKU, INC.
Reel/Frame 059713/0510 →
SECURITY INTEREST Recorded Dec 16, 2019
From: ROKU, INC.; ROKU DX HOLDINGS, INC.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 051300/0931 →
Continuity (2)
Continuation 15010916 · Jan 29, 2016
Related Publication 20190173927A1 · Jun 6, 2019
Cited By (1)
US 12,671,868