阅读:1257回复:9
类别
是用视频流微端口驱动呢还是自己写一个功能驱动呢
|
|
沙发#
发布于:2002-08-13 10:10
不好意识,初次法帖,我的意思是在视频采集驱动中,基于PCI总线,是采用视频流微端口驱动呢还是写一个PCI驱动加上视频采集功能,我的帧频为419/秒,象元数128*128,12位,也就是说2毫秒有一次中断,我用PCI驱动加上视频采集功能,偶尔会丢帧,所以想用视频流微驱动会不会好一点,望知道的高手见告,先谢了。
|
|
板凳#
发布于:2002-08-13 10:55
会好些的,数据不上usermode嘛,无论显示还是存盘效率都会高些,只是你的图像好怪,帧率419,高速摄影吗?
|
|
地板#
发布于:2002-08-14 10:12
谢谢。对,是高帧频CCD。可我现在都是在驱动中做的,中断驱动,在中断处理函数中设dma采至内存缓冲区,win32程序仅仅引用映射的内存地址而已。现在图像可逐帧采集,但在存到内存中时遇到麻烦。我用driverworks中的例子改的,wdm方式,可在分配大约90m的内存时不能调用mmAllocateContinguousMemory分配物理地址连续的缓冲区,明明这个函数在ntddk。h中定义了,头文件也包含了,编译器硬说找不到;用extern语句申明一下吧,链结时又告诉找不到,将ntddk下libchk中的所有lib文件都用上,还是找不到,我苦。只好用exallocatepool,指定nonpagedpool类型,编译通过,从内存管理上看倒是分配了,可好像并不是物理地址连续的。一用于dma就重启。唉。那位仁兄有何高见,能否指点一二。
|
|
地下室#
发布于:2002-08-14 10:39
你的卡不能支持scatter/gather吗,如果支持就不用申请这么大的连续内存了,对了,为什么要申请90M这么大的缓冲啊,没有必要吧,一帧数据才几十K,通常视频用内核流编程时视频信号是每次取一帧数据的,缓冲个几帧足够了
|
|
5楼#
发布于:2002-08-15 09:06
用的是s5933,确实不支持scatter/gather,在看到如下帖子,不知道行不,我要试一下。
引用: -------------------------------------------------------------------------------- 在 DriverWorks 的 WDM 里,如何申请一片连续的实存, 即如何实现 NTDDK 里的这个函数: PVOID MmAllocateContiguousMemory( IN ULONG NumberOfBytes, IN PHYSICAL_ADDRESS HighestAcceptableAddress ); 救命啊! -------------------------------------------------------------------------------- new (NonPagedPool) ulSize;是不是就OK啦 ??? |
|
6楼#
发布于:2002-08-15 09:34
是不是在别人的程序中看到的啊,我也看到过,不过new是自己定义的operator,调用的是ExAllocatePool(Type, Size) |
|
7楼#
发布于:2002-08-15 09:34
是不是在别人的程序中看到的啊,我也看到过,不过new是自己定义的operator,调用的是ExAllocatePool(Type, Size) 还想问一句,一定要90M的连续内存吗? |
|
8楼#
发布于:2002-08-15 10:29
对,需要实时采集数据作分析。但好像不对,也许真的如你所说。唉,准备转入视频流驱动。但ddk中的testcap没有中断和dma。而且我怎么找不到它在什么地方填充的红绿兰条纹的数据,在videoquedue排队后 处就不知道它在什么地方处理了。
|
|
9楼#
发布于:2002-08-15 14:16
原来在中间设了一个timer。可如果我用中断代替timer,能否满足要求呢。另外,自定义格式的数据是否不存为avi格式尔仅包含原始数据呢?问题多多,等有了心得后再帖。但能否有一些好的例子呢,除了bt848和testcap外
|
|