USRE49615EActiveUtility

Coding interpolation filter type

55
Assignee: GOOGLE LLCPriority: Apr 15, 2016Filed: Nov 10, 2020Granted: Aug 15, 2023
Est. expiryApr 15, 2036(~9.8 yrs left)· nominal 20-yr term from priority
H04N 19/44H04L 65/70H04N 19/117H04N 19/159H04N 19/176H04N 19/463H04N 19/513H04N 19/52H04N 19/523H04N 19/82H04N 19/577H04N 19/51
55
PatentIndex Score
0
Cited by
45
References
14
Claims

Abstract

Decoding a video stream may include decoding a first block of a current frame by decoding a first motion vector from the encoded video stream, decoding an identifier of a first interpolation filter from the encoded video stream, and reconstructing the first block using the first motion vector and the first interpolation filter. Decoding a second block of the current frame may include identifying the first motion vector from the first block as a selected motion vector for predicting the second block in response to decoding an inter-prediction mode identifier for decoding the second block, identifying the first interpolation filter as a selected interpolation filter for predicting the second block in response to identifying the first motion vector from the first block as the selected motion vector for predicting the second block, and reconstructing the second block using the first motion vector and the first interpolation filter.

Claims

exact text as granted — not AI-modified
What is claimed is: 
     
       1. A method, comprising:
 decoding a first block of a current frame from an encoded video stream, wherein decoding the first blockcm includes:
 decoding a first motion vector from the encoded video stream; 
 decoding, from the encoded video stream, an identifier of a first interpolation filter for subpixel interpolation; and 
 reconstructing the first block using the first motion vector and the first interpolation filter; 
 
 decoding, by a processor, using a selected motion vector and a selected interpolation filter, a second block of the current frame from the encoded video stream, wherein decoding the second block includes:
 decoding an inter-prediction mode; 
 in response to the inter-prediction mode indicating that the first motion vector of the first block is to be used for reconstructing the second block:
 identifying the first motion vector from the first block as the selected motion vector for predicting the second block; 
 omitting decoding, from the encoded video stream, the selected interpolation filter; and 
 identifying the first interpolation filter that is associated with the first motion vector as the selected interpolation filter for predicting the second block; 
 
 in response to the inter-prediction mode indicating a new motion vector mode:
 decoding, from the encoded video stream, the selected motion vector; 
 decoding, from the encoded video stream, the identifier of the selected interpolation filter; and 
 
 reconstructing the second block using the selected motion vector and the selected interpolation filter; 
 
 decoding a third block of the current frame from the encoded video stream, wherein decoding the third block includes:
 identifying previously decoded blocks spatially proximal to the third block in the current frame, wherein the previously decoded blocks include the second block and omit the first block; 
 identifying the second block from the previously decoded blocks in response to decoding the interprediction mode for decoding the third block; 
 identifying the first motion vector from the first block as a selected motion vector for predicting the third block in response to identifying the second block from the previously decoded blocks; 
 identifying the first interpolation filter as a selected interpolation filter for predicting the third block in response to identifying the first motion vector from the first block as the selected motion vector for predicting the third block; and 
 reconstructing the third block using the first motion vector and the first interpolation filter; and 
 
 outputting or storing the first block, the second block, and the third block. 
 
     
     
       2. The method of  claim 1 , wherein the first motion vector is a non-zero motion vector. 
     
     
       3. The method of  claim 1 , wherein decoding the first block includes:
 identifying information associating the first interpolation filter with the first motion vector. 
 
     
     
       4. The method of  claim 3 , wherein identifying the first interpolation filter as the selected interpolation filter for predicting the second block includes identifying the first interpolation filter based on the information associating the first interpolation filter with the first motion vector. 
     
     
       5. The method of  claim 1 , wherein decoding the second block is subsequent to decoding the first block. 
     
     
       6. The method of  claim 5 , wherein the first block is spatially proximal to the second block in the current frame. 
     
     
       7. A method comprising:
 decoding, by a processor in response to instructions stored on a non-transitory computer readable medium, using a selected motion vector and a selected interpolation filter, a current block of a current frame from an encoded video stream, wherein decoding the current block includes:
 decoding, from the encoded video stream, an inter-prediction mode;   in response to the inter-prediction mode indicating that the selected motion vector is a motion vector of one of previously decoded blocks:   
 
       identifying the a motion vector from a first selected previously decoded block of the previously decoded blocks as the a first selected motion vector for predicting the a current block;
 omitting decoding, from the encoded video stream, the selected interpolation filter; and 
 identifying an interpolation filter that is associated with the first selected motion vector from the first selected previously decoded block as the a first selected interpolation filter for predicting the current block; and 
 reconstructing the current block using the first selected motion vector and the first selected interpolation filter; 
 decoding a second block of the current frame from the an encoded video stream, wherein decoding the second block includes:
 identifying previously decoded blocks spatially proximal to the second block in the current frame, wherein the previously decoded blocks spatially proximal to the second block include the current block and omit the first selected previously decoded block from the previously decoded blocks spatially proximal to the current block; 
 identifying the current block from the previously decoded blocks spatially proximal to the second block in response to decoding the an inter-prediction mode for decoding the second block as the a second selected previously decoded block for predicting the second block; 
 identifying, as a second selected motion vector for predicting the second block, the motion vector from the second selected previously decoded block from the previously decoded blocks spatially proximal to the current block in response to identifying the current block from the previously decoded blocks as the second selected previously decoded block for predicting the second block; 
 identifying the interpolation filter, as a second selected interpolation filter for predicting the second block, in response to identifying the motion vector as the second selected motion vector for predicting the second block; and 
 reconstructing the second block using the second selected motion vector for predicting the second block and the second selected interpolation filter for predicting the second block; and 
 
 outputting or storing the current block and the second block. 
 
     
     
       8. The method of  claim 7 , wherein decoding the current block includes further comprising: 
 decoding a header for the current block from the encoded video stream, wherein the header includes the inter-prediction mode for decoding the current block, and wherein the header omits an identifier of a selected the interpolation filter for predicting the current block and omits a selected the motion vector for predicting the current block. 
 
     
     
       9. The method of  claim 7 , wherein the motion vector is a non-zero motion vector. 
     
     
       10. A method, comprising:
 generating a first encoded block by encoding a first block from a current frame from an input video stream, wherein encoding the first block includes:
 identifying a first motion vector for predicting the first block, wherein the first motion vector has sub-pixel precision; and 
 identifying a first interpolation filter for predicting the first block; 
 
 outputting the first encoded block by:
 including, in an output bitstream, a first inter-prediction mode indicative of the first motion vector; and 
 including, in the output bitstream, a first identifier of the first interpolation filter; 
 
 generating, by a processor, a second encoded block by encoding a second block from the current frame, wherein encoding the second block includes:
 identifying candidate motion vectors for predicting the second block,
 wherein the candidate motion vectors include the first motion vector; 
 
 identifying, from the candidate motion vectors, a selected motion vector for predicting the second block; 
 in response to determining that the selected motion vector for predicting the second block is the first motion vector used for predicting the first block:
 identifying the first interpolation filter as a selected interpolation filter for predicting the second block; 
 predicting the second block using the first motion vector and the first interpolation filter; and 
 omitting encoding, in the output bitstream, the selected motion vector for predicting the second block and an identifier of the selected interpolation filter for predicting the second block; 
 
 
 generating a third encoded block by encoding a third block from the current frame, wherein encoding the third block includes:
 identifying previously coded blocks proximal to the third block in the current frame, wherein the previously coded blocks proximal to the third block include the second block and omit the first block; 
 
 identifying candidate motion vectors for predicting the third block based on the previously coded blocks, wherein the candidate motion vectors include the first motion vector; 
 identifying, from the candidate motion vectors for predicting the third block, a selected motion vector for predicting the third block; 
 on a condition that the selected motion vector for predicting the third block is the first motion vector:
 identifying the first interpolation filter as a selected interpolation filter for predicting the third block; and 
 omitting the selected motion vector for predicting the third block and an identifier of the selected interpolation filter for predicting the third block from the output bitstream; and 
 
 transmitting or storing the output bitstream. 
 
     
     
       11. The method of  claim 10 , wherein the first motion vector is a non-zero motion vector. 
     
     
       12. The method of  claim 10 , wherein including the first identifier of the first interpolation filter in the output bitstream includes including the first identifier of the first interpolation filter in the output bitstream such that the first motion vector is associated with the first interpolation filter. 
     
     
       13. The method of  claim 10 , wherein encoding the second block is subsequent to encoding the first block. 
     
     
       14. The method of  claim 10 , wherein the selected motion vector is a new motion vector, the method further comprising:
 on a condition that the selected motion vector being a new motion vector: 
 evaluating candidate interpolation filters to identify a second interpolation filter for encoding the second block; and 
 encoding a second identifier indicative of the second interpolation filter associated with the selected motion vector.

Cited by (0)

No later patents cite this yet.

References (0)

No backward citations on record.