K230系统控制API参考
1. 概述
1.1 概述
系统控制根据 k230芯片特性,完成硬件各个部件的复位、基本初始化工作,同时负责完成 MPP(Media Process Platform 媒体处理平台)系统内存管理,日志管理,绑定管理等模块的初始化、去初始化。
1.2 功能描述
1.2.1 视频缓存池
视频缓存池是一组缓冲区(而不是一个),主要提供给多媒体硬件设备使用,并在多媒体硬件设备之间流转。缓存池分为公共缓存池和私有缓存池,公共缓存池主要是针对VI的,使用前要根据VI的图像参数确定缓存块的大小,然后向 申请一定数量的缓存块组成一个缓存池。总体来说,对于VI输入的原始画面,一帧的大小对应一个缓存块的大小,多个缓存块相当于给VI提供了多帧缓存的机制。同时这些公共缓存块也可以给VO或VENC使用。私有的缓存池往往代表存储在内存中的数据是与多媒体设备本身紧密相关的,例如编码的码流数据与实际的图像像素组成的 视频流差别还是很大的,这些码流只有编解码器可用,而VB为这些设备提供专用的缓冲池。下图展示了虚拟VI和虚拟VO使用VB进行缓存块流转的流程。
1.2.2 系统绑定
系统绑定,即通过数据接收者绑定数据源来建立两者之间的关联关系(只允许数据接收者绑定数据源)。绑定后,数据源生成的数据将自动发送给接收者。K230大的语音和视频处理主要分为几个大的模块如下:
语音:语音输入(Audio Input,简称AI), 语音编码(Audio Encoder,简称AENC),语音识别(Audio recognize,简称AREC),语音解码(Audio Decoder,简称ADEC),语音输出(Audio Output,简称AO)
图像:视频输入(Video Input,简称VI),视频编码(Video Encoder,简称VENC),图像旋转(由GSDMA完成,简称DMA),深度处理单元(Depth Process Unit, 简称DPU),图像解码(Video Decoder,简称VDEC),视频输出(Video Output,简称VO),虚拟视频输入(Virtual Video Input,简称VVI),虚拟视频输出(Virtual Video Output,简称VVO)
K230支持的绑定关系如下
表 11
数据源 | 数据接收者 | 说明 |
---|---|---|
VI(视频输入) | GSDMA | VI的数据可以送到GSDMA进行旋转处理 |
VO | VI的数据可以直接送到VO进行显示 | |
DPU | VI的数据可以直接送到DPU进行处理 | |
VENC | VI的数据可以直接送到VENC进行处理 | |
GSDMA(图像旋转) | VO | GSDMA 处理后的数据,可以直接送给VO显示 |
DPU | GSDMA处理后的数据,可以直接送给DPU进行处理 | |
VENC | VPROC处理后的数据,可以直接送给VENC进行编码 | |
VDEC(视频解码) | GSDMA | VDEC的数据最终会本地播放,播放前可能需要做旋转 |
VO | VDEC的数据最终会本地播放 | |
DPU(深度处理单元) | 无 | DPU是视频数据的终点,不支持绑定关系 |
VENC(视频编码) | 无 | 不支持绑定关系 |
VO(视频显示) | 无 | VO是视频数据的终点,不支持绑定关系 |
AI(音频输入) | AREC | AI处理后的数据,可以直接送给语音识别模块进行识别 |
AENC | AI处理后的数据,可以直接送给语音编码模块进行编码 | |
AO | AI处理后的数据,可以直接进行播放 | |
ADEC(语音解码) | AO | ADEC处理后的数据,可以直接进行播放 |
AREC(语音识别) | AO | AREC处理后的数据,可以直接进行播放,例如本地离线语音翻译 |
AENC(语音编码) | 无 | 不支持绑定关系 |
AO(音频输出) | 无 | AO是音频数据的终点,不支持绑定关系 |