IP Library Granted Patent US 9,319,678
Granted Patent B2
US 9,319,678 · App. 13/901,353 · Granted Apr 19, 2016

Keyframe alignment for encoding video at multiple bitrates

Inventor: Baptiste Coudurier (Los Angeles, CA)
Assignee: HULU, LLC
H04N19/00545H04N19/107H04N21/23418H04N21/23439H04N19/142
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,319,678
App. No.
13/901,353
Granted
Apr 19, 2016
Kind
B2
Abstract

In one embodiment, a method receives a frame type storage medium including frame type decisions made by a first encoding process to encode a video at a first bitrate to generate a first encoded video. While performing a second encoding process to encode the video at a second bitrate to generate a second encoded video, the method performs: retrieving information from the storage medium regarding a frame type decision made during the first encoding process; inserting a keyframe in the second encoded video based on the retrieved information from the storage medium, wherein the inserted keyframe in the second encoded video is aligned with a corresponding keyframe in the first encoded video; and continuing to retrieve information from the storage medium and inserting keyframes in the second encoded video. Keyframes in the first encoded video are aligned with keyframes in the second encoded video.

Claims (55)

1. A method comprising:

receiving a frame type storage medium including information for frame type decisions made by a first encoding process to encode a video at a first bitrate to generate a first encoded video at the first bitrate, wherein the frame type decisions were made based on characteristics of the video; and

while performing a second encoding process to encode the video at a second bitrate to generate a second encoded video at the second bitrate, performing:

during the second encoding process, retrieving information from the frame type storage medium regarding a frame type decision made during the first encoding process of the video at the first bitrate;

inserting a keyframe in the second encoded video based on the retrieved information from the frame type storage medium, wherein the inserted keyframe in the second encoded video is aligned with a corresponding keyframe in the first encoded video;

continuing to retrieve information from the frame type storage medium and inserting keyframes in the second encoded video until the video is encoded at the second bitrate, wherein keyframes in the first encoded video at the first bitrate are aligned with keyframes in the second encoded video at the second bitrate;

while performing a third encoding process to encode the video at a third bitrate to generate a third encoded video at the third bitrate, performing:

during the third encoding process, retrieving information from the frame type storage medium regarding the frame type decision made during the first encoding process of the video at the first bitrate;

inserting a keyframe in the third encoded video based on the retrieved information from the frame type storage medium, wherein the inserted keyframe in the third encoded video is aligned with a corresponding keyframe in the first encoded video; and

continuing to retrieve information from the frame type storage medium and inserting keyframes in the third encoded video until the video is encoded at the third bitrate, wherein keyframes in the first encoded video at the first bitrate are aligned with keyframes in the third encoded video at the third bitrate.

2. The method of claim 1 , further comprising:

performing the first encoding process of the video at the first bitrate; and

storing the frame type decisions in the frame type storage medium while performing the first encoding process of the video at the first bitrate.

3. The method of claim 1 , wherein every frame type decision for every frame made in the first encoding process is stored in the frame type storage medium.

4. The method of claim 3 , wherein the second encoding process makes a same frame type decision as stored in the frame type storage medium for every frame encoded in the second encoding process.

5. The method of claim 1 , wherein the information stored in the frame type storage medium includes information for keyframe type decisions for every keyframe in the first encoding process.

6. The method of claim 5 , wherein the second encoding process inserts keyframes at a same position as keyframes in the first encoded video based on the information.

7. The method of claim 5 , wherein only positions of keyframes are stored in the frame type storage medium.

8. A non-transitory computer-readable storage medium containing instructions, that when executed, control a computer system to be configured for:

receiving a frame type storage medium including information for frame type decisions made by a first encoding process to encode a video at a first bitrate to generate a first encoded video at the first bitrate, wherein the frame type decisions were made based on characteristics of the video; and

while performing a second encoding process to encode the video at a second bitrate to generate a second encoded video at the second bitrate, performing:

during the second encoding process, retrieving information from the frame type storage medium regarding a frame type decision made during the first encoding process of the video at the first bitrate;

inserting a keyframe in the second encoded video based on the retrieved information from the frame type storage medium, wherein the inserted keyframe in the second encoded video is aligned with a corresponding keyframe in the first encoded video;

continuing to retrieve information from the frame type storage medium and inserting keyframes in the second encoded video until the video is encoded at the second bitrate, wherein keyframes in the first encoded video at the first bitrate are aligned with keyframes in the second encoded video at the second bitrate;

while performing a third encoding process to encode the video at a third bitrate to generate a third encoded video at the third bitrate, performing:

during the third encoding process, retrieving information from the frame type storage medium regarding the frame type decision made during the first encoding process of the video at the first bitrate;

inserting a keyframe in the third encoded video based on the retrieved information from the frame type storage medium, wherein the inserted keyframe in the third encoded video is aligned with a corresponding keyframe in the first encoded video; and

continuing to retrieve information from the frame type storage medium and inserting keyframes in the third encoded video until the video is encoded at the third bitrate, wherein keyframes in the first encoded video at the first bitrate are aligned with keyframes in the third encoded video at the third bitrate.

9. The non-transitory computer-readable storage medium of claim 8 , further configured for:

performing the first encoding process of the video at the first bitrate; and

storing the frame type decisions in the frame type storage medium while performing the first encoding process of the video at the first bitrate.

10. The non-transitory computer-readable storage medium of claim 8 , wherein every frame type decision for every frame made in the first encoding process is stored in the frame type storage medium.

11. The non-transitory computer-readable storage medium of claim 10 , wherein the second encoding process makes a same frame type decision as stored in the frame type storage medium for every frame encoded in the second encoding process.

12. The non-transitory computer-readable storage medium of claim 8 , wherein the information stored in the frame type storage medium includes information for keyframe type decisions for every keyframe in the first encoding process.

13. The non-transitory computer-readable storage medium of claim 12 , wherein the second encoding process inserts keyframes at a same position as keyframes in the first encoded video based on the information.

14. The non-transitory computer-readable storage medium of claim 12 , wherein only positions of keyframes are stored in the frame type storage medium.

15. A system comprising:

one or more computer processors; and

a non-transitory computer-readable storage medium comprising instructions, that when executed, control the one or more computer processors to be configured for:

receiving a frame type storage medium including information for frame type decisions made by a first encoding process to encode a video at a first bitrate to generate a first encoded video at the first bitrate, wherein the frame type decisions were made based on characteristics of the video; and

while performing a second encoding process to encode the video at a second bitrate to generate a second encoded video at the second bitrate, performing:

during the second encoding process, retrieving information from the frame type storage medium regarding a frame type decision made during the first encoding process of the video at the first bitrate;

inserting a keyframe in the second encoded video based on the retrieved information from the frame type storage medium, wherein the inserted keyframe in the second encoded video is aligned with a corresponding keyframe in the first encoded video;

continuing to retrieve information from the frame type storage medium and inserting keyframes in the second encoded video until the video is encoded at the second bitrate, wherein keyframes in the first encoded video at the first bitrate are aligned with keyframes in the second encoded video at the second bitrate;

while performing a third encoding process to encode the video at a third bitrate to generate a third encoded video at the third bitrate, performing:

during the third encoding process, retrieving information from the frame type storage medium regarding the frame type decision made during the first encoding process of the video at the first bitrate;

inserting a keyframe in the third encoded video based on the retrieved information from the frame type storage medium, wherein the inserted keyframe in the third encoded video is aligned with a corresponding keyframe in the first encoded video; and

continuing to retrieve information from the frame type storage medium and inserting keyframes in the third encoded video until the video is encoded at the third bitrate, wherein keyframes in the first encoded video at the first bitrate are aligned with keyframes in the third encoded video at the third bitrate.

16. The apparatus of claim 15 , further configured for:

performing the first encoding process of the video at the first bitrate; and

storing the frame type decisions in the frame type storage medium while performing the first encoding process of the video at the first bitrate.

17. The apparatus of claim 15 , wherein every frame type decision for every frame made in the first encoding process is stored in the frame type storage medium.

18. The apparatus of claim 17 , wherein the second encoding process makes a same frame type decision as stored in the frame type storage medium for every frame encoded in the second encoding process.

19. The apparatus of claim 15 , wherein the information stored in the frame type storage medium includes information for keyframe type decisions for every keyframe in the first encoding process.

20. The apparatus of claim 19 , wherein the second encoding process inserts keyframes at a same position as keyframes in the first encoded video based on the information.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 23, 2013
From: COUDURIER, BAPTISTE
To: HULU, LLC
Reel/Frame 030478/0247 →
Continuity (2)
Provisional Application 61740253 · Dec 20, 2012
Related Publication 20140177733A1 · Jun 26, 2014