Hi3516开发学习心得.docVIP

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Hi3516开发学习心得 开发环境 1.1概述 嵌入式系统通常是一个资源受限的系统,因此直接在嵌入式系统的硬件平台上编写软件比较困难,有时候甚至是不可能的。 目前的解决方法是采用宿主机、目标机的开发模式。在宿主机上编写程序,通过交叉编译器生成目标板上可以执行的二进制代码。然后通过文件系统,将二进制代码放在特定目录下,在目标板上运行。 宿主机:VMWARE \ ubuntu(服务器:192.168.1.101) 环境:交叉开发工具包,nfs 目标机:linux hi3516 1.2安装过程 参见卖方附赠视频教程“SDK安装及编译视频.avi”。 nfs文件系统挂载: 挂载点改变修改/etc/exports文件,具体方法自行谷歌。 开发流程 首先要有这样一个意识,即对开发板进行的配置,是以我们的需求为基础的。我们所做的工作在系统层次图的 应用层 部分: 所需的函数统一由MPP(媒体处理平台)提供接口。MPP封装实现了基本功能函数,屏蔽掉了对底层的操作。 sample_venc.c为完成视频采集编码一系列操作的代码。观察其代码风格如下: 1.函数返回值作为状态码,用以判断函数是否执行成功。 2.函数需要传出的值通过全局变量或地址传出。 现在以函数先后顺序(也即视频采集编码处理流程)对各步骤做以说明。 2.1配置视频缓存池: 视频缓存池作用:视频缓存池主要向媒体业务提供大块物理内存管理功能,负责内存的分配和回收,充分发挥内存缓存池的作用,让物理内存资源在各个媒体处理模块中合理使用。 由于视频输入通道不提供创建和销毁公共视频缓存池功能,因此,在系统初始化之前,必须为视频输入通道配置公共视频缓存池。根据业务的不同,公共缓存池的数量、缓存块的大小和数量会有所不同。 enPayLoad---------------决定编码格式。 enSize--------------------决定图像分辨率。(利用不同的编码通道,可以对同一rowdata编码出不同的分辨率。) 缓存块的大小根据 图像制式(PAL/NTSC)、图像分辨率、像素格式、图像跨距(字节对齐)共同决定。函数SAMPLE_COMM_SYS_CalcPicVbBlkSize计算缓存块大小。 2.2初始化MPP系统 由于 MPP系统的正常运行依赖于缓存池,因此必须先调用 HI_MPI_VB_Init 初始 化缓存池,再初始化 MPP系统。 如果多次初始化,仍会返回成功,但实际上系统不会对 MPP的运行状态有任何影 响。函数SAMPLE_COMM_SYS_Init完成MPP系统初始化。 2.3启动VI设备 分为4步: Tips: isp run must at this step -- after vi dev enable, before vi chn enable 2.3.1 sensor初始化 2.3.2 启动VI设备 2.3.3 启动ISP 2.3.4 使能VI通道 (函数皆由MPP提供接口) 2.4启动视频处理模块 根据 制式和分辨率 获得图像宽和高的具体数据。再由此确定通道属性,进行配置。 每一个通道 对应一系列的 硬件和软件功能模块 ,通道可以进行“串联”,以完成一系列处理。通道的“串联”在开发文档中成为 通道绑定。在整个处理流程中,要先后经过如下的通道绑定: VI----VPSS VPSS----VENC(后者绑定前者) 启动VPSS 主要根据制式和分辨率 获得图像宽和高的具体数据。再由此确定通道属性,进行配置。然后使能VPSS通道。 VPSS绑定VI 函数由MPP提供,直接调用。 启动视频流编码 首先创建编码组,再创建编码通道。(编码通道组是指芯片启动一次,能够同时处理的编码通道的集合。通道组模块接收外部原始图像数据,而不关心图像数据是来自哪个 外部模块。我的理解是主通道为物理通道,所有绑定与同一物理通道的扩展通道,其数据源是一样的。关于他们的具体关系,参见开发参考文档的“6 视频编码模块------ 6.2.2 编码通道与通道组”。)然后将编码通道注册到通道组。接着开启编码通道接收输入图像。 获取编码码流 在这里新开了一个线程专门用于接收码流。 具体思路为: 把编码通道映射为一个文件句柄(函数HI_MPI_VENC_GetFd完成此操作)。接着的所有操作都是对文件句柄进行的。这完全类似于端口通信中将端口打开视作文件句柄,然后进行读写操作。 流程图如下: 1. 获取通道的文件句柄。 2. 从各通道获取码流。(这里一共有30\1\2个通道,分别产生分辨率为1080p,VGA,QVGA的h264编码码流。--------------我们的工程中只需要编码通道0的1080p码流) 2.1 查询编码码流的一帧中有多少的包。 2.2 根据包的数目分配内存。

文档评论(0)

zsmfjy + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档