Video sequence encoding system and algorithms
First Claim
1. A video codec with high compression efficiency, the video codec comprising:
- a macroblock encoding module configured to receive a digitized picture divided into macroblocks, encode at least some of the macroblocks of the picture and output a compressed stream of pixels; and
a quantization parameter modulator operably coupled to the macroblock encoding module and configured to calculate quantization parameters for the macroblocks;
wherein the macroblock encoding module comprises;
a motion estimation unit configured to estimate macroblock motion based at least in part on a measurement function for motion search of a matching texture block; and
a macroblock decision-making unit that is responsible to the motion estimation unit and that is configured to optimize selection of macroblock type and transform size;
the measurement function for motion search is calculated as;
W(I,R,M,N,QP,mvx,mvy)=C(I)·
(SAD(I,R)+Cost(M,N,mvx,mvy,QP))+M·
N·
C(R),where;
M, N—
width and height of a current texture block;
I—
two-dimensional M×
N array of initial texture luminance component values corresponding to the current texture block with elements I(x, y),where xε
[0,M−
1], yε
[0,N−
1];
R—
two-dimensional M×
N array of texture prediction luminance component values corresponding to a reference texture block with elements R(x, y),where xε
[0,M−
1], yε
[0,N−
1];
QP—
a quantization parameter used for video encoding;
mvx,mvy—
components of difference between a current motion offset and a current motion vector prediction;
SAD(I, R)—
is a Sum of Absolute Differences between corresponding elements of the arrays I and R;
Cost(M,N,mvx,mvy,QP)—
a motion vector cost function; and
C(A)—
a complexity function for two-dimensional array A, A corresponding to arrays I or R, respectively;
5 Assignments
0 Petitions
Accused Products
Abstract
The video sequence encoding system with high compression efficiency is based on the H.264/AVC international video coding standard and is implementing proposed algorithms for: macroblock motion estimation; simplified rate-distortion optimization for transform size decision-making; acceleration of optimal macroblock type decision; modulation of quantization parameter with look-ahead refinement; and film-grain parameters calculation. The video encoding system comprises a motion estimation unit based on a measurement function for motion search of the matching texture block; a macroblock decision making unit; a pipeline processing module configured to accelerate complex transform; and a quantization parameter modulator configured to enhance the picture quality.
-
Citations
18 Claims
-
1. A video codec with high compression efficiency, the video codec comprising:
-
a macroblock encoding module configured to receive a digitized picture divided into macroblocks, encode at least some of the macroblocks of the picture and output a compressed stream of pixels; and a quantization parameter modulator operably coupled to the macroblock encoding module and configured to calculate quantization parameters for the macroblocks; wherein the macroblock encoding module comprises; a motion estimation unit configured to estimate macroblock motion based at least in part on a measurement function for motion search of a matching texture block; and a macroblock decision-making unit that is responsible to the motion estimation unit and that is configured to optimize selection of macroblock type and transform size; the measurement function for motion search is calculated as;
W(I,R,M,N,QP,mvx,mvy)=C(I)·
(SAD(I,R)+Cost(M,N,mvx,mvy,QP))+M·
N·
C(R),where; M, N—
width and height of a current texture block;I—
two-dimensional M×
N array of initial texture luminance component values corresponding to the current texture block with elements I(x, y),where xε
[0,M−
1], yε
[0,N−
1];R—
two-dimensional M×
N array of texture prediction luminance component values corresponding to a reference texture block with elements R(x, y),where xε
[0,M−
1], yε
[0,N−
1];QP—
a quantization parameter used for video encoding;mvx,mvy—
components of difference between a current motion offset and a current motion vector prediction;SAD(I, R)—
is a Sum of Absolute Differences between corresponding elements of the arrays I and R;Cost(M,N,mvx,mvy,QP)—
a motion vector cost function; andC(A)—
a complexity function for two-dimensional array A, A corresponding to arrays I or R, respectively; - View Dependent Claims (2, 3, 4)
-
-
5. A method of video encoding using a codec with high compression efficiency, the method comprising:
-
dividing an input picture into macroblocks of pixels; calculating quantization parameters for at least some of the macroblocks; performing motion estimation based on a measurement function for motion search of a matching texture block; calculating an optimal macroblock type; and selecting an optimal transform size for corresponding macroblock transforms; wherein the measurement function for motion estimation is calculated as;
W(I,R,M,N,QP,mvx,mvy)=C(I)·
(SAD(I,R)+Cost(M,N,mvx,mvy,QP))+M·
N·
C(R),where; M, N—
width and height of a current texture block;I—
two-dimensional M×
N array of initial texture luminance component values corresponding to the current texture block with elements I(x, y), where xε
[0,M−
1], yε
[0,N−
1];R—
two-dimensional M×
N array of texture prediction luminance component values corresponding to a reference texture block with elements R(x, y), where xε
[0,M−
1], yε
[0,N−
1];QP—
a quantization parameter used for video encoding;mvx,mvy—
components of difference between a current motion offset and a current motion vector prediction;SAD(I,R)—
is a Sum of Absolute Differences between corresponding elements of the arrays I and R;Cost(M,N,mvx,mvy,QP)—
a motion vector cost function; andC(A)—
a complexity function for two-dimensional array A, A corresponding to arrays I or R, respectively; - View Dependent Claims (6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16)
-
-
17. A method of accelerating selection of optimal macroblock type in a video sequence encoder with high compression efficiency, comprising:
-
defining a two-dimensional 16×
16 array of picture luma component values corresponding to a current macroblock MB;choosing a best mode of Intra 16×
16 prediction;choosing best motion vectors and reference frames of Inter prediction; calculating two-dimensional 16×
16 arrays of texture prediction for luma component values corresponding to current macroblock for Intra 16×
16 macroblock type PINTRA— 16×
16 and for Inter macroblock type PINTER;calculating two dimensional arrays of differences RINTRA — 16×
16 between MB and PINTRA— 16×
16;calculating two dimensional arrays of differences RINTER between MB and PINTER; calculating a sum of absolute values SAD(RINTER); calculating a sum of absolute values SAD(RINTRA — 16×
16);calculating an auxiliary complexity function C(MB) as; - View Dependent Claims (18)
-
Specification