Coding interpolation filter type
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-modifiedWhat 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.