US 11,722,683 B2
Parallel coding using history-based motion vector prediction with shared row buffers
Xiaozhong Xu, State College, PA (US); Shan Liu, San Jose, CA (US); and Xiang Li, Saratoga, CA (US)
Assigned to Tencent America LLC, Palo Alto, CA (US)
Filed by Tencent America LLC, Palo Alto, CA (US)
Filed on Sep. 13, 2022, as Appl. No. 17/943,405.
Application 17/943,405 is a continuation of application No. 16/544,331, filed on Aug. 19, 2019, granted, now 11,496,759.
Application 16/544,331 is a continuation of application No. 16/213,705, filed on Dec. 7, 2018, granted, now 10,440,378, issued on Oct. 8, 2019.
Claims priority of provisional application 62/699,372, filed on Jul. 17, 2018.
Prior Publication US 2023/0007286 A1, Jan. 5, 2023
This patent is subject to a terminal disclaimer.
Int. Cl. H04N 19/436 (2014.01); H04N 19/176 (2014.01); H04N 19/423 (2014.01); H04N 19/44 (2014.01)
CPC H04N 19/436 (2014.11) [H04N 19/176 (2014.11); H04N 19/423 (2014.11); H04N 19/44 (2014.11)] 20 Claims
OG exemplary drawing
 
1. A method of video encoding, the method comprising:
acquiring a current picture to be coded, the current picture being segmented into a plurality of tiles, each tile comprising a plurality of units arranged in a plurality of rows, each row having a plurality of units, each unit being divided into a plurality of blocks;
prior to encoding a first tile of the plurality of tiles, initializing a shared row buffer that is shared among multiple processor threads associated with the first tile, each of the multiple processor threads having a corresponding history motion vector predictor (HMVP) buffer;
encoding a first unit of the plurality of units in a first row of the first tile by a first processor thread of the multiple processor threads and using a corresponding first HMVP buffer, the first unit being encoded chronologically first among the plurality of units in the first row;
in response to determining that all of the plurality of blocks in the first unit have been encoded,
copying contents of the first HMVP buffer corresponding to the first processor thread into the shared row buffer, the contents corresponding to motion vectors of encoded blocks included in the first unit;
copying contents of the shared row buffer into a second HMVP buffer corresponding to a second processor thread of the multiple processor threads; and
starting encoding of a unit in a second row of the plurality of rows by the second processor thread using the second HMVP buffer; and
in response to determining that the plurality of units in the first row of the first tile have been encoded, resetting the first HMVP buffer.