US 12,238,335 B2
Efficient sub-pixel motion vector search for high-performance video encoding
Yongmao Tang, Shanghai (CN); Jianjun Chen, Shanghai (CN); Junan Chen, Jiangsu (CN); Yonghai Wu, Shanghai (CN); Zejun Hu, Jiangsu (CN); and Wei Feng, Shanghai (CN)
Assigned to NVIDIA Corporation, Santa Clara, CA (US)
Filed by NVIDIA Corporation, Santa Clara, CA (US)
Filed on Apr. 18, 2023, as Appl. No. 18/302,625.
Prior Publication US 2024/0357175 A1, Oct. 24, 2024
Int. Cl. H04N 19/139 (2014.01); H04N 19/105 (2014.01); H04N 19/109 (2014.01); H04N 19/122 (2014.01); H04N 19/156 (2014.01); H04N 19/172 (2014.01); H04N 19/176 (2014.01); H04N 19/182 (2014.01); H04N 19/423 (2014.01); H04N 19/61 (2014.01)
CPC H04N 19/61 (2014.11) [H04N 19/105 (2014.11); H04N 19/109 (2014.11); H04N 19/122 (2014.11); H04N 19/139 (2014.11); H04N 19/156 (2014.11); H04N 19/172 (2014.11); H04N 19/176 (2014.11); H04N 19/182 (2014.11); H04N 19/423 (2014.11)] 20 Claims
OG exemplary drawing
 
1. A method comprising:
obtaining a first plurality of motion vectors of a first resolution;
generating a second plurality of motion vectors of a second resolution based on the first plurality of motion vectors of the first resolution;
calculating, for each motion vector of the second plurality of motion vectors, a first cost of the motion vector using a first cost function of a first size;
selecting a subset of motion vectors of the second plurality of motion vectors based on the first cost of each motion vector;
calculating, for each motion vector of the subset of motion vectors, a second cost using a second cost function of a second size;
generating a plurality of combined motion vectors based on the subset of motion vectors;
calculating, for each motion vector of the plurality of combined motion vectors, a third cost using the second cost function of the second size;
selecting, based on the cost of each motion vector of the subset of motion vectors and the cost of each motion vector of the plurality of combined motion vectors, a final motion vector; and
generating, based on the final motion vector, a block of predicted pixels that approximates a block of source pixels of an image frame.