IP Library Granted Patent US 8,503,537
Granted Patent B2
US 8,503,537 · App. 12/499,601 · Granted Aug 6, 2013

System, method and computer readable medium for decoding block wise coded video

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,503,537
App. No.
12/499,601
Granted
Aug 6, 2013
Kind
B2
Abstract

An apparatus and associated method are provided for decoding of block wise coded video pictures. Implementing a de-blocking filter algorithm or the like in a single instruction multiple data (SIMD) environment, especially for processors with 128-bit vector registers. Parallelism between the SIMD and the register size fits the macroblock size disclosed in the H.264 and MPEG-4 standards is exploited by using transpositions and transformations of luminance and chrominance macroblocks in vertical de-blocking filter operations.

Claims (49)

1. A method for performing a de-blocking filter operation on boundary neighboring pixels between macroblocks in a video coding or decoding process executed in a 16-bytes SIMD register processor, comprising:

loading a first set of data, from an electronic memory connected to said processor, constituting an entirety of one luminance macroblock or an entirety of two chrominance macroblocks from a RAM to a group of 16 16-bytes horizontal SIMD register variables by inserting each row of the macroblock(s) in the respective register variables;

executing a transpose instruction on all of said first set of data in said group of 16 16-bytes horizontal SIMD register variables, creating a second set of data which is stored in said group of 16 16-bytes horizontal SIMD register variables;

performing a horizontal de-blocking filter operation, to create a third set of data, on all of said second set of data in said group of 16 16-bytes horizontal SIMD register variables and a corresponding set of boundary pixel data of a first neighboring macroblock;

executing a transpose instruction on all of said third set of data in said group of 16 16-bytes horizontal SIMD register variables, creating a fourth set of data which is stored in said group of 16 16-bytes horizontal SIMD register variables;

performing a vertical de-blocking filter operation, to create a fifth set of data, on all of said fourth set of data in said group of 16 16-bytes horizontal SIMD register variables and a corresponding set of boundary pixels data of a second neighboring macroblock; and

storing said fifth set of data to said electronic memory.

2. The method according to claim 1 , wherein the horizontal and vertical de-blocking filter operations are de-blocking filter operations according to H.264 or MPEG-4 standard.

3. The method according to claim 1 , further comprising:

transforming and storing a first subset of said fifth set of data corresponding to boundary pixel data relative to a first adjacent macroblock on the right hand side of said one luminance macroblock or two chrominance macroblocks.

4. The method according to claim 3 , further comprising:

transforming and storing a second subset of said fifth set of data corresponding to boundary pixel data relative to a second adjacent macroblock below said one luminance macroblock or two chrominance macroblocks.

5. The method according to claim 1 , wherein said storing includes storing said fifth set of data in said electronic memory so as to replace said first set of data.

6. The method according to claim 1 , wherein:

the performing the horizontal de-blocking filter operation on all of said second set of data is performed in a single step; and

the performing the vertical de-blocking filter operation on all of said fourth set of data is performed in a single step.

7. A system for performing a de-blocking filter operation on boundary neighboring pixels between macroblocks in a video coding or decoding process executed in a 16-bytes SIMD register processor, comprising:

means for loading a first set of data constituting an entirety of one luminance macroblock or an entirety of two chrominance macroblocks from a random access memory (RAM) to a group of 16 16-bytes horizontal SIMD register variables by inserting each row of the block(s) in the respective register variables;

means for executing a transpose instruction on all of said first set of data in said group of 16 16-bytes horizontal SIMD register variables, creating a second set of data which is stored in said group of 16 16-bytes horizontal SIMD register variables;

means for performing a horizontal de-blocking filter operation, to create a third set of data, on all of said second set of data in said group of 16 16-bytes horizontal SIMD register variables and a corresponding set of boundary pixel data of a first neighboring macroblock;

means for executing a transpose instruction on all of said third set of data in said group of 16 16-bytes horizontal SIMD register variables, creating a fourth set of data which is stored in said group of 16 16-bytes horizontal SIMD register variables;

means for performing a vertical de-blocking filter operation, to create a fifth set of data, on all of said fourth set of data in said group of 16 16-bytes horizontal SIMD register variables and a corresponding set of boundary pixels data of a second neighboring macroblock; and

means for storing said fifth set of data to said RAM.

8. The system according to claim 7 , wherein the horizontal and vertical de-blocking filter operations are de-blocking filter operations according to H.264 or MPEG-4 standard.

9. The system according to claim 7 , further comprising:

means for transforming and storing a first subset of said fifth set of data corresponding to boundary pixel data relative to a first adjacent macroblock on the right hand side of said one luminance macroblock or two chrominance macroblocks.

10. The system according to claim 9 , further comprising:

means for transforming and storing a second subset of said fifth set of data corresponding to boundary pixel data relative to a second adjacent macroblock below said one luminance macroblock or two chrominance macroblocks.

11. The system according to claim 7 , further comprising:

means for storing said fifth set of data in the RAM by replacing said first set of data with said fifth set of data.

12. The system according to claim 7 , wherein:

the means for performing the horizontal de-blocking filter operation performs the horizontal de-blocking filter operation on all of said second set of data in a single step; and

the means for performing the vertical de-blocking filter operation performs the vertical de-blocking filter operation on all of said fourth set of data in a single step.

13. A non-transitory computer readable medium including computer executable instructions, wherein the instructions, when executed by a 16-bytes SIMD register processor, cause said processor to implement a method of performing a de-blocking filter operation on boundary neighboring pixels between macroblocks in a video coding or decoding process, the method comprising:

loading a first set of data, from an electronic memory connected to said processor, constituting an entirety of one luminance macroblock or an entirety of two chrominance macroblocks from a RAM to a group of 16 16-bytes horizontal SIMD register variables by inserting each row of the macroblock(s) in the respective register variables;

executing a transpose instruction on all of said first set of data in said group of 16 16-bytes horizontal SIMD register variables, creating a second set of data which is stored in said group of 16 16-bytes horizontal SIMD register variables;

performing a horizontal de-blocking filter operation, to create a third set of data, on all of said second set of data in said group of 16 16-bytes horizontal SIMD register variables and a corresponding set boundary pixel data of a first neighboring macroblock;

executing a transpose instruction on all of said third set of data in said group of 16 16-bytes horizontal SIMD register variables, creating a fourth set of data which is stored in said group of 16 16-bytes horizontal SIMD register variables;

performing a vertical de-blocking filter operation, to create a fifth set of data, on all of said fourth set of data in said group of 16 16-bytes horizontal SIMD register variables and a corresponding set of boundary pixels data of a second neighboring macroblock; and

storing said fifth set of data to said electronic memory.

14. The computer readable medium according to claim 13 , wherein the horizontal and vertical de-blocking filter operations are de-blocking filter operations according to H.264 or MPEG-4 standard.

15. The computer readable medium according to claim 13 , including computer executable instructions which cause said processor to implement the method further comprising:

transforming and storing a first subset of said fifth set of data corresponding to boundary pixel data relative to a first adjacent macroblock on the right hand side of said one luminance macroblock or two chrominance macroblocks.

16. The computer readable medium according to claim 15 , including computer executable instructions which cause said processor to implement the method further comprising:

transforming and storing a second subset of said fifth set of data corresponding to boundary pixel data relative to a second adjacent macroblock below said one luminance macroblock or two chrominance macroblocks.

17. The computer readable medium according to claim 13 , wherein said storing includes storing said fifth set of data in said electronic memory so as to replace said first set of data.

18. The computer readable medium according to claim 13 , wherein:

the performing the horizontal de-blocking filter operation on all of said second set of data is performed in a single step; and

the performing the vertical de-blocking filter operation on all of said fourth set of data is performed in a single step.

Assignments (2)
CONFIRMATORY ASSIGNMENT Recorded Jul 15, 2013
From: TANDBERG TELECOM AS; CISCO SYSTEMS INTERNATIONAL SARL
To: CISCO TECHNOLOGY, INC.
Reel/Frame 030794/0162 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 22, 2009
From: ENDRESEN, LARS P.
To: TANDBERG TELECOM AS
Reel/Frame 023265/0949 →