IP Library Granted Patent US 8,111,749
Granted Patent B2
US 8,111,749 · App. 12/468,374 · Granted Feb 7, 2012

Image encoding or decoding method and device, with parallelization of processing over several processors and coprocessors, corresponding computer-readable storage medium

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 8,111,749
App. No.
12/468,374
Granted
Feb 7, 2012
Kind
B2
Abstract

A method is proposed for encoding/decoding an image having rectangular blocks of pixels. The image has a height of H blocks and a width of W blocks and is divided into vertical (or horizontal) bands of blocks having the height of H (or width of W) blocks. The method includes: obtaining N processors and M coprocessors, the M coprocessors distributed over S levels, N>1, S>0 and M>S; assigning the N processors P i to N contiguous bands BP i having sizes of K i blocks, 0≦i≦N−1 and ∑ i = 0 N - 1 ⁢ ⁢ K i = W ; for every level of coprocessors s, 0≦s≦S−1, assigning M s coprocessors CP s,j to M s contiguous bands having sizes of Q s,j blocks, with: ∑ j = 0 M s - 1 ⁢ ⁢ Q s , j = W ; managing sending of first, second and third start messages, and first and second verification messages to the processors and coprocessors, according to a predetermined set of rules.

Claims (265)

1. A method for encoding or decoding an image comprising rectangular blocks of pixels, the image having a height of H blocks and a width of W blocks, the image being cut up into vertical bands of blocks having said height of H blocks, wherein said method comprises the following steps:

obtaining N processors and M coprocessors, said M coprocessors being distributed over S levels, with N>1, S>0 and M>S;

assigning said N processors P i to N contiguous bands BP i having sizes of K i blocks, with 0≦i≦N−1 and

i

=

0

N

-

1

K

i

=

W

;

for every level of coprocessors s, with 0≦s≦S−1, assigning M s coprocessors CP s,j to M s contiguous bands BCP s , having sizes of Q s,j blocks, with:

j

=

0

M

s

-

1

Q

s

,

j

=

W

;

managing message sending to the processors and coprocessors according to the following rules, BP i,r being a line of row r of band BP i , and BCP s, j, r being a line of row r of band BCP s, j , with 0≦r≦H−1:

when a processor P i , with i≧0 and i<N−1, has finished processing a line BP i,r , sending a first start message authorizing the processor P i+i to process line BP i+i, r ;

when a coprocessor CP s,j , with j≧0 and j<M s −1, has finished processing a line BCP s, j, r , sending a second start message authorizing the coprocessor CP s,j+1 to process line BCP s, j+1, r ;

when a processor P i , with i≧0 and i<N−1, must process the last block of line BP i, r , with r>0, sending a first verification message to the processor P i+1 so as to verify if the first block of line BP i+1, r−1 has already been processed;

when a coprocessor CP s, j , with j≧0 and j<M s −1, must process the last block of line BCP s, j, r , with r>0, sending a second verification message to the coprocessor CP s, j+1 so as to verify if the first block of line BCP s, j+1, r−1 has already been processed;

when the first block of line BCP s, j, r belongs to line BP i, r and the last block of line BCP s, j, r belongs to line BP i+k, r :

if k is greater than 0, or

if k is equal to 0 and the last block of line BCP s, j, r is the last block of line BP i, r ,

then when the coprocessor CP s, j has finished processing line BCP s, j, r , sending a third start message authorizing the P i to process line BP i, r .

2. A method for encoding or decoding an image comprising rectangular blocks of pixels, the image having a height of H blocks and a width of W blocks, the image being cut up into horizontal bands of blocks having said width of W blocks, wherein said method comprises the following steps:

obtaining N processors and M coprocessors, said M coprocessors being distributed over S levels, with N>1, S>0 and M>S;

assigning said N processors P i to N contiguous bands BP i having sizes of K i blocks, with 0≦i—N−1 and

j

=

0

M

s

-

1

Q

s

,

j

=

H

;

for every level of coprocessors s, with 0≦s≦S−1, assigning M s coprocessors CP s,j to M s contiguous bands BCP s,j having sizes of Q s,j blocks, with:

j

=

0

M

s

-

1

Q

s

,

j

=

H

;

managing message sending to the processors and coprocessors according to the following rules, BP i,r being a column of row r of band BP i , and BCP s, j, r being a column of row r of band BCP s, j , with 0≦r≦W−1:

when a processor P i , with i≧0 and i<N−1, has finished processing a column BP i,r , sending a first start message authorizing the processor P i+1 to process column BP i+i, r ;

when a coprocessor CP s,j , with j≧0 and j<M s −1, has finished processing a column BCP s, j, r , sending a second start message authorizing the CP s, j+1 to process column BCP s, j+1, r ;

when a processor P i , with i≧0 and i<N−1, must process the last block of column BP i, r , with r>0, sending a first verification message to the processor P i+1 so as to verify if the first block of column BP i+1, r−1 has already been processed;

when a coprocessor CP s, j , with j≧0 and j<M s −1, must process the last block of column BCP s, j, r , with r>0, sending a second verification message to the coprocessor CP s, j+1 so as to verify if the first block of column BCP s, j+1, r−1 has already been processed;

when the first block of column BCP s, j r belongs to column BP i, r and the last block of column BCP s, j, r belongs to column BP i+k, r :

if k is greater than 0, or

if k is equal to 0 and the last block of column BCP s, j, r is the last block of column BP i, r ,

then when the coprocessor CP s, j has finished processing column BCP s, j, r , sending a third start message authorizing the P i to process column BP i, r .

3. A method as claimed in claim 1 , wherein the encoding and decoding is compliant with a standard belonging to the group comprising: H.263, H.263+, H264 and MPEG-4 Video.

4. A non-transitory computer-readable storage medium storing a computer program comprising a set of instructions executable by a computer in order to implement a method for encoding or decoding an image comprising rectangular blocks of pixels, the image having a height of H blocks and a width of W blocks, the image being cut up into vertical bands of blocks having said height of H blocks, wherein said method comprises the following steps:

obtaining N processors and M coprocessors, said M coprocessors being distributed over S levels, with N>1, S>0 and M>S;

assigning said N processors P i to N contiguous bands BP i having sizes of K i blocks, with 0≦i≦N−1 and

i

=

0

N

-

1

K

i

=

W

;

for every level of coprocessors s, with 0≦s≦S−1, assigning M s coprocessors CP s,j to M s contiguous bands BCP s,j having sizes of Q s,j blocks, with:

j

=

0

M

s

-

1

Q

s

,

j

=

W

;

managing message sending to the processors and coprocessors according to the following rules, BP i,r being a line of row r of band BP i , and BCP s, j, r being a line of row r of band BCP s, j , with 0≦r≦H−1:

when a processor P i , with i≧0 and i<N−1, has finished processing a line BP i,r , sending a first start message authorizing the processor P i+1 to process line BP i+1, r ;

when a coprocessor CP s,j , with j≧0 and j<M s −1, has finished processing a line BCP s, j, r , sending a second start message authorizing the coprocessor CP s, j+1 to process line BCP s, j+1, r ;

when a processor P i , with i≧0 and i<N−1, must process the last block of line BP i, r , with r>0, sending a first verification message to the processor P i+1 so as to verify if the first block of line BP i+1, r−1 has already been processed;

when a coprocessor CP s, j , with j≧0 and j<M s −1, must process the last block of line BCP s, j, r , with r>0, sending a second verification message to the coprocessor CP s, j+1 so as to verify if the first block of line BCP s, j+1, r−1 has already been processed;

when the first block of line BCP s, j, r belongs to line BP i, r and the last block of line BCP s, j, r belongs to line BP i+k, r :

if k is greater than 0, or

if k is equal to 0 and the last block of line BCP s, j, r is the last block of line BP i,r ,

then when the coprocessor CP s, j has finished processing line BCP s, j, r , sending a third start message authorizing the P i to process line BP i, r .

5. A non-transitory computer-readable storage medium storing a computer program comprising a set of instructions executable by a computer in order to implement a method for encoding or decoding an image comprising rectangular blocks of pixels, the image having a height of H blocks and a width of W blocks, the image being cut up into horizontal bands of blocks having said width of W blocks, wherein said method comprises the following steps:

obtaining N processors and M coprocessors, said M coprocessors being distributed over S levels, with N>1, S>0 and M>S;

assigning said N processors P i to N contiguous bands BP i having sizes of K i blocks, with 01≦i≦N−1 and

j

=

0

M

s

-

1

Q

s

,

j

=

H

;

for every level of coprocessors s, with 0≦s≦S−1, assigning M s coprocessors CP s,j to M s contiguous bands BCP s , having sizes of Q s,j blocks, with:

j

=

0

M

s

-

1

Q

s

,

j

=

H

;

managing message sending to the processors and coprocessors according to the following rules, BP i,r being a column of row r of band BP i , and BCP s, j, r being a column of row r of band BCP s, j , with 0≦r≦W−1:

when a processor P i , with i≧0 and i<N−1, has finished processing a column BP i,r , sending a first start message authorizing the processor P i+1 to process column BP i+1, r ;

when a coprocessor CP s,j , with j≧0 and j<M s −1, has finished processing a column BCP s, j, r , sending a second start message authorizing the CP s, j+1 to process column BCP s, j+1, r ;

when a processor P i , with i≧0 and i<N−1, must process the last block of column BP i, r , with r>0, sending a first verification message to the processor P i+1 so as to verify if the first block of column BP i+1, r−1 has already been processed;

when a coprocessor CP s, j , with j≧0 and j<M s −1, must process the last block of column BCP s, j, r , with r>0, sending a second verification message to the coprocessor CP s, j+1 so as to verify if the first block of column BCP s, j+1, r−1 has already been processed;

when the first block of column BCP s, j, r belongs to column BP i, r and the last block of column BCP s, j, r belongs to column BP i+k, r :

if k is greater than 0, or

if k is equal to 0 and the last block of column BCP s, j, r is the last block of column BP i, r ,

then when the coprocessor CP s, j has finished processing column BCP s, j, r , sending a third start message authorizing the P i to process column BP i, r .

6. An image encoding/decoding device, the image comprising rectangular blocks of pixels, the image having a height of H blocks and a width of W blocks, the image being cut up into vertical bands of blocks, wherein said device comprises:

N processors and M coprocessors, said M coprocessors being distributed over S levels, with N>1, S>0 and M>S;

means for assigning said N processors P i to N contiguous bands BP i having sizes of K i blocks, with 0≦i≦N−1 and

i

=

0

N

-

1

K

i

=

W

;

for every level of coprocessors s, with 0≦s≦S−1, means for assigning M s coprocessors CP s,j to M s contiguous bands BCP s,j having sizes of Q s,j blocks, with:

j

=

0

M

s

-

1

Q

s

,

j

=

W

;

means for managing message sending to the processors and coprocessors according to the following rules, BP i,r being a line of row r of band BP i , and BCP s, j, r being a line of row r of band BCP s, j , with 0≦r≦H−1:

when a processor P i , with i≧0 and i<N−1, has finished processing a line BP i,r , sending a first start message authorizing the processor P i+1 to process line BP i+1, r ;

when a coprocessor CP s, j , with j≧0 and j<M s −1, has finished processing a line BCP s, j, r , sending a second start message authorizing the coprocessor CP s, j+1 to process line BCP s, j+1, r ;

when a processor P i , with i≧0 and i<N−1, must process the last block of line BP i, r , with r>0, sending a first verification message to the processor P i+1 so as to verify if the first block of line BP i+1, r−1 has already been processed;

when a coprocessor CP s, j , with j≧0 and j<M s −1, must process the last block of line BCP s, j, r , with r>0, sending a second verification message to the coprocessor CP s, j+1 so as to verify if the first block of line BCP s, j+1, r−1 has already been processed;

when the first block of line BCP s, j, r belongs to line BP i, r and the last block of line BCP s, j, r belongs to line BP i+k, r :

if k is greater than 0, or

if k is equal to 0 and the last block of line BCP s, j, r is the last block of line BP i, r ,

then when the coprocessor CP s, j has finished processing line BCP s, j, r , sending a third start message authorizing the P i to process line BP i, r .

7. An image encoding or decoding device, the image comprising rectangular blocks of pixels, the image having a height of H blocks and a width of W blocks, the image being cut up into horizontal bands of blocks having said width of W blocks, wherein said device comprises:

N processors and M coprocessors, said M coprocessors being distributed over S levels, with N>1, S>0 and M>S;

means for assigning said N processors P i to N contiguous bands BP i having sizes of K i blocks, with 0≦i≦N−1 and

j

=

0

M

s

-

1

Q

s

,

j

=

H

;

for every level of coprocessors s, with 0≦s≦S−1, means for assigning M s coprocessors CP s,j to M s contiguous bands BCP s,j having sizes of Q s,j blocks, with:

j

=

0

M

s

-

1

Q

s

,

j

=

H

;

means for managing message sending to the processors and coprocessors according to the following rules, BP i,r being a column of row r of band BP i , and BCP s, j, r being a column of row r of band BCP s, j , with 0≦r≦W−1:

when a processor P i , with i≧0 and i<N−1, has finished processing a column BP i,r , sending a first start message authorizing the processor P i+1 to process column BP i+1, r ;

when a coprocessor CP s,j , with j≧0 and j<M s −1, has finished processing a column BCP s, j, r , sending a second start message authorizing the coprocessor CP s, j+1 to process column BCP s, j+1, r ;

when a processor P i , with i≧0 and i<N−1, must process the last block of column BP i, r , with r>0, sending a first verification message to the processor P i+1 so as to verify if the first block of column BP i+1, r−1 has already been processed;

when a coprocessor CP s, j , with j≧0 and j<M s −1, must process the last block of column BCP s, j, r , with r>0, sending a second verification message to the coprocessor CP s, j+1 so as to verify if the first block of column BCP s, j+1, r−1 has already been processed;

when the first block of column BCP s, j, r belongs to column BP i, r and the last block of column BCP s, j, r belongs to column BP i+k, r :

if k is greater than 0, or

if k is equal to 0 and the last block of column BCP s, j, r is the last block of column BP i, r ,

then when the coprocessor CP s, j has finished processing column BCP s, j, r , sending a third start message authorizing the P i to process column BP i, r .

8. A device as claimed in claim 6 , wherein the encoding or decoding is compliant with a standard belonging to the group comprising: H.263, H.263+, H264 and MPEG-4 Video.

9. A device as claimed in claim 7 , wherein the encoding or decoding is compliant with a standard belonging to the group comprising: H.263, H.263+, H264 and MPEG-4 Video.

10. A method as claimed in claim 2 , wherein the encoding and decoding is compliant with a standard belonging to the group comprising: H.263, H.263+, H264 and MPEG-4 Video.

Assignments (10)
RELEASE OF SECURITY INTEREST Recorded Oct 14, 2025
From: CITIBANK, N.A., AS AGENT
To: MK SYSTEMS USA INC.
Reel/Frame 073070/0114 →
SECURITY INTEREST Recorded Oct 10, 2025
From: MK SYSTEMS USA INC.
To: WELLS FARGO BANK, NATIONAL ASSOCIATION, AS AGENT
Reel/Frame 073062/0487 →
SECURITY INTEREST Recorded May 20, 2022
From: MK SYSTEMS USA INC.
To: CITIBANK, N.A., AS AGENT
Reel/Frame 060134/0068 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 15, 2020
From: MK SYSTEMS US HOLDCO INC.
To: MK SYSTEMS US SUB-HOLDCO INC.
Reel/Frame 053774/0377 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 15, 2020
From: MK SYSTEMS US SUB-HOLDCO INC.
To: MK SYSTEMS USA INC.
Reel/Frame 053774/0639 →
MERGER AND CHANGE OF NAME Recorded Sep 15, 2020
From: ERICSSON IT SOLUTIONS & SERVICES SAS; ERICSSON FRANCE
To: ERICSSON FRANCE
Reel/Frame 053780/0945 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 15, 2020
From: LEONE MEDIA INC.
To: MK SYSTEMS US HOLDCO INC.
Reel/Frame 053772/0734 →
MERGER AND CHANGE OF NAME Recorded Sep 15, 2020
From: ENVIVIO FRANCE; ERICSSON IT SOLUTIONS & SERVICES SAS
To: ERICSSON IT SOLUTIONS & SERVICES SAS
Reel/Frame 053771/0453 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 15, 2020
From: ERICSSON FRANCE
To: LEONE MEDIA INC.
Reel/Frame 053772/0363 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 30, 2009
From: MULLER, MATHIEU; GUIONNET, THOMAS; BURIAU, SYLVAIN; LE GUERROUE, MICKAEL
To: ENVIVIO FRANCE
Reel/Frame 023581/0054 →