IP Library Granted Patent US 10,321,150
Granted Patent B2
US 10,321,150 · App. 15/562,783 · Granted Jun 11, 2019

Motion vector selection and prediction in video coding systems and methods

Inventors: Chia-Yang Tsai (Seattle, WA); Kyle Kuang (Seattle, WA); Xiaobo Liu (Seattle, WA)
Assignee: RealNetworks, Inc.
H04N19/52H04N19/159H04N19/176H04N19/46
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 10,321,150
App. No.
15/562,783
Granted
Jun 11, 2019
Kind
B2
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 (116)

1. A method of encoding an unencoded video frame of a sequence of video frames to generate an encoded bit-stream representative of the unencoded video frame, the method comprising:

obtaining a coding block from the unencoded video frame;

selecting a coding mode from a plurality of coding modes for use in encoding the coding block, the plurality of coding modes include an inter-coding mode, a skip-coding mode, and a direct-coding mode;

in response to selection of the inter-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 to generate a video data payload portion of the encoded bit-stream for the respective prediction block; and

providing a selected-motion-vector-prediction-method flag in a header portion of the respective encoded prediction block, wherein the selected-motion-vector-prediction-method flag indicates which of the plurality of motion-vector-prediction methods was selected for encoding the respective prediction block;

in response to selection of the skip-coding mode or the direct-coding mode:

setting the obtained coding block as a current prediction block;

obtaining an ordered list of motion-vector candidates for the current prediction block;

selecting a motion vector from the ordered list of motion-vector candidates for use in encoding the current prediction block;

encoding the current prediction block using the selected motion vector to generate a portion of the video data payload of the encoded bit-stream for the current prediction block; and

providing a motion-vector-selection flag in the header portion of the encoded current prediction block, wherein the motion-vector-selection flag indicates a location in the ordered list of motion-vector candidates corresponding to the selected motion vector; and

providing a coding-mode-selection flag in a header portion of the encoded bit-stream, wherein the coding-mode-selection flag indicates which of the plurality of coding modes was selected for encoding the coding block.

2. The method of claim 1 , further comprising:

dividing the unencoded video frame into the plurality of prediction blocks arranged in a plurality of rows and a plurality of columns, wherein the current prediction block is in a first row of the plurality of rows and a first column in the plurality of columns; and

wherein obtaining the ordered list of motion-vector candidates includes:

selecting a first motion vector previously used in encoding a first reference prediction block of the plurality of prediction blocks;

selecting a second motion vector previously used in encoding a second reference prediction block of the plurality of prediction blocks; and

electing a third motion vector previously used in encoding a third reference prediction block of the plurality of prediction blocks.

3. The method of claim 2 , further comprising:

selecting the first reference prediction block from the plurality of prediction blocks from a location in a second row of the plurality of rows and in the first column, the second row being adjacent to the first row;

selecting the second reference prediction block from the plurality of prediction blocks from a location in the second row and in a second column of the plurality of columns, the second column being adjacent to the first column; and

selecting the third reference prediction block from the plurality of prediction blocks from a location in the first row and in a third column of the plurality of columns, the third column being adjacent to the first column.

4. The method of claim 1 , further comprising:

dividing the unencoded video frame into the plurality of prediction blocks arranged in a plurality of rows and a plurality of columns, wherein the current prediction block is in a first row of the plurality of rows and a first column in the plurality of columns;

wherein obtaining the ordered list of motion-vector candidates includes:

selecting a first motion vector previously used in encoding a first reference prediction block of the plurality of prediction blocks;

selecting a second motion vector previously used in encoding a second reference prediction block of the plurality of prediction blocks; and

selecting a zero-value motion vector.

5. The method of claim 4 , further comprising:

selecting the first reference prediction block from the plurality of prediction blocks from a location in a second row of the plurality of rows and in the first column, the second row being adjacent to the first row; and

selecting the second reference prediction block from the plurality of prediction blocks from a location in the second row and in a second column of the plurality of columns, the second column being adjacent to the first column.

6. The method of claim 4 , wherein:

selecting the first reference prediction block from the plurality of prediction blocks from a location in a second row of the plurality of rows and in the first column, the second row being adjacent to the first row; and

selecting the second reference prediction block from the plurality of prediction blocks from a location in the first row and in a second column of the plurality of columns, the second column being adjacent to the first column.

7. The method of claim 4 , wherein:

selecting the first reference prediction block from the plurality of prediction blocks from a location in a second row of the plurality of rows, the second row being adjacent to the first row and in a second column of the plurality of columns, the second column being adjacent to the first column; and

selecting the second reference prediction block from the plurality of prediction blocks from a location in the first row and in a third column of the plurality of columns, the third column being adjacent to the first column.

8. The method of claim 1 , wherein the unencoded video frame is divided into the plurality of prediction blocks arranged in a plurality of rows and a plurality of columns with the current prediction block being in a first row of the plurality of rows and a first column in the plurality of columns, and wherein the ordered list of motion-vector candidates includes, in order:

a first motion vector previously used in encoding a first reference prediction block of the plurality of prediction blocks;

a first zero-value motion vector; and

a second zero-value motion vector.

9. The method of claim 8 , wherein the first reference prediction block is located in a second row of the plurality of rows and in the first column, the second row being adjacent to the first row.

10. The method of claim 8 , wherein the first reference prediction block is located in a second row of the plurality of rows, the second row being adjacent to the first row, and in a second column of the plurality of columns, the second column being adjacent to the first column.

11. The method of claim 8 , wherein the first reference prediction block is located in the first row and in a second column of the plurality of columns, the second column being adjacent to the first column.

12. The method of claim 1 , wherein the ordered list of motion-vector candidates includes, in order:

a first zero-value motion vector;

a second zero-value motion vector; and

a third-zero-value motion vector.

13. The method of claim 1 , wherein encoding the current prediction block using the selected motion vector includes:

using the selected motion vector to identify a second prediction block of a previously encoded frame of the sequence of video frames;

obtaining a residual between the current prediction block and the second prediction block; and

encoding the residual to generate the portion of the video data payload of the encoded bit-stream for the current prediction block.

14. The method of claim 1 , wherein encoding the current prediction block using the selected motion vector includes:

using the selected motion vector to identify a second prediction block of a previously encoded frame of the sequence of video frames; and

encoding the second prediction block to generate the portion of the video data payload of the encoded bit-stream for the current prediction block.

15. A computing device, comprising:

a memory configured to store computer instructions; and

a processor configured to execute the computer instructions to:

obtain a coding block from an unencoded video frame of a sequence of video frames;

select a coding mode from a plurality of coding modes for use in encoding the coding block, the plurality of coding modes include an inter-coding mode, a skip-coding mode, and a direct-coding mode;

in response to selection of the inter-coding mode:

divide the obtained coding block into a plurality of prediction blocks; and

for each respective prediction block of the plurality of prediction blocks:

select a motion-vector-prediction method from a plurality of motion-vector-prediction methods for use in encoding the respective prediction block;

encode the respective prediction block based on the selected motion-vector-prediction method to generate a video data payload portion of an encoded bit-stream representative of the unencoded video frame for the respective prediction block; and

provide a selected-motion-vector-prediction-method flag in a header portion of the respective encoded prediction block, wherein the selected-motion-vector-prediction-method flag indicates which of the plurality of motion-vector-prediction methods was selected for encoding the respective prediction block;

in response to selection of the skip-coding mode or the direct-coding mode:

set the obtained coding block as a current prediction block;

obtain an ordered list of motion-vector candidates for the current prediction block;

select a motion vector from the ordered list of motion-vector candidates for use in encoding the current prediction block;

encode the current prediction block using the selected motion vector to generate a portion of the video data payload of the encoded bit-stream for the current prediction block; and

provide a motion-vector-selection flag in the header portion of the encoded current prediction block, wherein the motion-vector-selection flag indicates a location in the ordered list of motion-vector candidates corresponding to the selected motion vector; and

provide a coding-mode-selection flag in a header portion of the encoded bit-stream, wherein the coding-mode-selection flag indicates which of the plurality of coding modes was selected for encoding the coding block.

16. The computing device of claim 15 , wherein the processor is configured to further execute the computer instructions to:

divide the unencoded video frame into the plurality of prediction blocks arranged in a plurality of rows and a plurality of columns, wherein the current prediction block is in a first row of the plurality of rows and a first column in the plurality of columns; and

obtain the ordered list of motion-vector candidates including:

select a first motion vector previously used in encoding a first reference prediction block of the plurality of prediction blocks;

select a second motion vector previously used in encoding a second reference prediction block of the plurality of prediction blocks; and

select a third motion vector previously used in encoding a third reference prediction block of the plurality of prediction blocks.

17. The computing device of claim 15 , wherein the processor is configured to further execute the computer instructions to:

divide the unencoded video frame into the plurality of prediction blocks arranged in a plurality of rows and a plurality of columns, wherein the current prediction block is in a first row of the plurality of rows and a first column in the plurality of columns;

obtain the ordered list of motion-vector candidates including:

select a first motion vector previously used in encoding a first reference prediction block of the plurality of prediction blocks ;

select a second motion vector previously used in encoding a second reference prediction block of the plurality of prediction blocks ; and

select a zero-value motion vector.

18. The computing device of claim 15 , wherein the unencoded video frame is divided into the plurality of prediction blocks arranged in a plurality of rows and a plurality of columns with the current prediction block being in a first row of the plurality of rows and a first column in the plurality of columns, and wherein the ordered list of motion-vector candidates includes, in order:

a first motion vector previously used in encoding a first reference prediction block of the plurality of prediction blocks;

a first zero-value motion vector; and

a second zero-value motion vector.

19. The computing device of claim 15 , wherein the processor is configured to further execute the computer instructions to encode the current prediction block using the selected motion vector including:

use the selected motion vector to identify a second prediction block of a previously encoded frame of the sequence of video frames;

obtain a residual between the current prediction block and the second prediction block; and

encode the residual to generate the portion of the video data payload of the encoded bit-stream for the current prediction block.

20. The computing device of claim 15 , wherein the processor is configured to further execute the computer instruction encode the current prediction block using the selected motion vector including:

use the selected motion vector to identify a second prediction block of a previously encoded frame of the sequence of video frames; and

encode the second prediction block to generate the portion of the video data payload of the encoded bit-stream for the current prediction block.

21. 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:

obtaining a coding block from the unencoded video frame;

selecting a coding mode from a plurality of coding modes for use in encoding the coding block, the plurality of coding modes include an inter-coding mode, a skip-coding mode, and a direct-coding mode;

in response to selection of the inter-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 to generate a video data payload portion of the encoded bit-stream for the respective prediction block; and

providing a selected-motion-vector-prediction-method flag in a header portion of the respective encoded prediction block, wherein the selected-motion-vector-prediction-method flag indicates which of the plurality of motion-vector-prediction methods was selected for encoding the respective prediction block;

in response to selection of the skip-coding mode or the direct-coding mode:

setting the obtained coding block as a current prediction block;

obtaining an ordered list of motion-vector candidates for the current prediction block;

selecting a motion vector from the ordered list of motion-vector candidates for use in encoding the current prediction block;

encoding the current prediction block using the selected motion vector to generate a portion of the video data payload of the encoded bit-stream for the current prediction block; and

providing a motion-vector-selection flag in the header portion of the encoded current prediction block, wherein the motion-vector-selection flag indicates a location in the ordered list of motion-vector candidates corresponding to the selected motion vector; and

providing a coding-mode-selection flag in a header portion of the encoded bit-stream, wherein the coding-mode-selection flag indicates which of the plurality of coding modes was selected for encoding the coding block.

Assignments (4)
RELEASE OF SECURITY INTEREST Recorded Mar 24, 2025
From: WESTERN ALLIANCE BANK
To: REALNETWORKS, INC.
Reel/Frame 070604/0956 →
MERGER AND CHANGE OF NAME Recorded Feb 13, 2023
From: REALNETWORKS, INC.; GREATER HEIGHTS ACQUISITION LLC
To: REALNETWORKS LLC
Reel/Frame 062746/0554 →
SECURITY INTEREST Recorded Aug 5, 2019
From: REALNETWORKS, INC.
To: WESTERN ALLIANCE BANK
Reel/Frame 049958/0344 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 25, 2019
From: TSAI, CHIA-YANG; KUANG, KYLE; LIU, XIAOBO
To: REALNETWORKS, INC.
Reel/Frame 049001/0893 →
Continuity (1)
Related Publication 20180199053A1 · Jul 12, 2018