织梦CMS - 轻松建站从此开始!

罗索

基于V4L技术的视频和OSS的音频

落鹤生 发布于 2010-05-05 15:18 点击:次 
oss(open sound system)是unix/linux平台上一个统一的音频接口,即只要音频处理应用程序按照oss的api来编写,那么在移植到另外一个平台时,只需要重新编译即可。
TAG:

1.1基于oss的音频采集技术
oss(open sound system)是unix/linux平台上一个统一的音频接口,即只要音频处理应用程序按照oss的api来编写,那么在移植到另外一个平台时,只需要重新编译即可。oss为音频编程提供三种设备,分别是/dev/dsp,/dev/dspw和/dev/audio,读这个设备就相当于录音,写这个设备就相当于放音。/dev/dsp与/dev/audio之间的区别在于采样的编码不同,/dev/audio使用μ律编码,/dev/dsp使用8-bit(无符号)线性编码,/dev/dspw使用16-bit(有符号)线形编码[3]。本系统上使用的设备是/dev/dsp。
1.2基于V4L的视频采集技术
V4L是Linux下提供的一套设备驱动程序文件API,用于开发视频(Video)、音频(Audio)等领域的应用程序。
主要的数据结构有: video_capability 、 video_picture 、 video_mmap、video_mbuf 、video_window
video_capability,包含摄像头的基本信息,如设备名称、支持的最大最小分辨率、信号源信息等,分别对应着结构体中成员变量name[32]、maxwidth、maxheight、minwidth、minheight、channels(信号源个数)、type等;
video_picture,包含设备采集图像的各种属性,如brightness(亮度)、hue(色调)、contrast(对比度)、whiteness(色度)、depth(深度)等;
      video_mmap,用于内存映射;
      video_mbuf,利用mmap进行映射的帧信息,实际上是输入到摄像头存储器缓冲中的帧信息,包括size(帧的大小)、frames(最多支持的帧数)、offsets(每帧相对基址的偏移);
      video_window,包括设备采集窗口的各种参数。


2、视频驱动加载
ov511驱动
2.1.静态加载
(1)在arm linux的kernel目录下make menuconfig.
(2)首先(*)选择Multimedia device->下的Video for linux.加载video4linux模块,为视频采集设备提供了编程接口;
(3)然后在usb support->目录下(*)选择support for usb和usb camera ov511 support.这使得在内核中加入了对采用OV511接口芯片的USB数字摄像头的驱动支持.
(4)保存配置退出.
(5)make dep;make zImage
此时在/tftpboot下就生成了带有ov511驱动的内核.

2.2.动态加载
(1)在arm linux的kernel目录下make menuconfig.
(2)首先选择Multimedia device->下的Video for linux.
(3)然后在usb support->目录下选择support for usb和选择usb camera ov511 support.
(4)保存退出.
(5)Make dep;make zImage;make modules然后就在/driver/usb下生成ov511.o,同时生成的zImage自动放在/tftpboot下.
(6)然后用新内核启动板子后insmod ov511.o就可以成功加载. 动态方式与静态方式相比,测试时要简单的多.不需要下载整个内核,只需通过nfs,加载驱动即可测试.在测试成功后就可以编译进内核.

模块加载中出现的问题:
1.insmod和modprobe间的一个区别试后者不会在当前目录中查找模块,它只在/lib/modules下的缺省目录下查找,这是因为该程序只是一个系统实用例程,不是一个交互工具.可以通过在/etc/modules.conf中指定自己的目录,来把它们加到缺省目录集中.
2.如果插入模块ov511.o时,出现以下信息:
Ov511.o:unresolved symbol video********之类的,说明还有其它模块videodev.o没有加.
3.出现错误:ov511.o:couldn't find the kernel version this modules was compiled for.这是试图插入一个不是可装入模块的目标文件.因为在内核配置阶段,是把ov511模块静态加到内核中的,虽然看起来和可装入模块的文件名ov511.o完全一样,但是不能用insmod命令加入.
4.如果出现Ov511.o:unresolved symbol video********,那就选中video for linux,用新生成的内核启动系统,再insmod videodev.o,insmod ov511.o就可以啦.

(victor_tlh)
本站文章除注明转载外,均为本站原创或编译欢迎任何形式的转载,但请务必注明出处,尊重他人劳动,同学习共成长。转载请注明:文章转载自:罗索实验室 [http://www.rosoo.net/a/201005/9334.html]
本文出处:百度博客 作者:victor_tlh
顶一下
(2)
66.7%
踩一下
(1)
33.3%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
栏目列表
将本文分享到微信
织梦二维码生成器
推荐内容