用于处理视频帧的方法和装置转让专利

申请号 : CN201811591366.5

文献号 : CN109672931B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 李明路曹菲菲苏春阳付盛

申请人 : 北京百度网讯科技有限公司

摘要 :

本申请实施例公开了用于处理视频帧的方法。该方法的一具体实施方式包括:接收视频帧集合;从该视频帧集合中选取视频帧,执行以下处理步骤:新建像素缓冲区对象;从中央处理器对应的帧缓冲区读取所选取的视频帧的像素数据,以及将所读取的像素数据写入所新建的像素缓冲区对象中;将写入后的像素缓冲区对象存储到像素缓冲区对象队列;确定该视频帧集合中是否存在未被选取过的视频帧;响应于确定该视频帧集合中不存在未被选取过的视频帧,存储该视频帧集合。该实施方式实现了对视频帧的处理。

权利要求 :

1.一种用于处理视频帧的方法,包括:接收视频帧集合;

从所述视频帧集合中选取视频帧,执行以下处理步骤:新建像素缓冲区对象;从中央处理器对应的帧缓冲区读取所选取的视频帧的像素数据,以及将所读取的像素数据写入所新建的像素缓冲区对象中;将写入后的像素缓冲区对象存储到像素缓冲区对象队列;

所述方法还包括:

确定所述视频帧集合中是否存在未被选取过的视频帧;

响应于确定所述视频帧集合中存在未被选取过的视频帧,从所述视频帧集合中重新选取未被选取过的视频帧,继续执行所述处理步骤;

响应于确定所述视频帧集合中不存在未被选取过的视频帧,存储所述视频帧集合;

所述方法还包括:

根据图形处理器对应的帧缓冲区中所写入的像素数据,生成纹理图像;

确定所述图形处理器中是否存在帧缓存对象;

响应于确定不存在帧缓存对象,新建帧缓存对象,以及将所生成的纹理图像挂载于所新建的帧缓存对象;

将挂载后的纹理图像按照挂载的顺序与所述帧缓存对象分离,以及输出所分离的纹理图像。

2.根据权利要求1所述的方法,其中,所述方法还包括:按照所述像素缓冲区对象队列的顺序,从所述像素缓冲区对象队列中选取像素缓冲区对象;

从所选取的像素缓冲区对象中读取像素数据;

将所读取的像素数据写入图形处理器对应的帧缓冲区;

从所述像素缓冲区对象队列中删除所选取的像素缓冲区对象。

3.根据权利要求1所述的方法,其中,所述方法还包括:响应于确定存在帧缓存对象;将所生成的纹理图像挂载于所述帧缓存对象。

4.一种用于处理视频帧的装置,包括:接收单元,被配置成接收视频帧集合;

处理单元,被配置成从所述视频帧集合中选取视频帧,执行以下处理步骤:新建像素缓冲区对象;从中央处理器对应的帧缓冲区读取所选取的视频帧的像素数据,以及将所读取的像素数据写入所新建的像素缓冲区对象中;将写入后的像素缓冲区对象存储到像素缓冲区对象队列;

确定单元,被配置确定所述视频帧集合中是否存在未被选取过的视频帧;

重新选取单元,被配置成响应于确定所述视频帧集合中存在未被选取过的视频帧,从所述视频帧集合中重新选取未被选取过的视频帧,继续执行所述处理步骤;

存储单元,被配置响应于确定所述视频帧集合中不存在未被选取过的视频帧,存储所述视频帧集合;

生成单元,被配置成根据图形处理器对应的帧缓冲区中所写入的像素数据,生成纹理图像;

确定单元,被配置成确定所述图形处理器中是否存在帧缓存对象;

新建单元,被配置成响应于确定不存在帧缓存对象,新建帧缓存对象,以及将所生成的纹理图像挂载于所新建的帧缓存对象;

分离单元,被配置成将挂载后的纹理图像按照挂载的顺序与所述帧缓存对象分离,以及输出所分离的纹理图像。

5.根据权利要求4所述的装置,其中,所述装置还包括:选取单元,被配置成按照所述像素缓冲区对象队列的顺序,从所述像素缓冲区对象队列中选取像素缓冲区对象;

读取单元,被配置成从所选取的像素缓冲区对象中读取像素数据;

写入单元,被配置成将所读取的像素数据写入图形处理器对应的帧缓冲区;

删除单元,被配置成从所述像素缓冲区对象队列中删除所选取的像素缓冲区对象。

6.根据权利要求4所述的装置,其中,所述装置还包括:挂载单元,被配置成响应于确定存在帧缓存对象,将所生成的纹理图像挂载于所述帧缓存对象。

7.一种电子设备,包括:

一个或多个处理器;

存储装置,用于存储一个或多个程序,

当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-3中任一所述的方法。

8.一种计算机可读存储介质,其上存储有计算机程序,其中,所述程序被处理器执行时实现如权利要求1-3中任一所述的方法。

说明书 :

用于处理视频帧的方法和装置

技术领域

[0001] 本申请实施例涉及计算机技术领域,具体涉及用于处理视频帧的方法和装置。

背景技术

[0002] 在移动设备上,从摄像头或其它采集装置获取到的视频帧到最终用户可预览,这个过程通常需要经过大量的渲染处理。
[0003] 渲染,用于描述计算视频编辑文件中的效果以生成最终视频输出的过程。实时渲染,通常是指图形数据的实时计算和输出。

发明内容

[0004] 本申请实施例提出了用于处理视频帧的方法和装置。
[0005] 第一方面,本申请实施例提供了一种用于处理视频帧的方法,该方法包括:接收视频帧集合;从视频帧集合中选取视频帧,执行以下处理步骤:新建像素缓冲区对象;从中央处理器对应的帧缓冲区读取所选取的视频帧的像素数据,以及将所读取的像素数据写入所新建的像素缓冲区对象中;将写入后的像素缓冲区对象存储到像素缓冲区对象队列;确定视频帧集合中是否存在未被选取过的视频帧;响应于确定视频帧集合中不存在未被选取过的视频帧,存储视频帧集合。
[0006] 在一些实施例中,该方法还包括:响应于确定视频帧集合中存在未被选取过的视频帧,从视频帧集合中重新选取未被选取过的视频帧,继续执行处理步骤。
[0007] 在一些实施例中,该方法还包括:按照像素缓冲区对象队列的顺序,从像素缓冲区对象队列中选取像素缓冲区对象;从所选取的像素缓冲区对象中读取像素数据;将所读取的像素数据写入图形处理器对应的帧缓冲区;从像素缓冲区对象队列中删除所选取的像素缓冲区对象。
[0008] 在一些实施例中,该方法还包括:根据图形处理器对应的帧缓冲区中所写入的像素数据,生成纹理图像。
[0009] 在一些实施例中,该方法还包括:确定图形处理器中是否存在帧缓存对象;响应于确定不存在帧缓存对象,新建帧缓存对象,以及将所生成的纹理图像挂载于所新建的帧缓存对象;响应于确定存在帧缓存对象;将所生成的纹理图像挂载于帧缓存对象。
[0010] 在一些实施例中,该方法还包括:将挂载后的纹理图像按照挂载的顺序与帧缓存对象分离,以及输出所分离的纹理图像。
[0011] 第二方面,本申请实施例提供了一种用于处理视频帧的装置,包括:接收单元,被配置成接收视频帧集合;处理单元,被配置成从视频帧集合中选取视频帧,执行以下处理步骤:新建像素缓冲区对象;从中央处理器对应的帧缓冲区读取所选取的视频帧的像素数据,以及将所读取的像素数据写入所新建的像素缓冲区对象中;将写入后的像素缓冲区对象存储到像素缓冲区对象队列;确定单元,被配置确定视频帧集合中是否存在未被选取过的视频帧;存储单元,被配置响应于确定视频帧集合中不存在未被选取过的视频帧,存储视频帧集合。
[0012] 在一些实施例中,该装置还包括:重新选取单元,被配置成响应于确定视频帧集合中存在未被选取过的视频帧,从视频帧集合中重新选取未被选取过的视频帧,继续执行处理步骤。
[0013] 在一些实施例中,该装置还包括:选取单元,被配置成按照像素缓冲区对象队列的顺序,从像素缓冲区对象队列中选取像素缓冲区对象;读取单元,被配置成从所选取的像素缓冲区对象中读取像素数据;写入单元,被配置成将所读取的像素数据写入图形处理器对应的帧缓冲区;删除单元,被配置成从像素缓冲区对象队列中删除所选取的像素缓冲区对象。
[0014] 在一些实施例中,该装置还包括:生成单元,被配置成根据图形处理器对应的帧缓冲区中所写入的像素数据,生成纹理图像。
[0015] 在一些实施例中,该装置还包括:确定单元,被配置成确定图形处理器中是否存在帧缓存对象;新建单元,被配置成响应于确定不存在帧缓存对象,新建帧缓存对象,以及将所生成的纹理图像挂载于所新建的帧缓存对象;挂载单元,被配置成响应于确定存在帧缓存对象,将所生成的纹理图像挂载于帧缓存对象。
[0016] 在一些实施例中,该装置还包括:分离单元,被配置成将挂载后的纹理图像按照挂载的顺序与帧缓存对象分离,以及输出所分离的纹理图像。
[0017] 第三方面,本申请实施例提供了一种电子设备,包括:一个或多个处理器;存储装置,其上存储有一个或多个程序,当一个或多个程序被一个或多个处理器执行,使得一个或多个处理器实现如第一方面中任一实施例的方法。
[0018] 第四方面,本申请实施例提供了一种计算机可读介质,其上存储有计算机程序,其中,程序被处理器执行时实现如第一方面中任一实施例的方法。
[0019] 本申请实施例提供的用于处理视频帧的方法和装置,首先,接收视频帧集合,接着,从视频帧集合中选取视频帧,执行以下处理步骤:新建像素缓冲区对象;然后,从中央处理器对应的帧缓冲区读取所选取的视频帧的像素数据,以及将所读取的像素数据写入所新建的像素缓冲区对象中;之后,将写入后的像素缓冲区对象存储到像素缓冲区对象队列;接着,确定视频帧集合中是否存在未被选取过的视频帧,响应于确定视频帧集合中不存在未被选取过的视频帧,最后,存储视频帧集合。通过新建像素缓冲区对象,用于存储视频帧中的数据,可以对视频帧数据进行缓存,不浪费中央处理器的周期,有助于提高视频帧的处理效率。

附图说明

[0020] 通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:
[0021] 图1是本申请实施例可以应用于其中的示例性系统架构图;
[0022] 图2是根据本申请的用于处理视频帧的方法的一个实施例的流程图;
[0023] 图3是根据本申请实施例的用于处理视频帧的方法的一个应用场景的示意图;
[0024] 图4是根据本申请的用于处理视频帧的方法的又一个实施例的流程图;
[0025] 图5是根据本申请的用于处理视频帧的装置的一个实施例的结构示意图;
[0026] 图6是适于用来实现本申请实施例的电子设备的计算机系统的结构示意图。

具体实施方式

[0027] 下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与有关发明相关的部分。
[0028] 需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
[0029] 图1示出了可以应用本申请实施例的用于处理视频帧的方法或用于处理视频帧的装置的实施例的示例性系统架构100。
[0030] 如图1所示,系统架构100可以包括终端设备101、102、103,网络104和服务器105。网络104用以在终端设备101、102、103和服务器105之间提供通信链路的介质。网络104可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
[0031] 终端设备101、102、103可以是硬件,也可以是软件。当终端设备101、102、103为硬件时,可以是各种电子设备,包括但不限于智能手机、平板电脑、电子书阅读器、膝上型便携计算机和台式计算机等等。当终端设备101、102、103为软件时,可以安装在上述所列举的电子设备中。其可以实现成多个软件或软件模块(例如用来提供分布式服务的多个软件或软件模块),也可以实现成单个软件或软件模块。在此不做具体限定。
[0032] 服务器105可以是提供各种服务的服务器,例如对终端设备101上的视频进行渲染处理的服务器。后台视频渲染服务器可以对接收到的视频帧进行渲染等处理,并将处理结果(例如渲染后的视频帧)反馈给终端设备。
[0033] 需要说明的是,服务器可以是硬件,也可以是软件。当服务器为硬件时,可以实现成多个服务器组成的分布式服务器集群,也可以实现成单个服务器。当服务器为软件时,可以实现成多个软件或软件模块(例如用来提供分布式服务的多个软件或软件模块),也可以实现成单个软件或软件模块。在此不做具体限定。
[0034] 终端设备101也可不与服务器105交互,直接对收到的视频帧处理即可。
[0035] 需要说明的是,本申请实施例所提供的用于处理视频帧的方法可以由终端设备101执行,也可以由服务器105执行。相应地,用于处理视频帧的装置可以设置于终端设备
101中,也可以设置于服务器105中。在此不做具体限定。
[0036] 应该理解,图1中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
[0037] 继续参考图2,示出了根据本申请的用于处理视频帧的方法的一个实施例的流程200。该用于处理视频帧的方法,包括以下步骤:
[0038] 步骤201,接收视频帧集合。
[0039] 在本实施例中,用于处理视频帧的方法的执行主体(例如图1所示的服务器)可以利用各种方式接收视频帧集合。作为示例,可以通过安装在终端设备中的摄像头采集视频,且该终端设备与上述执行主体通信连接。上述执行主体可以接收该终端设备通过该摄像头采集的视频。作为又一示例,摄像头可以安装在执行主体中,执行主体可以直接接收该摄像头采集的视频。
[0040] 步骤202,从视频帧集合中选取视频帧。
[0041] 在本实施例中,执行主体可以从步骤201中接收的视频帧集合中选取视频帧,以及执行步骤203的处理步骤。其中,视频帧的选取方式在本申请中并不限制。例如可以是随机选取视频帧,也可以对视频帧集合中的视频帧进行排序以按顺序从中选取视频帧。
[0042] 步骤203,处理步骤。
[0043] 步骤2031,新建像素缓冲区对象。
[0044] 在本实施例中,像素缓冲区对象(Pixel Buffer Object,PBO),是一种顶点缓冲区对象(Vertex Buffer Object,VBO)的扩展,像素缓存对象用来存储像素数据。上述新建像素缓冲区对象的方法通常是基于OpenGL内部的方法实现,在此不再赘述。
[0045] 步骤2032,从中央处理器对应的帧缓冲区读取所选取的视频帧的像素数据,以及将所读取的像素数据写入所新建的像素缓冲区对象中。
[0046] 在本实施例中,中央处理器(Central Processing Unit,CPU)是一块超大规模的集成电路,是一台计算机的运算核心(Core)和控制核心(Control Unit)。它的功能主要是解释计算机指令以及处理计算机软件中的数据。这里,中央处理器是指执行主体所在的终端的中央处理器,中央处理器对应的帧缓冲区是指中央处理器对应的内存(Random Access Memory,RAM)。
[0047] 步骤2033,将写入后的像素缓冲区对象存储到像素缓冲区对象队列。
[0048] 在本实施例中,像素缓冲区对象队列是一个元素为像素缓冲区对象的队列。
[0049] 步骤204,确定视频帧集合中是否存在未被选取过的视频帧。
[0050] 在本实施例中,若执行主体确定视频帧集合中不存在未被选取过的视频帧,则可以继续执行步骤205。若执行主体确定视频帧集合中存在未被选取过的视频帧,则可以从上述视频帧集合中重新选取未被选取过的视频帧,继续执行上述2031-2033步骤。
[0051] 步骤205,响应于确定视频帧集合中不存在未被选取过的视频帧,存储视频帧集合。
[0052] 在本实施例中,存储的方式可以是执行主体将队列组存储在本地,也可以是将其发送给指定的数据库服务器,存储于数据库服务器中。
[0053] 本申请的上述实施例提供的方法实现了对视频帧进行处理,通过新建像素缓冲区对象,用于存储视频帧中的数据,可以对视频帧数据进行缓存,不浪费中央处理器的周期,有助于提高视频帧的处理效率。
[0054] 继续参见图3,图3是根据本实施例的用于处理视频帧的方法的应用场景的一个示意图。在图3的应用场景300中,终端设备301首先接收视频帧集合302。之后,终端设备301可以从视频帧集合302中选取视频帧3021,新建像素缓冲区对象303。最后,终端设备301可以从终端设备301中的中央处理器对应的帧缓冲区读取所选取的视频帧3021的像素数据,以及将所读取的像素数据写入所新建的像素缓冲区对象中303。将写入后的像素缓冲区对象303存储到像素缓冲区对象队列304。确定视频帧集合302中是否存在未被选取过的视频帧。
响应于确定视频帧集合中不存在未被选取过的视频帧,存储视频帧集合302。
[0055] 本申请的上述实施例提供的方法实现了对视频帧进行处理,通过新建像素缓冲区对象,用于存储视频帧中的数据,可以对视频帧数据进行缓存,中央处理器可以不断接收视频帧,无需等待,不浪费中央处理器的周期,有助于提高视频帧的处理效率。
[0056] 进一步参考图4,其示出了用于处理视频帧的方法的又一个实施例的流程400。该用于处理视频帧的方法的流程400,包括以下步骤:
[0057] 步骤401,接收视频帧集合。
[0058] 步骤402,从视频帧集合中选取视频帧。
[0059] 步骤403,处理步骤。
[0060] 步骤4031,新建像素缓冲区对象。
[0061] 步骤4032,从中央处理器对应的帧缓冲区读取所选取的视频帧的像素数据,以及将所读取的像素数据写入所新建的像素缓冲区对象中。
[0062] 步骤4033,将写入后的像素缓冲区对象存储到像素缓冲区对象队列。
[0063] 步骤404,确定视频帧集合中是否存在未被选取过的视频帧。
[0064] 步骤405,响应于确定视频帧集合中不存在未被选取过的视频帧,存储视频帧集合。
[0065] 在本实施例中,步骤403到步骤405的具体操作与图2所示的实施例中步骤203到步骤205的操作基本相同,在此不再赘述。
[0066] 步骤406,按照像素缓冲区对象队列的顺序,从像素缓冲区对象队列中选取像素缓冲区对象。
[0067] 在本实施例中,上述像素缓冲区对象队列的顺序通常是指像素缓冲区对象队列中元素存入的顺序。
[0068] 步骤407,从所选取的像素缓冲区对象中读取像素数据。
[0069] 步骤408,将所读取的像素数据写入图形处理器对应的帧缓冲区。
[0070] 在本实施例中,图形处理器(Graphics Processing Unit,GPU),,是一种专门在个人电脑、工作站、游戏机和一些移动设备(如平板电脑、智能手机等)上图像运算工作的微处理器,又称显示核心、视觉处理器、显示芯片。
[0071] 步骤409,从像素缓冲区对象队列中删除所选取的像素缓冲区对象。
[0072] 在本实施例中,所选取的像素缓冲区对象是指第七步中被读取像素数据的像素缓冲区对象。可选地,第九步也可以是将上述所选取的像素缓冲区对象移出像素缓冲区对象队列,以及将从中央处理器对应的帧缓冲区中读取的像素数据写入上述所移出的像素缓冲区对象,然后将写入后的像素缓冲区对象添加到像素缓冲区对象队列。
[0073] 在本实施例的一些可选的实现方式中,该方法还可以包括:根据图形处理器对应的帧缓冲区中所写入的像素数据,生成纹理图像。
[0074] 上述生成纹理图像的方法通常是基于OpenGL内部的方法实现,在此不再赘述。
[0075] 可选地,该方法还可以包括:确定图形处理器中是否存在帧缓存对象;响应于确定不存在帧缓存对象,新建帧缓存对象,以及将所生成的纹理图像挂载于所新建的帧缓存对象;响应于确定存在帧缓存对象;将所生成的纹理图像挂载于帧缓存对象。
[0076] 这里,挂载通常是指将纹理图像与帧缓存对象进行关联,具体的关联方式可以是依据纹理的编号。可选地,这里的纹理图像也可以替换成渲染缓存图像,即一个帧缓存对象可以被多个纹理图像或者渲染缓存图像所关联,从而实现级联处理纹理图像的效果。
[0077] 可选地,该方法还可以包括:将挂载后的纹理图像按照挂载的顺序与帧缓存对象分离,以及输出所分离的纹理图像。
[0078] 按照挂载的顺序进行分离以及输出,可以实现纹理图像的级联效果,分离与输出与挂载两个步骤之间达到异步的效果。采用帧缓存对象挂载多个纹理图像的方式,有助于提高纹理图像的传输效率。
[0079] 帧缓存对象将已挂载的纹理图像从帧缓存对象分离,然后把新的纹理图像挂载到帧缓存对象,只需要一个帧缓存对象即可切换多个纹理图像,这种纹理图像间的切换方式比帧缓存对象间的切换更快,有助于提高切换效率。上述帧缓存对象间的切换具体是指新建帧缓存对象,将纹理图像挂载于所新建的帧缓存对象,然后输出帧缓存对象,当接收到下一个纹理图像时,再新建帧缓存对象,以此类推,每一个帧缓存对象只挂载一个纹理图像,本实现方式相对于这种帧缓存对象间的切换方式,提高了效率,无需建立更多的帧缓存对象,因此,节省了存储空间。
[0080] 从图4中可以看出,与图2对应的实施例相比,本实施例中的用于处理视频帧的方法的流程400体现了从像素缓冲区对象中读取像素数据、将像素数据存储到图形处理器以及删除上述像素缓冲区对象的步骤。通过将像素缓冲区对象中的像素数据传递到图像处理器,然后删除上述像素缓冲区对象,可以不浪费中央处理器的周期,达到中央处理器将像素数据存储到像素缓冲区对象中的存储步骤与图像处理器从像素缓冲区对象中读取像素数据的读取步骤之间的异步效果,即中央处理器可以立即返回,无需等待传输完成,有助于进一步提高视频帧的处理效率。
[0081] 进一步参考图5,作为对上述各图所示方法的实现,本申请提供了一种用于处理视频帧的装置的一个实施例,该装置实施例与图2所示的方法实施例相对应,该装置具体可以应用于各种电子设备中。
[0082] 如图5所示,本实施例的用于处理视频帧的装置500包括:接收单元501、处理单元502、确定单元503和存储单元504。其中,接收单元501被配置成接收视频帧集合。处理单元
502被配置成从视频帧集合中选取视频帧,执行以下处理步骤:新建像素缓冲区对象;从中央处理器对应的帧缓冲区读取所选取的视频帧的像素数据,以及将所读取的像素数据写入所新建的像素缓冲区对象中;将写入后的像素缓冲区对象存储到像素缓冲区对象队列;确定单元503,被配置确定视频帧集合中是否存在未被选取过的视频帧;存储单元504,被配置响应于确定视频帧集合中不存在未被选取过的视频帧,存储视频帧集合。
[0083] 在本实施例中,用于处理视频帧的装置500的接收单元501、处理单元502、确定单元503和存储单元504的具体处理及其所带来的技术效果可分别参考图2对应实施例中步骤201-205的相关说明,在此不再赘述。
[0084] 在本实施例的一些可选的实现方式中,该装置还包括:重新选取单元,被配置成响应于确定视频帧集合中存在未被选取过的视频帧,从视频帧集合中重新选取未被选取过的视频帧,继续执行处理步骤。
[0085] 在本实施例的一些可选的实现方式中,该装置还包括:选取单元,被配置成按照像素缓冲区对象队列的顺序,从像素缓冲区对象队列中选取像素缓冲区对象;读取单元,被配置成从所选取的像素缓冲区对象中读取像素数据;写入单元,被配置成将所读取的像素数据写入图形处理器对应的帧缓冲区;删除单元,被配置成从像素缓冲区对象队列中删除所选取的像素缓冲区对象。
[0086] 在本实施例的一些可选的实现方式中,该装置还包括:生成单元,被配置成根据图形处理器对应的帧缓冲区中所写入的像素数据,生成纹理图像。
[0087] 在本实施例的一些可选的实现方式中,该装置还包括:确定单元,被配置成确定图形处理器中是否存在帧缓存对象;新建单元,被配置成响应于确定不存在帧缓存对象,新建帧缓存对象,以及将所生成的纹理图像挂载于所新建的帧缓存对象;挂载单元,被配置成响应于确定存在帧缓存对象,将所生成的纹理图像挂载于帧缓存对象。
[0088] 在本实施例的一些可选的实现方式中,该装置还包括:分离单元,被配置成将挂载后的纹理图像按照挂载的顺序与帧缓存对象分离,以及输出所分离的纹理图像。
[0089] 下面参考图6,其示出了适于用来实现本申请实施例的服务器的计算机系统600的结构示意图。图6示出的服务器仅仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。
[0090] 如图6所示,计算机系统600包括中央处理单元(CPU)601,其可以根据存储在只读存储器(ROM)602中的程序或者从存储部分608加载到随机访问存储器(RAM)603中的程序而执行各种适当的动作和处理。在RAM 603中,还存储有系统600操作所需的各种程序和数据。CPU 601、ROM 602以及RAM 603通过总线604彼此相连。输入/输出(I/O)接口605也连接至总线604。
[0091] 以下部件连接至I/O接口605:包括键盘、鼠标等的输入部分606;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分607;包括硬盘等的存储部分608;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分609。通信部分609经由诸如因特网的网络执行通信处理。驱动器610也根据需要连接至I/O接口605。可拆卸介质611,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器610上,以便于从其上读出的计算机程序根据需要被安装入存储部分608。
[0092] 特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分609从网络上被下载和安装,和/或从可拆卸介质611被安装。在该计算机程序被中央处理单元(CPU)601执行时,执行本申请的方法中限定的上述功能。
[0093] 需要说明的是,本申请的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本申请中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本申请中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
[0094] 可以以一种或多种程序设计语言或其组合来编写用于执行本申请的操作的计算机程序代码,上述程序设计语言包括面向目标的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如”C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
[0095] 附图中的流程图和框图,图示了按照本申请各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
[0096] 描述于本申请实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元也可以设置在处理器中,例如,可以描述为:一种处理器,包括接收单元、处理单元、确定单元和存储单元。其中,这些单元的名称在某种情况下并不构成对该单元本身的限定,例如,接收单元还可以被描述为“接收视频帧集合的单元”。
[0097] 作为另一方面,本申请还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的装置中所包含的;也可以是单独存在,而未装配入该装置中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该装置执行时,使得该装置:接收视频帧集合;从视频帧集合中选取视频帧,执行以下处理步骤:新建像素缓冲区对象;从中央处理器对应的帧缓冲区读取所选取的视频帧的像素数据,以及将所读取的像素数据写入所新建的像素缓冲区对象中;将写入后的像素缓冲区对象存储到像素缓冲区对象队列;确定视频帧集合中是否存在未被选取过的视频帧;响应于确定视频帧集合中不存在未被选取过的视频帧,存储视频帧集合。
[0098] 以上描述仅为本申请的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本申请中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离上述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本申请中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。