US2013287114A1PendingUtilityA1

Fractional interpolation for hardware-accelerated video decoding

62
Assignee: MICROSOFT CORPPriority: Jun 30, 2007Filed: Jun 27, 2013Published: Oct 31, 2013
Est. expiryJun 30, 2027(~1 yrs left)· nominal 20-yr term from priority
H04N 19/42H04N 19/593H04N 19/436H04N 19/105H04N 19/91H04N 19/112H04N 19/46H04N 19/89H04N 19/51G06T 1/20H04N 19/31H04N 19/174H04N 19/15H04N 19/16H04N 19/137H04N 19/176H04N 19/124H04N 19/172H04N 19/44H04N 19/82H04N 19/13H04N 19/61H04N 19/43H04N 19/184H04N 19/159H04N 19/00684H04N 19/186
62
PatentIndex Score
0
Cited by
0
References
0
Claims

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.

Claims

exact text as granted — not AI-modified
1 .- 20 . (canceled) 
     
     
         21 . A method of video decoding using a hardware-accelerated video decoder, the method comprising:
 classifying plural blocks according to plural motion vector types, wherein the plural motion vector types differ in terms of complexity of sample value interpolation; and   with a graphics processing unit, performing motion compensation operations for the plural blocks in plural passes corresponding to the plural motion vector types, respectively.   
     
     
         22 . The method of  claim 21  wherein each of the plural motion vector types is associated with a quantum of work for the motion vector type, and wherein the quantum of work for each of the plural motion vector types is 8×8 block. 
     
     
         23 . The method of  claim 21  wherein plural motion vectors for the plural blocks are applied for 4×4 blocks in the motion compensation operations. 
     
     
         24 . The method of  claim 21  wherein the plural motion vector types are:
 an integer motion vector type that represents motion vectors with offsets at integer sample positions; 
 a center offset motion vector type that represents motion vectors with offsets at fractional sample positions whose sample values depend on sample values at sample positions with ½-pixel horizontal offset and ½-pixel vertical offset; and 
 an off-center offset motion vector type that represents motion vectors with offsets at other fractional sample positions. 
 
     
     
         25 . The method of  claim 21  wherein the plural passes include a first pass for an integer motion vector type, followed by a second pass for a center offset motion vector type, followed by a third pass for an off-center offset motion vector type. 
     
     
         26 . The method of  claim 21  wherein, for a first pass of the plural passes, the motion compensation operations include fetching sample values from one or more reference pictures in memory. 
     
     
         27 . The method of  claim 26  wherein the one or more reference pictures for the motion compensation operations are represented as a 3D texture. 
     
     
         28 . The method of  claim 21  wherein, for a second pass of the plural passes, a center offset shader implements at least some of the motion compensation operations. 
     
     
         29 . The method of  claim 28  wherein the center offset shader supports fractional interpolation for plural 4×4 blocks in parallel, and wherein for a given 4×4 block of sample values, the center offset shader includes operations for:
 loading a 9×9 block of sample values as a support region for filtering; 
 computing intermediate sample values by filtering loaded sample values in a first direction, wherein at least some of the intermediate sample values are buffered from block-to-block for use in other interpolation operations; and 
 computing final sample values by filtering the intermediate sample values in a second direction. 
 
     
     
         30 . The method of  claim 21  wherein, for a third pass of the plural passes, an off-center offset shader implements at least some of the motion compensation operations. 
     
     
         31 . The method of  claim 30  wherein the off-center offset shader supports fractional interpolation for plural 4×4 blocks in parallel, and wherein for a given 4×4 block of sample values, the off-center offset shader includes operations for:
 loading sample values as a support region for filtering; and 
 computing final sample values by filtering in one or more directions, without buffering intermediate sample values from block-to-block for use in other interpolation operations. 
 
     
     
         32 . A computer system that includes a hardware-accelerated video decoder adapted to perform a method of video decoding, the computer system including:
 a classifier module for classifying plural blocks according to plural motion vector types that differ in terms of complexity of sample value interpolation; and   a graphics processing unit adapted to run as an integer pixel shader, center offset shader or off-center offset shader depending on motion vector type.   
     
     
         33 . The computer system of  claim 32  wherein each of the plural motion vector types is associated with a quantum of work for the motion vector type, and wherein the quantum of work for each of the plural motion vector types is 8×8 block 
     
     
         34 . The computer system of  claim 32  wherein the plural motion vectors are applied for 4×4 blocks in the motion compensation operations. 
     
     
         35 . The computer system of  claim 32  wherein the integer pixel shader includes operations for fetching sample values from one or more reference pictures. 
     
     
         36 . The computer system of  claim 35  wherein the center offset shader includes operations for interpolation to determine sample values at fractional sample positions whose sample values depend on sample values at sample positions with ½-pixel horizontal offset and ½-pixel vertical offset. 
     
     
         37 . The computer system of  claim 36  wherein the center offset shader supports fractional interpolation for plural 4×4 blocks in parallel, and wherein for a given 4×4 block of sample values, the center offset shader includes operations for:
 loading a 9×9 block of sample values as a support region for filtering; 
 computing intermediate sample values by filtering loaded sample values in a first direction, wherein at least some of the intermediate sample values are buffered from block-to-block for use in other interpolation operations; and 
 computing final sample values by filtering the intermediate sample values in a second direction. 
 
     
     
         38 . The computer system of  claim 32  wherein the off-center offset shader includes operations for interpolation to determine sample values at fractional sample positions whose sample values do not depend on sample values at sample positions with ½-pixel horizontal offset and ½-pixel vertical offset. 
     
     
         39 . The computer system of  claim 38  wherein the off-center offset shader supports fractional interpolation for plural 4×4 blocks in parallel, and wherein for a given 4×4 block of sample values, the off-center offset shader includes operations for:
 loading sample values as a support region for filtering; and 
 computing final sample values by filtering in one or more directions, without buffering intermediate sample values from block-to-block for use in other interpolation operations. 
 
     
     
         40 . A computer system that includes a hardware-accelerated video decoder adapted to perform a method of video decoding, the computer system including:
 a graphics processing unit adapted to run as an integer pixel shader, center offset shader or off-center offset shader depending on motion vector type, wherein the center offset pixel shader includes operations for interpolation to determine sample values at fractional sample positions whose sample values depend on sample values at sample positions with ½-pixel horizontal offset and ½-pixel vertical offset, wherein the center offset shader supports fractional interpolation for plural 4×4 blocks in parallel, and wherein for a given 4×4 block of sample values, the center offset shader includes operations for:
 loading a 9×9 block of sample values as a support region for filtering; 
 computing intermediate sample values by filtering loaded sample values in a first direction, wherein at least some of the intermediate sample values are buffered from block-to-block for use in other interpolation operations; and 
 computing final sample values by filtering the intermediate sample values in a second direction.

Cited by (0)

No later patents cite this yet.

References (0)

No backward citations on record.