CN116600134A - 一种适配图形引擎的并行视频压缩方法和装置 - Google Patents
一种适配图形引擎的并行视频压缩方法和装置 Download PDFInfo
- Publication number
- CN116600134A CN116600134A CN202310487507.3A CN202310487507A CN116600134A CN 116600134 A CN116600134 A CN 116600134A CN 202310487507 A CN202310487507 A CN 202310487507A CN 116600134 A CN116600134 A CN 116600134A
- Authority
- CN
- China
- Prior art keywords
- frame
- parallel
- prediction
- intra
- reconstruction
- 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
- 230000006835 compression Effects 0.000 title claims abstract description 61
- 238000007906 compression Methods 0.000 title claims abstract description 61
- 238000000034 method Methods 0.000 title claims abstract description 60
- 230000033001 locomotion Effects 0.000 claims abstract description 100
- 239000013598 vector Substances 0.000 claims abstract description 91
- 230000003287 optical effect Effects 0.000 claims abstract description 31
- 238000001914 filtration Methods 0.000 claims description 87
- 238000012545 processing Methods 0.000 claims description 15
- 238000013139 quantization Methods 0.000 claims description 11
- 230000009466 transformation Effects 0.000 claims description 10
- 238000004806 packaging method and process Methods 0.000 claims description 8
- 238000012216 screening Methods 0.000 claims description 8
- 239000011159 matrix material Substances 0.000 claims description 7
- 230000003044 adaptive effect Effects 0.000 claims description 6
- 238000004590 computer program Methods 0.000 claims description 6
- 230000003139 buffering effect Effects 0.000 claims description 4
- 238000004364 calculation method Methods 0.000 description 27
- 239000000872 buffer Substances 0.000 description 17
- 238000004422 calculation algorithm Methods 0.000 description 11
- 238000010586 diagram Methods 0.000 description 11
- 238000009877 rendering Methods 0.000 description 8
- 238000003860 storage Methods 0.000 description 7
- 238000005516 engineering process Methods 0.000 description 6
- 238000005538 encapsulation Methods 0.000 description 4
- 241000023320 Luma <angiosperm> Species 0.000 description 3
- 230000001133 acceleration Effects 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 3
- 238000011161 development Methods 0.000 description 3
- OSWPMRLSEDHDFF-UHFFFAOYSA-N methyl salicylate Chemical compound COC(=O)C1=CC=CC=C1O OSWPMRLSEDHDFF-UHFFFAOYSA-N 0.000 description 3
- 230000003190 augmentative effect Effects 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 238000012856 packing Methods 0.000 description 2
- 238000005192 partition Methods 0.000 description 2
- 238000005070 sampling Methods 0.000 description 2
- 108091026890 Coding region Proteins 0.000 description 1
- 241000150392 Fig mosaic emaravirus Species 0.000 description 1
- 238000007792 addition Methods 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000003384 imaging method Methods 0.000 description 1
- 238000011065 in-situ storage Methods 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000010606 normalization Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000008521 reorganization Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000007619 statistical method Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/42—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/134—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
- H04N19/157—Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
- H04N19/159—Prediction type, e.g. intra-frame, inter-frame or bidirectional frame prediction
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/80—Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation
- H04N19/82—Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation involving filtering within a prediction loop
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/90—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
- H04N19/91—Entropy coding, e.g. variable length coding [VLC] or arithmetic coding
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
本发明公开了一种适配图形引擎的并行视频压缩方法和装置,支持帧内预测和帧间预测模式,在GPU并行计算下,针对帧内预测通过梯度信息确定候选预测模式并筛选最优预测模式进行帧内重建,针对帧间预测利用图形引擎提供的运动信息和深度信息并行计算光流向量,将光流向量作为运动估计输入进行更快速且更精确的运动向量的计算,并根据运动向量进行运动补偿后进行帧间重建,重建后同样采用GPU进行并行压缩,大大提升了压缩效率同时降低了计算开销,非常适合图形引擎输出视频的高效低计算成本压缩。
Description
技术领域
本发明涉及视频压缩和实时绘制技术领域,具体涉及一种适配图形引擎的并行视频压缩方法和装置。
背景技术
近年来,随着云计算的迅速发展,云绘制技术在数字娱乐、游戏、虚拟现实、增强现实等领域得到了广泛的关注。云绘制技术通过将计算密集型的图形绘制任务部署到云端,使得用户无需拥有高性能的本地设备也能够享受到高质量、低延迟的图形应用体验。
云绘制技术最基础的应用形式是云游戏,通过将游戏运行在云端,将游戏画面实时流式传输到用户设备上,用户可以通过网络实现与云端游戏服务器的交互,从而实现在计算性能较低的设备上玩高质量游戏的目的。除此之外,云绘制技术也被广泛应用于虚拟现实和增强现实等领域。在这些应用场景中,实时性是至关重要的,因为用户需要在短时间内感知到变化的情况,例如头部的移动、手势的变化等。云绘制技术通过在云端运行,能够为用户提供低延迟、高质量的图像和交互体验。
实现高质量、低延迟的云绘制技术需要克服一些技术难题,其中一个重要的难题是实现低延迟的视频编码。因为视频编码器的压缩算法会引入一定的延迟,而低延迟是云绘制技术实现实时性的关键。为此,需要研究和开发高效的视频编码算法,以及实现与图形引擎上下文兼容的编码器,以满足实时性的需求。
现有的实时视频压缩技术方案包括基于CPU、VLSI和FPGA的方案。基础的CPU方案利用CPU较强的单核性能执行串行压缩任务,从而可以获得更高的压缩质量。在传统的离线压缩场景下,CPU压缩方案可以充分挖掘帧间及帧内并行性,在可接受的时间内对原始视频进行高效压缩。但在云绘制场景中,编码器需要对实时生成的绘制结果进行即时压缩,CPU编码器通常需要放弃一定的并行性。这也导致CPU的压缩速率难以满足云绘制系统对实时性的要求。而专用VLSI芯片压缩方案相较CPU方案,可以获得高的视频压缩速率,但这种方案通常缺乏灵活性且价格昂贵。而FPGA可以被编程来实现高效的并行计算任务,因此适合于实时视频压缩场景。尽管FPGA方案的开发和维护成本较高,但相对于VLSI芯片来说,FPGA方案更加灵活,可以针对特定应用场景进行优化。但以上方案在图形引擎兼容上都存在一定的难度,通常都需要花费一定的时间进行绘制结果的传输。
因此,迫切需要一种实时并行视频压缩方法,兼容图形引擎,利用GPU的计算资源进行快速绘制结果压缩。
发明内容
鉴于上述,本发明的目的是提供一种适配图形引擎的并行视频压缩方法和装置,采用GPU进行并行压缩,大大提升了压缩效率同时降低了计算开销,适合图形引擎输出视频的高效低计算成本压缩。
为实现上述发明目的,实施例提供的一种适配图形引擎的并行视频压缩方法,实现对I帧视频帧的压缩,包括以下步骤:
将图形引擎输出的I帧视频帧转换到YUV格式;
将YUV格式的I帧视频帧进行包含多个宏块的分片划分后,将每个分片内所有宏块进行波面分组,形成有序波面序列,每个波面包含至少一个宏块;
在多分片模式下,采用GPU按照波面顺序对每个波面包含的所有宏块进行并行帧内预测和重建,具体包括:计算像素点的索伯算子并获得对应的梯度信息,通过并行统计不同方向预测模式下所有像素点的梯度信息来筛选候选预测模式,将除方向预测模式外的其他预测模式作为候选预测模式,通过并行计算所有候选预测模式下所有像素点的绝对差总和来决策最优预测模式,针对当前宏块内的像素点,依据相邻宏块的重建像素计算当前宏块所有像素点最优预测模式下的帧内预测值,基于帧内预测值进行帧内重建;
对重建像素进行并行环路去块滤波后,再进行并行熵编码。
在一个实施例中,所述通过并行统计不同方向预测模式下所有像素点的梯度信息来筛选候选预测模式,包括:
每个像素点的梯度信息包括梯度模长和梯度方向,每类方向预测模式对应专有梯度方向区间,依据梯度方向并行统计相似梯度方向对应的所有像素点的梯度模长和,筛选最大梯度模长和对应的梯度方向所在的梯度方向区间,并将所在梯度方向区间对应的方向预测模式作为候选预测模式;
所述通过并行计算所有候选预测模式下所有像素点的绝对差总和来决策最优预测模式,包括:
并行计算每个候选预测模式下像素点的帧内预测值,并基于帧内预测值与原始像素值之差来计算宏块的绝对差总和,筛选最小绝对差总和对应的候选预测模式为最优预测模式。
在一个实施例中,还实现对P帧视频帧的压缩,包括以下步骤:
将图形引擎输出的P帧视频帧转换到YUV格式,并将YUV格式的P帧视频帧划分为多个宏块;
对参考帧并行进行分数精度插值得到参考帧插值结果;
根据图形引擎输出的深度信息和运动信息并行计算所有宏块的光流向量;
采用GPU以光流向量为基础对所有宏块进行并行帧间预测和重建、重建像素的并行环路去块滤波、并行熵编码;其中,每个宏块的帧间预测和重建过程包括:以光流向量为依据在搜索窗口内对宏块进行并行运动估计得到运动向量,并依据运动向量和参考帧插值结果对宏块进行运动补偿后,依据运动补偿结果及原始宏块进行帧间重建。
在一个实施例中,所述根据图形引擎输出的深度信息和运动信息并行计算所有宏块的光流向量,包括:
通过屏幕空间像素坐标以及图形引擎输出的深度信息推导得到当前帧的NDC空间坐标和裁剪空间坐标;
依据当前帧的裁剪空间坐标和运动信息对应的变换矩阵计算参考帧的裁剪空间坐标;
依据参考帧的裁剪空间坐标计算参考帧的NDC空间坐标;
根据参考帧和当前帧的NDC空间坐标计算二维视频空间的光流向量。
在一个实施例中,所述以光流向量为依据在搜索窗口内对宏块进行并行运动估计得到运动向量,包括:
并行将宏块的光流向量在参考帧插中对应位置作为搜索窗口中心;
在搜索窗口内搜索不同分块模式下分块单元对应的所有候选运动向量的候选匹配单元,计算所有候选匹配单元与分块单元的像素绝对差总和后,通过筛选最小像素绝对差总和确定最优分块模式及各分块最优整数精度运动向量,进一步将各分块最优整数精度运动向量和其周围的分数精度运动向量进行比较最终获得最优运动向量。
在一个实施例中,还包括:采用与I帧视频帧相同的并行帧内预测方式对P帧的宏块进行并行帧内预测,即在多分片模式下,采用GPU按照波面顺序对每个波面包含的所有宏块进行并行帧内预测;
依据帧内预测的像素点绝对差总和帧间预测的像素点绝对差总和来决策P帧视频帧采用的最终帧内预测或帧间预测方式;
当P帧视频帧决策采用帧内预测方式时,采用与I帧视频帧相同的方式进行并行帧内重建。
在一个实施例中,针对I帧视频帧和P帧视频帧,所述帧内重建和所述帧间重建均包括变换、量化、反量化以及逆变换过程以得到重建像素,在对每个宏块进行量化过程中,还计算得到每个宏块的系数块及系数块中包含的非零系数数量,该非零系数数量与最优预测模式组成重建信息并存储。
在一个实施例中,针对I帧视频帧和P帧视频帧,对宏块的重建像素进行并行环路去块滤波,包括:
基于宏块的重建信息并行计算每个宏块的边缘滤波强度并预先存储;
依据预存的边缘滤波强度并行对宏块的亮度分量和色度分量分别环路去块滤波,去块滤波结果作为参考帧用于P帧视频帧的帧间预测。
在一个实施例中,针对I帧视频帧,采用并行CAVLC编码方式实现并行压缩,包括:
预先缓存系数块、最优预测模式;
对系数块进行扫描并统计非零系数数量;
对最优预测模式进行变长编码,同时依据非零系数数量对系数块进行变长编码后封装;
针对P帧视频帧,采用并行CAVLC编码方式实现并行熵编码,包括:
预先缓存系数块和依据每个采用帧间预测模式的宏块的运动向量计算的运动向量数据;
对系数块进行扫描并统计非零系数数量;
对运动向量数据进行变长编码,同时依据非零系数数量对系数块进行变长编码后封装。
为实现上述发明目的,实施例提供的一种适配图形引擎的并行视频压缩装置,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上执行的计算机程序,所述处理器执行所述计算机程序时实现上述适配图形引擎的并行视频压缩方法。
与现有技术相比,本发明具有的有益效果至少包括:
能够将图形引擎绘制的颜色纹理压缩为符合H.264/AVC标准的比特流,支持帧内预测和帧间预测模式,在GPU并行计算下,针对帧内预测通过梯度信息确定候选预测模式并筛选最优预测模式进行帧内重建,针对帧间预测利用图形引擎提供的运动信息和深度信息并行计算光流向量,将光流向量作为运动估计输入进行更快速且更精确的运动向量的计算,并根据运动向量进行运动补偿后进行帧间重建,重建后同样采用GPU进行并行熵编码,大大提升了压缩效率同时降低了计算开销,非常适合图形引擎输出视频的高效低计算成本压缩。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图做简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动前提下,还可以根据这些附图获得其他附图。
图1是实施例提供的适配图形引擎的并行视频压缩方法的流程图;
图2是实施例提供的帧内预测的并行模式示意图;
图3是实施例提供的并行环路去块滤波各步骤处理的MFP示意图;
图4是实施例提供的并行环路去块滤波流程示意图;
图5是实施例提供的并行环路去块滤波中存在的数据冲突示意图;
图6是实施例提供的并行环路去块滤波的色度滤波方案示意图;
图7是实施例提供的并行CAVLC编码示意图;
图8是实施例提供的各宏块的熵编码比特流并行封装方案示意图;
图9是实施例提供的并行参考帧插值流程示意图;
图10是实施例提供的分数精度像素插值示意图;
图11是实施例提供的并行运动估计的流程示意图;
图12是实施例提供的对运动估计进行分数精度优化示意图。
具体实施方式
为使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例对本发明进行进一步的详细说明。应当理解,此处所描述的具体实施方式仅仅用以解释本发明,并不限定本发明的保护范围。
图1是实施例提供的适配图形引擎的并行视频压缩方法的流程图,该压缩方法能够实现对I帧视频帧的并行压缩,同时还能够实现对P帧视频帧的并行压缩。将仅进行帧内预测的视频帧称作I帧,将进行帧间预测的视频帧称作P帧,当然,P帧也可选地进行帧内预测。图形引擎用作图像绘制,其封装有硬件操作和图形算法、简单易用、功能丰富的三维图形开发环境等,例如OGRE、OpenGVS、Vtree、OSG等。
针对I帧视频帧的压缩,包括以下步骤:
步骤1-1,将图形引擎输出的I帧视频帧转换到YUV格式。
图像引擎在绘制过程中会输出颜色空间的视频帧,为了方便压缩,将I帧视频帧由RGB颜色空间转换到YUV色度空间,即转换到YUV格式,在转换的同时还对YUV格式的I帧视频帧进行下采样,将亮度分量和色度分量分别存储于显存中。
步骤1-2,对将YUV格式的I帧视频帧进行分片和波面分组。
实施例中,将YUV格式的I帧视频帧进行宏块划分,同时还进行分片,每个分片包含多个宏块,还将每个分片内所有宏块的波面分组,形成有序波面序列,每个波面包含至少一个宏块。由于对当前宏块的帧内预测需要使用相邻宏块的重建像素进行预测,因此当前宏块的预测需要等待相邻宏块结束执行完像素重建,显然,成像重建的执行和帧内预测联系紧密,是一个不可延迟的执行阶段。因此,在每个分片中,根据帧内预测的数据依赖性,沿一个对角方向,仅有顶角相邻的多个宏块组成一个波面,图2示例性给出了部分划分结果,即具有同一标号的宏块组成一个波面,标号的数值约束了波面在序列中的排序。
为了充分挖掘帧内预测的并行性,提升宏块内及宏块间并行度,本实施例仅使用更适合在GPU上实现的16×16的帧内预测模式,避免4×4模式对宏块内并行度的影响。通过分析16×16模式下宏块间的数据依赖性,使用基于波面的方法,使同分片内的宏块以最高的并行度进行帧内预测和重建。另外,支持在多分片模式下的宏块并行编码,进一步提升宏块间并行度,实现画质与时延的权衡。
步骤1-3,在多分片模式下,采用GPU按照波面顺序对每个波面包含的所有宏块进行并行帧内预测和重建。
在多分片模式下,有序波面序列中波面要严格按照顺序执行计算,因为不同波面的宏块存在数据依赖性,而同波面的宏块可以在一个kernel内使用不同的线程块进行并行编码。
为了在GPU上高效地实现帧内预测和重建从而满足实时性需求,采用一种基于索伯算子的快速模式决策算法来提升帧内预测的速度,并将这种算法使用GPU进行并行实现。另外,为了便于在GPU上进行帧内预测模式选择,使用像素绝对差总和(SAD)来评价预测模式。其中,SAD的计算公式为:
其中,Borigin(x,y)表示当前宏块中坐标(x,y)的像素值,表示预测模式m下依据相邻像素计算得到的预测块的预测值。
实施例中,每个宏块的帧内重建过程包括:计算像素点的索伯算子并获得对应的梯度信息,通过统计不同方向预测模式下所有像素点的梯度信息来筛选候选预测模式,将除方向预测模式外的其他预测模式作为候选预测模式,通过计算所有候选预测模式下所有像素点的绝对差总和来决策最优预测模式,针对当前宏块内的像素点,依据相邻宏块的重建像素计算当前宏块所有像素点最优预测模式下的帧内预测值,基于帧内预测值进行帧内重建。具体地,为了检测进行帧内预测的宏块附近的边缘信息,对宏块中的每个像素计算索伯算子,获得对应的梯度向量,并从梯度向量中提取梯度方向和梯度模长组成梯度信息。索伯算子包含两个卷积核,分别表示水平方向和竖直方向的变化量。对于图像中的一个像素pi,j,它对应的梯度向量定义如下:
dxi,j=pi-1,j+1+2×pi,j+1+pi+1,j+1-pi-1,j-1-2×pi,j-1-pi+1,j-1
dyi,j=pi+1,j-1+2×pi+1,j+pi+1,j+1-pi-1,j-1-2×pi-1,j-pi-1,j+1
其中,dxi,j和dyi,j分别表示竖直方向和水平方向的像素变化量。采用以下公式来粗略基于梯度向量计算梯度模长
虽然可以使用开方的方式对梯度模长进行更精确的计算,但这种方法计算量大,没有必要采用。梯度向量的梯度角度可以采用以下公式获得:
实施例中,在获得每个像素点的梯度信息后,通过统计不同方向预测模式下所有像素点的梯度信息来筛选候选预测模式,包括:每个像素点的梯度信息包括梯度模长和梯度方向,每类方向预测模式对应专有梯度方向区间,依据梯度方向统计相似梯度方向对应的所有像素点的梯度模长和,筛选最大梯度模长和对应的梯度方向所在的梯度方向区间,并将所在梯度方向区间对应的方向预测模式作为候选预测模式。
具体地,对每个像素获得以上梯度信息后,为了进一步判断宏块附近是否包含边缘,并分析边缘的梯度方向、梯度模长等信息,实施例需要对像素的梯度进行统计。将梯度方向类似的像素归为一类,并计算类似方向的梯度模长和,最终统计为一个关于方向的直方图。由于H.264/AVC标准仅提供了有限的方向性帧内预测模式,因此可以根据预测模式的方向来进行直方图统计,并采用阈值方法对各像素的梯度方向进行分类。
在不考虑使用4×4预测模式的情况下,对于16×16的亮度块和8×8的色度块,H.264/AVC标准规定了四种预测模式,三个方向性模预测式、DC模式。因此,在直方图中,可以将边缘梯度分类为三个方向:水平、竖直和对角线方向。16×16的亮度分量和8×8的色度分量的直方图统计方法如下:
其中,k为0,1或3,分别表示竖直方向、水平方向和对角线方向预测模式,Histo(k)表示属于方向预测模式k的梯度模长和,SET(k)表示属于方向预测模式k所对应角度区间的像素集合,如上式所示,将宏块内的所有像素根据各自的梯度方向划分为三个集合,三种方向性预测模式的角度区间如下:
a0=,-112.5°,-67.5°)
a1=,-22.5°,22.5°)
a3=,-67.5°,-22.5°)
使用以上方式构建直方图,直方图的每个统计值表示有相似梯度方向的像素梯度模长和。一般情况下,直方图中统计值越大的模式,表示可能有更多的像素在相似方向的边缘上。因此,认为统计值最大方向更接近于宏块中的边缘方向,倾向于使用这个最大方向所在梯度方向区间对应的预测模式。
虽然,大多数宏块可以通过统计边缘梯度找到一个合适的预测模式,但可能存在某些宏块的三个预测方向的统计值类似,表明这个宏块上不存在一条具有方向性的边缘。此时,一般使用DC模式进行帧内预测。如果采用阈值方法来判断宏块中是否存在明显的边缘,则需要人为规定阈值,但通常很难确定一个全局的阈值。一方面为了避免使用阈值,一方面提升帧内编码决策质量,实施例将梯度统计值最大的预测模式作为候选预测模式,并将DC模式也作为候选预测模式。因此,对每个16×16的亮度分量,需要对两个候选预测模式分别计算SAD来进行最优预测模式的决策,具体地,将最小SAD对应的候选预测模式作为最优预测模式。
对于宏块的色度分量,采用与亮度分量相同的方式,色度Cb和色度Cr两个8×8块进行独立的边缘梯度统计,获得两个候选预测模式,另外,和亮度分量类似,仍然需要将DC模式作为候选预测模式。在某些情况下,Cb和Cr梯度统计的最佳模式可能一致。因此,对于色度分量,需要执行两个或三个候选预测模式的SAD计算来决策最优预测模式。
因此,这种利用宏块周围像素进行边缘梯度分析的方式可以高效地选择方向更匹配的预测模式,提升预测模式决策速度。另外,各像素的索伯算子计算适合使用GPU进行并行加速,直方图统计及SAD计算都可以使用GPU进行并行实现。
在确定最优预测模式之后,进行帧内重建,其中,帧内重建包括变换、量化、反量化以及逆变换过程以得到重建像素,在对每个宏块进行量化过程中,还计算得到每个宏块的系数块及系数块包含的非零系数数量,该非零系数数量与最优预测模式组成重建信息并存储用于后续滤波。
步骤1-4,基于宏块对重建像素进行并行环路去块滤波。
在获得I帧的帧内重建结果后,还对宏块的重建像素进行并行环路去块滤波,包括:首先基于宏块的重建信息计算每个宏块的边缘滤波强度并预先存储;依据预存的边缘滤波强度并行对宏块的亮度分量和色度分量分别环路去块滤波,去块滤波结果选作为参考帧用于P帧视频帧的帧间预测。
具体地,为了实现环路去块滤波器的并行化加速,实施例根据H.264/AVC对环路滤波器的规定,对亮度分量和色度分量分别进行独立的并行滤波。并行环路去块滤波器的实现分为三个阶段:边缘滤波强度(bS)的并行计算、亮度分量滤波和色度分量滤波。bS计算使用一个kernel实现,将计算结果作为后续滤波的输入。亮度分量与色度分量的滤波分别需要多个kernel进行并行实现。
具体地,bS根据亮度分量的非零系数数量与最优预测模式组成的重建信息计算得到。由于在亮度分量滤波和色度分量滤波中都要使用相同的bS,为了防止在后续滤波过程对bS的冗余计算,在滤波前先对所有宏块的bS进行预计算并存储于显存。
考虑到亮度滤波中复杂的数据依赖性,实施例使用多个kernel对输入帧进行处理。在每一轮基于宏块的并行处理中,将宏块中进行滤波的像素组成的块称为MFP(macroblock filter partition,宏块滤波块)。为了使并行滤波的结果和使用光栅化滤波的结果一致,即使所有像素达到标准的规定状态,需要使用若干次并行处理,对宏块的多个MFP进行滤波。在多轮处理中,某个MFP的滤波结果或未经滤波的原始像素都可以作为后续MFP滤波的输入。当某个MFP的滤波过程需要依赖于之前的MFP的输出,则需要进行一次同步,保证之前的MFP对应的并行处理结束后,它的输出对当前MFP的处理过程可见。实施例按照MFP的处理顺序进行编号,MFPn的滤波可能依赖于未滤波的原始帧和MFPm,m<n的滤波结果。
对各宏块的滤波过程如图3所示。在整个视频帧中划分出八种不同的MFP,并将每次并行滤波使像素达到的状态进行标记,共定义了四种像素状态:白色为未滤波的像素,浅灰色为之前的MFP中进行滤波的像素,深灰色为当前MFP中进行滤波的像素,圆形标记的像素为到达规定状态的像素。
在本实施例的实际实现中,对MFP1-8的滤波实际可以合并为六个步骤,即使用六个kernel进行滤波。为了实现对输入原始帧的原地并行滤波算法,即将GPU缓冲buf_0中的原始帧作为输入,将滤波结果输出至相同的缓冲,本实施例使用额外三个辅助缓冲。具体流程如图4所示。
观察MFP2和MFP3可知,这两个MFP的滤波可以使用一个kernel实现。在宏块层次的并行上,将每个并行单元的处理范围从当前宏块的右下部分扩展到下侧宏块的右上侧部分。这样划分并行单元的处理范围,可以避免上下宏块间产生滤波依赖。而这样的处理范围划分导致上下两个并行单元的读写像素区域存在交错。为了保证像素输入的正确性,在对MFP2和MFP3滤波时,将输入缓冲和输出缓冲进行区分,先将MFP1的输出buf_1'拷贝至buf_2,将buf_1'作为此轮滤波的输入,并将滤波结果写入buf_2。
如图5所示,宏块右下角为数据冲突发生的区域。对MFP4滤波时,需要读入图中的绿色区域。为了减少亮度块滤波使用的kernel数量,对MFP2和MFP3的滤波步骤进行了合并,这导致buf_2中的像素已经被MFP3的滤波进行写入,即图中虚线标记区域。为了使MFP4的滤波结果正确,在MFP2滤波结束后,需要将MFP4需要读入但在buf_2中被MFP3的滤波覆盖的像素写入buf_tmp。
需要写入buf_tmp的像素就是图中用虚线框标记的MFP3区域和绿色标记的MFP4读入区域的重叠区域,因此,在对MFP2的滤波结束后,每个宏块需要在buf_tmp中写入三个临时像素。另外,为了对右侧宏块的像素进行滤波,还需要读入buf_0中未滤波的右侧宏块的部分像素。
类似的,将当前宏块位于MFP7的像素块向下扩展到下侧相邻宏块的MFP8的上部,将MFP7和MFP8进行跨宏块合并后,使用一个kernel进行滤波。与MFP2和MFP3的滤波类似,当前宏块的部分滤波需要读入像素和上侧并行单元对当前宏块的像素写入存在数据冲突,因此,需要保证这一轮的kernel的输入输出使用不同的缓冲。另外,考虑到本实施例的目标是将最终结果写入buf_0中,于是在执行MFP7和MFP8的滤波之前,现将buf_2””拷贝到buf_0中,然后将buf_2””作为输入,将滤波结果写入buf_0。
在4:2:0的色度采样模式下,仅需要对两个8x8色度分量(Cb和Cr)进行滤波。根据H.264/AVC标准对色度块滤波的规定,仅对边缘两侧的像素p_0和q_0进行三抽头或四抽头滤波,在不同bS值下,色度滤波的滤波范围小于边之间的距离,像素之间不具有像亮度滤波那样强的数据依赖性。因此,对于色度块的并行滤波可以使用较为简单的并行实现。
对色度块进行序列化滤波时,对宏块按照光栅化顺序进行滤波,交错对竖直边和水平边进行处理,这导致宏块的角落上仍然存在数据依赖性。为了在并行化滤波后,使所有像素达到标准规定的状态,需要将8×8的色度块划分为如图6所示的四个MFP,每次对所有宏块的一个MFP进行并行处理。
四个MFP包括:中间的4×4区域MFPm,两个分别位于宏块左侧和右侧的2×4区域MFPs,两个位于宏块上侧和下侧的4×2区域MFPt和四个位于宏块角落的2×2区域MFPc。四个MFP的滤波是独立的不存在数据依赖。由于,除MFPm外的区域进行滤波的边紧邻相邻宏块,需要将这些区域的像素和相邻宏块的相邻MFP进行共同滤波。因此,只需要执行四轮滤波分别对四类MFP进行处理,就可使色度分量达到规定状态。
步骤1-5,基于宏块的并行熵编码。
实施例还对I帧视频帧并行熵编码,采用并行CAVLC编码方式实现并行熵编码,包括:预先缓存系数块、最优预测模式;对系数块进行扫描并统计非零系数数量;对最优预测模式进行变长编码,同时依据非零系数数量对系数块进行变长编码后封装。
为了能在GPU上对CAVLC编码进行加速,需要对传统CAVLC编码流程的模式进行优化,从而克服上述依赖性对其并行实现的限制。首先,需要保证在执行并行熵编码时,能使编码器访问到足够的编码信息,即在执行CAVLC之前保证帧间或帧内重建过程已经结束,视频帧重建过程的重建信息都已输出至GPU缓冲,其中,针对帧内重建,重建信息包括非零系数和最优编码模式。针对帧间编码,重建信息包括非零系数、运动向量。然后,为了使熵编码过程能访问足够的数据,如图7所示本实施例将并行CAVLC分为三个阶段:系数块扫描、熵编码和位封装。
实施例使用一个kernel实现系数块的之字形扫描。对宏块内所有需要熵编码的系数块单元按H.264规定的编码顺序进行重排后写入显存,便于后续编码阶段的访问,并提升其对片外存储的访问性能。同时,这个kernel在扫描系数块的同时,统计系数块非零系数的数量,并写入显存,保证这部分缓冲对执行熵编码的kernel可见。当熵编码kernel访问这个缓冲时,保证每个系数块都能获得其需要的相邻系数块参数nA和nB,从而解除了系数块间数据依赖性限制。
在熵编码阶段,本实施例使用一个kernel进行计算,并在系数块级和宏块级挖掘了CAVLC的并行性。考虑到系数块内极强的数据依赖性,本实施例保证各个系数块的编码完全由同一线程完成。另外,为了使宏块中最大的计算量来源——16个亮度AC系数块,能在最高的并行度下高速编码,实施例为一个宏块分配了16个线程。当对其他几类系数块进行编码时,则仅激活其中的部分线程。当多个线程进行并行编码时,它们各自将系数块生成的比特流写入对应的共享存储数组。当多个线程的并行编码结束后,需要激活一个线程将分布在多个数组的各系数块的比特流按顺序封装在一起。这个阶段的计算结束后,各宏块对应的比特流将独立存储在显存中。
由于H.264的熵编码采用变长编码,上述阶段输出的各个宏块的比特流长度各不相等。为了以并行方式将各宏块的比特流写入至最终输出的视频帧比特流的正确位置,实施例在执行并行位封装流程之前,先对各宏块对应的比特流长度执行并行前缀和算法,并将前缀和数列写入显存。封装阶段使用一个kernel,每个线程独立将对应宏块的比特流写入输出缓冲,宏块在输出缓冲的起始位置则需要根据当前宏块之前的宏块编码生成的比特流长度来计算。
另外,由于封装阶段输入的宏块比特流开头是按字对齐的,但实际输出中需要按位压缩,导致线程对输出缓冲中的若干存储单元(字)的写入存在冲突。为了防止线程对存储单元的访问冲突,实施例采用如图8所示的方式对比特流进行重新组装。首先,各线程读取对应宏块按字对齐的比特流后,根据前缀宏块的比特流长度和,可以计算当前宏块比特流需要向低位移位的位数。显然,移位后有部分比特位会不由当前线程写入输出缓冲,而是由前一个宏块对应的线程进行写入。随后,当前线程需要访问显存中后续宏块比特流的首个字,用这个字的部分比特位填补当前线程的比特流末尾不足一个字的部分。
这样的重组方式,保证了缓冲的各存储单元仅被一个线程写入。当线程从显存读入需要由它进行写入的所有比特流并进行重新移位封装后,将封装为整数个字的比特流写入输出缓冲。
在熵编码后,进行比特流拷贝及传输,为了便于在CPU上进行存储、传输等操作,需要将位于显存的比特流拷贝至CPU。使用异步下载的方式从而防止CPU计算资源空闲。
为了实现更高的压缩率本实施例对CABAC模式进行支持。考虑到CABAC的计算模式,不便于使用GPU进行并行化,实施例将显存中的编码参数、量化系数等拷贝至CPU,然后进行编码。
针对P帧视频帧的压缩,包括以下步骤:
步骤2-1,将图形引擎输出的P帧视频帧转换到YUV格式,并将YUV格式的P帧视频帧划分为多个宏块。
P帧视频帧采用与I帧视频帧相同的空间转化过程,具体详见步骤1-1。
步骤2-2,对参考帧进行分数精度插值得到参考帧插值结果。
实施例中,以预计算方式使用一个kernel对参考帧进行四分之一精度并行六阶FIR插值,得到参考帧插值结果以用于高精度运动估计计算。
实施例在一个线程块内执行一个宏块的分数精度插值。在更细的粒度上,使用四个线程负责4×4亮度块的插值。插值之前,使线程块中的线程以联合访问的方式将宏块插值所需要的像素读入共享存储中,保证每个4×4块插值所需的周围9×9像素范围都可在共享存储中访问。
如图9所示,4×4块插值所需要的9×9像素上下文存储在buf_src中。首先进行第一轮横向插值,计算buf_src中的整数精度像素Ii,j,i∈,0,3-,j∈,-2,6-右侧的半像素精度的pi,j(20)(20含义如图10所示,方块和圆形分别标记整数及分数精度像素),其中i和j分别为水平和竖直方向索引。各线程对负责的一列半精度像素ptid,j(20),j∈,-2,6-,tid∈,0,3-进行计算,tid为4×4像素块的本地线程序号,读取块buf_src,将插值结果写入块buf_h。
然后,使用buf_src中的Ix,y,x∈,0,3-,y∈,-2,6-,在Ii,j,i∈,0,3-,j∈,0,3-下侧进行纵向插值,使用H.264规定的权重获得pi,j(02),并将结果写入buf_v。接下来对buf_h中横向插值结果进行纵向插值,将计算结果写入buf_hv。最后,对各整数精度像素对应的12个四分之一精度像素进行插值。
步骤2-3,根据图形引擎输出的深度信息和运动信息计算所有宏块的光流向量。
具体地,当绘制引擎的图形管线将生成的图像输入视频压缩编码器时,通常已经不能在编码器中直接获得像素的裁剪空间坐标,因此,实施例不能直接使用重投影方法计算光流,而是通过屏幕空间像素坐标以及可访问的当前帧Z-buffer中的深度信息推导裁剪空间坐标然后在裁剪空间运用重投影算法获得参考帧的对应像素坐标,具体过程为:
(a)通过屏幕空间像素坐标以及图形引擎输出的深度信息推导得到当前帧的NDC空间坐标和裁剪空间坐标
其中,和表示过屏幕空间像素坐标,取值为深度信息,Dn和Df分别为近平面和远平面的距离,Vx,y和Vw,h为gl_ViewPort输入的四个参数,表示视点坐标和分辨率;
其中,E1=-1为透视投影矩阵Mprojection参数, 包含和
(b)依据当前帧的裁剪空间坐标和运动信息对应的变换矩阵计算参考帧的裁剪空间坐标
其中,Pprev表示参考帧表示运动信息的变换矩阵,表示当前帧表示运动信息的变换矩阵的逆矩阵,其中,包括和
(c)依据参考帧的裁剪空间坐标计算参考帧的NDC空间坐标,即对进行归一化处理得到NDC空间坐标
(d)根据参考帧和当前帧的NDC空间坐标计算二维视频空间的光流向量
其中,表示NDC空间的三维运动向量,和表示中x维和y维的分量,需要注意,二维视频空间的y轴和绘制引擎的y轴方向相反。另外,放缩向量需要考虑视频分辨率(Vw和Vh)以及H.264/AVC对四分之一像素分辨率运动向量的定义。
三维运动向量的深度信息还可以用来判断当前帧像素在参考帧中的对应位置是否存在遮蔽,遮蔽判断可以在运动估计中用于决策是否使用光流信息。
实施例中,为了降低光流向量的计算量,将每个16×16宏块中心位置作为光流计算的采样坐标。
步骤2-4,采用GPU以光流向量为基础对所有宏块进行并行帧间预测和帧间重建。
具体地,每个宏块的帧间预测和重建过程包括:以光流向量为依据在搜索窗口内对宏块进行运动估计得到运动向量,并依据运动向量和参考帧插值结果对宏块进行运动补偿后,依据运动补偿的结果及原始宏块进行帧间重建。
其中,以光流向量为依据在搜索窗口内对宏块进行运动估计得到运动向量,包括:根据需求选择一种以上分块模式;将宏块的光流向量在参考帧中对应位置作为搜索窗口中心;在搜索窗口内搜索不同分块模式下分块单元对应的所有候选运动向量的候选匹配单元,计算所有候选匹配单元与分块单元的像素绝对差总和后,通过筛选最小像素绝对差总和确定最优分块模式及各分块最优整数精度运动向量,进一步将各分块最优整数精度运动向量和其周围的分数精度运动向量进行比较最终获得最优运动向量。
具体地,实施例基于搜索窗口内的全匹配方案,以较小的计算量获得光流向量,使用光流来优化块尺寸可变的四分之一像素精度运动估计算法。支持16×16、16×8、8×16和8×8四种分块模式。具体实现时,首先将宏块分割为8×8的分块单元,在搜索范围内,并行计算所有候选运动向量对应的8×8分块单元的SAD值。然后,为了获得四种分块模式对应的SAD,对这些8×8分块单元的SAD进行合并。对于所有的分块模式中的所有分块,以并行方式计算其SAD值最小的整数精度运动向量IMV。最终,选择SAD值最小的模式并对其IMV进行四分之一像素精度的运动估计优化获得最佳MV作为运动估计的结果。具体流程如图11所示。
对于8×8分块单元使用一个kernel计算所有候选运动向量对应的SAD。假设搜索窗口尺寸为32×32,则每个块存在1024个候选运动向量。对于一个8×8的单元的一个候选运动向量,本实施例使用一个线程对其进行SAD计算。虽然每个线程的计算具有完全的独立性,但为了保证一个线程块内有足够的warp用于调度,为每个线程块分配256个线程以防止计算单元空闲。需要说明的是,候选运动向量是指基于分块单元与其在参考帧中候选匹配单元之间像素位置差值。
一般情况下,一个线程块内计算的所有SAD值都来自同一个8×8分块单元,此时,为了防止对片外存储的额外访问,在进行计算前先将8×8分块单元读入共享存储。减少对片外存储的访问可有效提升GPU计算的效率。线程块的计算结束后,线程将计算结果写入显存。
然后,基于上述计算的结果,为不同的宏块分割模式下不同尺寸的分块单元计算各候选运动向量对应的SAD代价。一个线程负责计算一个宏块一个候选运动向量对应的四种分块模式下的SAD,读入显存中宏块的四个8×8单元的计算结果,将合并的SAD写入显存。显然,这个kernel的每个线程的计算具有高度独立性,且所依赖的数据没有重叠。类似的,为每个线程块配置256个线程用于调度。
此时,对于四种分块模式下的所有分块单元,包括一个16×16、两个16×8、两个8×16和四个8×8的分块,已获得它们各自候选运动向量对应的SAD代价。为了获得每个分块单元在参考帧中的最优整数精度匹配,使用一个kernel来选择最小的SAD值及其对应的IMV。在一个线程块内计算一个宏块对应的不同模式下九个分块的最优SAD,线程块内执行九轮相似的并行最小值算法,最后将最小SAD值及其对应的IMV写入显存。
为了在参考帧中获得更精确的匹配单元,H.264/AVC支持了四分之一像素精度的运动向量(FMV)。为了进行更高精度的运动估计,本实施例已经在之前的步骤中对参考帧进行插值。本实施例在获得各模式下整数精度的最佳运动向量IMV后,为了进一步获得更精确的结果,在原始IMV周围搜索更优的更高精度匹配块。如图12所示,中央的正方形为IMV,周围的白色圆形和灰色圆形分别表示半像素精度和四分之一像素精度向量。
实施例使用一个kernel实现对整数精度运动向量的更高精度优化。使用上一轮kernel执行结束后的输出(宏块在四种分块模式下各分块单元的最小SAD代价及最优IMV),计算四种模式对应的SAD代价并选择最优模式及其对应的IMV,然后对所选模式的IMV进行优化,计算IMV周围的24个更高精度运动向量对应的SAD,并在24个SAD代价上执行并行最小值算法。最终,kernel将计算获得的最优分块模式及其对应的SAD和最优MV输出至显存。分析本轮kernel的计算模式,本实施例使用24个线程负责一个宏块的四分之一精度运动估计,另外,为了使线程块中有足够多的线程从而防止计算单元空闲,可以在一个线程块内分配四个甚至更多的宏块计算量。
在获得运动向量后,依据运动向量对宏块进行运动补偿,依据运动补偿的宏块和参考帧插值结果进行帧间重建。具体地,找到运动补偿的宏块在参考帧差值结果中对应的匹配块作为帧间预测块,基于该帧间预测块进行帧间重建,帧间重建同样包括变换、量化、反量化以及逆变换过程以得到重建像素,在对每个宏块进行量化过程中,还计算得到每个宏块亮度分量的非零系数及非零系数数量,该非零系数数量与运动向量组成重建信息并存储。由于帧间重建在宏块级上不存在上下文数据依赖,可以以更高的并行度获得加速。
由于P帧还可能采用帧内预测方式,因此,还包括采用与I帧视频帧相同的并行帧内预测方式对P帧的宏块进行并行帧内预测,即在多分片模式下,采用GPU按照波面顺序对每个波面包含的所有宏块进行并行帧内预测。依据帧内预测的像素点绝对差总和帧间预测的像素点绝对差总和来决策P帧视频帧采用的最终帧内预测或帧间预测方式;当P帧视频帧决策采用帧内预测方式时,采用与I帧视频帧相同的方式进行并行帧内重建。
具体地,在每一轮的若干个宏块组成的波面的帧内重建中,需要计算帧内预测模式的SAD并与帧间预测模式的SAD进行比较从而进行帧间/帧内预测模式决策。如果选择使用帧内预测模式进行重建,在计算完宏块的有损压缩结果后,需要将其写入缓冲对对应的帧间编码压缩结果进行覆盖。显然,进行每一轮波面的帧内预测时,从GPU缓冲读入的宏块上下文的有损压缩像素值是经过帧内或帧间编码的结果。
步骤2-5,宏块中重建像素的并行环路去块滤波。
在获得P帧的重建结果后,还对宏块的重建像素进行并行环路去块滤波,包括:首先基于宏块的重建信息计算每个宏块的边缘滤波强度并预先存储;依据预存的边缘滤波强度并行对宏块的亮度分量和色度分量分别环路去块滤波,去块滤波结果选作为参考帧用于P帧视频帧的帧间预测。具体地,与步骤1-3中对I帧的重建像素进行并行环路去块滤波相同,此处不再赘述。
步骤2-6,宏块的并行熵编码。
实施例还对P帧的宏块进行并行熵编码,采用并行CAVLC编码方式实现并行熵编码,包括:预先缓存系数块和依据每个采用帧间预测模式的宏块的运动向量计算的运动向量数据;对系数块进行扫描并统计非零系数数量;对运动向量数据进行变长编码,同时依据非零系数数量对系数块进行变长编码后封装。
具体地,根据H.264对运动向量MV进行熵编码的规定,实施例需要根据宏块上下文的MV对运动向量数量MVD进行计算。考虑MVD计算和NNZ计算存在相似的并行度,实施例使用一个kernel同时对MVD和NNZ进行计算。随后的CAVLC编码及封装流程与I帧部分一致,即对系数块进行扫描并统计非零系数;对统计的非零系数统计结果和MVD进行变长编码后封装。
在熵编码后,进行比特流拷贝及传输,针对P帧的比特流拷贝及传输方式与P帧相同,此处不再赘述。
基于同样的发明构思,实施例还提供了一种适配图形引擎的并行视频压缩装置,包括存储器、处理器以及存储在存储器中并可在所述处理器上执行的计算机程序,处理器执行所述计算机程序时实现三叔适配图形引擎的并行视频压缩方法,包括以下步骤:
针对I帧视频帧的压缩步骤,具体包括:步骤1-1,将图形引擎输出的I帧视频帧转换到YUV格式;步骤1-2,对将YUV格式的I帧视频帧进行分片和波面分组;步骤1-3,在多分片模式下,采用GPU按照波面顺序对每个波面包含的所有宏块进行并行帧内预测和重建;步骤1-4,基于宏块对重建像素进行并行环路去块滤波;步骤1-5,基于宏块的并行熵编码。
针对P帧视频帧的压缩步骤,具体包括:步骤2-1,将图形引擎输出的P帧视频帧转换到YUV格式,并将YUV格式的P帧视频帧划分为多个宏块;步骤2-2,对参考帧进行分数精度插值得到参考帧插值结果;步骤2-3,根据图形引擎输出的深度信息和运动信息计算所有宏块的光流向量;步骤2-4,采用GPU以光流向量为基础对所有宏块进行并行帧间预测和帧间重建;步骤2-5,宏块中重建像素的并行环路去块滤波;步骤2-6,宏块的并行熵编码。
其中,存储器可以为在近端的易失性存储器,如RAM,还可以是非易失性存储器,如ROM,FLASH,软盘,机械硬盘等,还可以是远端的存储云。计算机处理器可以为中央处理器(CPU)、微处理器(MPU)、数字信号处理器(DSP)、或现场可编程门阵列(FPGA)。
以上所述的具体实施方式对本发明的技术方案和有益效果进行了详细说明,应理解的是以上所述仅为本发明的最优选实施例,并不用于限制本发明,凡在本发明的原则范围内所做的任何修改、补充和等同替换等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种适配图形引擎的并行视频压缩方法,其特征在于,实现对I帧视频帧的压缩,包括以下步骤:
将图形引擎输出的I帧视频帧转换到YUV格式;
将YUV格式的I帧视频帧进行包含多个宏块的分片划分后,将每个分片内所有宏块进行波面分组,形成有序波面序列,每个波面包含至少一个宏块;
在多分片模式下,采用GPU按照波面顺序对每个波面包含的所有宏块进行并行帧内预测和重建,具体包括:计算像素点的索伯算子并获得对应的梯度信息,通过并行统计不同方向预测模式下所有像素点的梯度信息来筛选候选预测模式,将除方向预测模式外的其他预测模式作为候选预测模式,通过并行计算所有候选预测模式下所有像素点的绝对差总和来决策最优预测模式,针对当前宏块内的像素点,依据相邻宏块的重建像素计算当前宏块所有像素点最优预测模式下的帧内预测值,基于帧内预测值进行帧内重建;
对重建像素进行并行环路去块滤波后,再进行并行熵编码。
2.根据权利要求1所述的适配图形引擎的并行视频压缩方法,其特征在于,所述通过并行统计不同方向预测模式下所有像素点的梯度信息来筛选候选预测模式,包括:
每个像素点的梯度信息包括梯度模长和梯度方向,每类方向预测模式对应专有梯度方向区间,依据梯度方向并行统计相似梯度方向对应的所有像素点的梯度模长和,筛选最大梯度模长和对应的梯度方向所在的梯度方向区间,并将所在梯度方向区间对应的方向预测模式作为候选预测模式;
所述通过并行计算所有候选预测模式下所有像素点的绝对差总和来决策最优预测模式,包括:
并行计算每个候选预测模式下像素点的帧内预测值,并基于帧内预测值与原始像素值之差来计算宏块的绝对差总和,筛选最小绝对差总和对应的候选预测模式为最优预测模式。
3.根据权利要求1所述的适配图形引擎的并行视频压缩方法,其特征在于,还实现对P帧视频帧的压缩,包括以下步骤:
将图形引擎输出的P帧视频帧转换到YUV格式,并将YUV格式的P帧视频帧划分为多个宏块;
对参考帧进行并行分数精度插值得到参考帧插值结果;
根据图形引擎输出的深度信息和运动信息并行计算所有宏块的光流向量;
采用GPU以光流向量为基础对所有宏块进行并行帧间预测和重建、重建像素的并行环路去块滤波、并行熵编码;其中,每个宏块的帧间预测和重建过程包括:以光流向量为依据在搜索窗口内对宏块进行并行运动估计得到运动向量,并依据运动向量和参考帧插值结果对宏块进行运动补偿后,依据运动补偿结果及原始宏块进行帧间重建。
4.根据权利要求3所述的适配图形引擎的并行视频压缩方法,其特征在于,所述根据图形引擎输出的深度信息和运动信息并行计算所有宏块的光流向量,包括:
通过屏幕空间像素坐标以及图形引擎输出的深度信息推导得到当前帧的NDC空间坐标和裁剪空间坐标;
依据当前帧的裁剪空间坐标和运动信息对应的变换矩阵计算参考帧的裁剪空间坐标;
依据参考帧的裁剪空间坐标计算参考帧的NDC空间坐标;
根据参考帧和当前帧的NDC空间坐标计算二维视频空间的光流向量。
5.根据权利要求3所述的适配图形引擎的并行视频压缩方法,其特征在于,所述以光流向量为依据在搜索窗口内对宏块进行并行运动估计得到运动向量,包括:
并行将宏块的光流向量在参考帧中对应位置作为搜索窗口中心;
在搜索窗口内搜索不同分块模式下分块单元对应的所有候选运动向量的候选匹配单元,计算所有候选匹配单元与分块单元的像素绝对差总和后,通过筛选最小像素绝对差总和确定最优分块模式及各分块最优整数精度运动向量,进一步将各分块最优整数精度运动向量和其周围的分数精度运动向量进行比较最终获得最优运动向量。
6.根据权利要求3所述的适配图形引擎的并行视频压缩方法,其特征在于,还包括:采用与I帧视频帧相同的并行帧内预测方式对P帧的宏块进行并行帧内预测,即在多分片模式下,采用GPU按照波面顺序对每个波面包含的所有宏块进行并行帧内预测;
依据帧内预测的像素点绝对差总和帧间预测的像素点绝对差总和来决策P帧视频帧采用的最终帧内预测或帧间预测方式;
当P帧视频帧决策采用帧内预测方式时,采用与I帧视频帧相同的方式进行并行帧内重建。
7.根据权利要求1或3所述的适配图形引擎的并行视频压缩方法,其特征在于,针对I帧视频帧和P帧视频帧,所述帧内重建和所述帧间重建均包括变换、量化、反量化以及逆变换过程以得到重建像素,在对每个宏块进行量化过程中,还计算得到每个宏块的系数块及系数块中包含的非零系数数量,该非零系数数量与最优预测模式组成重建信息并存储。
8.根据权利要求7所述的适配图形引擎的并行视频压缩方法,其特征在于,针对I帧视频帧和P帧视频帧,对宏块的重建像素进行并行环路去块滤波,包括:
基于宏块的重建信息并行计算每个宏块的边缘滤波强度并预先存储;
依据预存的边缘滤波强度并行对宏块的亮度分量和色度分量分别环路去块滤波,去块滤波结果作为参考帧用于P帧视频帧的帧间预测。
9.根据权利要求7所述的适配图形引擎的并行视频压缩方法,其特征在于,针对I帧视频帧,采用并行CAVLC编码方式实现并行熵编码,包括:
预先缓存系数块、最优预测模式;
对系数块进行扫描并统计非零系数数量;
对最优预测模式进行变长编码,同时依据非零系数数量对系数块进行变长编码后封装;
针对P帧视频帧,采用并行CAVLC编码方式实现并行熵编码,包括:
预先缓存系数块和依据每个采用帧间预测模式的宏块的运动向量计算的运动向量数据;
对系数块进行扫描并统计非零系数数量;
对运动向量数据进行变长编码,同时依据非零系数数量对系数块进行变长编码后封装。
10.一种适配图形引擎的并行视频压缩装置,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上执行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1-9任一项所述的适配图形引擎的并行视频压缩方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310487507.3A CN116600134B (zh) | 2023-05-04 | 2023-05-04 | 一种适配图形引擎的并行视频压缩方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310487507.3A CN116600134B (zh) | 2023-05-04 | 2023-05-04 | 一种适配图形引擎的并行视频压缩方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116600134A true CN116600134A (zh) | 2023-08-15 |
CN116600134B CN116600134B (zh) | 2024-06-14 |
Family
ID=87594748
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310487507.3A Active CN116600134B (zh) | 2023-05-04 | 2023-05-04 | 一种适配图形引擎的并行视频压缩方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116600134B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117560494A (zh) * | 2024-01-11 | 2024-02-13 | 中国矿业大学 | 一种用于矿下低质视频快速增强的编码方法 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20040110755A (ko) * | 2003-06-20 | 2004-12-31 | 서종수 | 예측 모드 선택 방법과 그 장치, 그 방법을 이용한 동영상압축 방법과 그 장치를 포함한 동영상 부호화기 및 상기방법을 실행시키기 위한 프로그램을 기록한 컴퓨터 기록매체 |
JP2005142986A (ja) * | 2003-11-10 | 2005-06-02 | Matsushita Electric Ind Co Ltd | 動画像符号化方法、動画像符号化装置および動画像符号化プログラム |
CN101404774A (zh) * | 2008-11-13 | 2009-04-08 | 四川虹微技术有限公司 | 运动搜索中宏块划分模式的选择方法 |
CN102186070A (zh) * | 2011-04-20 | 2011-09-14 | 北京工业大学 | 分层结构预判的快速视频编码方法 |
US20120177119A1 (en) * | 2011-01-07 | 2012-07-12 | Sony Corporation | Faster motion estimation in an avc software encoder using general purpose graphic process units (gpgpu) |
US8374242B1 (en) * | 2008-12-23 | 2013-02-12 | Elemental Technologies Inc. | Video encoder using GPU |
CN107231558A (zh) * | 2017-05-23 | 2017-10-03 | 江苏火米互动科技有限公司 | 一种基于cuda的h.264并行编码器的实现方法 |
WO2020146341A1 (en) * | 2019-01-07 | 2020-07-16 | Futurewei Technologies, Inc. | Point cloud bitstream structure and auxiliary information differential coding |
CN115065825A (zh) * | 2022-06-07 | 2022-09-16 | 北京邮电大学 | 一种基于gpu的移动视频编解码系统 |
KR20230049568A (ko) * | 2021-10-06 | 2023-04-13 | 현대자동차주식회사 | 기하학적 분할 모드를 이용한 비디오 부호화/복호화 방법 및 장치 |
-
2023
- 2023-05-04 CN CN202310487507.3A patent/CN116600134B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20040110755A (ko) * | 2003-06-20 | 2004-12-31 | 서종수 | 예측 모드 선택 방법과 그 장치, 그 방법을 이용한 동영상압축 방법과 그 장치를 포함한 동영상 부호화기 및 상기방법을 실행시키기 위한 프로그램을 기록한 컴퓨터 기록매체 |
JP2005142986A (ja) * | 2003-11-10 | 2005-06-02 | Matsushita Electric Ind Co Ltd | 動画像符号化方法、動画像符号化装置および動画像符号化プログラム |
CN101404774A (zh) * | 2008-11-13 | 2009-04-08 | 四川虹微技术有限公司 | 运动搜索中宏块划分模式的选择方法 |
US8374242B1 (en) * | 2008-12-23 | 2013-02-12 | Elemental Technologies Inc. | Video encoder using GPU |
US20120177119A1 (en) * | 2011-01-07 | 2012-07-12 | Sony Corporation | Faster motion estimation in an avc software encoder using general purpose graphic process units (gpgpu) |
CN102186070A (zh) * | 2011-04-20 | 2011-09-14 | 北京工业大学 | 分层结构预判的快速视频编码方法 |
CN107231558A (zh) * | 2017-05-23 | 2017-10-03 | 江苏火米互动科技有限公司 | 一种基于cuda的h.264并行编码器的实现方法 |
WO2020146341A1 (en) * | 2019-01-07 | 2020-07-16 | Futurewei Technologies, Inc. | Point cloud bitstream structure and auxiliary information differential coding |
KR20230049568A (ko) * | 2021-10-06 | 2023-04-13 | 현대자동차주식회사 | 기하학적 분할 모드를 이용한 비디오 부호화/복호화 방법 및 장치 |
CN115065825A (zh) * | 2022-06-07 | 2022-09-16 | 北京邮电大学 | 一种基于gpu的移动视频编解码系统 |
Non-Patent Citations (2)
Title |
---|
ADRIAN BROWNE, TOMOHIRO IKAI, DMYTRO RUSANOVSKYY, XIAOYU XIU, YUE YU: "《High bit depth, high bit rate, and high frame rate coding》", 《JVET》, 31 January 2023 (2023-01-31), pages 1 - 3 * |
顾丽红, 王锐, 陈华才: "《基于龙芯SIMD技术的H.264视频解码优化》", 《计算机工程与设计》, vol. 38, no. 12, 31 December 2017 (2017-12-31), pages 3361 - 3368 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117560494A (zh) * | 2024-01-11 | 2024-02-13 | 中国矿业大学 | 一种用于矿下低质视频快速增强的编码方法 |
CN117560494B (zh) * | 2024-01-11 | 2024-03-19 | 中国矿业大学 | 一种用于矿下低质视频快速增强的编码方法 |
Also Published As
Publication number | Publication date |
---|---|
CN116600134B (zh) | 2024-06-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US12015854B2 (en) | Image data encoding/decoding method and apparatus | |
US11431902B2 (en) | Method and apparatus for reconstructing 360-degree image according to projection format | |
US20240291955A1 (en) | Image data encoding/decoding method and apparatus | |
US11483476B2 (en) | Image data encoding/decoding method and apparatus | |
US11539979B2 (en) | Method and apparatus of encoding/decoding image data based on tree structure-based block division | |
US11902578B2 (en) | Method and apparatus of encoding/decoding image data based on tree structure-based block division | |
US11949994B2 (en) | Image data encoding/decoding method and apparatus | |
CN116076073A (zh) | 用于高性能视频编码的硬件编解码器加速器 | |
CN116600134B (zh) | 一种适配图形引擎的并行视频压缩方法和装置 | |
Radicke et al. | Highly-parallel HVEC motion estimation with CUDA [title missing from article PDF] | |
US12149672B2 (en) | Image data encoding/decoding method and apparatus | |
US20240267529A1 (en) | Context-aware quantization for high-performance video encoding |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |