- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Android VideoPhone培训 ---i.Mx27 EMMA和VPU 内容大纲 多媒体流框架介绍 框架模块组成和特性介绍 框架模块驱动的实现 Android如何使用多媒体模块 术语名词 EMMA(enhanced Multimedia Accelerator) ---PRP(Pre-Processor) ---PP(Post-Processor) Camera ---Sensor ---CSI(CMOS Sensor Interface) VPU(Video Process Unit) ---Encode ---Decode 视频流采集框图 视频流输出框图 PRP PRP的功能 PRP硬件框图 PRP特性 PRP驱动 PRP功能 将外部的采集数据进行一系列操作后,送往外部显示或送往编码器进行编码 颜色空间转换 尺寸缩小 2路输出 PRP 框架组成 PRP 特性 PRP驱动 文件路径 drivers/media/video/mxc/capture/ 文件名 mx27_prphw.c mx27_prpsw.c mx27_v4l2_capture.c ov7725.c sensor_clock.c mx27_csi.c PRP驱动 一、设备文件和设备号 设备文件名:/dev/v4l/video0 设备号:主设备号 81,次设备号0 主设备号在 include/media/v4l2-dev.h文件,VIDEO_MAJOR宏定义。由drivers/media/video/videodev.c 文件,videodev_init函数调用register_chrdev注册; 次设备号,是在camera_init函数中,调用video_register_device中注册。当前注册过程中,使用的是video_nr变量,作为次设备号,默认为-1。使用-1注册时,会从0开始尝试,直到能注册为止。当前次设备号注册为0。 PRP驱动 二、应用层使用操作 1. 在设备的open操作中,初始化了prp设备 2.应用层在打开了设备后,按以下顺序调用ioctl: VIDIOC_S_FMT宽高等设置,只修改了变量的值 VIDIOC_S_CROP设置范围,只修改变量值 VIDIOC_S_PARM设置摄像头的采集间隔和画质 VIDIOC_REQBUFS VIDIOC_QBUF VIDIOC_STREAMON 启动视频数据捕捉 3.获得捕捉到的数据,处理后将buffer交还给驱动层。有视频时,在循环中不断调用下面2个控制。 VIDIOC_DQBUF VIDIOC_QBUF PRP驱动分析 1. 主数据流分析 从PRP驱动作用分析来看,他处在摄像头驱动和应用层之间的。主要的数据流有2个: a. 从摄像头来的视频数据 驱动中配置prp硬件,从摄像头获取视频数据。 b. 视频设备处理完之后,将数据发给应用层。 驱动注册了prp处理完数据的中断响应,中断响应函数是prp_isr。在中断响应中,通过cam-enc_callback函数指针,调用了camera_callback函数(本函数指针,在init_camera_struct函数中被初始化),将经过prp处理的数据,从ready_q队列中取出来,放入done_q队列中,并通过wake_up_interruptible(cam-enc_queue)调用,唤醒等待数据的应用层。应用程序处理视频数据的主循环中,调用VIDIOC_DQBUF这个ioctl操作。上述ioctl操作中,会等待cam-enc_queue信号。一旦视频驱动获得数据后,触发cam-enc_queue信号,等待中的应用程序就被唤醒,进而从done_q队列中取出buffer信息,获得经过prp处理后的视频数据。 应用程序使用完buffer后,调用VIDIOC_QBUF这个ioctl操作,将buffer交还给驱动。在这个ioctl中,会等待cam-overflow_queue信号。cam-overflow_queue信号会在prp_reset函数中被设置上。 PRP驱动分析 PRP驱动分析 2. 内存管理 应用程序使用VIDIOC_REQBUFS这个ioctl时,驱动中调用了mxc_allocate_frame_buf函数。其中分配了内存。 ready_q队列:VIDIOC_QBUF这个ioctl中,将用户指定的buffer(通过序号指定buffer),加入ready_q中;prp_reset函数(被加入了工作队列)中,从ready_q队列中取出,放入working_q队列中。mxc_streamon函数(被VIDIOC_STREAMON这个ioctl调用)中,从ready_q队列
您可能关注的文档
最近下载
- NB∕T 47010-2017 承压设备用不锈钢和耐热钢锻件(高清版).pdf VIP
- 车辆风险预警方法、路侧控制单元及风险预警控制系统.pdf VIP
- 2025年版《中文核心期刊要目总览》.docx VIP
- 密码学基础-密码学.ppt VIP
- 中国国家标准 GB/T 4706.1-2024家用和类似用途电器的安全 第1部分:通用要求.pdf
- 灯具安装技术交底1.docx VIP
- 乙烯三机:发展与未来.pptx VIP
- NB/T 47008-2017 承压设备用碳素钢和合金钢锻件.pdf VIP
- 密钥管理与密钥分配现代密码学.ppt VIP
- 初中信息技术校本课程《遨游3D世界,利用三维设计软件制作创意作品》教案.doc VIP
文档评论(0)