NEIGHBOR DETERMINATION IN VIDEO DECODING
2 Assignments
0 Petitions
Accused Products
Abstract
Video decoding innovations for multithreading implementations and graphics processor unit (“GPU”) implementations are described. For example, for multithreaded decoding, a decoder uses innovations in the areas of layered data structures, picture extent discovery, a picture command queue, and/or task scheduling for multithreading. Or, for a GPU implementation, a decoder uses innovations in the areas of inverse transforms, inverse quantization, fractional interpolation, intra prediction using waves, loop filtering using waves, memory usage and/or performance-adaptive loop filtering. Innovations are also described in the areas of error handling and recovery, determination of neighbor availability for operations such as context modeling and intra prediction, CABAC decoding, computation of collocated information for direct mode macroblocks in B slices, reduction of memory consumption, implementation of trick play modes, and picture dropping for quality adjustment.
-
Citations
40 Claims
-
1-20. -20. (canceled)
-
21. A method of video decoding using a video decoder, the method comprising:
-
with the video decoder, getting one or more tables indicating neighbor availability relationships between macroblocks, blocks and/or sub-blocks; and with the video decoder, using the one or more tables to determine neighbor availability during decoding operations. - View Dependent Claims (29, 30, 31)
-
-
22. The method of 21 wherein the decoding operations include one or more of context-adaptive binary arithmetic decoding, spatial intra prediction, mode computation for intra prediction, and context-adaptive variable length decoding.
-
23. The method of 21 wherein the using the one or more tables involves a hierarchical determination at macroblock level then sub-macroblock level.
-
24. The method of 21 wherein the using the one or more tables includes storing location information for neighboring macroblocks, and wherein the location information is stored as offsets from a current macroblock.
-
25. The method of 21 wherein the one or more tables include:
-
a first availability table that associates different index values with different macroblock neighbor availability patterns; and a second availability table that associates different macroblock neighbor availability patterns and partition locations with different sub-macroblock neighbor availability patterns. - View Dependent Claims (26, 27)
-
-
28. The method of 26 wherein, for a given state, the state machine stores information indicating number of consecutive macroblocks in the state and one of the index values for the first availability table to indicate macroblock neighbor availability for the state.
-
32. The method of 30 wherein, for a given state, the state machine stores information indicating number of consecutive macroblocks in the state and one of the macroblock neighbor availability patterns to indicate macroblock neighbor availability for the state.
-
33. The method of 21 wherein the method further comprises:
-
setting up a state machine for plural macroblock pairs in a slice; and setting up a neighbor context vector for each macroblock of the plural macroblock pairs in the slice.
-
-
34. The method of 33 wherein the using the one or more tables includes, during the decoding operations for a current partition of a current macroblock:
-
determining macroblock pair neighbor availability using the state machine and a first availability table, wherein the first availability table associates different index values with different macroblock pair neighbor availability patterns; determining sub-macroblock neighbor availability using the macroblock pair neighbor availability and a second availability table that associates different macroblock pair neighbor availability patterns and partition locations with different sub-macroblock neighbor availability patterns.
-
-
35. The method of 33 wherein the using the one or more tables includes, during the decoding operations for a current partition of a current macroblock:
-
determining macroblock pair neighbor availability using the state machine; and determining sub-macroblock neighbor availability using the macroblock pair neighbor availability and an availability table that associates different macroblock pair neighbor availability patterns and partition locations with different sub-macroblock neighbor availability patterns.
-
-
36. The method of 33 wherein, for each macroblock of the plural macroblock pairs in the slice, the neighbor context vector indicates:
-
field or frame mode for a macroblock pair including the macroblock; field or frame mode for each of plural neighbor macroblock pairs; and whether the current macroblock is a top or bottom macroblock in its macroblock pair. - View Dependent Claims (38, 39)
-
-
37. One or more computer-readable storage media storing computer-executable instructions for causing a computer system programmed thereby to perform a method of video decoding, the method comprising:
-
getting one or more tables indicating neighbor availability relationships between macroblocks, blocks and/or sub-blocks; and using the one or more tables to determine neighbor availability during decoding operations.
-
-
40. A computer system that includes a video decoder adapted to perform a method of video decoding, the computer system including:
-
means for getting a first availability table and second availability table, wherein; the first availability table associates different index values with different macroblock neighbor availability patterns; the second availability table associates different macroblock neighbor availability patterns and partition locations with different sub-macroblock neighbor availability patterns; and means for setting up a state machine for plural macroblocks in a slice, wherein the state machine associates the plural macroblocks with the index values for the first availability table; means for determining macroblock neighbor availability using the state machine and the first availability table; and means for determining sub-macroblock neighbor availability using the macroblock neighbor availability and the second availability table.
-
Specification