CN107547896A - 一种基于CUDA的ProRes VLC编码 - Google Patents
一种基于CUDA的ProRes VLC编码 Download PDFInfo
- Publication number
- CN107547896A CN107547896A CN201610527204.XA CN201610527204A CN107547896A CN 107547896 A CN107547896 A CN 107547896A CN 201610527204 A CN201610527204 A CN 201610527204A CN 107547896 A CN107547896 A CN 107547896A
- Authority
- CN
- China
- Prior art keywords
- pieces
- thread
- thrid
- prores
- coefficient
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- HPTJABJPZMULFH-UHFFFAOYSA-N 12-[(Cyclohexylcarbamoyl)amino]dodecanoic acid Chemical compound OC(=O)CCCCCCCCCCCNC(=O)NC1CCCCC1 HPTJABJPZMULFH-UHFFFAOYSA-N 0.000 title claims abstract description 14
- 238000005457 optimization Methods 0.000 description 3
- 230000006835 compression Effects 0.000 description 2
- 238000007906 compression Methods 0.000 description 2
- 238000000034 method Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000007812 deficiency Effects 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
Landscapes
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
本发明公开了一种基于CUDA的ProRes VLC编码,对8×8块的DCT系数进行编码,每32个线程编码一个slice的所有所述8×8块,每一个所述线程编码一个所述8×8块的两个DCT系数,对于一个1920×1080视频序列而言,需要1020×32=32640个线程并行,对于一块高端GPU而言,远大于其能够并行的线程数,使得GPU可以满负载运行,从而提高了VLC编码的速度。
Description
技术领域
本发明涉及一种基于CUDA的ProRes VLC编码。
背景技术
ProRes是Apple定义的一种视频压缩标准。在ProRes标准中,一个slice包含8个16×16宏块(macroblock,以下简称MB),每个MB分为4个8×8的块,这样一个slice共有32个8×8的块。
VLC编码(变长编码Variable Length Coding)主要指对8×8块的DCT系数进行编码。
不同于其他的视频压缩标准,ProRes对DCT系数进行编码并不是以8×8块的顺序进行的,而是如图1中的EncodeSlice(id×)流程图所示,先编码所有8×8块的DC系数,再编码所有块的第一个AC系数,然后是所有块的第二个AC系数,以此类推,AC系数编码需要计算当前非零AC系数和前一个非零AC系数之间的值为0的系数个数。
这种编码方式意味着在一个slice内部所有DCT系数编码具有较强的相关性。因此通常情况下会采用如图1所示的Slice并行方式进行CUDA(由NVIDIA推出的并行计算架构)实现。
然而这个方式的并行度并不高。例如对于一个1920×1080的视频序列,每帧共有1020个slice,这意味着采用前述的slice并行算法最多就只能有1020个线程并行。而对于一块高端GPU,最多可并行处理16384线程,则GPU利用率只有6.25%,而且每个线程的运算量大,需要编码8×8×32=2048个系数。
发明内容
本发明的目的在于克服现有技术中的不足而提供一种基于CUDA的ProRes VLC编码。
为实现上述目的,一方面,本发明提供的一种基于CUDA的ProRes VLC编码,对8×8块的DCT系数进行编码,每32个线程编码一个slice的所有8×8块,每一个线程编码一个8×8块的两个DCT系数。
优选地,每一个线程编码一个8×8块的一个DC系数和一个AC系数,或每一个线程编码一个8×8块的两个AC系数。
优选地,具体算法步骤包括:
在一个slice中,一个线程独立编码一个8×8块的DC系数,在一个slice中包含32个8×8块,共采用32个线程;
32个线程同步处理;
第thrId X个线程,当thrId X大于0时编码所有8×8块的第2×thrId X个AC系数;
32个线程同步处理;
第thrId X个线程编码所有8×8块的第2×thrId X+1个AC系数;
32个线程同步处理;
第thrId X个线程编码第thrId X+1线程的前两个非零系数。
根据本发明提供的一种基于CUDA的ProRes VLC编码,对原有算法进行了分解,采用系数级并行优化方式,每32个线程处理一个slice的算法,每个线程编码两个DCT系数,对于一个1920×1080视频序列而言,需要1020×32=32640个线程并行,对于一块高端GPU而言,远大于其能够并行的线程数,使得GPU可以满负载运行,从而提高了VLC编码的速度。
附图说明
图1是现有的以ProRes标准对DCT系数进行编码的编码流程示意图;
图2是本发明一实施例的一种基于CUDA的ProRes VLC编码的编码流程示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本发明,而不能理解为对本发明的限制。
在本发明的描述中,需要理解的是,术语“中心”、“纵向”、“横向”、“长度”、“宽度”、“厚度”、“上”、“下”、“前”、“后”、“左”、“右”、“竖直”、“水平”、“顶”、“底”“内”、“外”、“顺时针”、“逆时针”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在本发明的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。
在本发明中,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”、“固定”等术语应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本发明中的具体含义。
请参阅图2,本发明一实施例提供了一种基于CUDA的ProRes VLC编码,对8×8块的DCT系数进行编码,每32个线程编码一个slice的所有8×8块,每一个线程编码一个8×8块的两个DCT系数。
其中,每一个线程编码一个8×8块的一个DC系数和一个AC系数,或每一个线程编码一个8×8块的两个AC系数。
具体地,本实施例的算法对原有算法进行分解,采用系数级并行优化方式处理,具体包括如下步骤:
步骤1:由于DC系数之间没有相关性,因此可以单独编码,在一个slice中,一个线程独立编码一个8×8块的DC系数,在一个slice中包含32个8×8块,共采用32个线程;
步骤2:32个线程同步处理;
步骤3:第thrId X个线程,当thrId X大于0时编码所有8×8块的第2×thrId X个AC系数,在这一步中,前两个非零系数编码时由于需要用到之前系数的信息,暂时不编码,其他系数可正常编码;
步骤4:32个线程同步处理;
步骤5:第thrId X个线程编码所有8×8块的第2×thrId X+1个AC系数;
步骤6:32个线程同步处理;
步骤7:第thrId X个线程编码第thrId X+1线程的前两个非零系数,即步骤3留下来的前两个AC系数。
本发明提供的这种基于CUDA的ProRes VLC编码,对原有算法进行了分解,采用系数级并行优化方式,每32个线程处理一个slice的算法,每个线程编码两个DCT系数,对于一个1920×1080视频序列而言,需要1020×32=32640个线程并行,对于一块高端GPU而言,远大于其能够并行的线程数,使得GPU可以满负载运行,从而提高了VLC编码的速度。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在不脱离本发明的原理和宗旨的情况下在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。
Claims (3)
1.一种基于CUDA的ProRes VLC编码,其特征在于,对8×8块的DCT系数进行编码,每32个线程编码一个slice的所有所述8×8块,每一个所述线程编码一个所述8×8块的两个DCT系数。
2.根据权利要求1所述的一种基于CUDA的ProRes VLC编码,其特征在于,每一个所述线程编码一个所述8×8块的一个DC系数和一个AC系数,或每一个所述线程编码一个所述8×8块的两个AC系数。
3.根据权利要求1所述的一种基于CUDA的ProRes VLC编码,其特征在于,具体算法步骤包括:
在一个所述slice中,一个所述线程独立编码一个所述8×8块的DC系数,在一个所述slice中包含32个所述8×8块,共采用32个所述线程;
32个所述线程同步处理;
第thrId X个线程,当thrId X大于0时编码所有8×8块的第2×thrId X个AC系数;
32个线程同步处理;
第thrId X个线程编码所有8×8块的第2×thrId X+1个AC系数;
32个线程同步处理;
第thrId X个线程编码第thrId X+1线程的前两个非零系数。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610527204.XA CN107547896B (zh) | 2016-06-27 | 2016-06-27 | 一种基于CUDA的Prores VLC编码方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610527204.XA CN107547896B (zh) | 2016-06-27 | 2016-06-27 | 一种基于CUDA的Prores VLC编码方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107547896A true CN107547896A (zh) | 2018-01-05 |
CN107547896B CN107547896B (zh) | 2020-10-09 |
Family
ID=60965971
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610527204.XA Expired - Fee Related CN107547896B (zh) | 2016-06-27 | 2016-06-27 | 一种基于CUDA的Prores VLC编码方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107547896B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101176089A (zh) * | 2005-05-16 | 2008-05-07 | 英特尔公司 | 使用多线程单指令多数据处理并行执行媒体编码 |
CN101267564A (zh) * | 2008-04-16 | 2008-09-17 | 中国科学院计算技术研究所 | 一种多处理器视频编码芯片装置和方法 |
CN102404561A (zh) * | 2010-09-14 | 2012-04-04 | 盛乐信息技术(上海)有限公司 | 在cuda上实现mpeg4i帧编码的方法 |
CN103716644A (zh) * | 2013-12-05 | 2014-04-09 | 南京肯麦思智能技术有限公司 | 一种h264多粒度并行的处理方法 |
CN104041050A (zh) * | 2012-01-20 | 2014-09-10 | 高通股份有限公司 | 多线程纹理解码 |
US20140254669A1 (en) * | 2013-03-05 | 2014-09-11 | Qualcomm Incorporated | Parallel processing for video coding |
-
2016
- 2016-06-27 CN CN201610527204.XA patent/CN107547896B/zh not_active Expired - Fee Related
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101176089A (zh) * | 2005-05-16 | 2008-05-07 | 英特尔公司 | 使用多线程单指令多数据处理并行执行媒体编码 |
CN101267564A (zh) * | 2008-04-16 | 2008-09-17 | 中国科学院计算技术研究所 | 一种多处理器视频编码芯片装置和方法 |
CN102404561A (zh) * | 2010-09-14 | 2012-04-04 | 盛乐信息技术(上海)有限公司 | 在cuda上实现mpeg4i帧编码的方法 |
CN104041050A (zh) * | 2012-01-20 | 2014-09-10 | 高通股份有限公司 | 多线程纹理解码 |
US20140254669A1 (en) * | 2013-03-05 | 2014-09-11 | Qualcomm Incorporated | Parallel processing for video coding |
CN103716644A (zh) * | 2013-12-05 | 2014-04-09 | 南京肯麦思智能技术有限公司 | 一种h264多粒度并行的处理方法 |
Non-Patent Citations (1)
Title |
---|
HAKON KVALE等: "Tips, Tricks and Troubles: Optimizing for Cell and GPU", 《PROCEEDINGS OF THE 20TH INTERNATIONAL WORKSHOP ON NETWORK AND OPERATION SYSTEMS SUPPORT FOR DIGITAL AUDIO AND VIDEO》 * |
Also Published As
Publication number | Publication date |
---|---|
CN107547896B (zh) | 2020-10-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2022003790A (ja) | 複数の隣接する量子化パラメータから量子化パラメータ予測子を決定する方法及び装置 | |
CN102577379B (zh) | 用于视频编码和译码中的嵌入量化参数调节的方法和装置 | |
CN101335897B (zh) | 图像压缩/解码方法及系统 | |
CN101374242B (zh) | 一种应用于3dtv与ftv系统的深度图编码压缩方法 | |
BRPI0511860A (pt) | método de codificação sem perdas para imagens com movimento, e aparelho de codificação sem perdas de imagens com movimento | |
CN104469365B (zh) | 一种视频编码装置和方法 | |
CN104038764B (zh) | 一种h.264到h.265的视频转码方法及转码器 | |
MXPA05007344A (es) | Metodo para seleccionar una imagen de referencia. | |
RU2011106333A (ru) | Оптимизация кодера в системах доставки стереоскопического видео | |
WO2010039731A3 (en) | Video coding with large macroblocks | |
WO2010039733A3 (en) | Video coding with large macroblocks | |
CN104272737B (zh) | 图像编码方法和装置及其相关图像解码方法和装置 | |
CN107222748B (zh) | 图像数据码率的处理方法和装置 | |
WO2009063554A1 (ja) | 符号化装置および復号装置 | |
CN102098501B (zh) | 一种视频图像去块效应的方法和装置 | |
CN105812804B (zh) | 一种确定rdoq过程中最优量化值的方法及装置 | |
EP1959688A3 (en) | Bitrate reduction method by requantization | |
CN107197311A (zh) | 基于四叉树编码和解码自适应量化参数的方法及装置 | |
CN103561270B (zh) | 一种用于hevc的编码控制方法及装置 | |
CN101971633A (zh) | 压缩参考帧的视频编码系统 | |
CN104754335B (zh) | 一种视频编码码率控制方法 | |
CN103096056A (zh) | 矩阵编码方法与装置及解码方法与装置 | |
JP2014504815A (ja) | コードストリーム情報の再利用によるh264トランスコード方法 | |
MY151963A (en) | Data processing apparatus, the method and coding apparatus | |
CN106488227A (zh) | 一种视频参考帧管理方法和系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB02 | Change of applicant information |
Address after: 310000 A Block, 16th Floor, E Building, Paradise Software Park, No. 3 Xidoumen Road, Hangzhou City, Zhejiang Province Applicant after: HANGZHOU ARCVIDEO TECH Co.,Ltd. Address before: 310000 B2010, two floor, North (two), six and 368 Road, Binjiang District, Hangzhou, Zhejiang. Applicant before: HANGZHOU DANGHONG TECHNOLOGY Co.,Ltd. |
|
CB02 | Change of applicant information | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20201009 |