US2019268619A1PendingUtilityA1

Motion vector selection and prediction in video coding systems and methods

Assignee: REALNETWORKS INCPriority: Mar 31, 2015Filed: May 13, 2019Published: Aug 29, 2019
Est. expiryMar 31, 2035(~8.7 yrs left)· nominal 20-yr term from priority
H04N 19/46H04N 19/176H04N 19/159H04N 19/52H04N 19/132
52
PatentIndex Score
0
Cited by
0
References
0
Claims

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-modified
1 . 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.