IP Library Granted Patent US 12,339,902
Granted Patent B2
US 12,339,902 · App. 17/493,877 · Granted Jun 24, 2025

Hardware accelerated video encoding

Inventors: Ohad Markus (Haifa, IL); Assaf Weissman (Moreshet, IL); Dotan David Levi (Kiryat Motzkin, IL); Eyal Frishman (Hod Hasharon, IL)
Assignee: Mellanox Technologies, Ltd
G06F16/71G06F9/5027G06T9/00
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 12,339,902
App. No.
17/493,877
Granted
Jun 24, 2025
Kind
B2
Abstract

In one embodiment, a system includes a hardware accelerator to receive video data of multiple video frames, divide each of the video frames into respective blocks, compute encoding assist data including at least one video encoding parameter type for each of the respective blocks of each of the video frames, and store respective portions of the encoding assist data across respective database tables, and an interface to provide the respective database tables to video encoding software running on a processor.

Claims (85)

1. A system comprising:

a hardware accelerator to:

receive video data of multiple video frames;

divide each of the video frames into respective blocks;

compute encoding assist data including at least one video encoding parameter type for each of the respective blocks of each of the video frames; and

store respective portions of the encoding assist data across respective block-size-specific database tables such that one block-size-specific database table is to store contiguously the encoding assist data of first size blocks, and another block-size-specific database table is to store contiguously encoding assist data of second size blocks, the first size blocks being a different size to the second size blocks; and

an interface to provide the respective database tables to video encoding software running on a processor, wherein the processor is to:

load the one block-size-specific database table storing the encoding assist data of the first size blocks into memory and perform a first part of an encoding process responsively to the encoding assist data of the first size blocks;

load the other block-size-specific database table storing the encoding assist data of the second size blocks into memory and perform a second part of the encoding process responsively to the encoding assist data of the second size blocks; and

compress the video data into encoded video frames responsively to the encoding assist data included in the respective block-size-specific database tables.

2. The system according to claim 1 , wherein the at least one video encoding parameter type includes any one or more of the following: a motion vector; a measure of block matching; a motion vector cost; a rate distortion optimization score; an intra prediction cost; an intra prediction direction; a block distance metric; or a weighted cost score.

3. The system according to claim 1 , wherein the hardware accelerator is configured to store the respective portions of the encoding assist data across the respective database tables responsively to respective video encoding parameter types.

4. The system according to claim 1 , wherein the hardware accelerator is configured to store the respective portions of the encoding assist data across the respective database tables responsively to respective block sizes.

5. The system according to claim 1 , wherein the hardware accelerator is configured to store the respective portions of the encoding assist data across the respective database tables responsively to respective video encoding parameter types and respective block sizes.

6. The system according to claim 1 , wherein the hardware accelerator is configured to:

scan the video frames responsively to a recursive z-shaped scan pattern; and

store the encoding assist data ordered in the respective database tables responsively to the recursive z-shaped scan pattern.

7. The system according to claim 6 , wherein the recursive z-shaped scan pattern is a nested z-shaped scan pattern.

8. The system according to claim 1 , wherein:

the first table includes respective video encoding parameters of a first video encoding parameter type for selected blocks of the respective blocks of at least one of the video frames; and

the second table includes respective video encoding parameters of a second video encoding parameter type, different to the first video encoding parameter type, for the selected blocks.

9. The system according to claim 8 , wherein:

the first video encoding parameter type of the first table is a motion vector; and

the first part of the encoding process includes performing rate control responsively to motion vectors in the first table.

10. The system according to claim 8 , wherein:

the second video encoding parameter type of the second table is a measure of block matching; and

the second part of the encoding process includes identifying a scene cut responsively to measures of block matching in the second table.

11. The system according to claim 1 , wherein:

the encoding software is configured to load a third table of the respective database tables into memory and perform a third part of an encoding process responsively to data of the loaded third table;

the encoding software is configured to load a fourth table of the respective database tables into memory and perform a fourth part of the encoding process responsively to data of the loaded fourth table;

the first table includes respective video encoding parameters of a first video encoding parameter type for first selected blocks of the respective blocks of at least one of the video frames of a first block size;

the second table includes respective video encoding parameters of a second video encoding parameter type, different to the first video encoding parameter type, for the first selected blocks of the first block size;

the third table includes respective video encoding parameters of the first video encoding parameter type for second selected blocks of the respective blocks of the at least one of the video frames of a second block size, different to the first block size; and

the fourth table includes respective video encoding parameters of the second video encoding parameter type for the second selected blocks of the second block size.

12. The system according to claim 1 , wherein:

the first table includes first selected blocks of the respective blocks of at least one of the video frames of a first block size; and

the second table includes second selected blocks of the respective blocks of the at least one of the video frames of a second block size, different to the first block size.

13. The system according to claim 12 , wherein:

the first block size is larger than the second block size; and

the encoding software is configured to:

load the first table and analyze data of the first selected blocks of the first block size; and then

load the second table and analyze data of the second selected blocks of the second block size.

14. A method comprising:

receiving video data of multiple video frames;

dividing each of the video frames into respective blocks;

computing encoding assist data including at least one video encoding parameter type for each of the respective blocks of each of the video frames;

storing respective portions of the encoding assist data across respective block-size-specific database tables such that one blocks-size specific database table stores contiguously the encoding assist data for first size blocks, and another block-size-specific database table stores contiguously encoding assist data for second size blocks, the first size blocks being a different size to the second size blocks;

providing the respective database tables to video encoding software;

loading the one block-size-specific database table storing the encoding assist data of the first size blocks into memory and perform a first part of an encoding process responsively to the encoding assist data of the first size blocks;

loading the other block-size-specific database table storing the encoding assist data of the second size blocks into memory and perform a second part of the encoding process responsively to the encoding assist data of the second size blocks; and

compressing the video data into encoded video frames responsively to the encoding assist data included in the respective block-size-specific database tables.

15. The method according to claim 14 , wherein the at least one video encoding parameter type is selected from any one or more of the following: a motion vector; a rate distortion optimization score; an intra prediction cost; an intra prediction direction; a block distance metric; or a weighted cost score.

16. The method according to claim 14 , wherein the storing includes storing the respective portions of the encoding assist data across the respective database tables responsively to respective video encoding parameter types.

17. The method according to claim 14 , wherein the storing includes storing the respective portions of the encoding assist data across the respective database tables responsively to respective block sizes.

18. The method according to claim 14 , wherein the storing includes storing the respective portions of the encoding assist data across the respective database tables responsively to respective video encoding parameter types and respective block sizes.

19. The method according to claim 14 , wherein:

the first table includes respective video encoding parameters of a first video encoding parameter type for selected blocks of the respective blocks of at least one of the video frames; and

the second table includes respective video encoding parameters of a second video encoding parameter type, different to the first video encoding parameter type, for the selected blocks.

20. The method according to claim 14 , further comprising:

loading a third table of the respective database tables into memory and performing a third part of an encoding process responsively to data of the loaded third table; and

loading a fourth table of the respective database tables into memory and performing a fourth part of the encoding process responsively to data of the loaded fourth table, and wherein:

the first table includes respective video encoding parameters of a first video encoding parameter type for first selected blocks of the respective blocks of at least one of the video frames of a first block size;

the second table includes respective video encoding parameters of a second video encoding parameter type, different to the first video encoding parameter type, for the first selected blocks of the first block size;

the third table includes respective video encoding parameters of the first video encoding parameter type for second selected blocks of the respective blocks of the at least one of the video frames of a second block size, different to the first block size; and

the fourth table includes respective video encoding parameters of the second video encoding parameter type for the second selected blocks of the second block size.

21. The method according to claim 14 , wherein:

the first table includes first selected blocks of the respective blocks of at least one of the video frames of a first block size; and

the second table includes second selected blocks of the respective blocks of the at least one of the video frames of a second block size, different to the first block size.

22. The method according to claim 21 , wherein the first block size is larger than the second block size, the method further comprising:

loading the first table and analyzing data of the first selected blocks of the first block size; and then

loading the second table and analyzing data of the second selected blocks of the second block size.

23. The method according to claim 14 , further comprising:

scanning the video frames responsively to a recursive z-shaped scan pattern; and

storing the encoding assist data ordered in the respective database tables responsively to the recursive z-shaped scan pattern.

24. The method according to claim 23 , wherein the recursive z-shaped scan pattern is a nested z-shaped scan pattern.

25. A system comprising:

a hardware accelerator to:

receive video data of multiple video frames;

divide each of the video frames into respective blocks;

compute encoding assist data including at least one video encoding parameter type for each of the respective blocks of each of the video frames; and

store respective portions of the encoding assist data across respective video-encoding-parameter-type-specific database tables such that one video-encoding-parameter-type-specific database table is to store contiguously the encoding assist data of a first video encoding parameter type, and another video-encoding-parameter-type-specific database table is to store contiguously encoding assist data of a second video encoding parameter type, the first video encoding parameter type being different from the second video encoding parameter type; and

an interface to provide the respective database tables to video encoding software running on a processor, wherein the processor is to:

load the one video-encoding-parameter-type-specific database table storing the encoding assist data of the first video encoding parameter type into memory and perform a first part of an encoding process responsively to the encoding assist data of the first video encoding parameter type;

load the other video-encoding-parameter-type-specific database table storing the encoding assist data of the video encoding parameter type into memory and perform a second part of the encoding process responsively to the encoding assist data of the video encoding parameter type; and

compress the video data into encoded video frames responsively to the encoding assist data included in the respective video-encoding-parameter-type-specific database tables.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 5, 2021
From: MARKUS, OHAD; WEISSMAN, ASSAF; LEVI, DOTAN DAVID; FRISHMAN, EYAL
To: MELLANOX TECHNOLOGIES, LTD.
Reel/Frame 057697/0593 →
Continuity (1)
Related Publication 20230107012A1 · Apr 6, 2023
References Cited (131)
US 4783698A · Harney · 1988 [cited by applicant]
US 5949441A · Ristau · 1999 [cited by applicant]
US 6075900A · Sakazawa · 2000 [cited by examiner]
US 6151360A · Kato et al. · 2000 [cited by applicant]
US 7733464B2 · David et al. · 2010 [cited by applicant]
US 7881496B2 · Camilleri et al. · 2011 [cited by applicant]
US 7936818B2 · Jayant · 2011 [cited by examiner]
US 8498493B1 · Choudhary · 2013 [cited by applicant]
US 8682108B2 · Tian et al. · 2014 [cited by applicant]
US 8693551B2 · Zheludkov et al. · 2014 [cited by applicant]
US 8737469B1 · Huang · 2014 [cited by examiner]
US 9131235B2 · Zheludkov et al. · 2015 [cited by applicant]
US 9270299B2 · Uby et al. · 2016 [cited by applicant]
US 9367746B2 · Ishihara · 2016 [cited by applicant]
US 9451266B2 · Zheludkov et al. · 2016 [cited by applicant]
US 9767529B1 · Liu et al. · 2017 [cited by applicant]
US 10136131B2 · Zheludkov · 2018 [cited by applicant]
US 10200719B2 · Zhang et al. · 2019 [cited by applicant]
US 10516710B2 · Levi et al. · 2019 [cited by applicant]
US 20020015446A1 · Miyaji · 2002 [cited by examiner]
US 20020041089A1 · Yasui · 2002 [cited by applicant]
US 20030152148A1 · Laksono · 2003 [cited by examiner]
US 20040146203A1 · Yoshimura et al. · 2004 [cited by applicant]
US 20040165091A1 · Takemura et al. · 2004 [cited by applicant]
US 20050220353A1 · Karczewicz et al. · 2005 [cited by applicant]
US 20050276323A1 · Martemyanov · 2005 [cited by examiner]
US 20060017843A1 · Shi et al. · 2006 [cited by applicant]
US 20060129909A1 · Butt et al. · 2006 [cited by applicant]
US 20060180670A1 · Acosta et al. · 2006 [cited by applicant]
US 20060256851A1 · Wang et al. · 2006 [cited by applicant]
US 20070110160A1 · Wang et al. · 2007 [cited by applicant]
US 20070140591A1 · Kurata · 2007 [cited by examiner]
US 20070147496A1 · Sherigar · 2007 [cited by examiner]
US 20070153008A1 · Song · 2007 [cited by examiner]
US 20070211157A1 · Humpoletz et al. · 2007 [cited by applicant]
US 20070296849A1 · Sano et al. · 2007 [cited by applicant]
US 20080043842A1 · Nakaishi · 2008 [cited by examiner]
US 20080043845A1 · Nakaishi · 2008 [cited by examiner]
US 20080084491A1 · He et al. · 2008 [cited by applicant]
US 20080095240A1 · Choi et al. · 2008 [cited by applicant]
US 20080126278A1 · Bronstein et al. · 2008 [cited by applicant]
US 20090021612A1 · Hamilton, Jr. et al. · 2009 [cited by applicant]
US 20090153699A1 · Satoh et al. · 2009 [cited by applicant]
US 20090180539A1 · Kudana et al. · 2009 [cited by applicant]
US 20090244288A1 · Fujimoto et al. · 2009 [cited by applicant]
US 20090323810A1 · Liu · 2009 [cited by examiner]
US 20100002770A1 · Motta et al. · 2010 [cited by applicant]
US 20100034270A1 · Nagaraj · 2010 [cited by examiner]
US 20100086049A1 · Ye · 2010 [cited by examiner]
US 20100149393A1 · Zarnowski et al. · 2010 [cited by applicant]
US 20100226438A1 · Saunders et al. · 2010 [cited by applicant]
US 20100265316A1 · Sali et al. · 2010 [cited by applicant]
US 20100278269A1 · Andersson et al. · 2010 [cited by applicant]
US 20110268194A1 · Nagano · 2011 [cited by applicant]
US 20120020413A1 · Chen et al. · 2012 [cited by applicant]
US 20120033039A1 · Sasaki et al. · 2012 [cited by applicant]
US 20120044990A1 · Bivolarsky et al. · 2012 [cited by applicant]
US 20120147975A1 · Ju · 2012 [cited by applicant]
US 20120281924A1 · Coulombe et al. · 2012 [cited by applicant]
US 20130077690A1 · Wei · 2013 [cited by examiner]
US 20130101039A1 · Florencio · 2013 [cited by applicant]
US 20130163674A1 · Zhang · 2013 [cited by applicant]
US 20130208795A1 · Xu et al. · 2013 [cited by applicant]
US 20130265388A1 · Zhang et al. · 2013 [cited by applicant]
US 20130301727A1 · Huang et al. · 2013 [cited by applicant]
US 20130301732A1 · Hsu et al. · 2013 [cited by applicant]
US 20130322753A1 · Lim et al. · 2013 [cited by applicant]
US 20130329006A1 · Boles et al. · 2013 [cited by applicant]
US 20140161188A1 · Zhang et al. · 2014 [cited by applicant]
US 20140177726A1 · Okajima · 2014 [cited by applicant]
US 20140185688A1 · Kimura · 2014 [cited by examiner]
US 20150237356A1 · Wu et al. · 2015 [cited by applicant]
US 20150312588A1 · Yamamoto · 2015 [cited by examiner]
US 20160100186A1 · Gisquet et al. · 2016 [cited by applicant]
US 20160191946A1 · Zhou et al. · 2016 [cited by applicant]
US 20160286232A1 · Li et al. · 2016 [cited by applicant]
US 20160345018A1 · Sadhwani et al. · 2016 [cited by applicant]
US 20170006294A1 · Huang et al. · 2017 [cited by applicant]
US 20170134732A1 · Chen · 2017 [cited by applicant]
US 20170332099A1 · Lee et al. · 2017 [cited by applicant]
US 20180098070A1 · Chuang et al. · 2018 [cited by applicant]
US 20180124418A1 · Van Leuven et al. · 2018 [cited by applicant]
US 20180152699A1 · Kumar et al. · 2018 [cited by applicant]
US 20180302640A1 · Li et al. · 2018 [cited by applicant]
US 20180316929A1 · Li et al. · 2018 [cited by applicant]
US 20180343448A1 · Possos et al. · 2018 [cited by applicant]
US 20180359483A1 · Chen et al. · 2018 [cited by applicant]
US 20180376160A1 · Zhang et al. · 2018 [cited by applicant]
US 20190037227A1 · Holland et al. · 2019 [cited by applicant]
US 20190058882A1 · Hinz et al. · 2019 [cited by applicant]
US 20190110058A1 · Chien et al. · 2019 [cited by applicant]
US 20190141318A1 · Li et al. · 2019 [cited by applicant]
US 20190158882A1 · Chen et al. · 2019 [cited by applicant]
US 20190188829A1 · Wei · 2019 [cited by applicant]
US 20190200044A1 · Galpin et al. · 2019 [cited by applicant]
US 20190230376A1 · Hu et al. · 2019 [cited by applicant]
US 20190327484A1 · Grange et al. · 2019 [cited by applicant]
US 20200014918A1 · Levi et al. · 2020 [cited by applicant]
US 20200014945A1 · Levi et al. · 2020 [cited by applicant]
US 20200077116A1 · Lee et al. · 2020 [cited by applicant]
US 20200098132A1 · Kim · 2020 [cited by examiner]
US 20200245016A1 · Levi et al. · 2020 [cited by applicant]
US 20210168354A1 · Levi et al. · 2021 [cited by applicant]
US 20210250605A1 · Lee · 2021 [cited by applicant]
US 20220095007A1 · Levi et al. · 2022 [cited by applicant]
CN 107113422A · 2017 [cited by applicant]
EP 3151560A1 · 2017 [cited by applicant]
GB 2547754A · 2017 [cited by applicant]
JP 4824687B2 · 2011 [cited by applicant]
U.S. Appl. No. 17/898,496 Office Action dated Feb. 3, 2023. [cited by applicant]
U.S. Appl. No. 16/442,581 Office Action dated May 3, 2022. [cited by applicant]
U.S. Appl. No. 16/291,023 Office Action dated May 27, 2022. [cited by applicant]
U.S. Appl. No. 17/095,765 Office Action dated Jun. 9, 2022. [cited by applicant]
De Rivaz et al., “AV1 Bitstream & Decoding Process Specification”, pp. 1-681, Jan. 8, 2019. [cited by applicant]
Grange et al., “A VP9 Bitstream Overview draft-grange-vp9-bitstream-00”, Network Working Group, pp. 1-14, Feb. 18, 2013. [cited by applicant]
ITU-T Recommendation H.264., “Series H: Audiovisual and Multimedia Systems: Infrastructure of audiovisual services—Coding of moving video; Advanced video coding for generic audiovisual services”, pp. 1-282, May 2003. [cited by applicant]
ITU-T Recommendation H.265., “Series H: Audiovisual and Multimedia Systems: Infrastructure of audiovisual services—Coding of moving video; High efficiency video coding”, pp. 1-634, Apr. 2015. [cited by applicant]
Wikipedia., ‘Versatile Video Coding’, pp. 1-5, Feb. 22, 2019 (https://en.wikipedia.org/w/index.php?title=Versatile_Video_Coding&oldid=884627637). [cited by applicant]
Mellanox Technologies, “ConnectX®-5 EN Card,” Adapter Card Product Brief, pp. 1-4, year 2020. [cited by applicant]
“MainConcept Accelerates HEVC Encoding with NVIDIA RTX GPUs,” news article, MainConcept GmbH newsletter, pp. 1-4, Apr. 8, 2019, downloaded from https://www.mainconcept.com/company/news/news-article/article/mainconcept-a… [cited by applicant]
Sjoberg et al., “RTP Payload Format and File Storage Format for the Adaptive Multi-Rate (AMR) and Adaptive Multi-Rate Wideband (AMR-WB) Audio Codecs,” Network Working Group, Request for Comments 4867, pp. 1-59, Apr. 200… [cited by applicant]
Gharai et al., “RTP Payload Format for Uncompressed Video”, RFC 4175, Internet Engineering Task Force, Internet-Draft, pp. 1-14, Nov. 3, 2002. [cited by applicant]
SMPTE Standard 2022-6:2012—“Transport of High Bit Rate Media Signals over IP Networks (HBRMT)”, The Society of Motion Picture and Television Engineers, pp. 1-16, Oct. 9, 2012. [cited by applicant]
U.S. Appl. No. 17/095,765 Office Action dated Dec. 6, 2021. [cited by applicant]
CN Application # 2019106022492 Office Action dated Aug. 3, 2022. [cited by applicant]
U.S. Appl. No. 17/095,765 Office Action dated Sep. 22, 2022. [cited by applicant]
U.S. Appl. No. 16/291,023 Office Action dated Sep. 30, 2022. [cited by applicant]
U.S. Appl. No. 17/542,426 Office Action dated Nov. 4, 2022. [cited by applicant]
U.S. Appl. No. 17/095,765 Office Action dated Jan. 18, 2023. [cited by applicant]
U.S. Appl. No. 16/291,023 Office Action dated Jan. 28, 2022. [cited by applicant]
U.S. Appl. No. 17/095,765 Office Action dated Mar. 17, 2022. [cited by applicant]