IP Library Granted Patent US 8,135,061
Granted Patent B1
US 8,135,061 · App. 11/551,148 · Granted Mar 13, 2012

Variable bit rate encoding

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 8,135,061
App. No.
11/551,148
Granted
Mar 13, 2012
Kind
B1
Abstract

A system, machine-readable medium and method for processing video comprising a video segmentor configured to receive a source video and to split the source video into segments; a bit rate allocator configured to receive the segments and generate target bit rates corresponding to the segments; a first encoder coupled to receive the plurality of segments and the target bit rates and configured to encode each of the segments using one of the target bit rates to generate encoded segments; and an output generator configured to receive the encoded segments and generate an encoded video.

Claims (57)

1. A system for processing video comprising:

a video segmentor configured to receive a source video and to split the source video into a plurality of segments;

a bit rate allocator comprising a complexity estimator and an allocation logic, the bit rate allocator being configured to (i) receive the plurality of segments, (ii) generate complexity information for each of the plurality of segments, and (iii) generate a plurality of target bit rates corresponding to the plurality of segments by using the complexity information, wherein the plurality of segments has a plurality of first quality levels based on the complexity information;

wherein the allocation logic is configured to adjust the plurality of first quality levels to a plurality of second quality levels based, at least in part, on a model of a streaming video system predicting that the streaming video system can stream a sequence of a plurality of encoded segments using the plurality of second quality levels;

wherein adjusting the plurality of first quality levels to the plurality of second quality levels includes identifying a critical point in the sequence of the plurality of encoded segments to adjust the plurality of first quality levels up to the critical point, the critical point being where the model of the stream video system predicts that a constraint is most exceeded while streaming the sequence of the plurality of encoded segments using the plurality of first quality levels;

wherein the plurality of target bit rates are based, at least in part, on the plurality of second quality levels;

a first encoder configured to (i) receive the plurality of segments and the plurality of target bit rates, and (ii) encode each of the plurality of segments using one of the plurality of target bit rates to generate the plurality of encoded segments; and

an output generator configured to receive the plurality of encoded segments and generate an encoded video.

2. The system of claim 1 , wherein the source video comprises a sequence of frames, each of the plurality of segments being one frame in the sequence of frames.

3. The system of claim 1 , wherein the source video comprises a sequence of frames, each of the plurality of segments being a plurality of frames in the sequence of frames.

4. The system of claim 1 , further comprising:

a network coupled to the output generator, the output generator streaming the encoded video on the network;

a decoder configured to receive the encoded video on the network and decode the encoded video to generate a decoded video; and

a display configured to display the decoded video.

5. The system of claim 1 , wherein the complexity estimator comprises a second encoder configured to encode the plurality of segments and generate the complexity information.

6. The system of claim 5 , wherein the second encoder is configured to encode the plurality of segments in an expedited mode.

7. The system of claim 6 , wherein the second encoder is configured to encode the plurality of segments using constant quality, one-pass encoding.

8. The system of claim 5 , wherein the first encoder and the second encoder are configured to encode the plurality of segments using the same encoding algorithm.

9. The system of claim 1 , wherein the source video has a variable bit rate encoding, the complexity estimator is configured to analyze the variable bit rate encoding and generate complexity information for each of the plurality of segments.

10. The system of claim 1 , wherein the complexity information comprises a plurality of average bit rates each corresponding to one of the plurality of segments.

11. The system of claim 1 , wherein the complexity information comprises a plurality of meta-data each corresponding to one of the plurality of segments.

12. The system of claim 11 , wherein each of the plurality of meta-data comprises frame types, macroblock types, quantizer and motion vectors corresponding to one of the plurality of segments.

13. The system of claim 1 , wherein the allocation logic uniformly reduces the plurality of first quality levels up to the critical point to generate the plurality of second quality levels.

14. The system of claim 1 , wherein the streaming video system comprises a buffer configured to receive the plurality of encoded segments from a network and provide the plurality of encoded segments to a decoder, the constraint being exceeded to an extent that the decoder requires portions of the plurality of encoded segments that are unavailable in the buffer.

15. The system of claim 1 , wherein the allocation logic is configured to generate a smooth transition between the plurality of second quality levels before the critical point and the plurality of second quality levels after the critical point.

16. A method for processing video, the method being performed by a processor and comprising:

receiving a source video;

splitting the source video into a plurality of segments;

generating complexity information for each of the plurality of segments, and generating a plurality of target bit rates corresponding to the plurality of segments by using the complexity information, wherein the plurality of segments has a plurality of first quality levels based on the complexity information;

adjusting the plurality of first quality levels to a plurality of second quality levels based, at least in part, on a model of a streaming video system predicting that the streaming video system can stream a sequence of the plurality of encoded segments using the plurality of second quality levels;

wherein adjusting the plurality of first quality levels to the plurality of second quality levels includes identifying a critical point in the sequence of the plurality of encoded segments to adjust the plurality of first quality levels up to the critical point, the critical point being where the model of the stream video system predicts that a constraint is most exceeded while streaming the sequence of the plurality of encoded segments using the plurality of first quality levels;

wherein the plurality of target bit rates are based, at least in part, on the plurality of second quality levels;

performing a first encoding process on each of the plurality of segments of the source video using one of the plurality of target bit rates to generate the plurality of encoded segments; and

generating an encoded video comprising the plurality of encoded segments.

17. The method of claim 16 , wherein the source video comprises a sequence of frames, each of the plurality of segments being one frame in the sequence of frames.

18. The method of claim 16 , wherein the source video comprises a sequence of frames, each of the plurality of segments being a plurality of frames in the sequence of frames.

19. The method of claim 16 , further comprising:

streaming the encoded video on a network;

decoding the encoded video to generate a decoded video; and

displaying the decoded video.

20. The method of claim 16 , wherein generating complexity information for each of the plurality of segments comprises performing a second encoding process on the plurality of segments.

21. A non-transitory computer readable storage medium that provides instructions for a processor, the instructions when executed by the processor cause the processor to perform a method for processing video comprising:

receiving a source video;

splitting the source video into a plurality of segments;

generating complexity information for each of the plurality of segments, and generating a plurality of target bit rates corresponding to the plurality of segments by using the complexity information, wherein the plurality of segments has a plurality of first quality levels based on the complexity information;

adjusting the plurality of first quality levels to a plurality of second quality levels based, at least in part, on a model of a streaming video system predicting that the streaming video system can stream a sequence of the plurality of encoded segments using the plurality of second quality levels;

wherein adjusting the plurality of first quality levels to the plurality of second quality levels includes identifying a critical point in the sequence of the plurality of encoded segments to adjust the plurality of first quality levels up to the critical point, the critical point being where the model of the stream video system predicts that a constraint is most exceeded while streaming the sequence of the plurality of encoded segments using the plurality of first quality levels;

wherein the plurality of target bit rates are based, at least in part, on the plurality of second quality levels;

performing a first encoding process on each of the plurality of segments of the source video using one of the plurality of target bit rates to generate the plurality of encoded segments; and

generating an encoded video comprising the plurality of encoded segments.

22. The non-transitory computer readable storage medium of claim 21 , wherein the source video comprises a sequence of frames, each of the plurality of segments being one frame in the sequence of frames.

23. The non-transitory computer readable storage medium of claim 21 , wherein the source video comprises a sequence of frames, each of the plurality of segments being a plurality of frames in the sequence of frames.

24. The non-transitory computer readable storage medium of claim 21 , further comprising:

streaming the encoded video on a network;

decoding the encoded video to generate a decoded video; and

displaying the decoded video.

25. The non-transitory computer readable storage medium of claim 21 , wherein generating complexity information for each of the plurality of segments comprises performing a second encoding process on the plurality of segments.

Assignments (4)
CORRECTIVE ASSIGNMENT TO CORRECT THE COVERSHEET TO EXCLUDE APP. NO. 11368308, WHICH WAS INADVERTENTLY ADDED AT THE TIME OF RECORDING THE ASSIGNMENT PREVIOUSLY RECORDED AT REEL: 053609 FRAME: 0302. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Jan 18, 2022
From: VUDU, LLC
To: NBCUNIVERSAL MEDIA LLC
Reel/Frame 058756/0244 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 26, 2020
From: VUDU, LLC
To: NBCUNIVERSAL MEDIA LLC
Reel/Frame 053609/0302 →
CHANGE OF NAME Recorded Aug 24, 2020
From: VUDU, INC.
To: VUDU, LLC
Reel/Frame 053585/0162 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 9, 2008
From: GANESAN, PRASANNA; SHANKAR, SUMANKAR
To: VUDU, INC.
Reel/Frame 021663/0814 →