IP Library Granted Patent US 8,861,585
Granted Patent B2
US 8,861,585 · App. 11/624,614 · Granted Oct 14, 2014

Method and apparatus for error resilience algorithms in wireless video communication

Inventors: Sitaraman Ganapathy Subramanian (San Diego, CA); Gordon Kent Walker (San Diego, CA); Vijayalakshmi R. Raveendran (San Diego, CA)
Assignee: QUALCOMM Incorporated
H04N19/00939H04N19/00145H04N19/00278H04N19/00781H04N21/6131H04N19/0003H04N19/00242H04N19/002H04N19/00133H04N19/00303H04N19/00181H04N19/00018
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,861,585
App. No.
11/624,614
Granted
Oct 14, 2014
Kind
B2
Abstract

Methods and apparatuses to encode multimedia data enabling, among others, for example, improved decoded video quality, improved error recovery capabilities and/or improved decoding efficiency are described. A method according to the application includes one or more of the following: initializing a pixel-level reference counter for a current frame, performing a prediction of a next frame referring to the current frame, incrementing the pixel-level reference counter for each pixel of the current frame that is referenced during the prediction of the next frame, readjusting a macroblock bandwidth map of the current frame, repeating the steps of initializing, performing and readjusting for each next frame in a plurality of next frames referring to the current frame, and encoding the current frame based at least in part on the readjusted macroblock bandwidth map of the current frame.

Claims (272)

1. A method of processing multimedia data, including a plurality of video frames, the method comprising:

initializing a pixel-level reference counter for a current frame;

performing a prediction of a next frame referring to the current frame;

incrementing the pixel-level reference counter for each pixel of the current frame that is referenced during the prediction of the next frame; and

readjusting a macroblock bandwidth map of the current frame based at least in part on the incremented pixel-level reference counter, wherein, for a N×M macroblock (x, y), readjusting the macroblock bandwidth map of the current frame includes scaling bandwidth map values of the macroblock bandwidth map in accordance with the following equation:

C

+

i

=

x

x

+

(

N

-

1

)

j

=

y

y

+

(

M

-

1

)

R

(

i

,

j

)

,

wherein C is a constant determined by experiment, and R(i, j) is the pixel-level reference counter for the N×M macroblock (x, y), and

wherein the macroblock bandwidth map indicates a bit allocation used to code one or more blocks of the current frame.

2. The method of claim 1 , wherein the pixel-level reference counter is indexed to a width and a height of the current frame.

3. The method of claim 2 , wherein the pixel-level reference counter is provided by a first equation, R(i, j)=0, where 0≦i<W, 0≦j<H, W is the width of the current frame, and H is the height of the current frame.

4. The method of claim 3 , wherein the prediction of the next frame includes performing motion estimation for blocks of the next frame.

5. The method of claim 1 , further including repeating the steps of initializing, performing and readjusting for each next frame in a plurality of next frames referring to the current frame.

6. The method of claim 5 , further including encoding the current frame based at least in part on the readjusted macroblock bandwidth map of the current frame.

7. The method of claim 1 , wherein the bit allocation used to code the one or more blocks is based on one or more of the following:

a number of bits to be allocated to the one or more blocks to code the one or more blocks; and

a proportion of bits to be allocated to the one or more blocks to code the one or more blocks.

8. The method of claim 7 , wherein readjusting the macroblock bandwidth map of the current frame based at least in part on the incremented pixel-level reference counter comprises:

allocating relatively more bits to blocks of the current frame that include pixels that correspond to relatively higher count values in the pixel-level reference counter than to blocks of the current frame that include pixels that correspond to relatively lower count values in the pixel-level reference counter; and

allocating relatively fewer bits to the blocks of the current frame that include pixels that correspond to relatively lower count values in the pixel-level reference counter than to the blocks of the current frame that include pixels that correspond to relatively higher count values in the pixel-level reference counter.

9. The method of claim 1 , wherein N is equal to 16 and M is equal to 16.

10. A device comprising:

a memory; and

a processor for processing multimedia data including a plurality of video frames, the processor being configured to:

initialize a pixel-level reference counter for a current frame;

perform a prediction of a next frame referring to the current frame;

increment the pixel-level reference counter for each pixel of the current frame that is referenced during the prediction of the next frame; and

readjust a macroblock bandwidth map of the current frame based at least in part on the incremented pixel-level reference counter, wherein, for a N×M macroblock (x, y), readjusting the macroblock bandwidth map of the current frame includes scaling bandwidth map values of the macroblock bandwidth map in accordance with the following equation:

C

+

i

=

x

x

+

(

N

-

1

)

j

=

y

y

+

(

M

-

1

)

R

(

i

,

j

)

,

wherein C is a constant determined by experiment, and R(i, j) is the pixel-level reference counter for the N×M macroblock (x, y), and

wherein the macroblock bandwidth map indicates a bit allocation used to code one or more blocks of the current frame.

11. The device of claim 10 , wherein the pixel-level reference counter is indexed to a width and a height of the current frame.

12. The device of claim 11 , wherein the pixel-level reference counter is provided by a first equation, R(i, j)=0, where 0≦i<W, 0≦j<H, W is the width of the current frame, and H is the height of the current frame.

13. The device of claim 12 , wherein the prediction of the next frame includes a motion estimation prediction for blocks of the next frame.

14. The device of claim 10 , wherein the processor is further configured to repeat the functions of initialize, perform and readjust for each next frame in a plurality of next frames referring to the current frame.

15. The device of claim 14 , wherein the processor is further configured to encode the current frame based at least in part on the readjusted macroblock bandwidth map of the current frame.

16. The device of claim 10 , wherein the bit allocation used to code the one or more blocks is based on one or more of the following:

a number of bits to be allocated to the one or more blocks to code the one or more blocks; and

a proportion of bits to be allocated to the one or more blocks to code the one or more blocks.

17. The device of claim 16 , wherein to readjust the macroblock bandwidth map of the current frame based at least in part on the incremented pixel-level reference counter, the processor is configured to:

allocate relatively more bits to blocks of the current frame that include pixels that correspond to relatively higher count values in the pixel-level reference counter than to blocks of the current frame that include pixels that correspond to relatively lower count values in the pixel-level reference counter; and

allocate relatively fewer bits to the blocks of the current frame that include pixels that correspond to relatively lower count values in the pixel-level reference counter than to the blocks of the current frame that include pixels that correspond to relatively higher count values in the pixel-level reference counter.

18. The device of claim 10 , wherein N is equal to 16 and M is equal to 16.

19. An apparatus for processing multimedia data, including a plurality of video frames, the apparatus comprising:

an initializer for initializing a pixel-level reference counter for a current frame;

a performer for performing a prediction of a next frame referring to the current frame;

an incrementer for incrementing the pixel-level reference counter for each pixel of the current frame that is referenced during the prediction of the next frame; and

a readjuster for readjusting a macroblock bandwidth map of the current frame based at least in part on the incremented pixel-level reference counter, wherein, for a N×M macroblock (x, y), the readjuster is configured to readjust the macroblock bandwidth map of the current frame by at least scaling bandwidth map values of the macroblock bandwidth map in accordance with the following equation:

C

+

i

=

x

x

+

(

N

-

1

)

j

=

y

y

+

(

M

-

1

)

R

(

i

,

j

)

,

wherein C is a constant determined by experiment, and R(i, j) is the pixel-level reference counter for the N×M macroblock (x, y),

wherein the macroblock bandwidth map indicates a bit allocation used to code one or more blocks of the current frame, and

wherein one or more of:

the initializer comprises a hardware initializer,

the performer comprises a hardware performer,

the incrementer comprises a hardware incrementer, and

the readjuster comprises a hardware readjuster.

20. The apparatus of claim 19 , wherein the pixel-level reference counter is indexed to a width and a height of the current frame.

21. The apparatus of claim 20 , wherein the pixel-level reference counter is provided by a first equation, R(i, j)=0, where 0≦i<W, 0≦j<H, W is the width of the current frame, and H is the height of the current frame.

22. The apparatus of claim 21 , wherein the performer prediction of the next frame includes a motion estimation prediction for blocks of the next frame.

23. The apparatus of claim 19 , further including a repeater to coordinate repeating the functions of the initializer, performer and readjuster for each next frame in a plurality of next frames referring to the current frame.

24. The apparatus of claim 23 , further including an encoder to encode the current frame based at least in part on the readjusted macroblock bandwidth map of the current frame.

25. The apparatus of claim 19 , wherein the bit allocation used to code the one or more blocks is based on one or more of the following:

a number of bits to be allocated to the one or more blocks to code the one or more blocks; and

a proportion of bits to be allocated to the one or more blocks to code the one or more blocks.

26. The apparatus of claim 25 , wherein to readjust the macroblock bandwidth map of the current frame based at least in part on the incremented pixel-level reference counter, the readjuster is configured to:

allocate relatively more bits to blocks of the current frame that include pixels that correspond to relatively higher count values in the pixel-level reference counter than to blocks of the current frame that include pixels that correspond to relatively lower count values in the pixel-level reference counter; and

allocate relatively fewer bits to the blocks of the current frame that include pixels that correspond to relatively lower count values in the pixel-level reference counter than to the blocks of the current frame that include pixels that correspond to relatively higher count values in the pixel-level reference counter.

27. The apparatus of claim 19 , wherein N is equal to 16 and M is equal to 16.

28. An apparatus for processing multimedia data, including a plurality of video frames, the apparatus comprising:

means for initializing a pixel-level reference counter for a current frame;

means for performing a prediction of a next frame referring to the current frame;

means for incrementing the pixel-level reference counter for each pixel of the current frame that is referenced during the prediction of the next frame; and

means for readjusting a macroblock bandwidth map of the current frame based at least in part on the incremented pixel-level reference counter, wherein, for a N×M macroblock (x, y), the means for readjusting the macroblock bandwidth map of the current frame comprise means for scaling bandwidth map values of the macroblock bandwidth map in accordance with the following equation:

C

+

i

=

x

x

+

(

N

-

1

)

j

=

y

y

+

(

M

-

1

)

R

(

i

,

j

)

,

wherein C is a constant determined by experiment, and R(i, j) is the pixel-level reference counter for the N×M macroblock (x, y), and

wherein the macroblock bandwidth map indicates a bit allocation used to code one or more blocks of the current frame.

29. The apparatus of claim 28 , wherein the pixel-level reference counter is indexed to a width and a height of the current frame.

30. The apparatus of claim 29 , wherein the pixel-level reference counter is provided by a first equation, R(i, j)= 0 , where 0≦i<W, 0≦j<H, W is the width of the current frame, and H is the height of the current frame.

31. The apparatus of claim 30 , wherein the means for prediction of the next frame includes means for performing motion estimation for blocks of the next frame.

32. The apparatus of claim 28 , further including means for repeating the means for initializing, performing and readjusting for each next frame in a plurality of next frames referring to the current frame.

33. The apparatus of claim 32 , further including means for encoding the current frame based at least in part on the readjusted macroblock bandwidth map of the current frame.

34. The apparatus of claim 28 , wherein the bit allocation used to code the one or more blocks is based on one or more of the following:

a number of bits to be allocated to the one or more blocks to code the one or more blocks; and

a proportion of bits to be allocated to the one or more blocks to code the one or more blocks.

35. The apparatus of claim 34 , wherein the means for readjusting the macroblock bandwidth map of the current frame based at least in part on the incremented pixel-level reference counter comprises:

means for allocating relatively more bits to blocks of the current frame that include pixels that correspond to relatively higher count values in the pixel-level reference counter than to blocks of the current frame that include pixels that correspond to relatively lower count values in the pixel-level reference counter; and

means for allocating relatively fewer bits to the blocks of the current frame that include pixels that correspond to relatively lower count values in the pixel-level reference counter than to the blocks of the current frame that include pixels that correspond to relatively higher count values in the pixel-level reference counter.

36. The apparatus of claim 28 , wherein N is equal to 16 and M is equal to 16.

37. A non-transitory machine readable storage medium comprising instructions, for processing multimedia data including a plurality of video frames, that upon execution cause a machine to:

initialize a pixel-level reference counter for a current frame;

perform a prediction of a next frame referring to the current frame;

increment the pixel-level reference counter for each pixel of the current frame that is referenced during the prediction of the next frame; and

readjust a macroblock bandwidth map of the current frame based at least in part on the incremented pixel-level reference counter, wherein, for a N×M macroblock (x, y), the instructions cause the machine to readjust the macroblock bandwidth map of the current frame by at least scaling bandwidth map values of the macroblock bandwidth map in accordance with the following equation:

C

+

i

=

x

x

+

(

N

-

1

)

j

=

y

y

+

(

M

-

1

)

R

(

i

,

j

)

,

wherein C is a constant determined by experiment, and R(i, j) is the pixel-level reference counter for the N×M macroblock (x, y), and

wherein the macroblock bandwidth map indicates a bit allocation used to code one or more blocks of the current frame.

38. The non-transitory machine readable storage medium of claim 37 , wherein the pixel-level reference counter is indexed to a width and a height of the current frame.

39. The non-transitory machine readable storage medium of claim 38 , wherein the pixel-level reference counter is provided by a first equation, R(i, j)=0, where 0≦i<W, 0≦j<H, W is the width of the current frame, and H is the height of the current frame.

40. The non-transitory machine readable storage medium of claim 39 , further comprising instructions that upon executing cause the machine to perform a motion estimation prediction for blocks of the next frame.

41. The non-transitory machine readable storage medium of claim 37 , further comprising instructions that upon executing cause the machine to repeat the functions of initialize, perform and readjust for each next frame in a plurality of next frames referring to the current frame.

42. The non-transitory machine readable storage medium of claim 41 , further comprising instructions that upon executing cause the machine to encode the current frame based at least in part on the readjusted macroblock bandwidth map of the current frame.

43. The non-transitory machine readable storage medium of claim 37 , wherein the bit allocation used to code the one or more blocks is based on one or more of the following:

a number of bits to be allocated to the one or more blocks to code the one or more blocks; and

a proportion of bits to be allocated to the one or more blocks to code the one or more blocks.

44. The non-transitory machine readable storage medium of claim 43 , wherein the instructions that cause the machine to readjust the macroblock bandwidth map of the current frame based at least in part on the incremented pixel-level reference counter comprise instructions that cause the machine to:

allocate relatively more bits to blocks of the current frame that include pixels that correspond to relatively higher count values in the pixel-level reference counter than to blocks of the current frame that include pixels that correspond to relatively lower count values in the pixel-level reference counter; and

allocate relatively fewer bits to the blocks of the current frame that include pixels that correspond to relatively lower count values in the pixel-level reference counter than to the blocks of the current frame that include pixels that correspond to relatively higher count values in the pixel-level reference counter.

45. The non-transitory machine readable storage medium of claim 37 , wherein N is equal to 16 and M is equal to 16.

Assignments (2)
CORRECTIVE ASSIGNMENT TO CORRECT THE FIRST INVENTOR'S NAME TO "SUBRAMANIAN"; UPDATE SECOND INVENTOR'S ADDRESS; UPDATE CITIZENSHIP OF THIRD INVENTOR. PREVIOUSLY RECORDED ON REEL 019303 FRAME 0760. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Nov 4, 2008
From: SUBRAMANIAN, SITARAMAN GANAPATHY; WALKER, GORDON KENT; RAVEENDRAN, VIJAYALAKSHMI R.
To: QUALCOMM INCORPORATED
Reel/Frame 021784/0466 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 16, 2007
From: SUBRAMANIA, SITARAMAN GANAPATHY; WALKER, GORDON KENT; RAVEENDRAN, VIJAYALAKSHMI R.
To: QUALCOMM INCORPORATED
Reel/Frame 019303/0760 →
Continuity (3)
Provisional Application 60760678 · Jan 20, 2006
Provisional Application 60760755 · Jan 20, 2006
Related Publication 20070177667A1 · Aug 2, 2007