数据编码方法及装置制造方法及图纸

技术编号:38986357 阅读:12 留言:0更新日期:2023-10-07 10:17
本公开提供一种数据编码方法及装置,涉及数据处理领域,能够提升整体桌面采集帧率,以及桌面图像的采集及编码效率,改善用户的体验。具体技术方案为:初始化目标编码参数,所述目标编码参数用于通过图像处理器获取待编码数据;创建目标编码器,所述目标编码器用于通过所述图像处理器进行所述待编码数据的编码;通过所述目标编码器,根据所述目标编码参数获取所述待编码数据并进行编码。本公开通过硬件采集与硬件编码(即,通过图像处理器进行待编码数据的采集与编码)的方式,可以提升整体桌面采集帧率,以及桌面图像的采集及编码效率,改善用户的体验。例如,改善现有技术中处理帧率无法提升,只能采集处理二十余帧的情况。只能采集处理二十余帧的情况。只能采集处理二十余帧的情况。

【技术实现步骤摘要】
数据编码方法及装置


[0001]本公开涉及数据处理领域,尤其涉及一种数据编码方法及装置。

技术介绍

[0002]当前,云桌面系统的应用越来越广泛,可存在Linux桌面场景中,例如Ubuntu系统、Redhat系统等有图形界面的Linux系统。
[0003]在现有Linux系统的桌面数据采集过程中,调桌面采集均属于软采(即,软件采集),之后的编码也是软编(即,软件编码,利用中央处理器和内存进行编码),这种软采、软编的缺点之一即为当中央处理器和内存的其中之一或均达到瓶颈之后,整体的采集流程的性能都会下降,从而导致整体桌面采集帧率低。
[0004]因此,本公开主要解决由于Ubuntu系统、Redhat系统等带图形界面的Linux系统下桌面图像的采集及编码效率低,从而导致的整体桌面帧率无法提高的问题。

技术实现思路

[0005]本公开实施例提供一种数据编码方法及装置,能够提升整体桌面采集帧率,以及桌面图像的采集及编码效率,改善用户的体验。所述技术方案如下:
[0006]根据本公开实施例的第一方面,提供一种数据编码方法,该方法包括:初始化目标编码参数,所述目标编码参数用于通过图像处理器获取待编码数据;创建目标编码器,所述目标编码器用于通过所述图像处理器进行所述待编码数据的编码;通过所述目标编码器,根据所述目标编码参数获取所述待编码数据并进行编码。
[0007]其中,目标编码参数用于通过图像处理器(Graphics processing unit,GPU)获取待编码数据,目标编码器用于通过GPU进行待编码数据的编码,作为一种示例,目标编码器可以为NVENCODE编码器。
[0008]示例地,初始化目标编码参数可以包括初始化GLX参数、初始化NVFBC参数,以及创建CaptureSession参数。其中,GLX(OpenGL Extension to the X Window System),为Linux用于提供GL(即,图形库,graphics library)与窗口交互、窗口管理等的一组应用程序接口(Application programming interface,API);NVFBC为一种利用显卡缓存录像视频的功能。
[0009]举例而言,初始化GLX参数,可以通过XOpenDisplay创建Display对象,创建一个GLXContext(即,GLX上下文),以及创建GLXPixmap并设置为当前,得到默认显示器的GLXFBConfig配置以及GLXContext(即,GLX上下文)。其中,GLX(OpenGL Extension to the X Window System),为Linux用于提供GL(即,图形库,graphics library)与窗口交互、窗口管理等的一组应用程序接口(Application programming interface,API)。
[0010]以及,初始化NVFBC参数,可以通过上述得到的GLXFBConfig配置和GLXConfig创建NVFBCHandle,并得到NVFBCHandle句柄。其中,NVFBC为一种利用显卡缓存录像视频的功能。
[0011]此外,创建CaptureSession(捕捉对话)参数,可以构建CaptureParams(捕捉参
数),通过CaptureParams创建CaptureSession,并设置NVFBCTOGLSetUp(DirectX到OpenGL的翻译层),得到默认显示器的桌面分辨率。
[0012]基于上述方案,通过硬件采集与硬件编码(即,通过图像处理器进行待编码数据的采集与编码)的方式,可以提升整体桌面采集帧率,以及桌面图像的采集及编码效率,改善用户的体验。例如,改善现有技术中处理帧率无法提升,只能采集处理二十余帧的情况。
[0013]在一些实施例中,所述通过所述目标编码器,根据所述目标编码参数获取所述待编码数据并进行编码,包括:判断所述目标编码参数是否完成初始化,以及所述目标编码器是否完成创建;在所述目标编码参数完成初始化,以及所述目标编码器完成创建的情况下,通过显卡缓存获取所述待编码数据;通过所述目标编码器,根据所述目标编码参数对所述待编码数据进行编码。
[0014]具体地,首先,判断目标编码参数是否完成初始化,以及目标编码器是否完成创建;其次,在目标编码参数完成初始化,以及目标编码器完成创建的情况下,通过显卡缓存获取待编码数据,在目标编码参数未完成初始化,和/或目标编码器未完成创建的情况下,初始化目标编码参数,和/或创建目标编码器,直至目标编码参数完成初始化,以及目标编码器完成创建;最后,通过目标编码器,根据目标编码参数对待编码数据进行编码,例如,将待编码数据编码为H264/H265。
[0015]在一些实施例中,所述在所述目标编码参数完成初始化,以及所述目标编码器完成创建的情况下,通过显卡缓存获取所述待编码数据,包括:在所述目标编码参数完成初始化,以及目标编码器完成创建的情况下的情况下,创建目标编码指令,在所述目标编码指令的一个周期内,通过所述显卡缓存获取原始数据;将原始数据的像素格式转化为目标像素格式,得到所述待编码数据。
[0016]举例而言,在目标编码参数完成初始化,以及目标编码器完成创建的情况下,可以创建目标编码指令,该目标编码指令用于控制获取原始数据的流程。在目标编码指令的一个周期内可以通过显卡缓存(即,NVFBC的方式)获取原始数据(例如,当前桌面图像数据),并将原始数据(例如,当前桌面图像数据)的像素格式转化为目标像素格式(例如,NV12),得到待编码数据,输送至目标编码器。
[0017]在一些实施例中,所述目标编码指令包括开始工作状态、暂停工作状态,以及终止工作状态。
[0018]具体地,目标编码指令可以包括开始工作状态(start)、暂停工作状态(pause),以及终止工作状态(stop),用于控制获取原始数据的流程。
[0019]在一些实施例中,所述创建目标编码器,包括:创建目标会话、设置预设参数、初始化编码参数,以及创建目标缓存区。
[0020]举例而言,包括创建目标会话可以为创建EncodeSession(编码会话),即通过构建SessionParams(会话参数),调用nvEncOpenEncodeSession()以创建EncodeSession(编码会话)。
[0021]其次,设置预设参数,可以通过nvEncGetEncodePresettConfig设置目标编码器的预设参数,包括码流的清晰度,以及视频编码格式为H264或H265等。
[0022]此外,初始化编码参数,可以为构建目标编码器initParams(初始参数),包括帧率、码流大小、原图尺寸、编码尺寸等参数,并通过NvEncInitializeEncoder()初始化目标
编码器。
[0023]最后,创建目标缓存区,可以通过接口CreateBitstreamBuffer(),创建目标缓存本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种数据编码方法,其特征在于,所述方法包括:初始化目标编码参数,所述目标编码参数用于通过图像处理器获取待编码数据;创建目标编码器,所述目标编码器用于通过所述图像处理器进行所述待编码数据的编码;通过所述目标编码器,根据所述目标编码参数获取所述待编码数据并进行编码。2.根据权利要求1所述的方法,其特征在于,所述通过所述目标编码器,根据所述目标编码参数获取所述待编码数据并进行编码,包括:判断所述目标编码参数是否完成初始化,以及所述目标编码器是否完成创建;在所述目标编码参数完成初始化,以及所述目标编码器完成创建的情况下,通过显卡缓存获取所述待编码数据;通过所述目标编码器,根据所述目标编码参数对所述待编码数据进行编码。3.根据权利要求2所述的方法,其特征在于,所述在所述目标编码参数完成初始化,以及所述目标编码器完成创建的情况下,通过显卡缓存获取所述待编码数据,包括:所述在所述目标编码参数完成初始化,以及所述目标编码器完成创建的情况下,创建目标编码指令,在所述目标编码指令的一个周期内,通过所述显卡缓存获取原始数据;将原始数据的像素格式转化为目标像素格式,得到所述待编码数据。4.根据权利要求3所述的方法,其特征在于,所述目标编码指令包括开始工作状态、暂停工作状态,以及终止工作状态。5.根据权利要求1至4中任一项所述的方法,其特征在于,所述创建目标编码器,包括:创建目标会话、设置预设参数、初始化编码参数,以及创建...

【专利技术属性】
技术研发人员:张泽宇
申请(专利权)人:西安万像电子科技有限公司
类型:发明
国别省市:

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

1