通过GPU将像素格式由ARGB转换为NV12的方法及系统技术方案

技术编号:14205183 阅读:2489 留言:0更新日期:2016-12-18 11:58
本发明专利技术公开了一种通过GPU将像素格式由ARGB转换为NV12的方法及系统,涉及像素格式转换领域。该方法的步骤为:在图形编程接口的二维纹理接口中创建1个8位像素格式的Y平面储存纹理和1个16位像素格式的UV平面储存纹理;将需要转换的ARGB储存纹理输入至GPU,GPU通过HLSL语言,将ARGB储存纹理中图像的像素格式由ARGB转换为NV12后,将NV12像素格式的图像的Y平面赋值至所述Y平面储存纹理,将NV12像素格式的图像的UV平面赋值至所述UV平面储存纹理。本发明专利技术能够缩短像素格式转换的计算过程,提高转换效率。

Method and system for converting pixel format from ARGB to NV12 by GPU

The invention discloses a method and a system for converting a pixel format from ARGB to NV12 by GPU. The method comprises the following steps: Y plane to create 1 8 pixel format in 2D texture interface graphics programming interface storage in UV plane texture and 1 16 pixel format storage texture; would need to convert the ARGB storage texture input to GPU, GPU by HLSL language, ARGB will store the pixel format in texture the image of the conversion from ARGB to NV12 after the Y plane assignment NV12 image pixel format to the Y plane UV plane texture storage, image pixel format of the NV12 assigned to the UV plane texture storage. The invention can shorten the calculation process of the pixel format conversion and improve the conversion efficiency.

【技术实现步骤摘要】

本专利技术涉及像素格式转换领域,具体涉及一种通过GPU(Graphics Processing Unit,图形处理器)将像素格式由ARGB转换为NV12的方法及系统。
技术介绍
在进行H.264(数字视频压缩格式)编码时,需要将RGB格式的像素转换为YUV格式的像素。首先对RGB和YUV分别做出解释:RGB色彩模式(Red、Green、Blue,红、绿、蓝三色色彩模式)是工业界的一种颜色标准,是通过对红(R)、绿(G)、蓝(B)三个颜色通道的变化以及它们相互之间的叠加来得到不同的颜色,RGB即是代表红、绿、蓝三个通道的颜色,这个标准几乎包括了人类视力所能感知的所有颜色,是目前运用最广的颜色系统之一。YUV(颜色编码方法)格式分为三个分量,“Y”表示明亮度(Luminance或Luma),也就是灰度值;而“U”和“V”表示的则是色度(Chrominance或Chroma),作用是描述影像色彩及饱和度,用于指定像素的颜色。YUV格式主要用于电视系统以及模拟视频领域,它将亮度信息(Y)与色彩信息(UV)分离,没有UV信息一样可以显示完整的图像,只不过是黑白的,这样的设计很好地解决了彩色电视机与黑白电视的兼容问题。并且,YUV不像RGB那样要求三个独立的视频信号同时传输,所以用YUV格式传输数据占用的频宽极少。YUV码流的存储格式与其采样的方式密切相关,主流的采样方式有三种,YUV4:4:4,YUV4:2:2,YUV4:2:0。YUV格式有两大类:planar平面格式和packed打包格式。对于planar的YUV格式,先连续存储所有像素点的Y,紧接着存储所有像素点的U,随后是所有像素点的V。对于packed的YUV格式,每个像素点的Y,U,V是连续交错存储的。将RGB格式的像素转换为YUV格式的像素进行H.264编码时,需要利用相关算法在计算机的CPU上执行。由于CPU是计算机的工作核心,因此CPU进行像素格式转换的同时,必然会进行其他工作;也就是说像素格式转换的数据传输带宽难以在CPU上达到最大,进而延长了像素格式转换的计算过程,降低了像素格式转换的转换效率。
技术实现思路
针对现有技术中存在的缺陷,本专利技术解决的技术问题为:在GPU上将图像的像素格式由ARGB转换为NV12,本专利技术能够缩短像素格式转换的计算过程,提高转换效率。为达到以上目的,本专利技术提供的通过GPU将像素格式由ARGB转换为NV12的方法,该方法中的NV12像素格式的图像包括2个平面:亮度Y平面和色彩UV平面,该方法包括以下步骤:在图形编程接口的二维纹理接口中创建1个8位像素格式的Y平面储存纹理和1个16位像素格式的UV平面储存纹理;将需要转换的ARGB储存纹理输入至GPU,GPU通过HLSL语言,将ARGB储存纹理中图像的像素格式由ARGB转换为NV12后,将NV12像素格式的图像的Y平面赋值至所述Y平面储存纹理,将NV12像素格式的图像的UV平面赋值至所述UV平面储存纹理。本专利技术提供的实现上述方法的通过GPU将像素格式由ARGB转换为NV12的系统,包括储存纹理创建模块和位于GPU上的像素格式转换模块;储存纹理创建模块用于:在图形编程接口的二维纹理接口中创建1个8位像素格式的Y平面储存纹理和1个16位像素格式的UV平面储存纹理;将NV12像素格式的图像的Y平面赋值至所述Y平面储存纹理,将NV12像素格式的图像的UV平面赋值至所述UV平面储存纹理;像素格式转换模块用于:通过HLSL语言,将需要转换的ARGB储存纹理中的图像的像素格式由ARGB转换为NV12。与现有技术相比,本专利技术的优点在于:本专利技术并未采用现有技术中通过CPU进行像素格式转换方法,而是根据HLSL语言(High Level Shader Language,高阶着色器语言)结合自主研发的转换算法,在GPU上将图像的像素格式由ARGB转换为NV12、并赋值至预先利用图形编程接口的二维纹理接口创建的NV12像素格式图像的纹理中。因此,本专利技术能够减少CPU和GPU之间进行数据传输的带宽,进而增大像素格式转换时的数据传输带宽,即缩短了像素格式转换的计算过程,提高了转换效率。附图说明图1为本专利技术实施例中的通过GPU将像素格式由ARGB转换为NV12的方法的流程图。具体实施方式以下结合附图及实施例对本专利技术作进一步详细说明。首先对ARGB像素格式和NV12像素格式分别做出解释说明:ARGB(Alpha、Red、Green、Blue)像素格式,是RGB颜色格式中的一种,使用32位来表示一个像素,RGB分量各用去8位,剩下的8位用作Alpha(透明度);在内存中ARGB各分量的排列顺序为:B0、G0、R0、A0、B1、G1、R1、A1、B2、G2、R2、A2。NV12像素格式,属于YUV420格式,模式为two-plane(双层平面),即NV12像素格式的图像包括两个平面:Y(亮度)平面和UV(色彩)平面,UV平面(CbCr)为交错存储的。例如定义一幅NV12像素格式的图像宽度为d,高度为h,则该图像的Y平面的宽度和一行像素的字节数均为d、高度为h;该图像的UV平面的宽度为d/2、一行像素的字节数为d、高度为h/2。在此基础上,参见图1所示,本专利技术实施例中的通过GPU将像素格式由ARGB转换为NV12的方法,包括以下步骤:S1:在图形编程接口的二维纹理接口中创建ARGB储存纹理(即ARGB像素格式图像的储存纹理)。S2:在图形编程接口的二维纹理接口中创建1个8位像素格式的Y平面储存纹理(即NV12像素格式图像的UV平面的储存纹理)和1个16位像素格式的UV平面储存纹理(即NV12像素格式图像的UV平面的储存纹理)。S1和S2中的图形编程接口均采用微软公司提供的Direct3D 11,Direct3D 11的二维纹理接口为ID3D11Texture2D;在此基础上:ID3D11Texture2D创建的ARGB储存纹理的格式为DXGI_FORMAT_B8G8R8A8_UNORM。ID3D11Texture2D创建的Y平面储存纹理的格式为:DXGI_FORMAT_A8_UNORM。ID3D11Texture2D创建的UV平面储存纹理的格式为:DXGI_FORMAT_R8G8_UNORM,其中低8位分量R8代表UV平面中的U分量,高8位分量G8代表UV平面中的V分量。S3:将需要转换的ARGB像素格式的图像赋值至S1中的ARGB储存纹理后(即作为转换的输入源图像);将ARGB储存纹理输入至GPU。GPU通过HLSL语言,将ARGB储存纹理中图像的像素格式由ARGB转换为NV12后,将NV12像素格式的图像的Y平面赋值至S2中的Y平面储存纹理,将NV12像素格式的图像的UV平面赋值至S2中的UV平面储存纹理。S3中GPU通过HLSL语言,将ARGB储存纹理中图像的像素格式由ARGB转换为NV12的转换算法为:Y=0.257·R+0.504·G+0.098·B+16/255;U=-0.148·R–0.291·G+0.439·B+0.5;V=0.439·R–0.368·G–0.071·B+0.5;其中Y、U和V分别代表NV12像素格式的图像中的Y、U和V分量,R、G和B分别代表ARGB像素格式本文档来自技高网
...
<a href="http://www.xjishu.com/zhuanli/55/201610618731.html" title="通过GPU将像素格式由ARGB转换为NV12的方法及系统原文来自X技术">通过GPU将像素格式由ARGB转换为NV12的方法及系统</a>

【技术保护点】
一种通过GPU将像素格式由ARGB转换为NV12的方法,该方法中的NV12像素格式的图像包括2个平面:亮度Y平面和色彩UV平面,其特征在于,该方法包括以下步骤:在图形编程接口的二维纹理接口中创建1个8位像素格式的Y平面储存纹理和1个16位像素格式的UV平面储存纹理;将需要转换的ARGB储存纹理输入至GPU,GPU通过HLSL语言,将ARGB储存纹理中图像的像素格式由ARGB转换为NV12后,将NV12像素格式的图像的Y平面赋值至所述Y平面储存纹理,将NV12像素格式的图像的UV平面赋值至所述UV平面储存纹理。

【技术特征摘要】
1.一种通过GPU将像素格式由ARGB转换为NV12的方法,该方法中的NV12像素格式的图像包括2个平面:亮度Y平面和色彩UV平面,其特征在于,该方法包括以下步骤:在图形编程接口的二维纹理接口中创建1个8位像素格式的Y平面储存纹理和1个16位像素格式的UV平面储存纹理;将需要转换的ARGB储存纹理输入至GPU,GPU通过HLSL语言,将ARGB储存纹理中图像的像素格式由ARGB转换为NV12后,将NV12像素格式的图像的Y平面赋值至所述Y平面储存纹理,将NV12像素格式的图像的UV平面赋值至所述UV平面储存纹理。2.如权利要求1所述的通过GPU将像素格式由ARGB转换为NV12的方法,其特征在于:所述GPU通过HLSL语言,将ARGB储存纹理中图像的像素格式由ARGB转换为NV12时,采用的转换算法为:Y=0.257·R+0.504·G+0.098·B+16/255;U=-0.148·R–0.291·G+0.439·B+0.5;V=0.439·R–0.368·G–0.071·B+0.5;其中Y、U和V分别代表NV12像素格式的图像中的Y、U和V分量,R、G和B分别代表ARGB像素格式的图像中的R、G和B分量。3.如权利要求1所述的通过GPU将像素格式由ARGB转换为NV12的方法,其特征在于:所述将需要转换的ARGB储存纹理输入至GPU的具体流程为:在图形编程接口的二维纹理接口中创建1个ARGB储存纹理,将需要转换的ARGB像素格式的图像赋值至ARGB储存纹理后;将ARGB储存纹理输入至GPU。4.如权利要求1至3任一项所述的通过GPU将像素格式由ARGB转换为NV12的方法,其特征在于:所述图形编程接口采用Direct3D11,Direct3D 11的二维纹理接口为ID3D11Tex...

【专利技术属性】
技术研发人员:杨亮
申请(专利权)人:武汉斗鱼网络科技有限公司
类型:发明
国别省市:湖北;42

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1