CN103716644A - 一种h264多粒度并行的处理方法 - Google Patents
一种h264多粒度并行的处理方法 Download PDFInfo
- Publication number
- CN103716644A CN103716644A CN201310645144.8A CN201310645144A CN103716644A CN 103716644 A CN103716644 A CN 103716644A CN 201310645144 A CN201310645144 A CN 201310645144A CN 103716644 A CN103716644 A CN 103716644A
- Authority
- CN
- China
- Prior art keywords
- frame
- parallel
- data
- level
- queue
- 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.)
- Pending
Links
Landscapes
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
本发明涉及一种H264多粒度的并行处理方法,H264编码层次结构中,按照并行粒度从大到小可以分为帧级、片级和数据级;所述的H264多粒度并行包括帧级并行、片级并行和数据级并行三种,处理方法是利用arm指令集对向量操作实施数据运算的并行;多粒度的并行使程序具有更好的局部性以提高Cache命中率,提高CPU的执行效率。
Description
技术领域
本发明涉及一种3G视频传输的编解码方法,尤其涉及一种H264多粒度并行的处理方法。
背景技术
视频监控***作为面向城市公共安全综合管理的物联网应用中智慧安防和智慧交通的重要组成部分,有着广阔的应用前景。随着社会城市化水平的不断发展,传统的视频监控***的瓶颈正在显现。解决这一问题的核心技术即是视频结构化描述技术改造传统的视频监控***,使之形成新一代的视频监控***———智慧化、语义化、情报化的语义视频监控***。视频监控***技术的核心是视频的编解码,为了更好的兼容各个硬件平台,需要使用软解码配合硬解码共同完成图像的编解码工作。目前基于android平台开发的3G手机视频监控***,普遍存在图像画质不清晰,显示滞后时间长的问题,其根本原因在于软编解码算法大多是基于传统的DSP 平台或者嵌入式linux平台开发,其对算法的优化工作也是基于上述平台进行,而针对android***的算法优化还不完善,所以需要针对android***的arm平台进行优化。
目前android平台的软件解码方式,在640*480分辨率下,只能达到每秒钟10帧的极限的编解码速度,要达到比较流畅的用户体验,需要将编解码速度提高到15帧每秒以上。
发明内容
所要解决的技术问题:针对以上问题本发明提出利用软编解码和硬编解码配合使用的技术方案,多粒度的并行使程序具有更好的局部性以提高Cache命中率,提高CPU的执行效率。
技术方案:为了解决以上问题,本发明提供了一种H264多粒度的并行处理方法,H264编码层次结构中,按照并行粒度从大到小可以分为帧级、片级和数据级;其特征在于:所述的H264多粒度并行包括帧级并行、片级并行和数据级并行三种,处理方法是利用arm指令集对向量操作实施数据运算的并行,获得可观的加速比;具体的如下:
1.1数据级并行
H264多粒度并行编码的数据级并行主要包括以下两个方面:
1.1.1 基于多媒体扩展指令集的数据级并行
所述的基于多媒体扩展指令集的数据级并行运用了MMX/SSE2和AltiVec技术,多核处理器内嵌了多媒体指令集,该多媒体指令集通过对数据实行向量化运算从而达到并行处理的效果;所述的多媒体指令集是SIMD的扩展;所述SIMD是指在执行向量操作时一条指令可以同时对多个数据组成一个向量进行运算;
1.1.2 异构多核下DCT变换的数据级并行
数据级并行是针对异构多核平台的特点将拥有大计算量的模块划分到从核上进行计算,通过把大宏块划分成子块,在从核上对多个划分后的子块进行DCT 变换,最后再合并大宏块的DCT变换结果;对16×16大小宏块进行划分,分成4个8×8 大小的子块,把这4个子块的DCT 变换分别在从核上创建线程来执行,在每个子块DCT 变换执行完成之后再把子块变换结果传回到主核从而完成整个16×16宏块的DCT变换;
1.2片级并行
所述的片级并行是通过把帧图像数据单元平均划分成多个片数据块,然后每个片同时创建线程进行并行编码,编码过程中加入片头信息,编码完成后再依次把各片数据组合成一帧图像数据。
1.3.帧级并行
H264 编码中,I是内部编码帧,不需要参考其它帧,P帧需要前向的I 帧作为参考,B 是双向预测帧,需要前向和后向的I或者P帧作为其参考帧;
1.3.1帧级并行算法设计中实现并行I/P 帧和B 帧编码同步的方法是对I/P 帧和B 帧实行分开存储;
所述的分开存储就是对读入的图像序列决定帧类型之后,如果是I/P帧就按照编码顺序进行I/P 帧入队操作,否则则进行B 帧入队操作,由于并行粒度的边界是I或者P 帧,因此并行分析首先从I/P 帧编码线程发起,具体的:
如果I/P 帧队列非空,则从队列中取出一个I/P 帧,根据编码并行分析再从B 帧队列中取出可以与该I/P 帧并行的编码B 帧,创建多个线程实施帧级并行处理;
当从I/P 帧队列中取出P 帧,通过帧号对应关系取出该P 帧编码之前所有的可并行B 帧,包括落后于当前P 帧编码帧的B 帧来控制并行编码的同步;对应关系如式:
f(P)- f(B)>=T+2
其中 f(P)为编码P帧帧号,f(B)为编码B帧帧号,T为B帧设置参数;
当从I/P 帧队列中取出I帧,说明此I帧之前的所有图像帧的参考帧都已存在,因此在对该I帧进行编码之前,首先把B帧队列中的所有可编码帧全部取出创建编码线程实施并行编码,随后再对该I帧,新GOP的初始帧,进行编码;
1.3.2在帧级并行算法设计中,实现编码码流按照编码帧号顺序写回的方法是定义一个特殊的网络提取层结构队列,具体的算法设计如下:
编码开始时创建固定长度的网络提取层数据队列,此网络提取层队列总共有三种状态:A既不包含帧号也不包含码流的数据单元、B只包含帧号的数据单元、C 包含帧号和完整码流的数据单元;
网络提取层队列的初始状态都是A,当每次对编码图像判断帧类型进行入队操作之后,就在网络提取层队列中也进行一次入队操作,该入队操作只写入一个帧号信息,作为写入实际码流数据的依据,此时该队列中数据单元状态变为B;当指定的帧编码完后,就根据当前已编码完的帧号到网络提取层队列中查找与之对应的帧号的数据单元,把编码完的码流都写入进去,此时该数据单元状态变为C;由于读入图像序列和决定帧类型的顺序都是帧编码顺序,因此最终写完码流之后的网络提取层队列就是顺序的,输入输出线程再一起把数据写到磁盘文件中,网络提取层队列中数据单元的状态又从C变成A,回复到初始状态,如此循环;以此提高编码和解码速度。
有益的效果:
本发明使用多粒度并行程序设计技术,进行相关性分析,使程序具有更好的局部性以提高Cache命中率,提高CPU的执行效率,从而提高了提高编解码的速度。
具体实施方式
下面对本发明做进一步详细说明。
实施例:
一种H264多粒度的并行处理方法,H264编码层次结构中,按照并行粒度从大到小可以分为帧级、片级和数据级;所述的H264多粒度并行包括帧级并行、片级并行和数据级并行三种,处理方法是利用arm指令集对向量操作实施数据运算的并行,具体的如下:
1.1数据级并行
H264多粒度并行编码的数据级并行主要包括以下两个方面:
1.1.1 基于多媒体扩展指令集的数据级并行
所述的基于多媒体扩展指令集的数据级并行运用了MMX/SSE2和AltiVec技术,多核处理器内嵌了多媒体指令集,该多媒体指令集通过对数据实行向量化运算从而达到并行处理的效果;所述的多媒体指令集是SIMD的扩展;所述SIMD是指在执行向量操作时一条指令可以同时对多个数据组成一个向量进行运算;
1.1.2 异构多核下DCT变换的数据级并行
数据级并行是针对异构多核平台的特点将拥有大计算量的模块划分到从核上进行计算,通过把大宏块划分成子块,在从核上对多个划分后的子块进行DCT 变换,最后再合并大宏块的DCT变换结果;对16×16大小宏块进行划分,分成4个8×8 大小的子块,把这4个子块的DCT 变换分别在从核上创建线程来执行,在每个子块DCT 变换执行完成之后再把子块变换结果传回到主核从而完成整个16×16宏块的DCT变换;
1.2片级并行
所述的片级并行是通过把帧图像数据单元平均划分成多个片数据块,然后每个片同时创建线程进行并行编码,编码过程中加入片头信息,编码完成后再依次把各片数据组合成一帧图像数据。
1.3.帧级并行
H264 编码中,I是内部编码帧,不需要参考其它帧,P帧需要前向的I 帧作为参考,B 是双向预测帧,需要前向和后向的I或者P帧作为其参考帧;
1.3.1帧级并行算法设计中实现并行I/P 帧和B 帧编码同步的方法是对I/P 帧和B 帧实行分开存储;
所述的分开存储就是对读入的图像序列决定帧类型之后,如果是I/P帧就按照编码顺序进行I/P 帧入队操作,否则则进行B 帧入队操作,由于并行粒度的边界是I或者P 帧,因此并行分析首先从I/P 帧编码线程发起,具体的:
如果I/P 帧队列非空,则从队列中取出一个I/P 帧,根据编码并行分析再从B 帧队列中取出可以与该I/P 帧并行的编码B 帧,创建多个线程实施帧级并行处理;
当从I/P 帧队列中取出P 帧,通过帧号对应关系取出该P 帧编码之前所有的可并行B 帧,包括落后于当前P 帧编码帧的B 帧来控制并行编码的同步;对应关系如式:
f(P)- f(B)>=T+2
其中 f(P)为编码P帧帧号,f(B)为编码B帧帧号,T为B帧设置参数;
当从I/P 帧队列中取出I帧,说明此I帧之前的所有图像帧的参考帧都已存在,因此在对该I帧进行编码之前,首先把B帧队列中的所有可编码帧全部取出创建编码线程实施并行编码,随后再对该I帧,新GOP的初始帧,进行编码;
1.3.2在帧级并行算法设计中,实现编码码流按照编码帧号顺序写回的方法是定义一个特殊的网络提取层结构队列,具体的算法设计如下:
编码开始时创建固定长度的网络提取层数据队列,此网络提取层队列总共有三种状态:A既不包含帧号也不包含码流的数据单元、B只包含帧号的数据单元、C 包含帧号和完整码流的数据单元;
网络提取层队列的初始状态都是A,当每次对编码图像判断帧类型进行入队操作之后,就在网络提取层队列中也进行一次入队操作,该入队操作只写入一个帧号信息,作为写入实际码流数据的依据,此时该队列中数据单元状态变为B;当指定的帧编码完后,就根据当前已编码完的帧号到网络提取层队列中查找与之对应的帧号的数据单元,把编码完的码流都写入进去,此时该数据单元状态变为C;由于读入图像序列和决定帧类型的顺序都是帧编码顺序,因此最终写完码流之后的网络提取层队列就是顺序的,输入输出线程再一起把数据写到磁盘文件中,网络提取层队列中数据单元的状态又从C变成A,回复到初始状态,如此循环。
Claims (1)
1.一种H264多粒度的并行处理方法,H264编码层次结构中,按照并行粒度从大到小可以分为帧级、片级和数据级;其特征在于:所述的H264多粒度并行包括帧级并行、片级并行和数据级并行三种,处理方法是利用arm指令集对向量操作实施数据运算的并行,具体的如下:
1.1数据级并行
H264多粒度并行编码的数据级并行主要包括以下两个方面:
1.1.1 基于多媒体扩展指令集的数据级并行
所述的基于多媒体扩展指令集的数据级并行运用了MMX/SSE2和AltiVec技术,多核处理器内嵌了多媒体指令集,该多媒体指令集通过对数据实行向量化运算从而达到并行处理的效果;所述的多媒体指令集是SIMD的扩展;所述SIMD是指在执行向量操作时一条指令可以同时对多个数据组成一个向量进行运算;
1.1.2 异构多核下DCT变换的数据级并行
数据级并行是针对异构多核平台的特点将拥有大计算量的模块划分到从核上进行计算,通过把大宏块划分成子块,在从核上对多个划分后的子块进行DCT 变换,最后再合并大宏块的DCT变换结果;对16×16大小宏块进行划分,分成4个8×8 大小的子块,把这4个子块的DCT 变换分别在从核上创建线程来执行,在每个子块DCT 变换执行完成之后再把子块变换结果传回到主核从而完成整个16×16宏块的DCT变换;
1.2片级并行
所述的片级并行是通过把帧图像数据单元平均划分成多个片数据块,然后每个片同时创建线程进行并行编码,编码过程中加入片头信息,编码完成后再依次把各片数据组合成一帧图像数据;
1.3.帧级并行
H264 编码中,I是内部编码帧,不需要参考其它帧,P帧需要前向的I 帧作为参考,B 是双向预测帧,需要前向和后向的I或者P帧作为其参考帧;
1.3.1帧级并行算法设计中实现并行I/P 帧和B 帧编码同步的方法是对I/P 帧和B 帧实行分开存储;
所述的分开存储就是对读入的图像序列决定帧类型之后,如果是I/P帧就按照编码顺序进行I/P 帧入队操作,否则则进行B 帧入队操作,由于并行粒度的边界是I或者P 帧,因此并行分析首先从I/P 帧编码线程发起,具体的:
如果I/P 帧队列非空,则从队列中取出一个I/P 帧,根据编码并行分析再从B 帧队列中取出可以与该I/P 帧并行的编码B 帧,创建多个线程实施帧级并行处理;
当从I/P 帧队列中取出P 帧,通过帧号对应关系取出该P 帧编码之前所有的可并行B 帧,包括落后于当前P 帧编码帧的B 帧来控制并行编码的同步;对应关系如式:
f(P)- f(B)>=T+2
其中 f(P)为编码P帧帧号,f(B)为编码B帧帧号,T为B帧设置参数;
当从I/P 帧队列中取出I帧,说明此I帧之前的所有图像帧的参考帧都已存在,因此在对该I帧进行编码之前,首先把B帧队列中的所有可编码帧全部取出创建编码线程实施并行编码,随后再对该I帧,新GOP的初始帧,进行编码;
1.3.2在帧级并行算法设计中,实现编码码流按照编码帧号顺序写回的方法是定义一个特殊的网络提取层结构队列,具体的算法设计如下:
编码开始时创建固定长度的网络提取层数据队列,此网络提取层队列总共有三种状态:A既不包含帧号也不包含码流的数据单元、B只包含帧号的数据单元、C 包含帧号和完整码流的数据单元;
网络提取层队列的初始状态都是A,当每次对编码图像判断帧类型进行入队操作之后,就在网络提取层队列中也进行一次入队操作,该入队操作只写入一个帧号信息,作为写入实际码流数据的依据,此时该队列中数据单元状态变为B;当指定的帧编码完后,就根据当前已编码完的帧号到网络提取层队列中查找与之对应的帧号的数据单元,把编码完的码流都写入进去,此时该数据单元状态变为C;由于读入图像序列和决定帧类型的顺序都是帧编码顺序,因此最终写完码流之后的网络提取层队列就是顺序的,输入输出线程再一起把数据写到磁盘文件中,网络提取层队列中数据单元的状态又从C变成A,回复到初始状态,如此循环。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310645144.8A CN103716644A (zh) | 2013-12-05 | 2013-12-05 | 一种h264多粒度并行的处理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310645144.8A CN103716644A (zh) | 2013-12-05 | 2013-12-05 | 一种h264多粒度并行的处理方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN103716644A true CN103716644A (zh) | 2014-04-09 |
Family
ID=50409146
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310645144.8A Pending CN103716644A (zh) | 2013-12-05 | 2013-12-05 | 一种h264多粒度并行的处理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103716644A (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106534922A (zh) * | 2016-11-29 | 2017-03-22 | 努比亚技术有限公司 | 视频解码装置及方法 |
CN107547896A (zh) * | 2016-06-27 | 2018-01-05 | 杭州当虹科技有限公司 | 一种基于CUDA的ProRes VLC编码 |
CN110832875A (zh) * | 2018-07-23 | 2020-02-21 | 深圳市大疆创新科技有限公司 | 视频处理方法、终端设备、机器可读存储介质 |
WO2020078253A1 (zh) * | 2018-10-15 | 2020-04-23 | 华为技术有限公司 | 图像块的变换、反变换方法和装置 |
CN111131836A (zh) * | 2019-12-13 | 2020-05-08 | 苏州羿景睿图信息科技有限公司 | 一种基于fpga的jpeg2000编码并行运算方法 |
CN111541941A (zh) * | 2020-05-07 | 2020-08-14 | 杭州趣维科技有限公司 | 一种移动端多编码器加速编码的方法 |
CN113596556A (zh) * | 2021-07-02 | 2021-11-02 | 咪咕互动娱乐有限公司 | 视频传输方法、服务器及存储介质 |
CN117934532A (zh) * | 2024-03-22 | 2024-04-26 | 西南石油大学 | 一种图像边缘检测并行优化方法及*** |
-
2013
- 2013-12-05 CN CN201310645144.8A patent/CN103716644A/zh active Pending
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107547896A (zh) * | 2016-06-27 | 2018-01-05 | 杭州当虹科技有限公司 | 一种基于CUDA的ProRes VLC编码 |
CN107547896B (zh) * | 2016-06-27 | 2020-10-09 | 杭州当虹科技股份有限公司 | 一种基于CUDA的Prores VLC编码方法 |
CN106534922A (zh) * | 2016-11-29 | 2017-03-22 | 努比亚技术有限公司 | 视频解码装置及方法 |
CN110832875A (zh) * | 2018-07-23 | 2020-02-21 | 深圳市大疆创新科技有限公司 | 视频处理方法、终端设备、机器可读存储介质 |
WO2020078253A1 (zh) * | 2018-10-15 | 2020-04-23 | 华为技术有限公司 | 图像块的变换、反变换方法和装置 |
CN111131836A (zh) * | 2019-12-13 | 2020-05-08 | 苏州羿景睿图信息科技有限公司 | 一种基于fpga的jpeg2000编码并行运算方法 |
CN111541941A (zh) * | 2020-05-07 | 2020-08-14 | 杭州趣维科技有限公司 | 一种移动端多编码器加速编码的方法 |
CN111541941B (zh) * | 2020-05-07 | 2021-10-29 | 杭州小影创新科技股份有限公司 | 一种移动端多编码器加速编码的方法 |
CN113596556A (zh) * | 2021-07-02 | 2021-11-02 | 咪咕互动娱乐有限公司 | 视频传输方法、服务器及存储介质 |
CN117934532A (zh) * | 2024-03-22 | 2024-04-26 | 西南石油大学 | 一种图像边缘检测并行优化方法及*** |
CN117934532B (zh) * | 2024-03-22 | 2024-06-04 | 西南石油大学 | 一种图像边缘检测并行优化方法及*** |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103716644A (zh) | 一种h264多粒度并行的处理方法 | |
CN105992008B (zh) | 一种在多核处理器平台上的多层次多任务并行解码方法 | |
CN108206937B (zh) | 一种提升智能分析性能的方法和装置 | |
CN106454354B (zh) | 一种avs2并行编码处理***及方法 | |
CN101710986A (zh) | 基于同构多核处理器的h.264并行解码方法和*** | |
CN102098503A (zh) | 一种多核处理器并行解码图像的方法和装置 | |
CN104604235A (zh) | 用于视频处理的发送装置及其方法 | |
CN103188521A (zh) | 转码分配方法及装置,转码方法及设备 | |
CN104539972A (zh) | 一种多核处理器中视频并行解码的控制方法和装置 | |
CN103297777A (zh) | 一种用于加速视频编码速度的方法及装置 | |
MX2021002489A (es) | Metodo y aparato de interprediccion bidireccional. | |
US20190279330A1 (en) | Watermark embedding method and apparatus | |
Wang et al. | A collaborative scheduling-based parallel solution for HEVC encoding on multicore platforms | |
CN105100803A (zh) | 视频解码优化方法 | |
Wang et al. | Parallel H. 264/AVC motion compensation for GPUs using OpenCL | |
Ge et al. | Efficient multithreading implementation of H. 264 encoder on Intel hyper-threading architectures | |
KR102296987B1 (ko) | 기계 학습 모델에 기초한 블록 체인을 이용한 hevc 분산형 복호화 방법, 장치 및 시스템 | |
CN109413432B (zh) | 基于事件和共享内存机制的多进程编码方法、***及装置 | |
CN101902643B (zh) | 并行阵列式帧内预测解码器vlsi结构设计方法 | |
CN101466037A (zh) | 一种软硬件配合的视频解码器实现方法 | |
CN103327340A (zh) | 一种整数搜索方法及装置 | |
RU2015103130A (ru) | Устройство кодирования видео с предсказанием, способ кодирования видео с предсказанием, программа кодирования видео с предсказанием, устройство декодирования видео с предсказанием, способ декодирования видео с предсказанием и программа декодирования видео с предсказанием | |
CN104956677A (zh) | 组合的并行流水线视频编码器 | |
Gong et al. | Cooperative DVFS for energy-efficient HEVC decoding on embedded CPU-GPU architecture | |
RU2014119878A (ru) | Способ кодирования видео с предсказанием движения, устройство кодирования видео с предсказанием движения, программа кодирования видео с предсказанием движения, способ декодирования видео с предсказанием движения, устройство декодирования видео с предсказанием движения и программа декодирования видео с предсказанием движения |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20140409 |