Patent ID: 8526488

Claim:
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: C ⁡ ( A ) = ∑ y = 0 N - 1 ⁢ ∑ x = 0 M - 1 ⁢ F ⁡ ( A , x , y , B H ⁡ ( x ) , B V ⁡ ( y ) ) ; where F(A, x, y, dx, dy) is auxiliary function for a two-dimensional M×N array A; and B H (x), B V (y)—boundary indicator functions for first and second indices of the two-dimensional M×N array, which are equal to: +1, if index equals a minimal value (zero); −1, if the index equals a maximal value ((M−1) for B H (x) and (N−1) for B V (y)); and 0—otherwise.