一种基于OpenMP线程嵌套的视频流压缩解压方法及系统
未命名
07-15
阅读:115
评论:0

一种基于openmp线程嵌套的视频流压缩解压方法及系统
技术领域
1.本发明属于图像处理技术领域,具体涉及一种基于openmp线程嵌套的视频流压缩解压方法及系统。
背景技术:
2.由于具有本地硬件投入成本低、云端资源利用率高等优势,近年来远程虚拟桌面应用的使用场景越来越多。但是,由于网络带宽限制,远程桌面系统不得不采用高压缩比的数据压缩算法,减少传输数据量,尽量避免网络拥塞现象产生,从而保证体验流畅性。高压缩比算法耗时更长,数据失真更大,特别是在视频、实时渲染和游戏等高数据传输场景,目前远程虚拟桌面的体验较差。
3.目前远程虚拟桌面的串行视频数据处理方式为在远程服务器端的“抓取视频帧”、“压缩”及“传输”,以及在本地客户端的“接收”、“解压缩”及“渲染”等步骤。该六个步骤串行进行,其中的压缩步骤,使用mjpeg利用jpeg编码对每一帧进行串行处理,jpeg编码主要涉及色相变换、取样、dct、量化、rle编码、范式huffman编码、dc(直流分量)的编码,耗时较长,往往不能满足显示的实时性需求。jpeg编码流程如图1所示。
4.目前在园区网、楼宇网和局域网中,可以通过全光纤组网的方式将网络带宽提升至10gbps,特别是fttr技术的发展,局域网内终端带宽将突破50gbps。目前并没有适合高带宽场景下的远程虚拟桌面视频压缩解压算法。
5.在高带宽场景可以对视频帧数据进行轻量压缩,尽量降低压缩耗时的同时,保证解压缩后视频质量。
6.并行化也是提高压缩、解压缩效率的有效方法,openmp是用于共享内存并行系统的多处理器程序设计的一套指导性编译处理方案。其提供对并行算法的高层抽象描述,特别适合在多核cpu机器上的并行程序设计,且是一种能透过高阶指令,很简单地将程序并行化、多线程化的api。在最简单的情形,openmp甚至只加一行指令就可以将程序并行化处理。
技术实现要素:
7.本发明所要解决的技术问题在于针对上述现有技术中的不足,提供一种基于openmp线程嵌套的视频流压缩解压方法及系统,用于解决视频流处理过程耗时过长的技术问题。
8.本发明采用以下技术方案:
9.一种基于openmp线程嵌套的视频流压缩解压方法,包括以下步骤:
10.s1、采用并行流水线处理视频帧数据;
11.s2、对原生jpeg编码进行精简,将rgb数据压缩成ycbcr数据进行传输,在外层线程运用并行流水线对步骤s1得到的视频帧数据进行处理的情况下,采用openmp线程嵌套,以多线程方式处理视频帧数据的压缩和解压缩。
12.具体的,步骤s1中,采用openmp多线程并行技术实现并行流水线处理。
13.进一步的,并行流水线的架构包括服务器端和客户端,服务器端和客户端之间通过socket进行通信。
14.更进一步的,服务器端有帧率模拟、多线程压缩和socket传输三线程;客户端有socket接收、多线程解压缩和opengl渲染三线程,六线程间通过判断输入队列是否为空进行执行,不为空并行执行,为空循环等待。
15.具体的,步骤s2中,对原生jpeg编码进行精简具体为:
16.将包括dct之后的编码步骤进行剔除,保留色相变换和取样两步骤。
17.具体的,步骤s2中,压缩并行的线程数thread_num为分块处理的数量,每个线程有对应的压缩起始行号line_on和压缩结束行号up_limit,针对压缩的色相变换公式采用bt601标准,对ycbcr或yuv数据下取样,转换公式使用移位操作进行计算;
18.解压缩并行的线程数thread_num为分块处理的数量,每个线程有对应的解压缩起始行号line_on和解压缩结束行号up_limit,使用simd并针对解压缩的色相变换公式采用bt601标准,对ycbcr或yuv数据上取样,转换公式使用移位操作进行计算。
19.进一步的,并行解压缩过程中,当计算出r1、g1和b1后,对r2、g2和b2进行减y1和加y2操作。
20.进一步的,使用4:2:0的方式对ycbcr或yuv数据下取样或上取样。
21.进一步的,将一帧竖向划分成多块等大的区域,对每块区域进行多线程并行执行;如不能将视频帧均分,将最后两块区域合并为一块,且区域间互不影响,每块区域采用一个线程利用色相变换及取样算法进行计算处理。
22.第二方面,本发明实施例提供了一种基于openmp线程嵌套的视频流压缩解压系统,包括:
23.视频处理模块,采用并行流水线处理视频帧数据;
24.压缩解压模块,对原生jpeg编码进行精简,将rgb数据压缩成ycbcr数据进行传输,在外层线程运用并行流水线对视频处理模块1得到的视频帧数据进行处理的情况下,采用openmp线程嵌套,以多线程方式处理视频帧数据的压缩和解压缩。
25.与现有技术相比,本发明至少具有以下有益效果:
26.一种基于openmp线程嵌套的视频流压缩解压方法,步骤s1采用并行流水线处理视频帧数据,可以提高视频处理的效率和速度;具体来说,通过将视频帧数据划分为多个块,每个块交给不同的处理单元处理,可以实现并行计算,从而加快视频帧的处理速度;步骤s2将rgb数据压缩成ycbcr或yuv数据进行传输,并采用openmp线程嵌套以多线程方式处理视频帧数据的压缩和解压缩,可以提高视频传输的效率和减少传输数据量。具体来说,由于人眼对亮度信号更加敏感,而色度信号对人眼的影响较小,因此在视频传输过程中只需要传输亮度信号和色度信号的部分数据,而将不必要的rgb数据进行压缩,从而减少传输的数据量。此外,采用openmp线程嵌套的方式可以同时利用多个cpu核心进行视频帧的压缩和解压缩,从而提高处理速度。
27.进一步的,openmp是一种基于共享内存的并行编程模型,它通过将任务分配给多个线程同时执行,充分利用了多核处理器的并行性;利用openmp线程嵌套的特性,将视频压缩和解压缩任务分配给多个线程同时执行,从而最大化地利用系统资源,进一步提高编解码速度。
28.进一步的,为了实现服务器端和客户端之间的通信,该方法采用了socket技术,通过网络将数据传输到服务器端或从服务器端获取处理结果;采用socket通信可以实现分布式处理,即将数据分散到不同的计算节点进行处理,提高了数据处理的并行度和效率;另外,socket通信还可以实现数据的实时传输和异步处理,从而提高数据处理的实时性和响应速度;同时,通过socket通信还可以将不同平台,不同系统的计算机连接起来,实现跨平台数据处理,具有较好的兼容性和扩展性,可以提高数据处理的效率、并行度、实时性和兼容性。
29.进一步的,通过使用多线程和队列的结构,可以充分利用多核cpu的计算能力,实现视频流的快速处理和传输;同时,采用队列的方式来协调不同线程之间的执行,避免了竞争条件和死锁的出现,提高了并行化处理的效率。
30.进一步的,在传统视频编码过程中,dct(离散余弦变换)是必要的一步,但也是计算量最大的一步;因此剔除了包括dct在内的编码步骤,保留了色相变换和取样两步骤,从而大幅降低了编码的计算复杂度和延迟,并且能够提高视频的编码速度和实时性。并且,色相变换和取样步骤主要是将rgb颜色空间转换为ycbcr或yuv颜色空间,并对yuv分量进行下采样;不仅可以在编码端进行,也可以在解码端进行,因此编解码器实现的灵活性更高;此外,这些步骤对图像质量的影响较小,因此在保证编码效率和实时性的同时,能够保持较好的视觉效果。
31.进一步的,步骤s2是压缩和解压缩的核心步骤,通过并行化线程数的设置,可以提高处理视频流的效率,减少处理时间。同时,采用bt601标准和ycbcr或yuv数据上的取样,可以保证对视频数据的处理符合广泛接受的标准,使得处理结果更具通用性;在色彩空间的转换中,采用移位操作进行计算可以大大提高运算速度,避免使用乘法和除法操作,从而减少计算时间。移位操作是一种快速的位运算,可以将数值的二进制表示向左或向右移动一定的位数,相当于进行乘法或除法运算,但是运算速度更快。因此,在视频处理中采用移位操作进行计算可以大大提高处理效率,加速视频数据的处理。
32.进一步的,采样方式为yuv420,每个像素的y分量对应一个颜色分量,而u和v分量是在水平和垂直方向上各隔一行或一列进行采样的。因此,对于一组连续的像素数据,每个像素的uv值都是共享的,而y值是唯一的。在该方法中,当计算出r1、g1和b1后,对r2、g2和b2进行减y1和加y2操作,其中y1和y2都是指连续的y分量数据;由于采用了yuv420方式,每个像素的u和v值都是在水平和垂直方向上各隔一行或一列进行采样的,相邻像素之间的y值通常不会有太大的变化;因此,将r2、g2和b2中的y1减去,可以使计算中的y1对相邻像素之间的r2、g2和b2值影响最小化,从而减少计算量;同时,将y2加上,可以根据相邻像素之间的y值的变化来调整r2、g2和b2的值,从而实现更加平滑的颜色过渡;所以,对r2、g2和b2进行减y1和加y2操作的目的是为了减少计算量并实现更加平滑的颜色过渡,同时结合采样yuv420方式的原理,使相邻像素之间的y值的影响最小化。
33.进一步的,使用4:2:0的方式对ycbcr或yuv数据进行下取样或上取样,即在水平和垂直方向上分别将cb和cr分量取样的数量降低一半,而保持y分量不变;这种取样方式在视频编码中得到广泛应用,因为它可以在降低视频数据量的同时,尽可能地保留图像的质量和细节;具体地说,对于ycbcr或yuv数据,y分量代表亮度信息,cb和cr分量代表色度信息;由于人眼对亮度的感知比对色度的感知更加敏感,因此在视频编码中,可以对色度信息进
行下取样或上取样来减少数据量,而不会显著影响视频的质量。同时,由于该方法中采用的是4:2:0的取样方式,即将水平和垂直方向上的cb和cr分量降低一半,可以有效地减少视频数据量,并且相对于其他采样方式,4:2:0取样的编码效率更高,且兼容性更好。
34.进一步的,利用并行计算提高视频帧的处理速度,将一帧竖向划分成多块等大的区域后,对每块区域进行并行计算,从而提高整个视频帧的处理速度。采用多线程的方式,可以在同一时间内处理多块区域,从而实现并行计算,提高计算速度。同时,对于无法均分的视频帧,最后两块区域合并为一块,可以避免在处理过程中出现块内像素数据不完整的情况,保证计算结果的准确性。另外,区域间互不影响,可以保证计算过程的稳定性,避免不同区域之间的计算干扰。
35.可以理解的是,上述第二方面的有益效果可以参见上述第一方面中的相关描述,在此不再赘述。
36.综上所述,本发明提高了压缩解压速度和图像质量,降低了系统延迟和计算量,稳定性和可扩展性强。
37.下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。
附图说明
38.图1为jpeg压缩编码流程图;
39.图2为流水线和串行处理多帧对比图;
40.图3为视频流并行化流水线总体设计架构;
41.图4为精简jpeg编码方式;
42.图5为精简jpeg与原生jpeg在播放不同分辨率视频编码阶段耗时对比图;
43.图6为压缩线程嵌套图;
44.图7为四线程并行分块处理图;
45.图8为嵌套并行压缩与原生并行压缩在播放不同分辨率视频处理阶段耗时对比图;
46.图9嵌套并行解压缩与原生并行解压缩在播放不同分辨率视频处理阶段耗时对比图;
47.图10串行处理与嵌套并行处理在压缩-传输-解压缩视频处理阶段耗时对比图。
具体实施方式
48.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
49.在本发明的描述中,需要理解的是,术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
50.还应当理解,在本发明说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本发明。如在本发明说明书和所附权利要求书中所使用的那样,除非上下
文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。
51.还应当进一步理解,在本发明说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
52.应当理解,尽管在本发明实施例中可能采用术语第一、第二、第三等来描述预设范围等,但这些预设范围不应限于这些术语。这些术语仅用来将预设范围彼此区分开。例如,在不脱离本发明实施例范围的情况下,第一预设范围也可以被称为第二预设范围,类似地,第二预设范围也可以被称为第一预设范围。
53.取决于语境,如在此所使用的词语“如果”可以被解释成为“在
……
时”或“当
……
时”或“响应于确定”或“响应于检测”。类似地,取决于语境,短语“如果确定”或“如果检测(陈述的条件或事件)”可以被解释成为“当确定时”或“响应于确定”或“当检测(陈述的条件或事件)时”或“响应于检测(陈述的条件或事件)”。
54.在附图中示出了根据本发明公开实施例的各种结构示意图。这些图并非是按比例绘制的,其中为了清楚表达的目的,放大了某些细节,并且可能省略了某些细节。图中所示出的各种区域、层的形状及它们之间的相对大小、位置关系仅是示例性的,实际中可能由于制造公差或技术限制而有所偏差,并且本领域技术人员根据实际所需可以另外设计具有不同形状、大小、相对位置的区域/层。
55.本发明一种基于openmp线程嵌套的视频流压缩解压方法,包括以下步骤:
56.s1、采用流水线处理视频帧;
57.请参阅图2,相比已有视频帧数据串行“抓帧、压缩、传输、接收、解压缩和渲染”过程,本发明采用openmp多线程并行技术实现上述过程的并行流水线处理,实现同一时刻对不同视频帧进行不同处理,提高吞吐率和资源利用率,缩短整体处理时延。
58.请参阅图3,本发明流水线的架构中有两端,分别是服务器端(server)和客户端(client),两端之间通过socket进行通信。server端有帧率模拟、多线程压缩和socket传输三线程;client端有socket接收、多线程解压缩和opengl渲染三线程,六线程间通过判断输入队列是否为空进行执行,不为空并行执行,为空循环等待。
59.s2、压缩与解压缩策略;
60.s201、精简jpeg编码策略;
61.请参阅图4,对原生jpeg编码进行精简,将包括dct之后的编码步骤进行剔除,保留色相变换和取样两步骤,使rgb数据通过简单地轻量压缩成ycbcr数据进行传输。
62.s202、线程嵌套的并行优化策略;
63.请参阅图6,为传输和压缩流水线,压缩线程嵌套,针对于压缩和解压缩步骤,在外层线程已经运用流水线对视频帧进行处理的情况下,采用openmp线程嵌套,以多线程处理视频帧数据的压缩和解压缩。
64.openmp并行压缩与解压缩策略;
65.将一帧竖向划分成多块等大的区域,对每块区域进行多线程并行执行。如不能将视频帧均分,那么最后两块区域合并为一块,且区域间互不影响,每块区域采用一个线程利用色相变换及取样算法进行计算处理,如图7所示为4线程分块。
66.s2021、并行压缩策略
67.压缩并行的线程数thread_num既是分块处理的数量,每个线程都有自己的压缩起始行号line_on和压缩结束行号up_limit。针对压缩的色相变换公式采用bt601标准,使用4:2:0方式对ycbcr(yuv)数据下取样,转换公式使用移位操作进行计算,计算速度更快。
68.s2022、并行解压缩策略
69.解压缩并行的线程数thread_num既是分块处理的数量,每个线程都有自己的解压缩起始行号line_on和解压缩结束行号up_limit。进一步地,本发明使用simd并针对解压缩的色相变换公式同样采用bt601标准,使用4:2:0方式对ycbcr(yuv)数据上取样,转换公式使用移位操作进行计算,计算速度更快。其中,因两个y分量共用一个uv分量,当计算出r1、g1和b1后,对r2、g2和b2进行简单的减y1和加y2操作可以减少计算量和处理时间。
70.本发明再一个实施例中,提供一种基于openmp线程嵌套的视频流压缩解压系统,该系统能够用于实现上述基于openmp线程嵌套的视频流压缩解压方法,具体的,该基于openmp线程嵌套的视频流压缩解压系统包括视频处理模块以及压缩解压模块。
71.其中,视频处理模块,采用并行流水线处理视频帧数据;
72.压缩解压模块,对原生jpeg编码进行精简,将rgb数据压缩成ycbcr数据进行传输,在外层线程运用并行流水线对视频处理模块1得到的视频帧数据进行处理的情况下,采用openmp线程嵌套,以多线程方式处理视频帧数据的压缩和解压缩。
73.本发明再一个实施例中,提供了一种终端设备,该终端设备包括处理器以及存储器,所述存储器用于存储计算机程序,所述计算机程序包括程序指令,所述处理器用于执行所述计算机存储介质存储的程序指令。处理器可能是中央处理单元(central processing unit,cpu),还可以是其他通用处理器、数字信号处理器(digital signal processor、dsp)、专用集成电路(application specific integrated circuit,asic)、现成可编程门阵列(field-programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,其是终端的计算核心以及控制核心,其适于实现一条或一条以上指令,具体适于加载并执行一条或一条以上指令从而实现相应方法流程或相应功能;本发明实施例所述的处理器可以用于基于openmp线程嵌套的视频流压缩解压方法的操作,包括:
74.采用并行流水线处理视频帧数据;对原生jpeg编码进行精简,将rgb数据压缩成ycbcr数据进行传输,在外层线程运用并行流水线对视频帧数据进行处理的情况下,采用openmp线程嵌套,以多线程方式处理视频帧数据的压缩和解压缩。
75.本发明再一个实施例中,本发明还提供了一种存储介质,具体为计算机可读存储介质(memory),所述计算机可读存储介质是终端设备中的记忆设备,用于存放程序和数据。可以理解的是,此处的计算机可读存储介质既可以包括终端设备中的内置存储介质,当然也可以包括终端设备所支持的扩展存储介质。计算机可读存储介质提供存储空间,该存储空间存储了终端的操作系统。并且,在该存储空间中还存放了适于被处理器加载并执行的一条或一条以上的指令,这些指令可以是一个或一个以上的计算机程序(包括程序代码)。需要说明的是,此处的计算机可读存储介质可以是高速ram存储器,也可以是非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。
76.可由处理器加载并执行计算机可读存储介质中存放的一条或一条以上指令,以实
现上述实施例中有关基于openmp线程嵌套的视频流压缩解压方法的相应步骤;计算机可读存储介质中的一条或一条以上指令由处理器加载并执行如下步骤:
77.采用并行流水线处理视频帧数据;对原生jpeg编码进行精简,将rgb数据压缩成ycbcr数据进行传输,在外层线程运用并行流水线对视频帧数据进行处理的情况下,采用openmp线程嵌套,以多线程方式处理视频帧数据的压缩和解压缩。
78.为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。通常在此处附图中的描述和所示的本发明实施例的组件可以通过各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
79.针对流水线处理伪代码如下:
80.[0081][0082][0083]
以处理四帧为例,本发明采用流水线处理方式,整体时延比其他采用串行处理方式缩短62.5%。
[0084]
在server端,帧间处理时间从串行的抓帧、压缩和传输时间相加,到本发明并行的三操作之一的处理时间的最大值。
[0085]
在client端,帧间处理时间从串行的接收、解压缩和渲染时间相加,到本发明并行的三操作之一的处理时间的最大值,帧间处理时间缩短66.7%。
[0086]
精简jpeg与原生jpeg在编码时间上进行对比,测试数据均为多次取得数据,求平均值。
[0087]
请参阅图5,为具体的对比数据结果;本发明精简编码策略的编码耗时大幅降低。
[0088]
具体的,在480p、1080p、2k和4k分辨率条件下,本发明编码耗时分别降低了56%、61%、58%和52%。
[0089]
针对压缩的并行处理优化的伪代码如下:
[0090][0091]
请参阅图8,本发明在使用外层并行优化之后,针对压缩步骤使用线程嵌套,在处理算法上进行内层并行处理,极大地减少压缩耗时,对比原生并行压缩和嵌套并行压缩在480p、1080p、2k和4k视频分辨率处理耗时,压缩耗时减少87%、78%、83%和87%。
[0092]
针对解压缩的并行处理优化的伪代码如下:
[0093][0094]
请参阅图9,本发明在使用外层并行优化之后,针对解压缩步骤使用线程嵌套,在处理算法上进行内层并行处理,极大地减少解压缩耗时,对比原生并行解压缩和嵌套并行解压缩在480p、1080p、2k和4k视频分辨率处理耗时,解压缩耗时减少86%、65%、78%和69%。
[0095]
请参阅图10,本发明在压缩-传输-解压处理流程上,对串行处理和嵌套并行处理的整体耗时进行测验,在480p、1080p、2k和4k分辨率下,嵌套并行处理整体耗时比串行处理平均每帧减少81.5%、71.8%、81.8%和82.1%。
[0096]
综上所述,本发明一种基于openmp线程嵌套的视频流压缩解压方法及系统,针对传统远程桌面系统中视频传输显示卡顿或不能播放高分辨率的视频且视频流编解码处理耗时过长,不能保证实时性,客户端算力有限等问题,提出基于openmp线程嵌套的视频流压缩解压方法,首先在外层创建多个线程,并行执行抓帧、压缩、传输、接收、解压缩和渲染的操作,其次精简jpeg编码流程,针对压缩和解压缩使用线程嵌套,解决视频流在处理过程中耗时过长问题,有效的提高远程播放视频的支持分辨率和流畅性,进而节省客户端计算的工程开支,提高用户体验;提高了压缩解压速度:采用多线程并行计算,能够充分利用多核cpu的计算资源,提高了压缩解压速度;降低了系统延迟:使用流水线的架构和socket进行通信,可以使压缩和解压缩操作并行执行,降低了系统的延迟;降低了计算量:通过剔除dct编码步骤和采用移位操作的转换公式,减少了计算量;提高了图像质量:使用bt601标准和yuv420采样方式,能够更好地保留图像细节和色彩信息,提高了图像质量;稳定性、可扩展性强:将一帧视频竖向划分成多块区域,并利用多线程并行计算每块区域,使得方法的稳定
性更强,能够适应不同尺寸的视频流,通过socket进行通信,可以在不同的平台上进行编解码处理,具有很好的可扩展性。
[0097]
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本技术的保护范围。上述系统中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0098]
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
[0099]
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
[0100]
在本发明所提供的实施例中,应该理解到,所揭露的装置/终端和方法,可以通过其它的方式实现。例如,以上所描述的装置/终端实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,装置或单元的间接耦合或通讯连接,可以是电性,机械或其它的形式。
[0101]
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0102]
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
[0103]
所述集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、u盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(read-only memory,rom)、随机存取存储器(randomaccess memory,ram)、电载波信号、电信信号以及软件分发介质等,需要说明的是,
所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括是电载波信号和电信信号。
[0104]
本技术是参照根据本技术实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0105]
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0106]
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0107]
以上内容仅为说明本发明的技术思想,不能以此限定本发明的保护范围,凡是按照本发明提出的技术思想,在技术方案基础上所做的任何改动,均落入本发明权利要求书的保护范围之内。
技术特征:
1.一种基于openmp线程嵌套的视频流压缩解压方法,其特征在于,包括以下步骤:s1、采用并行流水线处理视频帧数据;s2、对原生jpeg编码进行精简,将rgb数据压缩成ycbcr数据进行传输,在外层线程运用并行流水线对步骤s1得到的视频帧数据进行处理的情况下,采用openmp线程嵌套,以多线程方式处理视频帧数据的压缩和解压缩。2.根据权利要求1所述的基于openmp线程嵌套的视频流压缩解压方法,其特征在于,步骤s1中,采用openmp多线程并行技术实现并行流水线处理。3.根据权利要求2所述的基于openmp线程嵌套的视频流压缩解压方法,其特征在于,并行流水线的架构包括服务器端和客户端,服务器端和客户端之间通过socket进行通信。4.根据权利要求3所述的基于openmp线程嵌套的视频流压缩解压方法,其特征在于,服务器端有帧率模拟、多线程压缩和socket传输三线程;客户端有socket接收、多线程解压缩和opengl渲染三线程,六线程间通过判断输入队列是否为空进行执行,不为空并行执行,为空循环等待。5.根据权利要求1所述的基于openmp线程嵌套的视频流压缩解压方法,其特征在于,步骤s2中,对原生jpeg编码进行精简具体为:将包括dct之后的编码步骤进行剔除,保留色相变换和取样两步骤。6.根据权利要求1所述的基于openmp线程嵌套的视频流压缩解压方法,其特征在于,步骤s2中,压缩并行的线程数thread_num为分块处理的数量,每个线程有对应的压缩起始行号line_on和压缩结束行号up_limit,针对压缩的色相变换公式采用bt601标准,对ycbcr或yuv数据下取样,转换公式使用移位操作进行计算;解压缩并行的线程数thread_num为分块处理的数量,每个线程有对应的解压缩起始行号line_on和解压缩结束行号up_limit,使用simd并针对解压缩的色相变换公式采用bt601标准,对ycbcr或yuv数据上取样,转换公式使用移位操作进行计算。7.根据权利要求6所述的基于openmp线程嵌套的视频流压缩解压方法,其特征在于,并行解压缩过程中,当计算出r1、g1和b1后,对r2、g2和b2进行减y1和加y2操作。8.根据权利要求6所述的基于openmp线程嵌套的视频流压缩解压方法,其特征在于,使用4:2:0的方式对ycbcr或yuv数据下取样或上取样。9.根据权利要求6所述的基于openmp线程嵌套的视频流压缩解压方法,其特征在于,将一帧竖向划分成多块等大的区域,对每块区域进行多线程并行执行;如不能将视频帧均分,将最后两块区域合并为一块,且区域间互不影响,每块区域采用一个线程利用色相变换及取样算法进行计算处理。10.一种基于openmp线程嵌套的视频流压缩解压系统,其特征在于,包括:视频处理模块,采用并行流水线处理视频帧数据;压缩解压模块,对原生jpeg编码进行精简,将rgb数据压缩成ycbcr数据进行传输,在外层线程运用并行流水线对视频处理模块1得到的视频帧数据进行处理的情况下,采用openmp线程嵌套,以多线程方式处理视频帧数据的压缩和解压缩。
技术总结
本发明公开了一种基于OpenMP线程嵌套的视频流压缩解压方法及系统,采用并行流水线处理视频帧数据;对原生JPEG编码进行精简,将RGB数据压缩成YCbCr数据进行传输,在外层线程运用并行流水线对视频帧数据进行处理的情况下,采用OpenMP线程嵌套,以多线程方式处理视频帧数据的压缩和解压缩。有效提高远程播放视频的支持分辨率和流畅性,节省客户端计算的工程开支,提高用户体验。提高用户体验。提高用户体验。
技术研发人员:伍卫国 张占坤 王今雨 李孟涵 唐新龙 马春苗
受保护的技术使用者:西安交通大学
技术研发日:2023.04.12
技术公布日:2023/7/12
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
飞机超市 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/