Motion vector selection and prediction in video coding systems and methods
Abstract
An unencoded video frame of a sequence of video frames is encoded to generate an encoded bit-stream representative of the unencoded video frame. The encoded bit-stream includes a header portion and a video data payload portion. The unencoded video frame may be divided into an array of prediction blocks, including a first prediction block. A coding mode is selected from a plurality of coding modes for use in encoding the first prediction block. The first prediction block is encoded using the selected coding mode to generate a portion of the video data payload of the encoded bit-stream. A coding mode selection flag is provided in the header portion of the encoded bit-stream, which indicates which coding mode of the plurality of coding modes was selected for encoding the first prediction block.
Claims
exact text as granted — not AI-modified1 . A method for encoding a video stream, comprising:
obtaining a coding block from an unencoded video frame of the video stream that is to be encoded into an encoded bit-stream; and for a first coding mode:
dividing the obtained coding block into a plurality of prediction blocks; and
for each respective prediction block of the plurality of prediction blocks:
selecting a motion-vector-prediction method from a plurality of motion-vector-prediction methods for use in encoding the respective prediction block;
encoding the respective prediction block based on the selected motion-vector-prediction method; and
generating a respective header for the respective encoded prediction block to include a selected-motion-vector-prediction-method flag that indicates which of the plurality of motion-vector-prediction methods was selected for encoding the respective prediction block.
2 . The method of claim 1 , further comprising:
selecting the first coding mode from a plurality of coding modes for use in encoding the obtained coding block; and providing, in a header portion of the encoded bit-stream, a coding-mode-selection flag that indicates which of the plurality of coding modes was selected for encoding the obtained coding block.
3 . The method of claim 1 , further comprising:
selecting a second coding mode from a plurality of coding modes for use in encoding the obtained coding block; and in response to selection of the second coding mode from the plurality of coding modes:
setting the obtained coding block as a current prediction block;
selecting a motion vector from an ordered list of motion-vector candidates for use in encoding the current prediction block;
encoding the current prediction block using the selected motion vector; and
generating a header for the encoded current prediction block to include a motion-vector-selection flag that indicates a location in the ordered list of motion-vector candidates corresponding to the selected motion vector.
4 . The method of claim 3 , wherein encoding the current prediction block using the selected motion vector comprises:
determining that the second coding mode is a direct-coding mode; using the selected motion vector to identify a second prediction block of a previously encoded video frame; obtaining a residual between the current prediction block and the second prediction block; and encoding the residual to generate the encoded current prediction block.
5 . The method of claim 3 , wherein encoding the current prediction block using the selected motion vector comprises:
determining that the second coding mode is a skip-coding mode; using the selected motion vector to identify a second prediction block of a previously encoded frame; and encoding the second prediction block to generate the encoded current prediction block.
6 . The method of claim 1 , further comprising:
selecting a coding mode from a plurality of coding modes, the plurality of coding modes including an inter-coding mode, a skip-coding mode, and a direct-coding mode.
7 . The method of claim 1 , wherein the first coding mode is an inter-coding mode.
8 . A method for decoding an encoded video stream, comprising:
receiving an encoded video frame of the encoded video stream that is to be decoded; obtaining a coding block from the encoded video frame; selecting a coding mode from a plurality of coding modes that was used to encode the obtained coding block; and in response to selection of a first coding mode from the plurality of coding modes:
identifying a plurality of prediction blocks for the obtained coding block; and
for each respective prediction block of the plurality of prediction blocks:
identifying a motion-vector-prediction method from a plurality of motion-vector-prediction methods for use in decoding the respective prediction block based on a selected-motion-vector-prediction-method flag in a respective header for the respective prediction block; and
decoding the respective prediction block based on the identified motion-vector-prediction method.
9 . The method of claim 8 , wherein decoding the respective prediction block comprises:
obtaining a motion-vector differential for the respective prediction block; obtaining a predicted motion vector for the respective prediction block based on the identified motion-vector-prediction method; recovering a calculated motion vector for the respective prediction block based on the obtained motion-vector differential and the obtained predicted motion vector; and generating recovered values for the respective prediction block based on a combination of a residual for the respective prediction block with the calculated motion vector.
10 . The method of claim 8 , wherein selecting the coding mode from the plurality of coding modes includes:
selecting the coding mode from an inter-coding mode, a skip-coding mode, and a direct-coding mode.
11 . The method of claim 8 , wherein the first coding mode is an inter-coding mode.
12 . The method of claim 8 , further comprising:
in response to selection of a second coding mode from the plurality of coding modes:
setting the obtained coding block as a current prediction block;
selecting a motion vector from an ordered list of motion-vector candidates for use in decoding the current prediction block based on a motion-vector-selection flag in a header for the current prediction block; and
decoding the current prediction block using the selected motion vector.
13 . The method of claim 12 , wherein decoding the current prediction block using the selected motion vector comprises:
determining that the second coding mode is a direct-coding mode; and recovering prediction block coefficients for the current prediction block based on a combination of a residual for the current prediction block and coefficients of the current prediction block indicated by the selected motion vector.
14 . The method of claim 12 , wherein decoding the current prediction block using the selected motion vector comprises:
determining that the second coding mode is a skip-coding mode; and recovering prediction block coefficients for the current prediction block based on coefficients of a reference block indicated by the selected motion vector.
15 . A computing device, comprising:
a non-transitory memory configured to store computer instructions; and a processor configured to execute the computer instructions to:
select a coding mode from a plurality of coding modes for use in encoding a coding block of an unencoded video stream; and
in response to selection of a first coding mode from the plurality of coding modes:
select a motion-vector-prediction method from a plurality of motion-vector-prediction methods for each respective prediction block of a plurality of prediction blocks from the coding block;
encode each respective prediction block based on the selected motion-vector-prediction method; and
include a selected-motion-vector-prediction-method flag in a header for each respective prediction block, each selected-motion-vector-prediction-method flag indicates the selected motion-vector-prediction method for the respective prediction block.
16 . The computing device of claim 15 , wherein the processor is configured to further execute the computer instructions to:
in response to selection of a second coding mode from the plurality of coding modes:
determine a current prediction block from the coding block;
select a motion vector from an ordered list of motion-vector candidates for use in encoding the current prediction block;
encode the current prediction block using the selected motion vector; and
include a motion-vector-selection flag in a header for the current prediction block, the motion-vector-selection flag indicates the selected motion vector in the ordered list of motion-vector candidates.
17 . The computing device of claim 16 , wherein the processor is configured to encode the current prediction block using the selected motion vector by further executing the computer instructions to:
determine that the second coding mode is a direct-coding mode; use the selected motion vector to identify a second prediction block of a previously encoded video frame; obtain a residual between the current prediction block and the second prediction block; and encode the residual to generate the encoded current prediction block.
18 . The computing device of claim 16 , wherein the processor is configured to encode the current prediction block using the selected motion vector by further executing the computer instructions to:
determine that the second coding mode is a skip-coding mode; use the selected motion vector to identify a second prediction block of a previously encoded frame; and encode the second prediction block to generate the encoded current prediction block.
19 . The computing device of claim 16 , wherein the processor is configured to select the coding mode from the plurality of coding modes by further executing the computer instructions to:
select the coding mode from an inter-coding mode, a skip-coding mode, and a direct-coding mode.
20 . A non-transitory computer readable medium having stored contents that, when executed by a processor of a computing system, cause the computing system to perform actions, the actions comprising:
selecting a coding mode from a plurality of coding modes for use in encoding a coding block of an unencoded video stream; in response to selection of a first coding mode from the plurality of coding modes:
encoding each respective prediction block of a plurality of prediction blocks from the coding block based on a respective motion-vector-prediction method selected from a plurality of motion-vector-prediction methods; and
generating a header for each respective prediction block to include a selected-motion-vector-prediction-method flag indicating the selected motion-vector-prediction method for the respective prediction block; and
in response to selection of a second coding mode from the plurality of coding modes:
encoding a current prediction block of the coding block using a motion vector selected from an ordered list of motion-vector candidates; and
generating a header for the current prediction block to include a motion-vector-selection flag indicating the selected motion vector.Join the waitlist — get patent alerts
Track US2019268619A1 — get alerts on status changes and closely related new filings.
We store only your email — no account needed. See our privacy policy.