视频分析方法及装置的制造方法

文档序号:8946102阅读:294来源:国知局
视频分析方法及装置的制造方法
【技术领域】
[0001 ] 本发明涉及视频处理技术领域,尤其涉及视频分析方法及装置。
【背景技术】
[0002]在传统的视频处理过程中,往往通过CPU (Central Processing Unit,中央处理单元)进行视频解码和分析处理。然而,由于CPU的性能限制,在视频解码方面往往效率较低,尤其是当视频分辨率较高(高清视频)时,CPU往往显得力不从心,造成设备存在卡顿等情况。
[0003]随着CPU制造工艺的不断进步,CPU性能也越来越强。然而,虽然CPU能够单独实现对高分辨率视频的流畅解码,但在一些多任务场景下,CPU仍然可能存在卡顿;同时,高性能的CPU意味着更高的成本,使得使用低性能CPU的低成本设备仍然难以较好地实现视频处理。

【发明内容】

[0004]有鉴于此,本发明提供一种视频分析方法及装置,可以解决相关技术中存在的技术问题。
[0005]为实现上述目的,本发明提供技术方案如下:
[0006]根据本发明的第一方面,提出了一种视频分析方法,包括:
[0007]根据D3D实例支持的格式,对图形处理单元GPU接收到的视频流进行硬解码处理;
[0008]将所述硬解码处理得到的解码图像数据存储至所述D3D实例对应的显存地址空间中;
[0009]将所述D3D实例对应的显存地址空间告知GPU中已创建的OpenCL实例,并由所述OpenCL实例按照所述显存地址空间读取所述解码图像数据;
[0010]所述OpenCL实例对所述解码图像数据进行分析,并将得到的分析结果发送至中央处理单元CPU。
[0011]根据本发明的第二方面,提出了一种视频分析装置,包括:
[0012]解码单元,根据D3D实例支持的格式,对图形处理单元GPU接收到的视频流进行硬解码处理;
[0013]存储单元,将所述硬解码处理得到的解码图像数据存储至所述D3D实例对应的显存地址空间中;
[0014]读取单元,将所述D3D实例对应的显存地址空间告知GPU中已创建的OpenCL实例,并由所述OpenCL实例按照所述显存地址空间读取所述解码图像数据;
[0015]分析单元,所述OpenCL实例对所述解码图像数据进行分析,并将得到的分析结果发送至中央处理单元CPU。
[0016]由以上技术方案可见,本发明通过将视频流硬解码为D3D实例支持的格式的解码图像数据,使得OpenCL实例可以直接从显存中读取该解码图像数据,无需在GPU和CPU之间对解码图像数据进行拷贝,有助于提升视频分析效率、降低CPU使用率。
【附图说明】
[0017]图1是相关技术中的一种视频分析处理方式的示意图;
[0018]图2是相关技术中的另一种视频分析处理方式的示意图;
[0019]图3是本发明一示例性实施例中的一种视频分析方法的流程图;
[0020]图4是本发明一示例性实施例中的另一种视频分析方法的流程图;
[0021]图5是本发明一不例性实施例中的一种视频分析处理方式的不意图;
[0022]图6是本发明一示例性实施例中的一种视频分析装置的框图。
【具体实施方式】
[0023]为了解决【背景技术】部分提及的技术问题,降低CPU在视频解码方面的处理压力,相关技术中提出了由GPU (Graphics Processing Unit,图形处理单元)执行视频解码(即硬解码),而由CPU执行解码后的视频图像数据的分析处理,从而通过任务分担而极大地减轻了 CPU的运行负担。
[0024]具体地,如图1所示,GPU通过预配置的解码器对接收到的视频流进行硬解码,得到的解码图像数据存储于显存中。由于解码图像数据在显存中采用非线性方式进行存储,导致CPU无法直接从显存中读取该解码图像数据,需要首先将该非线性存储的解码图像数据拷贝至内存中,并在内存中以线性方式进行存储,然后由CPU对内存中线性存储的解码图像数据进行读取和智能分析,得到相应的分析结果。
[0025]然而,图1所示的技术方案中,由于需要CPU对解码图像数据进行智能分析处理,既导致了 CPU资源的占用,又浪费了 GPU的强大计算处理能力;同时,还需要将显存中非线性的解码图像数据转换为线性数据,进一步造成了对CPU资源的占用。
[0026]为了降低图1所示的技术方案对CPU资源的占用情况,相关技术中进一步提出了图2所示的处理方式。如图2所示,通过利用OpenCL技术,分别在内存和显存中创建OpenCL实例,即OpenCL内存实例和OpenCL显存实例,可以通过将解码图像数据从内存中拷贝至OpenCL内存实例中,以及将解码图像数据进一步从OpenCL内存实例拷贝至OpenCL显存实例中,使得可以利用GPU对解码图像数据进行智能分析,并将分析结果传回CPU。
[0027]然而,虽然图2所示的实施例利用了 GPU的计算处理能力,对解码图像数据进行智能分析处理,但由于解码图像数据需要在显存、内存、OpenCL内存实例和OpenCL显存实例等之间进行多次、反复的拷贝处理,仍然造成了对CPU资源的浪费。
[0028]因此,本发明通过对视频分析过程的改进,在充分利用GPU计算处理能力的同时,避免数据拷贝造成对CPU资源的浪费,以解决相关技术中存在的上述技术问题。为对本发明进行进一步说明,提供下列实施例:
[0029]图3是本发明一示例性实施例中的一种视频分析方法的流程图,如图3所示,该方法可以包括以下步骤:
[0030]步骤302,根据D3D实例支持的格式,对图形处理单元GPU接收到的视频流进行硬解码处理。
[0031]在本实施例中,“D3D”全称为“Direct3D”,是微软公司在Microsoft Windows操作系统上所开发的一套基于微软的通用对象模式COM (Common Object Mode)的3D图形编程接口。
[0032]步骤304,将该硬解码处理得到的解码图像数据存储至该D3D实例对应的显存地址空间中。
[0033]步骤306,将该D3D实例对应的显存地址空间告知GPU中已创建的OpenCL实例,并由该OpenCL实例按照该显存地址空间读取该解码图像数据。
[0034]在本实施例中,OpenCL(Open Computing Language,开放运算语言)是一个为异构平台编写程序的框架;其中,异构平台可由CPU、GPU或其他类型的处理单元组成。而在本发明的技术方案中,OpenCL被应用于CPU和GPU形成的异构平台,使得GPU被应用于对视频流的解码和分析处理,以降低对CPU资源的占用,提升所属电子设备的运行流畅度。
[0035]在本实施例中,基于D3D实例的图像共享功能,使得OpenCL实例可以获得D3D实例对应的显存地址空间,从而无需在GPU和CPU之间的反复拷贝,即可直接从该显存地址空间读取相应的解码图像数据,实现分析处理,有助于提升视频分析效率、降低CPU占用。
[0036]步骤308,该OpenCL实例对该解码图像数据进行分析,并将得到的分析结果发送至中央处理单元CPU。
[0037]由以上技术方案可见,本发明通过将视频流硬解码为D3D实例支持的格式的解码图像数据,使得OpenCL实例可以直接从显存中读取该解码图像数据,无需在GPU和CPU之间对解码图像数据进行拷贝,有助于提升视频分析效率、降低CPU使用率。
[0038]图4是本发明一示例性实施例中的另一种视频分析方法的流程图,如图4所示,该方法可以包括以下步骤:
[0039]步骤402,GPU接收视频流。
[0040]在本实施例中,对于视频流的来源并不进行限制。举例而言,GPU所属的电子设备为视频监控系统中的视频播放设备,则视频流可以为该视频监控系统采集到的监控视频流,且该监控视频流可以为实时视频流数据,也可以为存储后再次播放的视频流数据。
[0041 ] 步骤404,确定视频流的码流类型。
[0042]步骤406,选取对应于上述码流类型的解码器,对视频流进行硬解码处理。
[0043]在本实施例中,GPU中预配置了对应于多种码流类型的解码器,比如码流类型可以为H264、MPEG4等,本发明并不对此进行限制。因此,GPU可以通过解析确定当前接收到的视频流的码流类型,从而选取GPU中对应于该码流类型的解码器,以用于执行该硬解码处理。
[0044]举例而言,GPU可以利用Intel公司开发的核显(Intel Quick Sync Video)技术,对视频流进行硬件码。比如当视频流的码流类型为H264时,假定电子设备中使用的是Intel公司生产的Core ?7-3770型号的处理芯片时,其中的GPU可以解码四十多路1080P (分辨率为1920x1080)的H264码流,不会由于硬解码性能低而导致成为后续的智能分析(如步骤420)的瓶颈。
[0045]在本实施例中,GPU对视频流进行硬解码后,得到的解码图像数据可以为YUV格式,Y表示明亮度(Luminance或Luma),也就是灰阶值;而U和V表示的则是色度(Chrominance或Chroma),作用是描述影像色彩及饱和度,用于指定像素的颜色。其中,YUV是欧洲电视系统所采用的一种颜色编码方法,主要用于优化彩色视频信号的传输;对于采用YUV格式的图像信号,相比于RGB信号而言只需占用极少的带宽,有助于实现更为流畅的实时视频监控。
[0046]步骤408,将硬解码处理得到的解码图像数据存储至缓存池中。
[0047]在本实施例中,如图4所示,在步骤408之前,需要在GPU中建立D3D实例,并在该D3D实例对应的显存地址空间创建缓存池;因此,在步骤408中,正是将解码图像数据存储至该缓存池中。
[0048]在本实施例中,正是利用了 D3D技术与OpenCL技术之间的关联性,可以实现GPU内部的直接数据传递,即D3D实例与下文描述的OpenCL实例之间直接传递上述的解码图像数据,从而避免了 CPU与GPU之间的反复数据拷贝。因此,在步骤406中,除了在数据入口需要考虑解码器对于码流类型的支持情况,还需要在数据出口考虑D3D实例对解码图像数据的支持情况,因而应当确保解码图像数据的格式被D3D实例所支持,然后将得到的该格式的解码图像数据存储至缓存池中。
[0049]举例而言,解码图像数据可以采用NV12格式,属于YUV数据的一种存储格式,其特点在于:Y分量单独存放于一个位面(plane)中,而U和V交错排布在另一个位面中。当然,解码图像数据也可以采用其他D3D实例所支持的格式,本发明并不对此进行限制。
[0050]在本实
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1