dm8148 HDVPSS 整理

说明:部分内容摘自ti官网论坛

1)hdvpss貌似提供了一些接口API用来配置DM816x的寄存器,但是又把各种板卡类型至于其中,甚至连视频解码芯片驱动都放在里边了,感觉限制非常大,用户要怎么根据自己的板卡使用这些东西,如果是增加新的芯片驱动,会涉及很多更改,遇到这种情况,用户该怎么开放呢?

回答:关于问题1这里有历史的原因在里面,最早的时候AD的驱动都是在M3上执行的就是你现在在hdvpss驱动中看到的AD的驱动,这样架构的问题就是修改需要了解M3的代码,对于大家来说难度增加了.为了解决这个问题DVR RDK后续将AD的驱动移到A8,这样就可以不需要了解M3就可以进行开发了,对于capturelink可以直接定义相应的格式,保证与AD接口对等即可.

2)hdvpss 编译出来的文件到底是什么东西,怎么在应用程序中怎么使用呢?应为在Makefile没有看到,或许有,但是没有找到,makefile里确实有编译hdvpss的,但是应为不清楚软件架构,不明白编译hdvpss有什么用?

回答:

HDVPSS是视频处理子系统(Video Process Sub-System),针对芯片中集成的VPSS硬件协处理器,编译出来的是VPSS的驱动库,供RDK层调用其接口以实现视频数据在VPSS协处理器中的处理,比如采集、缩放、显示。所以可以理解为RDK和硬件协处理器之间的驱动层。

3)看了下dvr_rdk\mcfw\src_bios6\links_m3vpss代码,好像也是使用hdvpss 接口(FVID2_)是不是说这部分就是在hdvpss运行的驱动呢?用户如果对Vport配置需要修改,只需要修改这部分代码,而无需去更改ti_tools\hdvpss\hdvpss_01_00_01_37_patched\packages下的代码呢?

答复:可以这么理解,调用了FVID2接口的部分就是在HDVPSS运行的。不建议客户自己修改hdvpss目录下的任何文件,可以向TI技术支持提出你们具体的需求,大部分应该可以通过RDK配置实现。如果是HDVPSS驱动中还不支持的功能,TI会在后续版本中添加。

4)关于dvr_rdk\mcfw\src_bios6\links_m3vpss编译后出来的是什么文件呢,最后也是通过fw_load.out加载么?

答复:编译出来的是在HDVPSS媒体控制器(m3)中运行的firmware,是通过fw_load.out加载的,可以看load.sh脚本获得更详细信息。

5)dvr_rdk_fw_m3vpss.xem3 是怎么生成的呢,里面大体实现了一些什么功能?

答复: 里面主要包含了RDK中vpss link 层的代码以及HDVPSS驱动,在RDK中可以看到在links_m3vpss目录下的功能都是在这里实现的。

6)基于hdvpss 接口(FVID2_)编写的代码怎么调试呢?

答复:Rules.make里面把dvr_rdk_fw_m3vpss.xem3编译成debug模式,通过仿真器可以调试。

7)HDVCIP2是什么? IVAHD 是什么?

hdvcip:high definition video and image coProcessor;

8)iss和hdvpss (High Definition Video Processing Subsystem)区别?

答复:用cameralink的话,就是调用iss的东西,cameralink是和ISS相关的,capturelink是和VPSS相关的,这是我的理解;

iss是直接接摄像头,vpss需要转换芯片像TVP5158等才能和摄像头相连;

iss:imaging sub-system

hdvpss: high definition video processing subsystem;

TVP5158是什么?视频解码芯片;

9)FVID2 是什么?

FVID2 are the set of APIs or framework specifically designed for the video class of devices.

10)FVID2 API

10.1)FVID2_init

Int32 FVID2_init(Ptr args);

Int32 FVID2_deInit(Ptr args);

10.2)FVID2_create

FVID2_Handle FVID2_create(UInt32 drvId,UInt32 instanceId,Ptr createArgs,Ptr createStatusArgs,const FVID2_CbParams *cbParams);

10.3) FVID2_start

Int32 FVID2_start(FVID2_Handle handle, Ptr cmdArgs)

10.4) FVID2_stop

Int32 FVID2_stop(FVID2_Handle handle, Ptr cmdArgs)

10.5) FVID2_dequeue

Int32 FVID2_dequeue(FVID2_Handle handle,FVID2_FrameList *frameList,UInt32 streamId,UInt32 timeout);

10.6) FVID2_queue

Int32 FVID2_queue(FVID2_Handle handle,FVID2_FrameList *frameList,UInt32 streamId);

10.7) FVID2_control

Int32 FVID2_control(FVID2_Handle handle,UInt32 cmd,Ptr cmdArgs,Ptr cmdStatusArgs);

10.8) FVID2_delete

Int32 FVID2_delete  ( FVID2_Handle  handle,  Ptr  deleteArgs)

10.9) FVID2_setFormat

Int32 FVID2_setFormat(FVID2_Handle handle, FVID2_Format *fmt)

10.10)FVID2_getFormat

Int32 FVID2_getFormat(FVID2_Handle handle, FVID2_Format *fmt)

10.11)FVID2 ProcessFrames

Int32 FVID2_processFrames  ( FVID2_Handle  handle,  FVID2_ProcessList *  processList)

10.12)FVID2_getProcessedFrames

Int32 FVID2_getProcessedFrames(FVID2_Handle handle,FVID2_ProcessList *processList,UInt32 timeout)

10.13)FVID2_getStandardInfo

Int32 FVID2_getStandardInfo(FVID2_StandardInfo *stdInfo)

callback:

A user callback can be registered during driver create which is then called by the driver whenever data is available at

any of the channels, streams associated with the driver. User would typicall set a semaphore to wake up a task. The

woken up task will then call dequeue API to get the newly captured frames. Dequeue should be called for every

stream associated with the driver to get the captured frames, since the callback just indicates there is data but the data

could be in any of the streams that are valid for the driver instance.

FVID2_CbParams

FVID2_Format

FVID2_SliceInfo

FVID2_Frame

FVID2 FrameList

FVID2_ProcessList

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-30 22:55:29

dm8148 HDVPSS 整理的相关文章

WPF笔记整理 - Bitmap和BitmapImage

项目中有图片处理的逻辑,因此要用到Bitmap.而WPF加载的一般都是BitmapImage.这里就需要将BitmapImage转成Bitmap 1. 图片的路径要用这样的,假设图片在project下的Images目录,文件名XXImage.png. pack://application:,,,/xxx;component/Images/XXImage.png 2. 代码: Bitmap bmp = null; var image = new BitmapImage(new Uri(this.X

linux 命令 及学习进度综合整理

linux  命令  及学习进度综合整理 pwd 查看当前所在位置 cd  跳转到什么什么目录 ls  显示所有文件和目录 ls -l  显示目录详细信息 cd ..  返回上一级 vi  lnany.txt  创建一个文件 vi  .lnany.txt    创建一个隐藏文件 vim 是 vi 的升级版 功能更多 出现 -bash: vim: command not found 的解决办法 i. 那么如何安裝 vim 呢?输入rpm -qa|grep vim 命令, 如果 vim 已经正确安裝

夏令营讲课内容整理Day 0.

今年没有发纸质讲义是最气的.还好我留了点课件. 第一次用这个估计也不怎么会用,但尝试一下新事物总是好的. 前四天gty哥哥讲的内容和去年差不多,后三天zhn大佬讲的内容有点难,努力去理解吧. 毕竟知识还是需要消化的. 这里我只整理知识点,每天上午评测的题目我会单独处理. 嗯大概就是这样了. 写完后我就会考虑发到博客园里.

linux基本命令整理(三):进程和vim

linux基本命令整理(三) -----------进程和vim 一.进程 1.查看进程 ps:将某个时间点的程序运行的状况截取下来 a:所有的进程 x:后台进程 u:有效的使用者相关的进程(常用组合aux) -IA:也能观察系统所有的数据 axjf:连同部分的程序树状态 -I:今查看和自己bash相关的程序 top:动态的观察进程的变化 -d:后面接描述,就是整个页面刷新的时间:默认是5秒 -b:以批次的方式执行top -n:与-b搭配使用,意义是需要进行几次top的输出结果 如:top -b

检测和整理索引碎片

索引碎片的检测和整理 存储数据是为了查找数据,存储结构影响数据查找的性能.对无序数据进行查找,最快的查找算法是哈希查找:对有序数据进行查找,最快的查找算法是平衡树查找.在传统的关系型数据库中,聚集索引和非聚集索引都是平衡树(B-Tree)类型的存储结构,用于顺序存储数据,便于实现数据的快速查找.除了提升数据查找的性能之外,索引还能减少硬盘IO和内存消耗.通常情况下,硬盘IO是查找性能的瓶颈,由于索引是数据表的列的子集,这意味着,索引只存储部分列的数据,占用的硬盘空间比全部列少了很多,因此,数据库

新awk整理

总感觉上一篇awk的总结几乎是照着man翻译过来的,惨不忍睹 无意间在互联网上有找到了宝贵的资料 感觉整理的很好,想着照着这个来重新写下,对照新的man更新下吧,只是总是在改变的 一.awk简介二.awk工作流程三.awk程序结构四.awk基本语法 awk命令行模式 awk程序文件 awk标准选项五.awk内置变量 标准awk变量 awk特定变量(即专有变量)六.awk操作符 算数运算符 关系运算符 逻辑运算符 三元运算符 一元运算符 字符串连接操作符(即空格符) 数组成员操作符(in) 正则表

Linux运维(十)-2016-12-9整理

也有段时间没有整理面试题目了,这几天呢,完成了2场实习生和1场校招,十分郁闷,为什么金融运维一点都不关注技术,在乎我的学校成绩,我尼玛想说,学校那么水的课程能说明什么,跟技术有一丁丁点关系吗?我学业成绩不好,就能否定我的专业岗位基础不行吗?唉,劳资想说,你如果质疑我的能力,你就问我,劳资要是被你虐倒是我算我输,学艺不精我就服,看过去有球用. 这辈子职业生涯都不想进外包和IDC这两种类型的公司,就是TM打杂的,薪资还低,关键是不厚道,比如垃圾胜蓝.这回校招那家是我之前就提到的那家,大多数人对我是认

Web网站服务及知识整理(二)

Web网站服务及知识整理(二)

整理第三方类库

网络 AFNetworking:mattt大神的网络事件处理框架. XMPPFramework:XMPP,主要用于即时通讯. CocoaAsyncSocket:异步socket请求框架. Reachability:用来检查应用当前的网络连接状况,是苹果Reachability类的直接替代品,支持ARC,支持block,使用GCD方法来通知网络接口的变化. SocketRocket:WebSocket协议是一种网络协议,它的Web设计实现了浏览器与服务器的双向通讯.通过使用WebSockets,你