IP Library Granted Patent US 10,136,131
Granted Patent B2
US 10,136,131 · App. 15/254,565 · Granted Nov 20, 2018

Video coding apparatus and method

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 10,136,131
App. No.
15/254,565
Granted
Nov 20, 2018
Kind
B2
Abstract

By one approach a control circuit receives video information to be encoded, uses a particular rounding control value when processing the video information, and detects when color banding occurs when processing the video information using the particular rounding control value and responsively reprocesses the video information using a different rounding control value. By another approach, the control circuit has a plurality of different intra prediction types, including a planar intra prediction type, available to use when encoding the video information and wherein the control circuit determines when the planar intra prediction type can be employed without testing use of all of the plurality of different intra prediction types. By yet another approach, the control circuit selects block coding parameters, at least in part, by comparing corresponding mode costs, detects a smooth area in the video information, and then modifies mode costs as a function of having detected the smooth area.

Claims (1823)

1. An apparatus comprising:

a block coding control circuit configured to:

receive video information to be encoded;

use a particular rounding control value when processing the video information;

detect when color banding occurs when processing the video information using the particular rounding control value and responsively reprocess the video information using a different rounding control value;

wherein the block coding control circuit includes a texture processor configured to conduct:

texture block regular processing to calculate reconstructed pixels and quantized texture coefficients wherein a rounding parameter R value for a corresponding quantization procedure is chosen based on rate-distortion optimization;

repeated texture block regular processing to calculate the reconstructed pixels and quantized texture coefficients with a rounding parameter R equal to a default value when color banding artifacts are detected.

2. The apparatus of claim 1 wherein the block coding control circuit is configured to process a two-dimensional texture block of the size N×N with block pixels denoted as P(j,k) which classifies the block as a block with potential color banding when the following conditions are satisfied simultaneously:

AvgS≥C 1

AvgS≤C 2

N 2 <C 3

(F(AvgS)<C 4 ) OR (A≠0) OR (AvgS>C 5 )

A<F(AvgS)

V<G(A)

wherein

V

=

N

1

·

D

2

X

-

DX

2

N

1

2

-

N

1

+

N

1

·

D

2

Y

-

DY

2

N

1

2

-

N

1

,

A

=

DX

2

+

DY

2

N

1

2

,

AvgS

=

k

=

m

N

-

1

-

m

j

=

m

N

-

1

-

m

P

(

j

,

k

)

(

N

-

2

m

)

2

,

DX

=

(

j

,

k

)

S

1

(

P

(

j

+

1

,

k

)

-

P

(

j

,

k

)

)

,

DY

=

(

j

,

k

)

S

1

(

P

(

j

,

k

+

1

)

-

P

(

j

,

k

)

)

,

D

2

X

=

(

j

,

k

)

S

1

(

P

(

j

+

1

,

k

)

-

P

(

j

,

k

)

)

2

,

D

2

Y

=

(

j

,

k

)

S

1

(

P

(

j

,

k

+

1

)

-

P

(

j

,

k

)

)

2

,

S 1 is the set of index pairs (j,k) for which |dX(j,k)|≤1 and |dY(j,k)|≤1 for j,k=0 . . . N

S 2 is the set of index pairs (j,k) for which |dX(j,k)|>1 or |dY(j,k)|>1 for j,k=0 . . . N

N 1 is the number of elements in S 1

N 2 is the number of elements in S 2

where pre-defined constants m, C 1 , C 2 , C 3 , C 4 , C 5 and functions F(AvgS) and G(AvgS) are the parameters employed by the block coding control circuit when processing the two-dimensional texture block.

3. The apparatus of claim 1 wherein the block coding control circuit is configured to transform coefficients quantization according to the formula

C

quantized

=

C

init

*

M

+

R

D

in which the division operation is done with rounding to the nearest smaller absolute value integer, C init is the initial coefficient value, M, D are external constants of quantization, and wherein the default value for the rounding parameter R equals

D

2

.

4. The apparatus of claim 1 wherein the block coding control circuit has a plurality of different intra prediction types, including a planar intra prediction type, available to use when encoding the video information and wherein the block coding control circuit is further configured to determine when the planar intra prediction type can be employed without testing use of all of the plurality of different intra prediction types.

5. The apparatus of claim 4 wherein the block coding control circuit is configured to determine when the planar intra prediction type can be employed without testing use of all of the plurality of different intra prediction types by, at least in part:

calculating for a two-dimensional texture block of the size N×N with block pixels denoted as P(j,k) the following characteristics:

DX

(

x

,

y

)

=

k

=

0

3

j

=

0

3

P

(

4

*

(

x

+

1

)

+

j

,

4

*

y

+

k

)

-

k

=

0

3

j

=

0

3

P

(

4

*

x

+

j

,

4

*

y

+

k

)

16

,

DY

(

x

,

y

)

=

k

=

0

3

j

=

0

3

P

(

4

*

x

+

j

,

(

4

*

y

+

1

)

+

k

)

-

k

=

0

3

j

=

0

3

P

(

4

*

x

+

j

,

k

)

16

DXX

=

k

=

0

N

-

1

j

=

0

N

-

1

(

P

(

j

+

1

,

k

)

-

P

(

j

-

1

,

k

)

)

2

DYY

=

k

=

0

N

-

1

j

=

0

N

-

1

(

P

(

j

,

k

+

1

)

-

P

(

j

,

k

-

1

)

)

2

DXY

=

k

=

0

N

-

1

j

=

0

N

-

1

(

P

(

j

+

1

,

k

)

-

P

(

j

-

1

,

k

)

)

*

(

P

(

j

,

k

+

1

)

-

P

(

j

,

k

-

1

)

)

Cmpl

=

y

=

0

N

4

-

1

x

=

0

N

4

-

1

DX

(

x

,

y

)

2

+

DY

(

x

,

y

)

2

V

0

=

round

(

20

*

DXX

-

DYY

(

DXX

+

DYY

)

)

V

1

=

round

(

40

*

DXY

(

DXX

+

DYY

)

)

AngleStrength

=

V

0

2

+

V

1

2

and

to halt intra prediction type testing when the following condition is satisfied:

AngleStrength< T ( Cmpl,N );

wherein threshold value T(Cmpl,N) is an internal parameter that depends only on block size N and a calculated value of Cmpl.

6. The apparatus of claim 5 wherein the block coding control circuit is further configured to store internal data arrays comprising:

Scale={84, 84, 84, 84, 14, 3, 3}, size=7

CL={0,1,1,1,1,1,1,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,4,4, 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5, 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, 5,5,5,5,5,5,5,5,5,5,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6, 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6, 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,7,7, 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7, 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7, 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7, 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7, 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7}, size=383

B={−1,0,6,12,30,61,117,213,382,677,1194,2099,3682,6453,11302,19788,34638}, size=17

T8={16,19,11,10,6,7,8,7,9,10,5,9,11,14,13,12,12}, size=17

T16={19,19,19,9,12,9,10,9,9,8,9,8,7,9,10,13,9}, size=17

T32={19,19,19,19,19,19,6,6,7,5,4,10,10,9,7,12,14}, size=17

and to calculate T(Cmpl,N) as

T

(

Cmpl

,

N

)

=

{

TN

[

CL

[

CmpS

]

]

,

CmpS

<

383

TN

[

d

]

,

CmpS

383

.

wherein TN is an array of size 17 which is T8 if N≤8, to T16 if N=16 and to T32 otherwise;

calculate CmpS as

CmpS =round( Cmpl *Scale[round(log 2 N )]/14);

index d defined to be 16 if CmpS>B[16] and to satisfy the condition B[d]≤CmpS<B[d+1] otherwise.

7. The apparatus of claim 1 wherein the block coding control circuit is further configured to:

select block coding parameters, at least in part, by comparing corresponding mode costs;

detect a smooth area in the video information;

modify the mode costs as a function of having detected the smooth area.

8. The apparatus of claim 7 wherein the block coding control circuit is configured to, upon detecting the smooth area:

exclude directional intra prediction block types and choose a block type that minimizes C=α*(R+λ*D) where the multiplier α is defined as

α

=

{

1

for

bi

-

directional

block

type

1.5

for

inter

unidirectional

block

type

2

for

intra

block

type

.

9. The apparatus of claim 8 wherein the block coding control circuit is configured to process two-dimensional texture block of the size N×N with block pixels denoted as P(j,k) and is further configured to classify a block area as smooth when the following inequalities hold:

CH[j]≤T[j],

CV[j]≤T[j],

wherein j=0 . . . 6, the values of T[j] are internal parameters employed by the block coding control circuit and the arrays CH, CV are derived by calculating the values

DX

(

x

,

y

)

=

k

=

0

3

j

=

0

3

P

(

4

*

(

x

+

1

)

+

j

,

4

*

y

+

k

)

-

k

=

0

3

j

=

0

3

P

(

4

*

x

+

j

,

4

*

y

+

k

)

16

,

DY

(

x

,

y

)

=

k

=

0

3

j

=

0

3

P

(

4

*

x

+

j

,

(

4

*

y

+

1

)

+

k

)

-

k

=

0

3

j

=

0

3

P

(

4

*

x

+

j

,

k

)

16

for all

x

[

0

,

N

4

-

2

]

,

y

[

0

,

N

4

-

1

]

,

constructing histograms HistH for the calculated values of |DX| clipped to the interval [0,7], HistV for the calculated values of |DY| clipped to the interval [0,7] and calculating the elements of the cumulated histograms CH, CV as

CH[ 0]=Hist H[ 7]*2 ,CH[k]=CH[k− 1]+2*Hist H[ 7 −k],k= 0 . . . 6,

CV[ 0]=Hist V[ 7 ],CV[k]=CV[k− 1]+2*Hist V[ 7 −k],k= 0 . . . 6.

10. A method comprising:

by a block coding control circuit:

receiving video information to be encoded;

using a particular rounding control value when processing the video information;

detecting when color banding occurs when processing the video information using the particular rounding control value and responsively reprocessing the video information using a different rounding control value;

performing texture block regular processing to calculate reconstructed pixels and quantized texture coefficients wherein a rounding parameter R value for a corresponding quantization procedure is chosen based on rate-distortion optimization; and

performing repeated texture block regular processing to calculate the reconstructed pixels and quantized texture coefficients with a rounding parameter R equal to a default value when color banding artifacts are detected.

11. The method of claim 10 further comprising:

processing a two-dimensional texture block of the size N×N with block pixels denoted as P(j,k) which classifies the block as a block with potential color banding when the following conditions are satisfied simultaneously:

AvgS≥C 1

AvgS≤C 2

N 2 <C 3

(F(AvgS)<C 4 ) OR (A≠0) OR (AvgS>C 5 )

A<F(AvgS)

V<G(A)

wherein

V

=

N

1

·

D

2

X

-

DX

3

N

1

2

-

N

1

+

N

1

·

D

2

Y

-

DY

3

N

1

2

-

N

1

,

A

=

DX

3

+

DY

3

N

1

3

,

AvgS

=

k

=

m

N

-

1

-

m

j

=

m

N

-

1

-

m

P

(

j

,

k

)

(

N

-

2

m

)

2

,

DX

=

(

j

,

k

)

S

1

(

P

(

j

+

1

,

k

)

-

P

(

j

,

k

)

)

,

DY

=

(

j

,

k

)

S

1

(

P

(

j

,

k

+

1

)

-

P

(

j

,

k

)

)

,

D

2

X

=

(

j

,

k

)

S

1

(

P

(

j

+

1

,

k

)

-

P

(

j

,

k

)

)

2

,

D

2

Y

=

(

j

,

k

)

S

1

(

P

(

j

,

k

+

1

)

-

P

(

j

,

k

)

)

2

,

S 1 is the set of index pairs (j,k) for which |dX(j,k)|≤1 and |dY(j,k)|≤1 for j,k=0 . . . N

S 2 is the set of index pairs (j,k) for which |dX(j,k)|>1 or |dY(j,k)|>1 for j,k=0 . . . N

N 1 is the number of elements in S 1

N 2 is the number of elements in S 2

where pre-defined constants m, C 1 , C 2 , C 3 , C 4 , C 5 and functions F(AvgS) and G(AvgS) are the parameters employed by the block coding control circuit when processing the two-dimensional texture block.

12. The method of claim 10 further comprising:

transforming coefficients quantization according to the formula

C

quantized

=

C

init

*

M

+

R

D

in which the division operation is done with rounding to the nearest smaller absolute value integer, C init is the initial coefficient value, M, D are external constants of quantization, and wherein the default value for the rounding parameter R equals

D

2

.

13. The method of claim 10 wherein the block coding control circuit has a plurality of different intra prediction types, including a planar intra prediction type, available to use when encoding the video information and wherein the method further comprises:

determining when the planar intra prediction type can be employed without testing use of all of the plurality of different intra prediction types.

14. The method of claim 13 wherein determining when the planar intra prediction type can be employed without testing use of all of the plurality of different intra prediction types comprises determining when the planar intra prediction type can be employed without testing use of all of the plurality of different intra prediction types by, at least in part:

calculating for a two-dimensional texture block of the size N×N with block pixels denoted as P(j,k) the following characteristics:

DX

(

x

,

y

)

=

k

=

0

3

j

=

0

3

P

(

4

*

(

x

+

1

)

+

j

,

4

*

y

+

k

)

-

k

=

0

3

j

=

0

3

P

(

4

*

x

+

j

,

4

*

y

+

k

)

16

,

DY

(

x

,

y

)

=

k

=

0

3

j

=

0

3

P

(

4

*

x

+

j

,

(

4

*

y

+

1

)

+

k

)

-

k

=

0

3

j

=

0

3

P

(

4

*

x

+

j

,

k

)

16

DXX

=

k

=

0

N

-

1

j

=

0

N

-

1

(

P

(

j

+

1

,

k

)

-

P

(

j

-

1

,

k

)

)

2

DYY

=

k

=

0

N

-

1

j

=

0

N

-

1

(

P

(

j

,

k

+

1

)

-

P

(

j

,

k

-

1

)

)

2

DXY

=

k

=

0

N

-

1

j

=

0

N

-

1

(

P

(

j

+

1

,

k

)

-

P

(

j

-

1

,

k

)

)

*

(

P

(

j

,

k

+

1

)

-

P

(

j

,

k

-

1

)

)

Cmpl

=

y

=

0

N

4

-

1

x

=

0

N

4

-

1

DX

(

x

,

y

)

2

+

DY

(

x

,

y

)

2

V

0

=

round

(

20

*

DXX

-

DYY

(

DXX

+

DYY

)

)

V

1

=

round

(

40

*

DXY

(

DXX

+

DYY

)

)

AngleStrength

=

V

0

2

+

V

1

2

and to halt intra prediction type testing when the following condition is satisfied:

AngleStength< T ( Cmpl,N );

wherein threshold value T(Cmpl,N) is an internal parameter that depends only on block size N and a calculated value of Cmpl.

15. The method of claim 14 further comprising:

storing internal data arrays comprising:

Scale={84, 84, 84, 84, 14, 3, 3}, size=7

CL={0,1,1,1,1,1,1,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,4,4, 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5, 5,5,5, 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, 5,5,5, 5,5,5,5,5,5,5,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6, 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6, 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,7,7, 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7, 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7, 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7, 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7, 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7}, size=383

B={−1,0,6,12,30,61,117,213,382,677,1194,2099,3682,6453,11302,19788,34638}, size=17

T8={16,19,11,10,6,7,8,7,9,10,5,9,11,14,13,12,12}, size=17

T16={19,19,19,9,12,9,10,9,9,8,9,8,7,9,10,13,9}, size=17

T32={19,19,19,19,19,19,6,6,7,5,4,10,10,9,7,12,14}, size=17

and calculating T(Cmpl,N) as

T

(

Cmpl

,

N

)

=

{

TN

[

CL

[

CmpS

]

]

,

CmpS

<

383

TN

[

d

]

,

CmpS

383

.

wherein TN is an array of size 17 which is T8 if N≤8, to T16 if N=16 and to T32 otherwise;

calculate CmpS as

CmpS =round( Cmpl *Scale[round(log 2 N )]/14);

index d defined to be 16 if CmpS>B[16] and to satisfy the condition B[d]≤CmpS<B[d+1] otherwise.

16. The method of claim 10 further comprising:

selecting block coding parameters, at least in part, by comparing corresponding mode costs;

detecting a smooth area in the video information; and

modifying the mode costs as a function of having detected the smooth area.

17. The method of claim 16 further comprising:

upon detecting the smooth area:

excluding directional intra prediction block types and choose a block type that minimizes C=α*(R+λ*D) where the multiplier α is defined as

α

=

{

1

for

bi

-

directional

block

type

1.5

for

inter

unidirectional

block

type

2

for

intra

block

type

.

18. The method of claim 17 further comprising:

processing two-dimensional texture blocks of the size N×N with block pixels denoted as P(j,k); and

classifying a block area as smooth when the following inequalities hold:

CH[j]≤T[j],

CV[j]≤T[j],

wherein j=0 . . . 6, the values of T[j] are internal parameters employed by the block coding control circuit and the arrays CH, CV are derived by calculating the values

DX

(

x

,

y

)

=

k

=

0

3

j

=

0

3

P

(

4

*

(

x

+

1

)

+

j

,

4

*

y

+

k

)

-

k

=

0

3

j

=

0

3

P

(

4

*

x

+

j

,

4

*

y

+

k

)

16

,

DY

(

x

,

y

)

=

k

=

0

3

j

=

0

3

P

(

4

*

x

+

j

,

(

4

*

y

+

1

)

+

k

)

-

k

=

0

3

j

=

0

3

P

(

4

*

x

+

j

,

k

)

16

for

all

x

[

0

,

N

4

-

2

]

,

y

[

0

,

N

4

-

1

]

,

constructing histograms HistH for the calculated values of |DX| clipped to the interval [0,7], HistV for the calculated values of |DY| clipped to the interval [0,7]; and

calculating the elements of the cumulated histograms CH, CV as

CH[ 0]=Hist H[ 7]*2 ,CH[k]=CH[k− 1]+2*Hist H[ 7 −k],k= 0 . . . 6,

CV[ 0]=Hist V[ 7]*2 ,CV[k]=CV[k− 1]+2*Hist V[ 7 −k],k= 0 . . . 6.

Assignments (6)
LIEN Recorded Feb 18, 2025
From: SILICON VALLEY BANK
To: BEAMR IMAGING LTD.; BEAMR INC.
Reel/Frame 070244/0396 →
SECURITY INTEREST Recorded Feb 25, 2022
From: BEAMR IMAGING LTD.
To: SILICON VALLEY BANK
Reel/Frame 059097/0195 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 2, 2016
From: ZHELUDKOV, ALEXANDER
To: VANGUARD SOFTWARE SOLUTIONS, INC.
Reel/Frame 039619/0734 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 2, 2016
From: ZHELUDKOV, ALEXANDER
To: BEAMR IMAGING LTD.
Reel/Frame 039619/0737 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 2, 2016
From: VANGUARD SOFTWARE SOLUTIONS, INC.
To: VANGUARD VIDEO LLC
Reel/Frame 039619/0745 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 2, 2016
From: VANGUARD VIDEO LLC
To: BEAMR IMAGING LTD.
Reel/Frame 039619/0767 →
Cited By (3)
US 12,238,273 US 12,339,902 US 12,341,986