显示硬件发展与视频开发系列(6)----显示标注与视频处理单元(2):VPU

       VPU(Video Processing Unit,视频处理单元)是一种全新的视频处理平台核心引擎,具有硬解码功能以及减少CPU负荷的能力。VPU可以减少服务器负载和网络带宽的消耗。

       VPU由ATI提出,区别于传统GPU(Graph Process Unit,图形处理单元)。图形处理单元又包括视频处理单元、外视频模块和后处理模块这三个主要模块。

显示硬件发展与视频开发系列(6)----显示标注与视频处理单元(2):VPU

7.2.1、VPU的基础特性

       A、支持视频编解码标准类别丰富,图像高清。

       B、支持多种抗误码工具、多解码和全双工多方通话同时进行。

       C、提供了可编程性、柔初性,以及易于升级的解码和编码或主机接口,因为在编解码处理和主接口都实现为可编程微处理中的固件。

7.2.2、VPU特色及应用

       VPU针对视觉处理应用而设计,在性能、功耗和功能性方面都有特别的强化,使之更贴近于实际的应用需求,其设计兼顾到多种用途,专门为视觉处理进行硬件系统的优化。

显示硬件发展与视频开发系列(6)----显示标注与视频处理单元(2):VPU

       VPU也是SoC,集成多个主控RISC的CPU、许多硬件加速器单元和矢量处理器阵列,专门为视觉海量像素设计的高性能影像信号处理器(ISP),以及丰富的高速外围接口。

       保证强大性能和功能的前提下,VPU采用更先进的集成电路工艺,大大缩小了芯片的尺寸,结合有效的技术手段,降低各个运算单元的功耗。

       VPU为视觉应用提供了一个强大的平台,更多的开发工作是在软件上,基于VPU的视觉应用系统开发可以充分利用片上的硬件单元及相关的软件资源。

       包含工具、支持库及框架的完整VPU软件开发套件(SDK),视频处理器中涉及视觉处理的单元得到了增强,如核心视觉处理单元、线性代数运算矩阵,还有前端影像处理单元,不仅包含ISP处理,还有ISP仿真,支持相机调试工具。

显示硬件发展与视频开发系列(6)----显示标注与视频处理单元(2):VPU

       图形处理能力的提升表现在支持图形检测API,为便于多核异构芯片开发而支持OpenCL。由于在视觉应用中,与高敏感度和超高像素的传感器的接驳尤为重要,因此专门有传感器支持接口单元。

       VPU特有的工具单元提供视觉调试全面支持。VPU中的主控制器、BSP、HDK等通用单元以开放为主,便于客户进行更多应用开发。

7.2.3、Movidius

       作为一个行业的平台领先者需要有足够的积累和不懈的进取,当然还要有强大的财力和物力、人力的支持,VPU平台的创建和发展也绝不轻松。

显示硬件发展与视频开发系列(6)----显示标注与视频处理单元(2):VPU

       Movidius在都柏林成立,位于爱尔兰,在罗马尼亚,硅谷建立研发团队。公司创始人堪称半导体和处理器行业的元老,公司设立有技术指导委员会,确立公司的技术路线和VPU平台发展总体规划。

       Movidius核心管理层,来源于ATI及其它知名公司资深的高管和专家。公司员工未过百人,研发人员占了九成,五分之一负责VPU芯片硬件设计,其余从事VPU上软件构建,可见VPU应用在很大程度上依赖于软件。2016年,Movidius被intel收购。

7.2.4、INTEL

       2019年,英特尔人工智能峰会(Intel AI Summit 2019),英特尔展示了一系列新产品,旨在加速从云端到边缘的人工智能系统开发和部署,迎接人工智能浪潮的到来。

显示硬件发展与视频开发系列(6)----显示标注与视频处理单元(2):VPU

       英特尔展示了面向训练 (NNP-T1000) 和面向推理 (NNP-I1000) 的英特尔Nervana神经网络处理器 (NNP)。作为英特尔为云端和数据中心客户提供的首个针对复杂深度学习的专用 ASIC芯片,英特尔Nervana NNP具备超高扩展性和超高效率。

       英特尔还发布了下一代英特尔Movidius Myriad视觉处理单元 (VPU),用于边缘媒体、计算机视觉和推理应用。

7.2.5、代码示例

/*
 * VPUCoder.h
 *
 * Current, Only Support YUV420sp encoder and decoder
 *
 *  Created on: Dec 16, 2013
 *      Author: henry
 *
 *  Example:
 *
 *  int main()
 *  {
 *  int ret = InitCodec();
 *  //===========encode video
 *  ret = StartEnc("/sdcard/test.mkv", 1280, 720, 30);
 *
 *  while(1)
 *  {
 *         //get data and length, //unsigned char* data; int length
 *         ret = ProcessEnc(data, length);
 *  }
 *  ret = StopEnc();
 *
 *  //===========decode video
 *  ret = ProcessDec("/sdcard/test.mkv", 1280, 720);
 *  return 0;
 *  }
 */

#ifndef VPUCODER_H_
#define VPUCODER_H_

/**
 * Init encoder and decoder handle, only call once, must first call
 *
 * @return 0 is successful, another fail
 */

int InitCodec();

/**
 * setup encoder configure
 * @param filePath   : save file path
 * @param enc_width  : video width
 * @param enc_height : video height
 * @param enc_fps    : video fps
 *
 * @return 0 is successful, another fail
 */

int StartEnc(const char* filePath, uint32_t enc_width, uint32_t enc_height, uint32_t enc_fps);


/**
 * stop encode video
 */

void StopEnc();

/**
 * @params data   : frame data
 * @params length : frame length
 *
 * @return 0 is successful, another fail
 */

int ProcessEnc(const unsigned char* data, uint32_t length);

/**
 * setup decoder configure
 * @param filePath   : source file path
 * @param enc_width  : video width
 * @param enc_height : video height
 *
 * @return 0 is successful, another fail
 */

int ProcessDec(const char* filePath, uint32_t dec_width, uint32_t dec_height);
#endif /* VPUCODER_H_ */

7.2.6、总结

       GPU的概念由NVIDIA公司提出,GPU英文全称 Graphic Processing Unit,中文译为“图形处理器”。

       VPU的概念由ATI公司提出,VPU英文全称 Visual Processing Unit,中文译为“视觉处理器”。

显示硬件发展与视频开发系列(6)----显示标注与视频处理单元(2):VPU

       GPU与VPU实际均为显示处理核心,GPU提供了更多图形接口,VPU提供了更多视频接口。2006年,ATI公司被AMD公司收购之后,已正式采用GPU的名字。

       INTEL的加入,VPU近些年取得巨大的发展,社会发展中,视频处理愈来愈重要,VPU适应实时潮流,尤其在嵌入式领域应用广泛。

       美摄SDK,国际领先的视频引擎,优秀的视频运算架构,引领短视频发展的方向。

显示硬件发展与视频开发系列(6)----显示标注与视频处理单元(2):VPU

上一篇:AES解密加密的实战应用


下一篇:Mac 下 IDEA 无法启动的问题