CN108206937B - 一种提升智能分析性能的方法和装置 - Google Patents

一种提升智能分析性能的方法和装置 Download PDF

Info

Publication number
CN108206937B
CN108206937B CN201611185466.9A CN201611185466A CN108206937B CN 108206937 B CN108206937 B CN 108206937B CN 201611185466 A CN201611185466 A CN 201611185466A CN 108206937 B CN108206937 B CN 108206937B
Authority
CN
China
Prior art keywords
gpu
video data
video
cpu
processing
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.)
Active
Application number
CN201611185466.9A
Other languages
English (en)
Other versions
CN108206937A (zh
Inventor
屠震元
林志
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Zhejiang Uniview Technologies Co Ltd
Original Assignee
Zhejiang Uniview Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Zhejiang Uniview Technologies Co Ltd filed Critical Zhejiang Uniview Technologies Co Ltd
Priority to CN201611185466.9A priority Critical patent/CN108206937B/zh
Publication of CN108206937A publication Critical patent/CN108206937A/zh
Application granted granted Critical
Publication of CN108206937B publication Critical patent/CN108206937B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N7/00Television systems
    • H04N7/18Closed-circuit television [CCTV] systems, i.e. systems in which the video signal is not broadcast
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods 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
    • H04N19/423Methods 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 characterised by memory arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/44Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Image Processing (AREA)

Abstract

本申请提供一种提升智能分析性能的方法和装置,该方法包括:GPU对输入的视频数据进行硬解码;所述GPU将硬解码后的视频数据存储在所述GPU的显存中;所述GPU将所述显存中存储的视频数据映射到DMA缓冲区;CPU从所述DMA缓冲区中获取到所述显存中存储的视频数据对应的显存地址,并利用所述显存地址访问所述GPU的显存;所述CPU对所述GPU的显存中存储的视频数据进行智能分析。通过本申请的技术方案,利用DMA缓冲区的内存缓冲机制,不需要将视频数据从GPU显存拷贝到CPU内存,避免视频数据的大量拷贝,实现GPU显存与CPU内存之间的视频数据零拷贝,减轻设备处理负担,提高设备处理性能,提升视频数据的智能分析性能。

Description

一种提升智能分析性能的方法和装置
技术领域
本申请涉及监控技术领域,尤其涉及一种提升智能分析性能的方法和装置。
背景技术
近年来,随着计算机、网络以及图像处理、传输技术的飞速发展,视频监控系统的普及化趋势越来越明显,视频监控系统正在逐步迈入高清化,智能化,视频监控系统可以应用于众多领域,如智能交通、智慧园区、平安城市等。
在视频监控系统中,为了解决性能问题,并同时满足多路智能分析的需求,DSP(Digital Signal Processing,数字信号处理)、GPU(Graphics Processing Unit,图形处理器)等高速处理器得到普及。而GPU与CPU(Central Processing Unit,中央处理器)的差别在于:GPU有更少的逻辑控制单元以及更多的算术运算单元,由于GPU在逻辑判断方面的弱势,从而导致GPU需要与CPU配合使用。
在智能分析算法中,目前实现为:GPU对输入的视频数据进行硬解码,并将解码完的视频数据存储在GPU的显存中,并将CPU需要的视频数据从GPU的显存拷贝到CPU的内存中,在CPU的内存中完成对视频数据的智能分析。
但是,针对将视频数据从GPU显存拷贝到CPU内存的过程,需要消耗大量性能,从而会降低设备的处理性能,并导致无法完成对视频数据的智能分析。
发明内容
本申请提供一种提升智能分析性能的方法,所述方法包括:
图形处理器GPU对输入的视频数据进行硬解码;
所述GPU将硬解码后的视频数据存储在所述GPU的显存中;
所述GPU将所述显存中存储的视频数据映射到直接内存访问DMA缓冲区;
中央处理器CPU从所述DMA缓冲区中获取到所述显存中存储的视频数据对应的显存地址,并利用所述显存地址访问所述GPU的显存;
所述CPU对所述GPU的显存中存储的视频数据进行智能分析。
所述CPU对所述GPU的显存中存储的视频数据进行智能分析的过程,具体包括:所述CPU对所述GPU的显存中存储的第N帧视频数据进行第一类处理,并利用所述显存地址将处理后的第N帧视频数据存储到所述GPU的显存中;
所述GPU对所述GPU的显存中存储的第(N-1)帧视频数据进行第二类处理,所述第(N-1)帧视频数据是所述CPU在上一个处理周期处理过的视频数据,并将处理后的第(N-1)帧视频数据存储到所述GPU的显存中;
所述CPU对所述GPU的显存中存储的视频数据进行智能分析。
所述CPU包括M核CPU,所述M为大于等于2的正整数,所述GPU包括单核GPU;在一个处理周期,所述CPU的每个核分别对所述GPU的显存中存储的第N帧视频数据进行第一类处理;所述单核GPU采用队列处理方式,依次对所述CPU的每个核在上一个处理周期处理过的第(N-1)帧视频数据进行第二类处理;所述第一类处理包括前景处理和/或特征检测;
所述第二类处理包括SSD处理。
所述GPU将硬解码后的视频数据存储在所述GPU的显存中的过程,具体包括:若需要存储第一类数据格式,则所述GPU对硬解码后的视频数据进行转换处理,将转换处理后的视频数据存储在所述GPU的显存中;若需要存储第二类数据格式,则所述GPU对硬解码后的视频数据进行转换处理,对转换处理后的视频数据进行连续处理,将连续处理后的视频数据存储在所述GPU的显存中。
所述GPU将所述显存中存储的视频数据映射到DMA缓冲区的过程,具体包括:所述GPU发出用于申请DMA缓冲区的请求消息,所述请求消息用于从所述DMA缓冲区中申请一块共享缓冲区,且所述CPU绑定所述共享缓冲区;
所述GPU将所述显存中存储的视频数据映射到所述共享缓冲区,且所述CPU利用所述CPU与所述共享缓冲区的绑定关系,访问所述共享缓冲区。
所述方法进一步包括:
当需要显示视频数据时,从所述DMA缓冲区中获取到所述GPU的显存中存储的视频数据对应的显存地址,并利用所述显存地址访问所述GPU的显存,并将所述GPU的显存中存储的视频数据进行显示;其中,所述GPU的显存中存储的视频数据包括:硬解码后的视频数据、经过智能分析的视频数据。
本申请提供一种提升智能分析性能的装置,所述装置包括:
解码模块,用于通过图形处理器GPU对输入的视频数据进行硬解码;
映射模块,用于通过所述GPU将硬解码后的视频数据存储在所述GPU的显存中,并将所述显存中存储的视频数据映射到直接内存访问DMA缓冲区;
处理模块,用于通过中央处理器CPU从所述DMA缓冲区中获取到所述显存中存储的视频数据对应的显存地址,并利用所述显存地址访问所述GPU的显存,并通过所述CPU对所述GPU的显存中存储的视频数据进行智能分析。
所述处理模块,具体用于在通过所述CPU对所述GPU的显存中存储的视频数据进行智能分析的过程中,通过所述CPU对所述GPU的显存中存储的第N帧视频数据进行第一类处理,并利用所述显存地址将处理后的第N帧视频数据存储到所述GPU的显存中;通过所述GPU对所述GPU的显存中存储的第(N-1)帧视频数据进行第二类处理,第(N-1)帧视频数据是所述CPU在上一个处理周期处理过的视频数据,并将处理后的第(N-1)帧视频数据存储到所述GPU的显存中;通过所述CPU对所述GPU的显存中存储的视频数据进行智能分析;
其中,所述CPU包括M核CPU,M为大于等于2的正整数,所述GPU包括单核GPU;在一个处理周期,CPU的每个核分别对所述GPU的显存中存储的第N帧视频数据进行第一类处理;单核GPU采用队列处理方式,依次对所述CPU的每个核在上一个处理周期处理过的第(N-1)帧视频数据进行第二类处理;所述第一类处理包括前景处理和/或特征检测;所述第二类处理包括SSD处理。
进一步的,所述映射模块,具体用于在通过所述GPU将硬解码后的视频数据存储在所述GPU的显存中的过程中,若需要存储第一类数据格式,则通过所述GPU对硬解码后的视频数据进行转换处理,并将转换处理后的视频数据存储在所述GPU的显存中;若需要存储第二类数据格式,则通过所述GPU对硬解码后的视频数据进行转换处理,并对转换处理后的视频数据进行连续处理,并将连续处理后的视频数据存储在所述GPU的显存中。
进一步的,所述映射模块,具体用于在通过所述GPU将所述显存中存储的视频数据映射到DMA缓冲区的过程中,通过所述GPU发出用于申请DMA缓冲区的请求消息,所述请求消息用于从所述DMA缓冲区中申请一块共享缓冲区,且所述CPU绑定所述共享缓冲区;通过所述GPU将所述显存中存储的视频数据映射到所述共享缓冲区,且所述CPU利用所述CPU与所述共享缓冲区的绑定关系,访问所述共享缓冲区;所述装置还包括:显示模块;所述显示模块,用于当需要显示视频数据时,则从所述DMA缓冲区中获取到所述GPU的显存中存储的视频数据对应的显存地址,并利用所述显存地址访问所述GPU的显存,并将所述GPU的显存中存储的视频数据进行显示;其中,所述GPU的显存中存储的视频数据包括:硬解码后的视频数据、经过智能分析的视频数据。
基于上述技术方案,本申请实施例中,GPU可以将硬解码后的视频数据存储在GPU的显存中,并将该显存中存储的视频数据映射到DMA(Direct Memory Access,直接内存访问)缓冲区,而并不是将视频数据拷贝到DMA缓冲区,且CPU是从DMA缓冲区中获取到显存地址,并利用显存地址直接访问GPU的显存,并可以对GPU的显存中存储的视频数据进行智能分析。基于上述方式,利用DMA缓冲区的内存缓冲机制,不需要将视频数据从GPU显存拷贝到CPU内存,避免视频数据的大量拷贝,实现GPU显存与CPU内存之间的视频数据零拷贝,减轻设备处理负担,提高设备处理性能,提升视频数据的智能分析性能。
附图说明
为了更加清楚地说明本申请实施例或者现有技术中的技术方案,下面将对本申请实施例或者现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据本申请实施例的这些附图获得其他的附图。
图1是本申请一种实施方式中的提升智能分析性能的方法的流程图;
图2A-图2F是本申请一种实施方式中的应用场景示意图;
图3是本申请一种实施方式中的智能分析设备的硬件结构图;
图4是本申请一种实施方式中的提升智能分析性能的装置的结构图。
具体实施方式
在本申请使用的术语仅仅是出于描述特定实施例的目的,而非限制本申请。本申请和权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其它含义。还应当理解,本文中使用的术语“和/或”是指包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,此外,所使用的词语“如果”可以被解释成为“在……时”,或者“当……时”,或者“响应于确定”。
本申请实施例中提出了一种提升智能分析性能的方法,该方法可以应用于智能分析设备,该智能分析设备可以包括但不限于GPU、CPU和DMA缓冲区,该智能分析设备可以是单独的一个物理设备,也可以作为一个逻辑实体存在于其它物理设备上。参见图1所示,为该方法的流程图,该方法可以包括:
步骤101,GPU对输入的视频数据进行硬解码。
步骤102,GPU将硬解码后的视频数据存储在GPU的显存中。
在一个例子中,经过压缩编码的视频数据以帧为单位输入智能分析设备,该智能分析设备的GPU对输入的每一帧视频数据进行硬解码,且硬解码后得到的视频数据存储于GPU的显存中。而且,硬解码后得到的视频数据一般以YUV空间的Y(明亮度)分量、U(色度)分量、V(色度)分量的形式存在。
在一个例子中,针对“GPU将硬解码后的视频数据存储在GPU的显存中”的过程,可以包括:若需要存储第一类数据格式,则GPU对硬解码后的视频数据进行转换处理,将转换处理后的视频数据存储在GPU的显存中;若需要存储第二类数据格式,则GPU对硬解码后的视频数据进行转换处理,对转换处理后的视频数据进行连续处理,并将连续处理后的视频数据存储在GPU的显存中。
步骤103,GPU将该显存中存储的视频数据映射到DMA缓冲区。
在一个例子中,针对“GPU将该显存中存储的视频数据映射到DMA缓冲区”的过程,可以包括:GPU发出用于申请DMA缓冲区的请求消息,该请求消息用于从DMA缓冲区中申请一块共享缓冲区,且CPU可以绑定该共享缓冲区。进一步的,GPU可以将该显存中存储的视频数据映射到该共享缓冲区,且CPU可以利用本CPU与该共享缓冲区的绑定关系,访问该共享缓冲区。
步骤104,CPU从该DMA缓冲区中获取到该GPU的显存中存储的视频数据对应的显存地址,并利用该显存地址访问该GPU的显存。
步骤105,CPU对该GPU的显存中存储的视频数据进行智能分析。
在一个例子中,GPU在将该显存中存储的视频数据映射到DMA缓冲区时,并不是将视频数据直接拷贝到DMA缓冲区,而是将这些视频数据在该显存中的地址信息(即显存地址)存储到DMA缓冲区,而这些视频数据仍然存储在GPU的显存。进一步的,CPU可以访问该DMA缓冲区,并从该DMA缓冲区中获取到该GPU的显存中存储的视频数据对应的显存地址,并利用该显存地址访问该GPU的显存。CPU在访问到该GPU的显存之后,就可以从该GPU的显存中获取到这些视频数据,并对这些视频数据进行智能分析,如统计人数等。
在一个例子中,针对“CPU对该GPU的显存中存储的视频数据进行智能分析”的过程,可以包括:CPU对该GPU的显存中存储的第N帧视频数据进行第一类处理,N为大于等于2的正整数,并利用上述显存地址将第一类处理后的第N帧视频数据存储到GPU的显存中;GPU对GPU的显存中存储的第(N-1)帧视频数据进行第二类处理,该第(N-1)帧视频数据是CPU在上一个处理周期处理过的视频数据,并将第二类处理后的第(N-1)帧视频数据存储到GPU的显存中。进一步的,CPU对GPU的显存中存储的视频数据(即CPU进行第一类处理后的视频数据、GPU进行第二类处理后的视频数据)进行智能分析。
例如,GPU将硬解码后的视频数据存储在GPU的显存后,在第一个处理周期,CPU从该GPU的显存中获取第一帧视频数据,对第一帧视频数据进行第一类处理,并将第一类处理后的第一帧视频数据存储到GPU的显存中。在第二个处理周期,CPU从该GPU的显存中获取第二帧视频数据,对第二帧视频数据进行第一类处理,并将第一类处理后的第二帧视频数据存储到GPU的显存中;而且,GPU对显存中存储的经过CPU第一类处理的第一帧视频数据进行第二类处理,并将第二类处理后的第一帧视频数据存储到GPU的显存中。在第三个处理周期,CPU从该GPU的显存中获取第三帧视频数据,对第三帧视频数据进行第一类处理,并将第一类处理后的第三帧视频数据存储到GPU的显存中;而且,GPU对显存中存储的经过CPU第一类处理的第二帧视频数据进行第二类处理,并将第二类处理后的第二帧视频数据存储到GPU的显存中。以此类推,后续不再赘述。基于上述处理,CPU对GPU的显存中存储的视频数据(即CPU进行第一类处理后的视频数据、GPU进行第二类处理后的视频数据)进行智能分析。
在一个例子中,CPU包括M核CPU,M为大于等于2的正整数,如M为4时,CPU为4核CPU,而且,GPU包括单核GPU。在实际应用中,M的数目对应的是CPU上算法执行的路数(即并行线程数)。基于此,在一个处理周期,CPU的每个核分别对GPU的显存中存储的第N帧视频数据进行第一类处理;单核GPU采用队列处理方式,依次对CPU的每个核在上一个处理周期处理过的第(N-1)帧视频数据进行第二类处理。其中,上述第一类处理可以包括但不限于前景处理和/或特征检测;上述第二类处理可以包括但不限于SSD处理。
在一个例子中,当需要显示视频数据时,该智能分析设备还可以从该DMA缓冲区中获取到GPU的显存中存储的视频数据对应的显存地址,并利用该显存地址访问该GPU的显存,并将GPU的显存中存储的视频数据进行显示。其中,GPU的显存中存储的视频数据可以包括:硬解码后的视频数据(步骤102中存储的视频数据)、经过智能分析的视频数据(CPU执行步骤105后,可以得到经过智能分析的视频数据,将经过智能分析的视频数据存储在GPU的显存中)。
基于上述技术方案,本申请实施例中,GPU可以将硬解码后的视频数据存储在GPU的显存中,并将该显存中存储的视频数据映射到DMA(Direct Memory Access,直接内存访问)缓冲区,而并不是将视频数据拷贝到DMA缓冲区,且CPU是从DMA缓冲区中获取到显存地址,并利用显存地址直接访问GPU的显存,并可以对GPU的显存中存储的视频数据进行智能分析。基于上述方式,利用DMA缓冲区的内存缓冲机制,不需要将视频数据从GPU显存拷贝到CPU内存,避免视频数据的大量拷贝,实现GPU显存与CPU内存之间的视频数据零拷贝,减轻设备处理负担,提高设备处理性能,提升视频数据的智能分析性能。
以下结合具体的应用场景,对本申请实施例的上述技术方案进行详细说明。
如图2A所示,为本应用场景的示意图,智能分析设备可以包括GPU、CPU和DMA缓冲区等,且智能分析设备可以基于视频数据实现人数统计。基于DMA缓冲区的内存缓冲机制,实现GPU显存与CPU内存之间的视频数据零拷贝,提升人数统计算法的整体性能。可以保证GPU的硬解码前后,视频数据的分辨率保持不变(如1080P的视频数据无需缩放成720P或者D1的分辨率)。针对人数统计算法提出新的算法流水(Pipeline),充分调动CPU资源和GPU资源。
本申请实施例中提出的提升智能分析性能的方法,可以包括以下步骤:
步骤1、对GPU的硬解码参数进行初始化。
在一个例子中,可以利用V4L2(Video for Linux 2)的API(ApplicationProgramming Interface,应用程序编程接口)对GPU的硬解码参数进行初始化,而且,该硬解码参数可以包括但不限于:视频制式(如PAL(Phase Alteration Line,逐行倒相)、NTSC(National Television Standards Committee,国家电视标准委员会)等)、帧格式(如宽度、高度等)、GPU解码后的YUV输出格式(如I420(即YUV标准格式4:2:0)、NV12等),对此硬解码参数不做限制。
步骤2、GPU利用硬解码参数对输入的视频数据进行硬解码。其中,针对GPU利用硬解码参数对输入的视频数据进行硬解码的过程,在此不再赘述。
步骤3、GPU将硬解码后的视频数据存储在GPU的显存中。
在一个例子中,硬解码后的视频数据可以以EGL Image(Embedded-SystemGraphics Library Image,嵌入式系统图形库图像)的格式存储在GPU的显存中。
在一个例子中,经过压缩编码的视频数据以帧为单位输入智能分析设备,该智能分析设备的GPU对输入的每一帧视频数据进行硬解码,且硬解码后得到的视频数据存储于GPU的显存中。而且,硬解码后得到的视频数据一般以YUV空间的Y(明亮度)分量、U(色度)分量、V(色度)分量的形式存在。
在一个例子中,针对“GPU将硬解码后的视频数据存储在GPU的显存中”的过程,可以包括:若需要存储第一类数据格式,则GPU对硬解码后的视频数据进行转换处理,将转换处理后的视频数据存储在GPU的显存中;若需要存储第二类数据格式,则GPU对硬解码后的视频数据进行转换处理,对转换处理后的视频数据进行连续处理,并将连续处理后的视频数据存储在GPU的显存中。
当用户希望GPU硬解码输出YUV I420格式时,则第一类数据格式可以为YUV I420格式,且需要存储YUV I420格式。基于此,针对“GPU对硬解码后的视频数据进行转换处理”的过程,GPU对硬解码后的视频数据做一次从呈离散状分布的Block(块状)类型转变为呈线状分布的Pitch(抛状)类型的操作。
当用户希望GPU硬解码输出YUV NV12格式时,则第二类数据格式可以为YUV NV12格式,且需要存储YUV NV12格式。基于此,针对“GPU对硬解码后的视频数据进行转换处理,并对转换处理后的视频数据进行连续处理”的过程,GPU对硬解码后的视频数据做一次从呈离散状分布的Block类型转变为呈线状分布的Pitch类型的操作,然后将未连续存放的Y数据和UV数据进行拷贝。
在实际应用中,GPU硬解码的输出格式是性能提升的重要优化点,以Tegra X1平台上的GPU硬解码为例,可以选择输出YUV I420格式,以节省性能。
步骤4、GPU将该显存中存储的视频数据映射到DMA缓冲区。
在一个例子中,GPU在将该显存中存储的视频数据映射到DMA缓冲区时,并不是将视频数据直接拷贝到DMA缓冲区,而是将视频数据在该显存中的地址信息(即显存地址)存储到DMA缓冲区,而视频数据仍然存储在GPU的显存。CPU可以访问该DMA缓冲区,并从该DMA缓冲区中获取到该GPU的显存中存储的视频数据对应的显存地址,并利用该显存地址访问该GPU的显存。CPU在访问到该GPU的显存之后,就可以从该GPU的显存中获取到视频数据。
其中,考虑到DMA缓冲区的文件描述符是系统kernel(核函数)层的,GPU、CPU等都可以访问这块DMA缓冲区,因此,为了避免GPU显存与CPU内存之间的大量视频数据的拷贝,可以采用内存映射技术,将显存中存储的视频数据(即GPU硬解码后的视频数据)映射到用户空间层的DMA缓冲区中,使得上层API得到一个内核虚拟地址,这样,上层API就可以直接通过用户空间接口操作GPU显存中的视频数据,而且CPU可以对GPU显存中的视频数据进行EGL Image封装,并在EGL Image封装格式的基础上,对视频数据进行处理,在上述处理过程中,并不需要将GPU显存中的视频数据拷贝到CPU的内存中。
在一个例子中,通过DMA缓冲区的共享缓冲机制,GPU显存中的视频数据可以被CPU、V4L2组件、CUDA(Compute Unified Device Architecture,统一计算设备架构)、SOCCamera(System on Chip Camera,片上相机系统)以及DRM(Direct Rendering Manager,直接渲染管理器)内核设备驱动等访问。
在一个例子中,针对“GPU将该显存中存储的视频数据映射到DMA缓冲区”的过程,可以包括:GPU发出用于申请DMA缓冲区的请求消息,该请求消息用于从DMA缓冲区中申请一块共享缓冲区,且CPU可以绑定该共享缓冲区。进一步的,GPU可以将该显存中存储的视频数据映射到该共享缓冲区,而且,该CPU还可以利用本CPU与该共享缓冲区的绑定关系,访问该共享缓冲区。
在实际应用中,若设备驱动需要使用DMA缓冲区,则需要为DMA缓冲区构建一套生产者-消费者模式(即阻塞队列),设备驱动在应用过程中,充当DMA缓冲区中数据的生产者或者消费者,并可以由V4L2组件完成DMA缓冲区的阻塞队列的入列和出列操作。其中,生产者-消费者模式是指:通过一个容器,解决生产者和消费者之间强耦合的问题,生产者和消费者彼此之间不直接通信,而是通过阻塞队列来进行通信,生产者生成数据之后不用等待消费者处理,直接将数据扔给阻塞队列,消费者不找生产者要数据,而是直接从阻塞队列中读取数据,阻塞队列就相当于一个缓冲区,平衡了生产者和消费者的处理能力。
基于上述生产者-消费者模式的原理,则DMA缓冲区的使用可以包括以下步骤:1、生产者(即GPU)发出用于申请DMA缓冲区的请求消息,该请求消息用于从DMA缓冲区中申请一块共享缓冲区;2、获取与该共享缓冲区关联的文件描述符,将其传递给潜在的消费者(即CPU);3、每个消费者将自身绑定在这个共享缓冲区;在实际应用中,缓冲区使用者还可以向消费者发出访问请求,以使消费者将自身绑定在这个共享缓冲区。基于上述处理,GPU(即生产者)可以将显存中存储的视频数据映射到该共享缓冲区,而且,CPU(即消费者)还可以利用本CPU与该共享缓冲区的绑定关系,访问该共享缓冲区。
进一步的,当使用完共享缓冲区后,消费者还可以通知生产者已经完成传输,当消费者不再使用共享缓冲区时,可以脱离该缓冲区。而且,生产者在获知消费者不再使用该共享缓冲区时,不再将视频数据映射到该共享缓冲区。
针对图2A所示的应用场景示意图,还可以对智能分析设备划分图2B所示的应用场景示意图。其中,ioctl(即设备驱动程序中对设备的I/O通道进行管理的函数)用于对GPU的硬解码参数进行初始化。GPU用于利用硬解码参数完成视频数据的硬解码,将硬解码后的视频数据存储到GPU的显存,并将显存中存储的视频数据映射到DMA缓冲区。EGL用于实现将硬解码后的视频数据以EGL Image的格式存储在GPU的显存中,以方便CPU获取。OpenGL(OpenGraphics Library,开放图形库)API用于将EGL Image格式的视频数据转换成OpenGL格式的视频数据。OpenGL API可以将DMA缓冲区映射到CUDA的地址空间,此时,DMA缓冲区会被CPU当成Global Memory(全局存储器)来进行访问,这样,在对显存中的视频数据进行EGLImage封装的基础上,可以将EGL Image格式的视频数据提供给CPU,由CPU对视频数据进行处理,从而提升处理效率。
基于上述处理过程,GPU可以将硬解码后的视频数据存储到GPU的显存,并将显存中存储的视频数据映射到DMA缓冲区,而且,CPU从DMA缓冲区中获取到该GPU的显存中存储的视频数据对应的显存地址,并利用该显存地址访问该GPU的显存,即CPU基于DMA缓冲区从GPU的显存中获取到视频数据。
基于显存中的视频数据,可以进行智能分析,以智能分析算法为人数统计算法为例,则本申请实施例中还提出一种针对人数统计算法的流水(Pipeline),以充分调动CPU资源和GPU资源。当然该智能分析算法并不局限于人数统计算法,后续过程中以人数统计算法为例进行说明。该智能分析过程还可以包括:
步骤5、CPU对该GPU的显存中存储的视频数据进行智能分析。
在一个例子中,针对“CPU对该GPU的显存中存储的视频数据进行智能分析”的过程,可以包括:CPU对该GPU的显存中存储的第N帧视频数据进行第一类处理,N为大于等于2的正整数,并利用上述显存地址将第一类处理后的第N帧视频数据存储到GPU的显存中;GPU对GPU的显存中存储的第(N-1)帧视频数据进行第二类处理,该第(N-1)帧视频数据是CPU在上一个处理周期处理过的视频数据,并将第二类处理后的第(N-1)帧视频数据存储到GPU的显存中。进一步的,CPU对GPU的显存中存储的视频数据(即CPU进行第一类处理后的视频数据、GPU进行第二类处理后的视频数据)进行智能分析。
例如,GPU将硬解码后的视频数据存储在GPU的显存后,在第一个处理周期,CPU从该GPU的显存中获取第一帧视频数据,对第一帧视频数据进行第一类处理,并将第一类处理后的第一帧视频数据存储到GPU的显存中。在第二个处理周期,CPU从该GPU的显存中获取第二帧视频数据,对第二帧视频数据进行第一类处理,并将第一类处理后的第二帧视频数据存储到GPU的显存中;而且,GPU对显存中存储的经过CPU第一类处理的第一帧视频数据进行第二类处理,并将第二类处理后的第一帧视频数据存储到GPU的显存中。在第三个处理周期,CPU从该GPU的显存中获取第三帧视频数据,对第三帧视频数据进行第一类处理,并将第一类处理后的第三帧视频数据存储到GPU的显存中;而且,GPU对显存中存储的经过CPU第一类处理的第二帧视频数据进行第二类处理,并将第二类处理后的第二帧视频数据存储到GPU的显存中。以此类推,后续不再赘述。基于上述处理,CPU对GPU的显存中存储的视频数据(即CPU进行第一类处理后的视频数据、GPU进行第二类处理后的视频数据)进行智能分析。
在一个例子中,CPU可以包括M核CPU,M为大于等于2的正整数,如M为4时,CPU为4核CPU,而且,GPU包括单核GPU。在实际应用中,M的数目对应的是CPU上算法执行的路数(即并行线程数)。基于此,在一个处理周期,CPU的每个核分别对GPU的显存中存储的第N帧视频数据进行第一类处理;单核GPU采用队列处理方式,依次对CPU的每个核在上一个处理周期处理过的第(N-1)帧视频数据进行第二类处理。当然,CPU也可以包括单核CPU,基于此,在一个处理周期,CPU的一个核对GPU的显存中存储的第N帧视频数据进行第一类处理;单核GPU对CPU的一个核在上一个处理周期处理过的第(N-1)帧视频数据进行第二类处理。其中,上述第一类处理可以包括但不限于前景处理和/或特征检测;上述第二类处理可以包括但不限于SSD处理。
如图2C所示,为传统的人数统计算法的示意图,由CPU进行前景处理和特征检测,由GPU进行SSD(Single Shot MultiBox Detector,单检测多检测框输出检测器)处理,由CPU进行算法后处理。即使CPU包括四个核,由于GPU的硬件资源有限,也无法充分发挥CPU的硬件资源,导致CPU的四个核只能同步进行,不能异步进行,即使CPU执行速度快,也会在GPU处理环节变慢,且CPU和GPU之间需要不断的进行切换,未能充分发挥异构计算的硬件资源。
与上述方式不同的是,本申请实施例提出新的人数统计算法流水(Pipeline)方案,可以充分利用四核CPU、单核GPU的硬件资源。如图2D所示,为单核GPU、单核CPU的人数统计的示意图,如图2E所示,为单核GPU、四核CPU的人数统计的示意图,图2D与图2E的处理类似,后续以图2E为例进行说明。
在一个例子中,如图2E所示,CPU的每个核分别对每帧视频数据进行前景处理和特征检测,并利用DMA缓存区将经过处理的视频数据共享给GPU,GPU拿到每一帧视频数据(已经经过前景处理和特征检测)后,会执行SSD处理,而且CPU的每个核共享给GPU的视频数据,可以形成一个队列,以使GPU依次对多个视频数据执行SSD处理。基于上述方式,GPU的处理与CPU的处理为异步进行,从而提高性能,4路人数统计算法的开销,相当于1路的性能。
以下结合图2F所示的人数统计算法的智能分析示意图,对上述过程进行进一步的说明。为了充分调用单核GPU、四核CPU的硬件资源,在进行多路人数统计智能分析时,为了避免大量的内存拷贝,提出了图2F所示的高效流水线,该流水线包括GPU解码、智能分析(CPU和GPU)、GPU编码(包括视频编码和JPEG编码)等功能,而且,图2F中只展示了2路数据流,但是,针对四核CPU会有4路数据流同时并行处理,图2F中以2路数据流为例进行说明。
其中,vic0和vic1是根据GPU解码后的视频数据创建的两路YUV视频数据流或者RGB视频数据流,这两路视频数据流的分辨率可以相同。
vic0这一路专门用于人数统计算法分析,利用DMA缓存区的零内存拷贝的内存共享机制,将视频数据作用于CPU端进行算法预处理和智能分析(即逻辑计算,如上述的前景处理和特征检测部分),与此同时,智能分析模块中涉及算术计算的部分(如上述的SSD处理部分)由GPU端完成,使得数据运算时,再次调用GPU资源进行加速。vic0这一路的主要操作在CPU端完成。
vic1这一路专门用于GPU编码(主要指利用GPU完成视频编码和利用GPU完成JPEG编码)。例如,在完成智能分析后,GPU一方面可以对已经由CPU智能分析后的YUV数据(如在监控视频结构化工程中,添加人物、车辆属性等)再次编码,发送回服务器端;另一方面,对于那些经过智能分析后得到的感兴趣帧(如在监控视频结构化工程中,某一个人,或者某一辆汽车等),又可以单独经JPEG编码后,发送回服务器端。vic1这一路的主要操作在GPU端完成。
综上所述,vic0和vic1这两路视频数据流在GPU和CPU之间进行视频数据交互过程中,真正做到内存数据的零拷贝,从而可以大大提升性能。此外,vic2和vic3是第二条流水线,同vic0和vic1的处理,在此不再重复赘述。
在一个例子中,当需要显示视频数据时,还可以包括以下步骤:
步骤6、智能分析设备还可以从DMA缓冲区中获取到GPU的显存中存储的视频数据对应的显存地址,并利用该显存地址访问该GPU的显存,并将GPU的显存中存储的视频数据进行显示。其中,GPU的显存中存储的视频数据(即显示的视频数据)可以为硬解码后的视频数据、经过智能分析的视频数据。
如图2B所示,当用户需要将智能分析后的视频数据/硬解码后的视频数据用于可视化时,则display server(显示端)可以直接从DMA缓冲区中获取到GPU的显存中存储的视频数据对应的显存地址,并利用该显存地址访问该GPU的显存,而且,在对显存中的视频数据进行EGL Image封装的基础上,display server可以将EGL Image格式的视频数据进行渲染、显示,对此过程不做限制。
在一个例子中,还可以使用CUDA的Kernel函数将视频数据复制到纹理内存中,该纹理内存位于设备端,且纹理内存的访问速度比DMA缓冲区要快,因此纹理内存具有很小的延迟。此外,纹理内存的2D定位在CUDA中已经进行了优化,对于同一线程束的线程访问,位置临近的纹理内存时效率非常高。此外,纹理内存中数据流的获取(Stream Fetching)在CUDA中也进行了优化。
基于上述技术方案,本申请实施例中,GPU可以将硬解码后的视频数据存储在GPU的显存中,并将该显存中存储的视频数据映射到DMA缓冲区,而并不是将视频数据拷贝到DMA缓冲区,且CPU是从DMA缓冲区中获取到显存地址,并利用显存地址直接访问GPU的显存,并可以对GPU的显存中存储的视频数据进行智能分析。基于上述方式,利用DMA缓冲区的内存缓冲机制,不需要将视频数据从GPU显存拷贝到CPU内存,避免视频数据的大量拷贝,实现GPU显存与CPU内存之间的视频数据零拷贝,减轻设备处理负担,提高设备处理性能,提升视频数据的智能分析性能。而且,上述方式可以保证原始图像分辨率,有效提升了系统的性能,可以充分调用四核CPU、单核GPU的硬件资源,使CPU和GPU使用率可以高达几乎满载水平,且硬解码出来的数据既可以用于智能分析,也可以用于可视化。而且,针对人数统计算法提出了一种利用DMA缓存区的内存共享技术,实现数据解码、智能分析、编码以及可视化等一系列操作,在这一系列操作过程中,图像分辨率保持不变,与此同时,在数据解码、智能分析、编码以及可视化的操作之间,实现内存数据的零拷贝。
基于与上述方法同样的申请构思,本申请实施例中还提供了一种提升智能分析性能的装置,该提升智能分析性能的装置可以应用在智能分析设备上。其中,该提升智能分析性能的装置可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在的智能分析设备的处理器,读取非易失性存储器中对应的计算机程序指令形成的。从硬件层面而言,如图3所示,为本申请提出的提升智能分析性能的装置所在的智能分析设备的一种硬件结构图,除了图3所示的处理器、非易失性存储器外,智能分析设备还可以包括其他硬件,如负责处理报文的转发芯片、网络接口、内存等;从硬件结构上来讲,该智能分析设备还可能是分布式设备,可能包括多个接口卡,以便在硬件层面进行报文处理的扩展。
如图4所示,为该提升智能分析性能的装置的结构图,所述装置包括:
解码模块11,用于通过图形处理器GPU对输入的视频数据进行硬解码;
映射模块12,用于通过所述GPU将硬解码后的视频数据存储在所述GPU的显存中,并将所述显存中存储的视频数据映射到直接内存访问DMA缓冲区;
处理模块13,用于通过中央处理器CPU从所述DMA缓冲区中获取到所述显存中存储的视频数据对应的显存地址,并利用所述显存地址访问所述GPU的显存,并通过所述CPU对所述GPU的显存中存储的视频数据进行智能分析。
所述处理模块13,具体用于在通过所述CPU对所述GPU的显存中存储的视频数据进行智能分析的过程中,通过所述CPU对所述GPU的显存中存储的第N帧视频数据进行第一类处理,并利用所述显存地址将处理后的第N帧视频数据存储到所述GPU的显存中;通过所述GPU对所述GPU的显存中存储的第(N-1)帧视频数据进行第二类处理,第(N-1)帧视频数据是所述CPU在上一个处理周期处理过的视频数据,并将处理后的第(N-1)帧视频数据存储到所述GPU的显存中;通过所述CPU对所述GPU的显存中存储的视频数据进行智能分析;所述CPU包括M核CPU,M为大于等于2的正整数,所述GPU包括单核GPU;在一个处理周期,CPU的每个核分别对所述GPU的显存中存储的第N帧视频数据进行第一类处理;单核GPU采用队列处理方式,依次对所述CPU的每个核在上一个处理周期处理过的第(N-1)帧视频数据进行第二类处理;所述第一类处理包括前景处理和/或特征检测;所述第二类处理包括SSD处理。
在一个例子中,所述映射模块12,具体用于在通过所述GPU将硬解码后的视频数据存储在所述GPU的显存中的过程中,若需要存储第一类数据格式,则通过所述GPU对硬解码后的视频数据进行转换处理,并将转换处理后的视频数据存储在所述GPU的显存中;若需要存储第二类数据格式,则通过所述GPU对硬解码后的视频数据进行转换处理,并对转换处理后的视频数据进行连续处理,并将连续处理后的视频数据存储在所述GPU的显存中。
在一个例子中,所述映射模块12,具体用于在通过所述GPU将所述显存中存储的视频数据映射到DMA缓冲区的过程中,可以通过所述GPU发出用于申请DMA缓冲区的请求消息,其中,所述请求消息用于从所述DMA缓冲区中申请一块共享缓冲区,而且,所述CPU绑定所述共享缓冲区;以及,通过所述GPU将所述显存中存储的视频数据映射到所述共享缓冲区,且所述CPU利用所述CPU与所述共享缓冲区的绑定关系,访问所述共享缓冲区。
在一个例子中,所述装置还包括:显示模块(图中未体现);所述显示模块,用于当需要显示视频数据时,则从所述DMA缓冲区中获取到所述GPU的显存中存储的视频数据对应的显存地址,并利用所述显存地址访问所述GPU的显存,并将所述GPU的显存中存储的视频数据进行显示;其中,所述GPU的显存中存储的视频数据包括:硬解码后的视频数据、经过智能分析的视频数据。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可以由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其它可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其它可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
而且,这些计算机程序指令也可以存储在能引导计算机或其它可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或者多个流程和/或方框图一个方框或者多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其它可编程数据处理设备上,使得在计算机或者其它可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其它可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可以采用完全硬件实施例、完全软件实施例、或者结合软件和硬件方面的实施例的形式。而且,本申请可以采用在一个或者多个其中包含有计算机可用程序代码的计算机可用存储介质(可以包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。

Claims (10)

1.一种提升智能分析性能的方法,其特征在于,所述方法包括:
图形处理器GPU对输入的视频数据进行硬解码;
所述GPU将硬解码后的视频数据存储在所述GPU的显存中;
所述GPU将所述显存中存储的视频数据映射到直接内存访问DMA缓冲区;
中央处理器CPU从所述DMA缓冲区中获取到所述显存中存储的视频数据对应的显存地址,并利用所述显存地址访问所述GPU的显存;
所述CPU对所述GPU的显存中存储的视频数据进行智能分析。
2.根据权利要求1所述的方法,其特征在于,所述CPU对所述GPU的显存中存储的视频数据进行智能分析的过程,具体包括:
所述CPU对所述GPU的显存中存储的第N帧视频数据进行第一类处理,并利用所述显存地址将处理后的第N帧视频数据存储到所述GPU的显存中;所述第一类处理包括前景处理和/或特征检测;
所述GPU对所述GPU的显存中存储的第(N-1)帧视频数据进行第二类处理,所述第(N-1)帧视频数据是所述CPU在上一个处理周期处理过的视频数据,并将处理后的第(N-1)帧视频数据存储到所述GPU的显存中;所述第二类处理包括SSD处理;
所述CPU对所述GPU的显存中存储的视频数据进行智能分析。
3.根据权利要求2所述的方法,其特征在于,所述CPU包括M核CPU,所述M为大于等于2的正整数,所述GPU包括单核GPU;
在一个处理周期,所述CPU的每个核分别对所述GPU的显存中存储的第N帧视频数据进行第一类处理;所述单核GPU采用队列处理方式,依次对所述CPU的每个核在上一个处理周期处理过的第(N-1)帧视频数据进行第二类处理。
4.根据权利要求1所述的方法,其特征在于,所述GPU将硬解码后的视频数据存储在所述GPU的显存中的过程,具体包括:
若需要存储第一类数据格式,则所述GPU对硬解码后的视频数据进行转换处理,将转换处理后的视频数据存储在所述GPU的显存中;若需要存储第二类数据格式,则所述GPU对硬解码后的视频数据进行转换处理,对转换处理后的视频数据进行连续处理,将连续处理后的视频数据存储在所述GPU的显存中。
5.根据权利要求1所述的方法,其特征在于,所述GPU将所述显存中存储的视频数据映射到DMA缓冲区的过程,具体包括:
所述GPU发出用于申请DMA缓冲区的请求消息,所述请求消息用于从所述DMA缓冲区中申请一块共享缓冲区,且所述CPU绑定所述共享缓冲区;
所述GPU将所述显存中存储的视频数据映射到所述共享缓冲区,且所述CPU利用所述CPU与所述共享缓冲区的绑定关系,访问所述共享缓冲区。
6.根据权利要求1所述的方法,其特征在于,所述方法进一步包括:
当需要显示视频数据时,从所述DMA缓冲区中获取到所述GPU的显存中存储的视频数据对应的显存地址,并利用所述显存地址访问所述GPU的显存,并将所述GPU的显存中存储的视频数据进行显示;其中,所述GPU的显存中存储的视频数据包括:硬解码后的视频数据、经过智能分析的视频数据。
7.一种提升智能分析性能的装置,其特征在于,所述装置包括:
解码模块,用于通过图形处理器GPU对输入的视频数据进行硬解码;
映射模块,用于通过所述GPU将硬解码后的视频数据存储在所述GPU的显存中,并将所述显存中存储的视频数据映射到直接内存访问DMA缓冲区;
处理模块,用于通过中央处理器CPU从所述DMA缓冲区中获取到所述显存中存储的视频数据对应的显存地址,并利用所述显存地址访问所述GPU的显存,并通过所述CPU对所述GPU的显存中存储的视频数据进行智能分析。
8.根据权利要求7所述的装置,其特征在于,
所述处理模块,具体用于在通过所述CPU对所述GPU的显存中存储的视频数据进行智能分析的过程中,通过所述CPU对所述GPU的显存中存储的第N帧视频数据进行第一类处理,并利用所述显存地址将处理后的第N帧视频数据存储到所述GPU的显存中;通过所述GPU对所述GPU的显存中存储的第(N-1)帧视频数据进行第二类处理,第(N-1)帧视频数据是所述CPU在上一个处理周期处理过的视频数据,并将处理后的第(N-1)帧视频数据存储到所述GPU的显存中;通过所述CPU对所述GPU的显存中存储的视频数据进行智能分析;
其中,所述CPU包括M核CPU,M为大于等于2的正整数,所述GPU包括单核GPU;在一个处理周期,CPU的每个核分别对所述GPU的显存中存储的第N帧视频数据进行第一类处理;单核GPU采用队列处理方式,依次对所述CPU的每个核在上一个处理周期处理过的第(N-1)帧视频数据进行第二类处理;所述第一类处理包括前景处理和/或特征检测;所述第二类处理包括SSD处理。
9.根据权利要求7所述的装置,其特征在于,所述映射模块,具体用于在通过所述GPU将硬解码后的视频数据存储在所述GPU的显存中的过程中,若需要存储第一类数据格式,则通过所述GPU对硬解码后的视频数据进行转换处理,将转换处理后的视频数据存储在所述GPU的显存中;若需要存储第二类数据格式,则通过所述GPU对硬解码后的视频数据进行转换处理,对转换处理后的视频数据进行连续处理,将连续处理后的视频数据存储在所述GPU的显存中。
10.根据权利要求7所述的装置,其特征在于,所述映射模块,具体用于在通过所述GPU将所述显存中存储的视频数据映射到DMA缓冲区的过程中,通过所述GPU发出用于申请DMA缓冲区的请求消息,所述请求消息用于从所述DMA缓冲区中申请一块共享缓冲区,且所述CPU绑定所述共享缓冲区;通过所述GPU将所述显存中存储的视频数据映射到所述共享缓冲区,且所述CPU利用所述CPU与所述共享缓冲区的绑定关系,访问所述共享缓冲区;
所述装置还包括:显示模块;所述显示模块,用于当需要显示视频数据时,则从所述DMA缓冲区中获取到所述GPU的显存中存储的视频数据对应的显存地址,并利用所述显存地址访问所述GPU的显存,并将所述GPU的显存中存储的视频数据进行显示;其中,所述GPU的显存中存储的视频数据包括:硬解码后的视频数据、经过智能分析的视频数据。
CN201611185466.9A 2016-12-20 2016-12-20 一种提升智能分析性能的方法和装置 Active CN108206937B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201611185466.9A CN108206937B (zh) 2016-12-20 2016-12-20 一种提升智能分析性能的方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201611185466.9A CN108206937B (zh) 2016-12-20 2016-12-20 一种提升智能分析性能的方法和装置

Publications (2)

Publication Number Publication Date
CN108206937A CN108206937A (zh) 2018-06-26
CN108206937B true CN108206937B (zh) 2020-05-19

Family

ID=62604015

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201611185466.9A Active CN108206937B (zh) 2016-12-20 2016-12-20 一种提升智能分析性能的方法和装置

Country Status (1)

Country Link
CN (1) CN108206937B (zh)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108924491B (zh) * 2018-07-04 2020-08-25 深圳市商汤科技有限公司 视频流处理方法及装置、电子设备和存储介质
CN110969217B (zh) * 2018-09-28 2023-11-17 杭州海康威视数字技术股份有限公司 基于卷积神经网络进行图像处理的方法和装置
CN109726169A (zh) * 2019-01-09 2019-05-07 扬州万方电子技术有限责任公司 一种图形硬件加速结构及其方法
CN109886862B (zh) * 2019-01-25 2023-01-17 上海赜睿信息科技有限公司 一种数据处理的方法及装置
CN109815192B (zh) * 2019-01-31 2024-06-11 深兰机器人(上海)有限公司 一种嵌入式系统内存管理方法及装置
CN112954449B (zh) * 2021-01-29 2023-03-24 浙江大华技术股份有限公司 视频流处理方法、系统、电子装置和存储介质
CN112801856B (zh) * 2021-02-04 2024-06-21 西安万像电子科技有限公司 数据处理方法和装置
CN113055681B (zh) * 2021-03-02 2024-02-09 长沙景嘉微电子股份有限公司 视频解码显示方法,装置,电子设备及存储介质
CN114567784B (zh) * 2022-04-24 2022-08-16 银河麒麟软件(长沙)有限公司 一种用于飞腾显卡的vpu视频解码输出方法及系统
CN115695845A (zh) * 2022-09-26 2023-02-03 太保科技有限公司 一种网络离线视频文件字节流的解码方法及装置
CN115827168B (zh) * 2023-02-01 2023-05-12 南京芯传汇电子科技有限公司 一种二进制仿真环境下虚拟机通信的优化方法
CN117909268B (zh) * 2024-03-19 2024-05-24 麒麟软件有限公司 一种gpu驱动优化方法

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102625934A (zh) * 2008-11-13 2012-08-01 英特尔公司 共享虚拟存储器
CN103200128A (zh) * 2013-04-01 2013-07-10 华为技术有限公司 一种网络包处理的方法、装置和系统
CN103491379A (zh) * 2013-09-25 2014-01-01 浙江宇视科技有限公司 一种提升智能分析性能的方法和装置
CN103716635A (zh) * 2013-12-12 2014-04-09 浙江宇视科技有限公司 一种提升智能分析性能的方法和装置
CN104471554A (zh) * 2012-08-17 2015-03-25 英特尔公司 共享虚拟存储器
CN105163127A (zh) * 2015-09-07 2015-12-16 浙江宇视科技有限公司 视频分析方法及装置

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7305524B2 (en) * 2004-10-08 2007-12-04 International Business Machines Corporation Snoop filter directory mechanism in coherency shared memory system
US9615049B2 (en) * 2008-04-10 2017-04-04 Imagine Communications Corp. Video multiviewer system providing direct video data transfer to graphics processing unit (GPU) memory and related methods

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102625934A (zh) * 2008-11-13 2012-08-01 英特尔公司 共享虚拟存储器
CN104471554A (zh) * 2012-08-17 2015-03-25 英特尔公司 共享虚拟存储器
CN103200128A (zh) * 2013-04-01 2013-07-10 华为技术有限公司 一种网络包处理的方法、装置和系统
CN103491379A (zh) * 2013-09-25 2014-01-01 浙江宇视科技有限公司 一种提升智能分析性能的方法和装置
CN103716635A (zh) * 2013-12-12 2014-04-09 浙江宇视科技有限公司 一种提升智能分析性能的方法和装置
CN105163127A (zh) * 2015-09-07 2015-12-16 浙江宇视科技有限公司 视频分析方法及装置

Also Published As

Publication number Publication date
CN108206937A (zh) 2018-06-26

Similar Documents

Publication Publication Date Title
CN108206937B (zh) 一种提升智能分析性能的方法和装置
US10580109B2 (en) Data distribution fabric in scalable GPUs
US11750787B2 (en) Adaptive resolution of point cloud and viewpoint prediction for video streaming in computing environments
EP4113994A2 (en) Mv/mode prediction, roi-based transmit, metadata capture, and format detection for 360 video
US9916634B2 (en) Facilitating efficient graphics command generation and execution for improved graphics performance at computing devices
CN108475440B (zh) 用于在计算装置处高效处理图形数据的光线压缩
US10229468B2 (en) Automated conversion of GPGPU workloads to 3D pipeline workloads
US10546411B2 (en) Directed acyclic graph path enumeration with application in multilevel instancing
US20210125378A1 (en) Smart compression/decompression schemes for efficiency and superior results
US20170212791A1 (en) Facilitating dynamic thread-safe operations for variable bit-length transactions on computing devices
WO2017082973A2 (en) Facilitating efficeint centralized rendering of viewpoint-agnostic graphics workloads at computing devices
WO2017155610A1 (en) Method and apparatus for efficient submission of workload to a high performance graphics sub-system
CN114567784B (zh) 一种用于飞腾显卡的vpu视频解码输出方法及系统
US10026142B2 (en) Supporting multi-level nesting of command buffers in graphics command streams at computing devices
US10249017B2 (en) Apparatus and method for shared resource partitioning through credit management
US9779465B2 (en) Apparatus and method for implementing power saving techniques when processing floating point values
Prata et al. Video Processing on GPU: Analysis of Data Transfer Overhead

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