Parallel video encoding based on complexity analysis

US9398301B2 · US · B2

Patent metadata
FieldValue
Publication numberUS-9398301-B2
Application numberUS-201414484967-A
CountryUS
Kind codeB2
Filing dateSep 12, 2014
Priority dateDec 10, 2010
Publication dateJul 19, 2016
Grant dateJul 19, 2016

How to read this patent

A practical reading order for non-experts. Skip the full description unless you need deep technical detail.

  1. Title

    What the patent document calls the invention.

  2. Abstract

    A short plain-language summary of the technical disclosure.

  3. Assignees and inventors

    Who owns or filed the patent and who is credited as inventor.

  4. Key dates

    Filing, priority, publication, and grant dates set the timeline.

  5. First independent claim

    The legal scope of protection — read this for what is actually claimed.

  6. CPC / IPC classifications

    Technology tags used to group this patent with similar filings.

  7. Citations and related patents

    Prior art links and similar publications in this corpus.

Abstract

Official abstract text for this publication.

Embodiments of the invention provide techniques for encoding chunks of a video file in parallel. Embodiments may divide a source video file into a plurality of chunks, and may encode each chunk at a rate based upon complexity data associated with the chunk. The encoded chunks may then be reassembled to produce an encoded video file.

First claim

Opening claim text (preview).

What is claimed is: 1. A computer-implemented method for encoding, in parallel, chunks of a source video file, the method comprising: generating complexity data for the source video file, wherein the complexity data reflects the complexity across the source video file and includes a complexity for each sampling point in a plurality of sampling points; dividing the source video file into a plurality of chunks, wherein each chunk represents a portion of the source video file; determining a complexity value associated with each chunk in the plurality of chunks based on a predetermined range of complexity values; for at least a first chunk in the plurality of chunks: allocating a respective portion of a total encoding bandwidth to the chunk based on the complexity value associated with the chunk indicating an overall complexity of the chunk relative to every other chunk in the plurality of chunks including at least one chunk that is subsequent to the first chunk in the plurality of chunks; determining a respective encoding rate for the chunk based on the portion of the total encoding bandwidth allocated to the chunk; and encoding the chunk at the determined encoding rate; and assembling a plurality of encoded chunks to produce at least a portion of an encoded video. 2. The method of claim 1 , wherein the complexity data comprises residual energy data indicating the residual energy at each sampling point in the plurality of sampling points. 3. The method of claim 1 , wherein the complexity data comprises an accumulated logarithm of residual energy of each macroblock of a video frame at each sampling point in the plurality of sampling points. 4. The method of claim 1 , wherein the complexity data comprises a combination of a logarithm of residual energy of each macroblock of a video frame and a number of bits needed to encode additional macroblock information at each sampling point in the plurality of sampling points, wherein the additional macroblock information includes at least one of motion vectors and macroblock modes. 5. The method of claim 1 , wherein the complexity data comprises interpolated data obtained by: calculating the residual energy of each macroblock of a video frame; performing a block transform; quantifying one or more transform coefficients with a plurality of quantization parameters; and counting the number of bits necessary to encode the resulting quantized coefficients. 6. The method of claim 5 , wherein the block transform is one of a Discrete Cosine Transform, a 4×4 integer transform, and an 8×8 integer transform. 7. The method of claim 5 , wherein the quantization parameters are used to produce a rate-distortion curve, and wherein the rate-distortion curve is used to predict a number of bits needed to encode a given macroblock at two or more distinct bitrates. 8. The method of claim 1 , wherein the step of encoding the first chunk is further based on at least one of a previous chunk and the subsequent chunk. 9. The method of claim 1 , wherein more-complex chunks are encoded at a higher encoding rate, and less-complex chunks are encoded at a lower encoding rate. 10. The method of claim 1 , wherein the step of assembling the plurality of encoded chunks to produce the at least a portion of the encoded video includes modifying metadata in a header portion of at least one of the encoded chunks. 11. A non-transitory computer-readable medium containing a program that, when executed, performs an operation for encoding, in parallel, chunks of a source video file, the operation comprising: generating complexity data for the source video file, wherein the complexity data reflects the complexity across the source video file and includes a complexity for each sampling point in a plurality of sampling points; dividing the source video file into a plurality of chunks, wherein each chunk represents a portion of the source video file; determining a complexity value associated with each chunk in the plurality of chunks based on a predetermined range of complexity values; for at least a first chunk in the plurality of chunks: allocating a respective portion of a total encoding bandwidth to the chunk based on the complexity value associated with the chunk indicating an overall complexity of the chunk relative to every other chunk in the plurality of chunks including at least one chunk that is subsequent to the first chunk in the plurality of chunks; determining a respective encoding rate for the chunk based on the portion of the total encoding bandwidth allocated to the chunk; and encoding the chunk at the determined encoding rate; and assembling a plurality of encoded chunks to produce at least a portion of an encoded video. 12. The non-transitory computer-readable medium of claim 11 , wherein the complexity data comprises residual energy data indicating the residual energy at each sampling point in the plurality of sampling points. 13. The non-transitory computer-readable medium of claim 11 , wherein the complexity data comprises an accumulated logarithm of residual energy of each macroblock of a video frame at each sampling point in the plurality of sampling points. 14. The non-transitory computer-readable medium of claim 11 , wherein the complexity data comprises a combination of a logarithm of residual energy of each macroblock of a video frame and a number of bits needed to encode additional macroblock information at each sampling point in the plurality of sampling points, wherein the additional macroblock information includes at least one of motion vectors and macroblock modes. 15. The non-transitory computer-readable medium of claim 11 , wherein the complexity data comprises interpolated data obtained by: calculating the residual energy of each macroblock of a video frame; performing a block transform; quantifying one or more transform coefficients with a plurality of quantization parameters; and counting the number of bits necessary to encode the resulting quantized coefficients. 16. The non-transitory computer-readable medium of claim 15 , wherein the block transform is one of a Discrete Cosine Transform, a 4×4 integer transform, and an 8×8 integer transform. 17. The non-transitory computer-readable medium of claim 15 , wherein the quantization parameters are used to produce a rate-distortion curve, and wherein the rate-distortion curve is used to predict a number of bits needed to encode a given macroblock at two or more distinct bitrates. 18. The non-transitory computer-readable medium of claim 11 , wherein the step of encoding the first chunk is further based on at least one of a previous chunk and the subsequent chunk. 19. The non-transitory computer-readable medium of claim 11 , wherein more-complex chunks are encoded at a higher encoding rate, and less-complex chunks are encoded at a lower encoding rate. 20. The non-transitory computer-readable medium of claim 11 , wherein the step of assembling the plurality of encoded chunks to produce the at least a portion of the encoded video includes modifying metadata in a header portion of at least one of the encoded chunks. 21. A system, comprising: a processor; and a memory containing a program that, when executed on the processor, performs an operation for encoding, in parallel, chunks of a source video file, the operation comprising: generating complexity data for the source video file, wherein the complexity data reflects the complexity across the source video file and includes a complexity for each sampl

Assignees

Inventors

Classifications

  • H04N19/14Primary

    Coding unit complexity, e.g. amount of activity or edge presence estimation (H04N19/146 takes precedence) · CPC title

  • Selection of the code volume for a coding unit prior to coding · CPC title

  • Sampling, masking or truncation of coding units, e.g. adaptive resampling, frame skipping, frame interpolation or high-frequency transform coefficient masking · CPC title

  • using parallelised computational arrangements · CPC title

  • using discrete cosine transform [DCT] · CPC title

Patent family

Related publications grouped by family.

External sources

Frequently asked questions

Answers are generated from the same data shown on this page.

What does patent US9398301B2 cover?
Embodiments of the invention provide techniques for encoding chunks of a video file in parallel. Embodiments may divide a source video file into a plurality of chunks, and may encode each chunk at a rate based upon complexity data associated with the chunk. The encoded chunks may then be reassembled to produce an encoded video file.
Who is the assignee on this patent?
Netflix Inc
What technology area does this patent fall under?
Primary CPC classification H04N19/14. Mapped technology areas include Electricity.
When was this patent published?
Publication date Tue Jul 19 2016 00:00:00 GMT+0000 (Coordinated Universal Time) (B2). Legal status and post-grant events are not shown on this page.
What related patents are in patentsdb?
We list 8 related publications on this page (citations in our corpus or others sharing the same primary CPC).