IP Library Granted Patent US 8,660,176
Granted Patent B2
US 8,660,176 · App. 12/239,031 · Granted Feb 25, 2014

Resolving geometric relationships among video data units

Inventors: Yen-Chi Lee (San Diego, CA); Yiliang Bao (San Diego, CA)
Assignee: QUALCOMM Incorporated
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,660,176
App. No.
12/239,031
Granted
Feb 25, 2014
Kind
B2
Abstract

An apparatus performs efficient coding techniques to more efficiently resolve geometric relationships between video data units and thereby determine neighboring video data units for a current video data unit. The apparatus comprises a geometric resolution unit that obtains video data defining a plurality of video data units, and determines, for the current one of the plurality of video data units to be processed, a partition width and a video unit number of the current video data unit. The geometric resolution unit accesses, using the determined partition width and video unit number, a plurality of look-up tables (LUTs) to output one or more indices identifying one or more of the plurality of video data units that neighbor the current video data unit.

Claims (166)

1. A method comprising:

configuring at least one processor or circuit to perform the functions of:

obtaining video data that defines a plurality of video data units;

determining, for a current one of the plurality of video data units to be processed, a partition width and a video unit number of the current video data unit;

accessing, using the determined partition width and video unit number, a plurality of look-up tables (LUTs), wherein each of the tables comprises, for a video data unit, an entry for partition width, an entry for video unit number, and entries for neighboring video data units; and

outputting one or more indices identifying one or more of the plurality of video data units that neighbor the current video data unit, wherein the one or more indices each comprise a video unit number for a corresponding one of the plurality of the neighboring video data units.

2. The method of claim 1 , wherein accessing the plurality of LUTs comprises accessing, using the determined partition width and video unit number, a first one of the plurality of LUTs to resolve a geometric relationship between the current video data unit and the one or more of neighboring video data units assuming that the current and neighboring video data units are each encoded according to a first one of at least two coding modes to output the one or more indices.

3. The method of claim 2 ,

wherein the first coding mode comprises a non-MacroBlock Adaptive Field/Frame (non-MBAFF) coding mode, and

wherein a second one of the at least two coding modes comprises a MacroBlock Adaptive Field/Frame (MBAFF) coding mode.

4. The method of claim 2 , wherein accessing the first LUT comprises:

selecting one of a plurality of tables based on the partition width;

loading the first LUT with the selected one of the tables; and

accessing the first LUT using a first block index to output the one or more indices in accordance with the selected one of the tables.

5. The method of claim 2 , wherein accessing the first LUT comprises outputting the one or more indices to a second one of the plurality of LUTs, wherein each of the one or more indices includes a flag that indicates whether the respective one or more of the plurality of neighboring video data units resides outside of the current video data unit.

6. The method of claim 5 , wherein accessing the plurality of LUTs further comprises:

determining whether to access the second LUT based on the flag of each of the one or more indices; and

accessing the second LUT when at least one of the flags of each of the one or more indices indicates that the respective one the plurality of neighboring video data units resides outside of the current video data unit to output corresponding adjusted indices, wherein the adjusted indices account for when the assumption is incorrect and the current and neighboring video data units are encoded according to a MacroBlock Adaptive Field/Frame (MBAFF) frame coding technique.

7. The method of claim 6 , wherein accessing the second one of the one or more LUTs to output the corresponding adjusted indices comprises:

obtaining one of the indices from the first LUT;

determining a first flag that indicates a field coding mode of the current video data unit;

determining a second flag that indicates a bottom position of the current video data unit;

determining a plurality of neighboring flags that indicate the field coding mode for the corresponding plurality of neighboring video data units;

selecting one of a plurality of tables based on the obtained one of the indices;

loading the table into the second LUT; and

accessing the second LUT using the obtained one of the indices, the first and second flags and the plurality of neighboring flags to output a corresponding one of the adjusted indices.

8. The method of claim 6 , wherein accessing the second LUT comprises passing through as the corresponding adjusted index those of the plurality of indices that each include the flag that indicates that the respective one of the plurality of neighboring video data units reside within the current video data unit without accessing the second LUT.

9. The method of claim 1 , further comprising:

incrementing, after processing each of the plurality of video data units, an availability counter; and

determining, based on the availability counter, whether one or more of the plurality of neighboring video data units (i) have been previously decoded and (ii) are available for use as the neighboring video data units in the processing of the current video data unit.

10. The method of claim 9 , wherein determining whether the one or more of the plurality of neighboring video data units are available comprises:

obtaining one of the one or more indices;

determining whether the current video data unit comprises a first or a last video data unit in a row of the plurality of video data units;

setting a first and second flag based on the determination of whether the current video data unit comprises the first or last video data unit in the row;

determining a width of the row as a function of a number of video data units;

setting a plurality of neighboring availability flags based on the availability counter, the first and second flags, and the width; and

outputting one of the plurality of neighboring availability flags based on the obtained one of the indices that indicates the availability of the corresponding one of the plurality of neighboring video data units.

11. The method of claim 1 , further comprising accessing, for each of the neighboring video data units, another look-up table (LUT) based on one of the one or more indices to determine a location of motion vector data within the corresponding one of the plurality of neighboring video data unit.

12. The method of claim 11 , wherein accessing the other LUT comprises:

obtaining one of the one or more indices;

determining a mode input that identifies a type of partitioning for the current video data unit; and

accessing the other LUT using the obtained one of the indices and the determined mode to output an index identifying the location of the motion vector data within the corresponding one of the plurality of neighboring video data units.

13. The method of claim 11 , further comprising:

mapping at least one index that identifies the location of the motion vector data to at least one address;

accessing a memory using the at least one address to retrieve the motion vector data for at least one of the plurality of neighboring video data units; and

reconstructing a motion vector for the current video data unit based on the motion vector data retrieved for the at least one of the plurality of neighboring video data units.

14. An apparatus comprising:

a storage configured to store video data defining a plurality of video data units;

a geometric resolution unit that obtains the video data from the storage and determines, for a current one of the plurality of video data units to be processed, a partition width and a video unit number of the current video data unit,

wherein the geometric resolution unit includes a plurality of look-up tables (LUTs) that resolve geometric relationships among the plurality of video data units, each of the tables comprising, for a video data unit, an entry for partition width, an entry for video unit number, and entries for neighboring video data units, and

wherein the geometric resolution unit further accesses, using the determined partition width and video unit number, the plurality of look-up tables to output one or more indices identifying one or more of the plurality of video data units that neighbor the current video data unit, the one or more indices each comprising a video unit number for a corresponding one of the plurality of the neighboring video data units.

15. The apparatus of claim 14 , wherein the geometric resolution unit accesses the plurality of LUTs by accessing, using the determined partition width and video unit number, a first one of the plurality of LUTs to resolve a geometric relationship between the current video data unit and the one or more of neighboring video data units assuming that the current and neighboring video data units are each encoded according to a first one of at least two coding modes to output the one or more indices.

16. The apparatus of claim 15 ,

wherein the first coding mode comprises a non-MacroBlock Adaptive Field/Frame (non-MBAFF) coding mode, and

wherein a second one of the at least two coding modes comprises a MacroBlock Adaptive Field/Frame (MBAFF) coding mode.

17. The apparatus of claim 15 , wherein the geometric resolution unit accesses the first LUT by:

selecting one of a plurality of tables based on the partition width;

loading the first LUT with the selected one of the tables; and

accessing the first LUT using a first block index to output the one or more indices in accordance with the selected one of the tables.

18. The apparatus of claim 15 , wherein the geometric resolution unit accesses the first LUT by outputting the one or more indices to a second one of the plurality of LUTs, wherein each of the one or more indices includes a flag that indicates whether the respective one or more of the plurality of neighboring video data units resides outside of the current video data unit.

19. The apparatus of claim 18 , wherein the geometric resolution unit accesses the plurality of LUTs by further:

determining whether to access the second LUT based on the flag of each of the one or more indices; and

accessing the second LUT when at least one of the flags of each of the one or more indices indicates that the respective one the plurality of neighboring video data units resides outside of the current video data unit to output corresponding adjusted indices, wherein the adjusted indices account for when the assumption is incorrect and the current and neighboring video data units are encoded according to a MacroBlock Adaptive Field/Frame (MBAFF) frame coding technique.

20. The apparatus of claim 19 , wherein the geometric resolution unit accesses the second one of the one or more LUTs to output the corresponding adjusted indices by:

obtaining one of the indices from the first LUT;

determining a first flag that indicates a field coding mode of the current video data unit;

determining a second flag that indicates a bottom position of the current video data unit;

determining a plurality of neighboring flags that indicate the field coding mode for the corresponding plurality of neighboring video data units;

selecting one of a plurality of tables based on the obtained one of the indices;

loading the table into the second LUT; and

accessing the second LUT using the obtained one of the indices, the first and second flags and the plurality of neighboring flags to output a corresponding one of the adjusted indices.

21. The apparatus of claim 19 , wherein the geometric resolution unit accesses the second LUT by passing through as the corresponding adjusted index those of the plurality of indices that each include the flag that indicates that the respective one of the plurality of neighboring video data units reside within the current video data unit without accessing the second LUT.

22. The apparatus of claim 14 , further comprising an availability determination unit that includes an availability counter, wherein the availability determination unit increments, after processing each of the plurality of video data units, the availability counter, and determines, based on the availability counter, whether one or more of the plurality of neighboring video data units (i) have been previously decoded and (ii) are available for use as the neighboring video data units in the processing of the current video data unit.

23. The apparatus of claim 22 , wherein the availability determination unit determines whether the one or more of the plurality of neighboring video data units are available by:

obtaining one of the one or more indices;

determining whether the current video data unit comprises a first or a last video data unit in a row of the plurality of video data units;

setting a first and second flag based on the determination of whether the current video data unit comprises the first or last video data unit in the row, respectively;

determining a width of the row as a function of a number of video data units;

setting a plurality of neighboring availability flags based on the availability counter, the first and second flags, and the width; and

outputting one of the plurality of neighboring availability flags based on the obtained one of the indices that indicates the availability of the corresponding one of the plurality of neighboring video data units.

24. The apparatus of claim 14 , further comprising a motion vector (MV) location unit that includes another look-up table (LUT) for locating motion vector data, wherein the MV location unit accesses, for each of the neighboring video data units, another look-up table (LUT) based on one of the one or more indices to determine a location of the motion vector data within the corresponding one of the plurality of neighboring video data unit.

25. The apparatus of claim 24 , wherein the MV location unit accesses the other LUT by:

obtaining one of the one or more indices;

determining a mode input that identifies a type of partitioning for the current video data unit; and

accessing the other LUT using the obtained one of the indices and the determined mode to output an index identifying the location of the motion vector data within the corresponding one of the plurality of neighboring video data units.

26. The apparatus of claim 24 , further comprising:

an address mapping and access module that maps at least one index that identifies the location of the motion vector data to at least one address and accesses a memory using the at least one address to retrieve the motion vector data for at least one of the plurality of neighboring video data units; and

a motion vector (MV) reconstruction unit that reconstructs a motion vector for the current video data unit based on the motion vector data retrieved for the at least one of the plurality of neighboring video data units.

27. The apparatus of claim 14 , wherein the apparatus comprises a wireless communication device.

28. The apparatus of claim 14 , wherein the apparatus comprises an integrated circuit.

29. An apparatus comprising:

means for obtaining video data defining a plurality of video data units;

means for determining, for a current one of the plurality of video data units to be processed, a partition width and a video unit number of the current video data unit;

means for resolving geometric relationships among the plurality of video data units, wherein the means for resolving the geometric relationships comprises a plurality of look-up tables (LUTs) for resolving the geometric relationships, each of the tables comprising, for a video data unit, an entry for partition width, an entry for video unit number, and entries for neighboring video data units; and

means for accessing, using the determined partition width and video unit number, the means for resolving geometric relationships to output one or more indices identifying one or more of the plurality of video data units that neighbor the current video data unit, wherein the one or more indices each comprise a video unit number for a corresponding one of the plurality of the neighboring video data units.

30. The apparatus of claim 29 ,

wherein the means for accessing comprises means for accessing, using the determined partition width and video unit number, a first one of the plurality of LUTs to resolve a geometric relationship between the current video data unit and the one or more of neighboring video data units assuming that the current and neighboring video data units are each encoded according to a first one of at least two coding modes to output the one or more indices.

31. The apparatus of claim 30 ,

wherein the first coding mode comprises a non-MacroBlock Adaptive Field/Frame (non-MBAFF) coding mode, and

wherein a second one of the at least two coding modes comprises a MacroBlock Adaptive Field/Frame (MBAFF) coding mode.

32. The apparatus of claim 30 , wherein the means for accessing the first LUT comprises:

means for selecting one of a plurality of tables based on the partition width;

means for loading the first LUT with the selected one of the tables; and

means accessing the first LUT using a first block index to output the one or more indices in accordance with the selected one of the tables.

33. The apparatus of claim 30 , wherein the means for accessing the first LUT comprises means for outputting the one or more indices to a second one of the plurality of LUTs, wherein each of the one or more indices includes a flag that indicates whether the respective one or more of the plurality of neighboring video data units resides outside of the current video data unit.

34. The apparatus of claim 33 , wherein the means for accessing the plurality of LUTs further comprises:

means for determining whether to access the second LUT based on the flag of each of the one or more indices; and

means for accessing the second LUT when at least one of the flags of each of the one or more indices indicates that the respective one the plurality of neighboring video data units resides outside of the current video data unit to output corresponding adjusted indices, wherein the adjusted indices account for when the assumption is incorrect and the current and neighboring video data units are encoded according to a MacroBlock Adaptive Field/Frame (MBAFF) frame coding technique.

35. The apparatus of claim 34 , wherein the means for accessing the second one of the one or more LUTs to output the corresponding adjusted indices comprises:

means for obtaining one of the indices from the first LUT;

means for determining a first flag that indicates a field coding mode of the current video data unit;

means for determining a second flag that indicates a bottom position of the current video data unit;

means for determining a plurality of neighboring flags that indicate the field coding mode for the corresponding plurality of neighboring video data units;

means for selecting one of a plurality of tables based on the obtained one of the indices;

means for loading the table into the second LUT; and

means for accessing the second LUT using the obtained one of the indices, the first and second flags and the plurality of neighboring flags to output a corresponding one of the adjusted indices.

36. The apparatus of claim 34 , wherein the means for accessing the second LUT comprises means for passing through as the corresponding adjusted index those of the plurality of indices that each include the flag that indicates that the respective one of the plurality of neighboring video data units reside within the current video data unit without accessing the second LUT.

37. The apparatus of claim 29 , further comprising:

means for maintaining an availability counter;

means for incrementing, after processing each of the plurality of video data units, the availability counter; and

means for determining, based on the availability counter, whether one or more of the plurality of neighboring video data units (i) have been previously decoded and (ii) are available for use as the neighboring video data units in the processing of the current video data unit.

38. The apparatus of claim 37 , wherein the means for determining whether the one or more of the plurality of neighboring video data units are available comprises:

means for obtaining one of the one or more indices;

means for determining whether the current video data unit comprises a first or a last video data unit in a row of the plurality of video data units;

means for setting a first and second flag based on the determination of whether the current video data unit comprises the first or last video data unit in the row, respectively;

means for determining a width of the row as a function of a number of video data units;

means for setting a plurality of neighboring availability flags based on the availability counter, the first and second flags, and the width; and

means for outputting one of the plurality of neighboring availability flags based on the obtained one of the indices that indicates the availability of the corresponding one of the plurality of neighboring video data units.

39. The apparatus of claim 29 , further comprising:

means for locating motion vector data;

means for accessing, for each of the neighboring video data units, the locating means based on one of the one or more indices to determine a location of the motion vector data within the corresponding one of the plurality of neighboring video data unit.

40. The apparatus of claim 39 ,

wherein the location means comprises a look-up table (LUT), and

wherein the means for accessing the location means comprises:

means for obtaining one of the one or more indices;

means for determining a mode input that identifies a type of partitioning for the current video data unit; and

means for accessing the LUT using the obtained one of the indices and the determined mode to output an index identifying the location of the motion vector data within the corresponding one of the plurality of neighboring video data units.

41. The apparatus of claim 39 , further comprising:

means for mapping at least one index that identifies the location of the motion vector data to at least one address; and

means for accessing a memory using the at least one address to retrieve the motion vector data for at least one of the plurality of neighboring video data units; and

means for reconstructing a motion vector for the current video data unit based on the motion vector data retrieved for the at least one of the plurality of neighboring video data units.

42. A non-transitory computer-readable storage medium comprising instructions that cause a programmable processor to:

obtain video data that defines a plurality of video data units;

determine, for a current one of the plurality of video data units to be processed, a partition width and a video unit number of the current video data unit;

access, using the determined partition width and video unit number, a plurality of look-up tables (LUTs), wherein each of the tables comprises, for a video data unit, an entry for partition width, an entry for video unit number, and entries for neighboring video data units; and

output one or more indices identifying one or more of the plurality of video data units that neighbor the current video data unit, wherein the one or more indices each comprise a video unit number for a corresponding one of the plurality of the neighboring video data units.

43. The computer-readable storage medium of claim 42 , wherein the instructions cause the processor to access the plurality of LUTs by accessing, using the determined partition width and video unit number, a first one of the plurality of LUTs to resolve a geometric relationship between the current video data unit and the one or more of neighboring video data units assuming that the current and neighboring video data units are each encoded according to a first one of at least two coding modes to output the one or more indices.

44. The computer-readable storage medium of claim 43 ,

wherein the first coding mode comprises a non-MacroBlock Adaptive Field/Frame (non-MBAFF) coding mode, and

wherein a second one of the at least two coding modes comprises a MacroBlock Adaptive Field/Frame (MBAFF) coding mode.

45. The computer-readable storage medium of claim 43 , wherein the instruction cause the processor to access the first LUT by:

selecting one of a plurality of tables based on the partition width;

loading the first LUT with the selected one of the tables; and

accessing the first LUT using a first block index to output the one or more indices in accordance with the selected one of the tables.

46. The computer-readable storage medium of claim 43 , wherein the instructions cause the processor to access the first LUT by outputting the one or more indices to a second one of the plurality of LUTs, wherein each of the one or more indices includes a flag that indicates whether the respective one or more of the plurality of neighboring video data units resides outside of the current video data unit.

47. The computer-readable storage medium of claim 46 , wherein the instructions cause the processor to access the plurality of LUTs by further:

determining whether to access the second LUT based on the flag of each of the one or more indices; and

accessing the second LUT when at least one of the flags of each of the one or more indices indicates that the respective one the plurality of neighboring video data units resides outside of the current video data unit to output corresponding adjusted indices, wherein the adjusted indices account for when the assumption is incorrect and the current and neighboring video data units are encoded according to a MacroBlock Adaptive Field/Frame (MBAFF) frame coding technique.

48. The computer-readable storage medium of claim 47 , wherein the instructions cause the processor to access the second one of the one or more LUTs to output the corresponding adjusted indices by:

obtaining one of the indices from the first LUT;

determining a first flag that indicates a field coding mode of the current video data unit;

determining a second flag that indicates a bottom position of the current video data unit;

determining a plurality of neighboring flags that indicate the field coding mode for the corresponding plurality of neighboring video data units;

selecting one of a plurality of tables based on the obtained one of the indices;

loading the table into the second LUT; and

accessing the second LUT using the obtained one of the indices, the first and second flags and the plurality of neighboring flags to output a corresponding one of the adjusted indices.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 5, 2008
From: LEE, YEN-CHI; BAO, YILIANG
To: QUALCOMM INCORPORATED
Reel/Frame 021791/0163 →
Continuity (1)
Related Publication 20100080284A1 · Apr 1, 2010