IP Library › Granted Patent US 11,134,256
Granted Patent B1
US 11,134,256 · App. 16/745,163 · Granted Sep 28, 2021

Systems and methods for efficient parallelized video encoding

Inventors: Avinash Ramachandran (Santa Clara, CA); Pavel Novotny (Waterloo, CA)
Assignee: Xilinx, Inc.
H04N19/436H04N19/115H04N19/127H04N19/152H04N19/164H04N19/176H04N19/91
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 11,134,256
App. No.
16/745,163
Granted
Sep 28, 2021
Kind
B1
Abstract

Methods and systems for parallelized encoding of video are disclosed. According to one embodiment, a video encoder comprises a plurality of encoding engines. Each encoding engine is configured to receive a respective designated region of a video frame and produce respective quantized coefficients, the respective region having one or more unencoded frame blocks. Each encoding engine has a local symcoder for performing entropy-based encoding of the respective quantized coefficients. The video encoder has a rate control module, in communication with each encoding engine, for receiving from the respective local symcoder of each encoding engine a respective region-level bit count. The video encoder has a central buffer, in communication with each encoding engine, for receiving from each encoding engine the respective quantized coefficients. The video encoder has a final symcoder, in communication with the central buffer and the rate control module, wherein the final symcoder performs further entropy-based encoding of the respective quantized coefficients received in the central buffer, and transmits to the rate control module a frame-level bit count.

Claims (36)

1. A video encoder, comprising:

a plurality of encoding engines, wherein each encoding engine is configured to receive a respective designated region of a video frame and produce respective quantized coefficients, the respective region having one or more unencoded frame blocks, and includes a local symcoder for performing, in parallel, entropy-based encoding of the respective quantized coefficients;

a rate control module, in communication with each encoding engine, for receiving from the respective local symcoder of each encoding engine a respective region-level bit count;

a central buffer, in communication with each encoding engine, for receiving from each encoding engine respective quantized coefficients; and

a final symcoder, in communication with the central buffer and the rate control module, wherein the final symcoder performs entropy-based encoding of the respective quantized coefficients received in the central buffer, and transmits to the rate control module a frame-level bit count, wherein at least one encoding engine is configured to select a context model used by the corresponding local symcoder based on a region-level bit count generated by the corresponding local symcoder or the frame-level bit count.

2. The video encoder of claim 1 , wherein the rate control module is configured to compute a rate for encoding an unencoded frame block based on one or more region-level bit counts received from the one or more local symcoders, or the frame-level bit count.

3. The video encoder of claim 1 , wherein at least one of the encoding engines further comprises one or more of:

a predictor for predicting pixel values of the one or more received unencoded frame blocks;

a residual computation and transformation module for generating residuals for predicted pixel values of the one or more received unencoded frame blocks, and transforming the residuals; and

a quantizer for quantizing the transformed residuals.

4. The video encoder of claim 3 , wherein the rate control module is configured to compute a quantization parameter based on one or more region-level bit counts received from the one or more local symcoders, or the frame-level bit count.

5. The video encoder of claim 1 , further comprising a frame divider configured to receive an unencoded video frame, divide the unencoded frame into a plurality of non-overlapping regions, each non-overlapping region comprising at least one frame block, and transmit at least one non-overlapping region to at least one encoding engine.

6. The video encoder of claim 5 , wherein in each encoding engine the local symcoder is configured to encode at least 2040 blocks of size 64×64 pixels in one second, whereby the video encoder can encode 3840 pixel×2160 pixel frames at a rate of 60 frames per second (fps).

7. The video encoder of claim 1 , wherein at least one encoding engine is one of an application specific integrated circuit (ASIC) or a field programmable gate array (FPGA).

8. The video encoder of claim 1 , wherein at least one encoding engine has a processor in communication with memory, and having instructions in the memory that configure the processor as the local symcoder.

9. A method of encoding video frames, the method comprising:

receiving by each of a plurality of encoding engines a respective designated region of a video frame, the respective region having one or more unencoded frame blocks;

generating by each encoding engine respective quantized coefficients for the respective region of the video frame;

performing by a respective local symcoder in each encoding engine, in parallel with other symcoders, entropy-based encoding of the respective quantized coefficients and providing a respective region-level bit count to a rate control module;

determining by the rate control module, using the region-level bit counts received from the local symcoder of the plurality of encoding engines, an approximate frame-level bit count;

receiving at a central buffer, from each encoding engine, respective quantized coefficients; and

performing entropy encoding by a final symcoder of the respective quantized coefficients received in the central buffer, and transmitting to the rate control module a frame-level bit count, wherein at least one encoding engine selects a context model used by the corresponding local symcoder based on a region-level bit count generated by the corresponding local symcoder or the frame-level bit count.

10. The method of claim 9 , wherein the rate control module computes a rate for encoding an unencoded frame block based on one or more region-level bit counts received from the one or more local symcoders, or the frame-level bit count.

11. The method of claim 9 , further comprising performing by at least one of the encoding engines:

prediction of pixel values of the one or more received unencoded frame blocks;

computation of residuals for the predicted pixel values;

transformation of the residuals to frequency domain; and

quantization of the transformed residuals.

12. The method of claim 11 , further comprising:

computing by the rate control module a quantization parameter based on one or more region-level bit counts received from the one or more local symcoders, or the frame-level bit count.

13. The method of claim 9 , further comprising:

dividing, using a frame divider, the unencoded frame into a plurality of non-overlapping regions, each non-overlapping region comprising at least one frame block; and

transmit at least one non-overlapping region to at least one encoding engine.

14. The method of claim 13 , wherein in each encoding engine the local symcoder is configured to encode at least 2040 blocks of size 64×64 pixels in one second, whereby the video encoder can encode 3840 pixel×2160 pixel frames at a rate of 60 frames per second (fps).

15. The method of claim 9 , wherein at least one encoding engine is one of an application specific integrated circuit (ASIC) or a field programmable gate array (FPGA).

16. The method of claim 9 , wherein at least one encoding engine has a processor in communication with memory, and having instructions in the memory that configure the processor as the local symcoder.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 27, 2021
From: RAMACHANDRAN, AVINASH; NOVOTNY, PAVEL
To: XILINX, INC.
Reel/Frame 057307/0762 →
Continuity (1)
Provisional Application 62793267 · Jan 16, 2019
Cited By (1)
US 12,671,817