实例介绍
没分了, 不好意思啊
avplay 34 amply初始化分析… 34 OCTL实现分析基于 avplay 1, 35 avplay多个实例如何找到对应实例 36 VPSS VDEC…38 Avplay解码ES流过程 38 R 39 44 ample mosaic分析 应用层调用. ,42 系统调用… 43 5:小结 44 5.1UNF相对标准内核模块区别. ,44 5.1.1Proc读写调试。…………………………………………14 512内核空间往应用空间写文件 44 513Log管理.… 45 5.14内存映射 45 5.2代码分析方法. 45 5.2.1查看代码,静态分析应用层,驱动层实现方法 45 52.2图示静态分析函数调用关系 .45 523图小动态分析函数调用关系:库函数,系统调用,内核调用….45 参考文档 46 下要上传 已地方 前言: 更传 木文通过分析海思文档和代码,把海思SDK的MP|和UNF构架大概实现思想和构架进 行了简略的分析。着重分析了内存管理底功如何实现 前面章节简要分析了NVR芯片MP构架及其内存管理机制,后面着重详细分析了3798M 底层模块彐pi和drv实现的细节过程及其方法流程。 木文前面简略分析了DVR,MP构架的大体实伣机制。后面就具体分析3798MUNF构 架的实现。 本文不光分析了UNF构架,还使用了很多工具,辅助分析代码。这里从三个层面分析 了UNF的实现。 1:应用层,驱动层的实现框架,使用 source insight查看代码着重分析了 avplay等几 个模块 2:静态分析函数调用。使用 cflow,dot工具生成调用关系图 3:动态追踪运行过程。 Ltrace, strace, valgrind分析函数调用,perf动态分析内核调用。 1:Hi35XX系列芯片MPP构架不要上传 它地方 11概述 海忠提供的媒体处理软件平台 简称 ,可支持应用软件 快速开发。该平台对应用软件屏蔽了芯片相关的复杂的底层处理,并对应用软件直接提 供( )接口完成相应功能。该平台支持应用软件快速廾发以 下功能:输入视频捕获 编码 解码、视频输岀显示、视频图像前处理(包括去 噪、增强、锐化、 )、编码码流叠加 视频侦测分析、智能分析、音 频捕获及翰岀、音频编解码等功能 12整体软硬件构架 应用层 媒体软件处理平台 其他驱动 操作系统层 硬件层 平台支持的典型的系统层次如上图所示,要分为以下层次: 硬件层 使件层由 芯片加上必要的外围器件构成。外围器件包括 )、视频 音频等 操作系统层 基于 的系统 媒体处理平台 基于操作系统层,控制芯片完成相应的媒体处理玏能。它对应用层屏蔽∫硬件处理细节, 并为应用层提供接口完成相应功能。 其他驱动 除媒体处理平台外海思为 芯片的其他相关硬件处理单元提供了相应的驱动 包括 等驱动 应用层 基于海思媒体处理平台及其他驱动,山用户开发的应用软件系统。 13海思媒体处理平台架构 海思媒体处理平台的主要内部处理流程如上图所示,主要分为视频输入()、视频 处理( 、视频编码( )、视频解码( )、视频输出 视频 侦测分析 音频输入、音频输出、音频编码( )、音频解码( 区域管理( )等模块。主要的处理流程介绍如下 REGION VENC OSD思 HE64流 MJPEG MJPEG流 I JPE JPEG码流 MPEG MPEG4吗流 VI皲据 AD 视频侦测分析结果 VPSs YDEL DISK vO Ao 音频流 ANG 频码流 AO 模块捕获视频图像,可对其做剪切、缩放、镜像等处理,并输岀多路不冋分辨 率的图像数据 ●解码模垬对编码后的视频码流进行解码,并将解析后的图像数据送 进行图 像处理或直接送显示。可对 格式的视 频码流进行解码。 模块接收和解码模块发送过来的图像,可对图像进行去噪、图像増强 锐化等处理,并实现同源输岀多路不同分辨率的图像数据用于编码、预览或抓 拍 ●编码模块接收捕获并经 处理后输出的图像数据,可叠加用户通过 模块设置的 图像,然后按不同协议进行编码并输出相应码流 模块接收的输出图像,并进行移动侦测和遮挡侦测,最后输岀侦测分析 结果。 模块接收 处理后的输出图像,可进行播放控制等处理,最后按用户配置 的输出协议输出给外围视频设备 模块捕获音频数据,然后 模块支持按多和音频协议对其进行编码,最后 输出音频码流。 用户从网络或外围存储设备获取的音烦码流可直接送给 模块, 支持 14MMZ与模块绑定 公共视频缓冲池 A、日 A1A2 .Am..L An B1B2 B Bn 缓存块 Bm VB 获取视频缓存块 释放视频缓存块 视频缓存池 处理模块 缓存块 缓存块 Bm Bm 缓存块 Bm 缓存块 VENC Bm Bm Ⅵl VDA Bm Brm I MPP提供系统绑定接口(H_Mp_sYs_Bind),即通过数据接收者绑定数据源来建立 两者之间的关联关系(只允许数据接收者绑定数据源)。绑定后,数据源生成的数据将 自动发送给接收者。 Ubot坏境变量中定义inux内核使用的内存大小 seteny'mem=288M console=tty AMAO, 115200 root/dev/mtdblock2 rootfstype=jffs2 mtdparts-hi sfc: 768K(boot), 2304K(sdro21000), 13M(rootfs 加载内核模块分配MMZ内存大小 nsmod mmz ko mmz=anonymous, 0, 0x8 E000000, 792M anony=1 例如512M的DDR DDR: I----------- 0x80000000 Memory managed by os 64MOS ------------------- 0x84000000 Memory managed by mmz block anonymous 448M MMZ I 0xA0000000 Memory managed by mmz block jpeg 支持的绑定关系 数据源 数据接受者 VENC VDA VPSS VPSS VENC VDA VPSS PCIV VDEC VPSS ∨o(只能是标清设备或 模式分割) VDA PCⅣ VO(WBC) VENC VPSS PCⅣ A AENC AO ADEC AO 16函数约定说明 操作用来打开、关闭那些可枚举的设各。 操作用来创建、销毁那些不可枚举的设备 用来标识一个“不可枚举”类型的设备。 Handle只在本进程内有效,也就 是说 Handle不可以跨进程传递 Handle是一个32bit的数据,其低8bit表小设备 的D,高16bit表示模块ID。比如0x00110000表示模块1D为0x11的第0个 设备。 用来绑定、解绑定两个设备直接的关联。 Attach后,目的设备将自动处于 Start/ Enable状态; Detach后,目的设备将自动 处于Stop/ Disab|e状态。 对于多级绑定,要求从最后一个设备逐级向前绑定,解绑定的顺序则相反,要求逐 级向后。 当绑定在一起的多个设备可以设置相同属性时,必须通过最后一个设备进行设置 用来往某个模块输入数据。 用来从某个模块获取数据 Get/Put和 Acquire/ Release推荐成对使用 Acquire ser Source+Sink User App App Pu Release 【实例截图】
【核心代码】
标签:
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明
网友评论
我要评论