IP Library Granted Patent US 7,406,124
Granted Patent B1
US 7,406,124 · App. 10/452,793 · Granted Jul 29, 2008

Systems and methods for allocating bits to macroblocks within a picture depending on the motion activity of macroblocks as calculated by an L1 norm of the residual signals of the macroblocks

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 7,406,124
App. No.
10/452,793
Granted
Jul 29, 2008
Kind
B1
Abstract

The invention is related to methods and apparatus that can advantageously be used in a video encoder to improve picture quality, to improve the speed of encoding, and the like. One embodiment of the invention advantageously computes activity measures using an efficient L1-norm, which can advantageously be relatively quickly computed by selected microprocessors. Another embodiment of the invention advantageously allocates bits to macroblocks of a picture based at least in part on the motion activities of the macroblocks.

Claims (467)

1. A method of allocating bits to macroblocks of a picture in a video encoding process, where the bits are allocated at least in part according to a motion activity of the macroblocks, the method comprising the steps of:

a. receiving a first group of pictures, each picture of said first group of pictures being selected from a group consisting of an I-picture, a P-picture, and a B-picture, wherein the macroblocks of an I-picture are intra coded, the macroblocks of a P-picture are either intra coded or forward predictively coded, and the macroblocks of a B-picture are either intra coded, or forward predictively coded, or backward predictively coded, or interpolated;

b. retrieving a picture mode of said first group of pictures, said picture mode defining a sequence of said I-pictures, P-pictures, and B-pictures in said first group of pictures;

c. determining a number N p , N b of each of said P-pictures and B-pictures, respectively, in said first group of pictures to be encoded;

d. calculating values of complexity estimators X i , X p , X b for each of said I-pictures, P-pictures, and B-pictures, respectively, in said first group of pictures;

e. calculating a number R of bits allocated to said first group of pictures to be encoded remaining after encoding a respective I-picture, P-picture or B-picture, wherein R=R prev −S i,p,b ,

the R prev being a number of bits allocated to said first group of pictures prior to encoding of said respective I-picture, P-picture, or B-picture, and the S i,p,b being a number of bits used to encode said respective I-picture, P-picture, or B-picture, respectively; and

f. calculating an initial target number of bits T i , T p , T b for each I-picture, P-picture, and B-picture, respectively, to be encoded in said first group of pictures, wherein

T

i

=

max

{

(

R

(

1

_

+

N

p

X

p

X

i

K

p

+

N

b

X

b

X

i

K

b

)

)

,

(

bit_rate

8

·

picture_rate

)

}

T

p

=

max

{

(

R

(

N

p

+

N

b

K

p

X

b

K

b

X

p

)

)

,

(

bit_rate

8

·

picture_rate

)

}

T

b

=

max

{

(

R

(

N

b

+

N

p

K

b

X

p

K

p

X

b

)

,

bit_rate

8

·

picture_rate

}

wherein bit_rate corresponds to a bit rate of a data transmission channel,

wherein picture_rate corresponds to a number of pictures per second transmitted via said data transmission channel, and

wherein K p and K b are universal constants depending on quantization matrices for the P-pictures and B-pictures, respectively, to be encoded;

allocating a respective virtual buffer for each of said I-pictures, P-pictures and B-pictures in said first group of pictures;

calculating virtual buffer fullness d j i , d j p , and d j b of each of said respective virtual buffer for said I-pictures, P-pictures, and B-pictures, wherein j is a number of a macroblock being encoded; and

updating a respective virtual buffer fullness d j i , d j p , and d j b in accordance with

d

j

i

=

d

o

i

+

B

j

-

1

-

(

T

i

·

Mact_sum

j

-

1

MACT

)

;

d

j

p

=

d

0

p

+

B

j

-

1

-

(

T

p

·

Mact_sum

j

-

1

MACT

)

;

and

d

j

b

=

d

o

b

+

B

j

-

1

-

(

T

b

·

Mact_sum

j

-

1

MACT

)

,

wherein d 0 i , d 0 p , and d j b correspond to said respective virtual buffer fullness prior to encoding of the j th macroblock,

wherein B j−1 corresponds to a number of bits used to encode macroblocks prior to encoding said j th macroblock,

wherein T i corresponds to the target bit allocation for a next picture to be encoded when the picture is the I-picture that starts a group of pictures, T p corresponds to the target bit allocation for a next picture to be encoded when the next picture is a P-picture, and T b corresponds to the target bit allocation for a next picture to be encoded when the next picture is a B-picture,

wherein the variable MACT represents the sum of the motion activity of all of the macroblocks in the pictures of the first group of pictures, and wherein the variable Mact_sum j−1 corresponds to the sum of the motion activity of the macroblocks in the picture that have been encoded.

2. A method of allocating bits to macroblocks of a picture in a video encoding process, where the bits are allocated at least in part according to a motion activity of the macroblocks, the method comprising the steps of:

a. receiving a first group of pictures, each picture of said first group of pictures being selected from a group consisting of an I-picture, a P-picture, and a B-picture, wherein the macroblocks of an I-picture are intra coded, the macroblocks of a P-picture are either intra coded or forward predictively coded, and the macroblocks of a B-picture are either intra coded, or forward predictively coded, or backward predictively coded, or interpolated;

b. retrieving a picture mode of said first group of pictures, said picture mode defining a sequence of said I-pictures, P-pictures, and B-pictures in said first group of pictures;

c. determining a number N p , N b of each of said P-pictures and B-pictures, respectively, in said first group of pictures to be encoded;

d. calculating values of complexity estimators X i , X p , X b for each of said I-pictures, P-pictures, and B-pictures, respectively, in said first group of pictures;

e. calculating a number R of bits allocated to said first group of pictures to be encoded remaining after encoding a respective I-picture, P-picture or B-picture, wherein R=R prev −S i,p,b ,

the R prev being a number of bits allocated to said first group of pictures prior to encoding of said respective I-picture, P-picture, or B-picture, and the S i,p,b being a number of bits used to encode said respective I-picture, P-picture, or B-picture, respectively; and

f. calculating an initial target number of bits T i , TP, T b for each I-picture, P-picture, and B-picture, respectively, to be encoded in said first group of pictures, wherein

T

i

=

max

{

(

R

(

1

_

+

N

p

X

p

X

i

K

p

+

N

b

X

b

X

i

K

b

)

)

,

(

bit_rate

8

·

picture_rate

)

}

T

p

=

max

{

(

R

(

N

p

+

N

p

K

p

X

b

K

b

X

p

)

)

,

(

bit_rate

8

·

picture_rate

)

}

T

b

=

max

{

R

(

N

b

+

N

p

K

b

X

p

K

p

X

b

)

,

bit_rate

8

·

picture_rate

}

wherein bit_rate corresponds to a bit rate of a data transmission channel,

wherein picture_rate corresponds to a number of pictures per second transmitted via said data transmission channel, and

wherein K p and K b are universal constants depending on quantization matrices for the P-pictures and B-pictures, respectively, to be encoded;

allocating a respective virtual buffer for each of said I-pictures, P-pictures and B-pictures in said first group of pictures;

calculating virtual buffer fullness d j i , d j p , and d j b of each of said respective virtual buffer for said I-pictures, P-pictures, and B-pictures, wherein j is a number of a macroblock being encoded; and

updating a respective virtual buffer fullness d j i , d j p ,and d j b in accordance with

d

j

i

=

d

o

i

+

B

j

-

1

-

(

α

i

T

i

·

(

j

-

1

)

MB_cnt

+

(

1

-

α

i

)

T

i

·

Mact_sum

j

-

1

MACT

)

;

d

j

p

=

d

o

p

+

B

j

-

1

-

(

α

p

T

p

·

(

j

-

1

)

MB_cnt

+

(

1

-

α

p

)

T

p

·

Mact_sum

j

-

1

MACT

)

;

and

d

j

b

=

d

o

b

+

B

j

-

1

-

(

α

b

T

b

·

(

j

-

1

)

MB_cnt

+

(

1

-

α

b

)

T

b

·

Mact_sum

j

-

1

MACT

)

;

wherein the variables d j i , d j p , and d j b represent a respective virtual buffer fullness for I-pictures, for P-pictures, and for B-pictures, respectively,

wherein the variable j represents the number of the encoded macroblock,

wherein B j−1 corresponds to the number of bits used to encode the macroblocks up to but not including the j-th macroblock,

wherein T i corresponds to the target bit allocation for the next picture to be encoded when the picture is the I-picture that starts a group of pictures, T p corresponds to the target bit allocation for a next picture to be encoded when the next picture is a P-picture, and T b corresponds to the target bit allocation for a next picture to be encoded when the next picture is a B-picture,

wherein the variable MACT represents the sum of the motion activity of all of the macroblocks in said first group of pictures,

wherein the variable Mact_sum j−1 corresponds to the sum of the motion activity of the macroblocks in the picture that have been encoded, and MB_cnt corresponds to the number of macroblocks in the picture, and

wherein a i , a p , and a b correspond to weighting factors for allocation of bits to macroblocks within I-pictures, P-pictures, and B-pictures, respectively.

3. The method as defined in claim 2 , wherein α i , α p , and α b are selected in a range from about 0 to about 1.

4. The method as defined in claim 2 , wherein α i , α p , and α b are selected in a range from about 0 to about 0.5.

5. The method as defined in claim 2 , wherein α i , α p , and α b selected from the group consisting of 0.2, 0.3, 0.4 and 0.5.

Assignments (11)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 13, 2019
From: COREL SOFTWARE LLC
To: COREL CORPORATION
Reel/Frame 048067/0586 →
CHANGE OF NAME Recorded Nov 29, 2018
From: 8324450 CANADA INC.
To: COREL SOFTWARE LLC
Reel/Frame 047675/0950 →
ENTITY DOMICILE CHANGE Recorded Dec 17, 2014
From: 8324450 CANADA INC.
To: 8324450 DELAWARE LLC
Reel/Frame 034651/0817 →
CORRECTIVE ASSIGNMENT TO CORRECT THE ASSIGNEE, AND REPLACE THE ASSIGNMENT PREVIOUSLY RECORDED ON REEL 030427 FRAME 0331. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT TO 8324450 CANADA INC. Recorded Aug 1, 2013
From: COREL CORPORATION
To: 8324450 CANADA INC.
Reel/Frame 030986/0268 →
RELEASE OF SECURITY INTEREST Recorded Jun 11, 2013
From: JPMORGAN CHASE BANK, N.A.
To: COREL CORPORATION; COREL INC.; WINZIP INTERNATIONAL LLC; WINZIP COMPUTING LP; WINZIP COMPUTING LLC; CAYMAN LTD. HOLDCO; WINZIP COMPUTING, S.L.U.; WINZIP HOLDINGS SPAIN, S.L.U.; COREL US HOLDINGS, LLC; INTERVIDEO, INC.; INTERVIDEO DIGITAL TECHNOLOGY CORP.
Reel/Frame 030591/0383 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 17, 2013
From: VECTOR CC HOLDINGS, SRL; VECTOR CC HOLDINGS III, SRL; VECTOR CC HOLDINGS IV, SRL
To: 8324450 CANADA INC.
Reel/Frame 030427/0403 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 16, 2013
From: COREL CORPORATION
To: VECTOR CC HOLDINGS, SRL; VECTOR CC HOLDINGS III, SRL; VECTOR CC HOLDINGS IV, SRL
Reel/Frame 030427/0331 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 1, 2010
From: COREL INCORPORATED
To: COREL CORPORATION
Reel/Frame 025404/0624 →
MERGER Recorded Mar 11, 2009
From: INTERVIDEO, INC.
To: COREL INC.
Reel/Frame 022380/0186 →
REAFFIRMATION AND JOINDER AGREEMENT Recorded Dec 28, 2006
From: COREL CORPORATION; COREL INC.; WINZIP INTERNATIONAL LLC; WINZIP COMPUTING LLC; WINZIP COMPUTING LP; CAYMAN LTD. HOLDCO; WINZIP COMPUTING, S.L.U.; WINZIP HOLDINGS SPAIN, S.L.U.; INTERVIDEO, INC.; INTERVIDEO DIGITAL TECHNOLOGY CORP.; COREL US HOLDINGS, LLC
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 018688/0199 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 22, 2004
From: ZHAO, LIFENG; KATSAVOUNIDIS, IOANNIS; HSU, KUO-WEI
To: INTERVIDEO, INC.
Reel/Frame 014907/0289 →