使用的是dm6437的芯片,想要在缓存好第一帧之后获取第二帧进行缓存,然后两帧相减,请问如何获取第二帧的图像呢,我看到手册上是说明这里使用的是垂直同步管脚,但是该管脚可以设置为输入或者输出,要怎么设置呢?另外有相应的api函数可以使用吗
Chris Meng:
Weiming,
一旦你配置好CDDC,Preview engine,图像会源源不断的输出到你配置的地址,你需要在VD中断里面修改输出的地址,保证采集的数据不被覆盖。
weiming he:
回复 Chris Meng:
你好,我是想接收连续的两帧数据,然后进行差分处理。
附上我的代码。
int flag=0;
FVID_exchange(hGioVpfeCcdc, &frameBuffPtr); flag=!flag;
/* Set as input buffer to Encoder: *
/* Write back and invalidate cache */ Memory_cacheWbInv(src, framesize); src = (Uint8 *)displayFramBuff; dst = (Uint8 *)frameBuffPtr->frame.frameBufferPtr;
pImg2=src; if(flag==1)//如果flag=1,则获取第一帧 { for(i=0;i<nHeight;i++) { for(j=0;j<nWidth;j++) { src++; image[a]=*src; src++; a++; } } } src=pImg2; if(flag==0)//如果flag=0,则获取第二帧 { for(i=0;i<nHeight;i++) { for(j=0;j<nWidth;j++) { src++; image2[b]=*src; src++; b++; } } }
Memory_cacheWbInv(dst, framesize);
/* display the video frame */ FVID_exchange(hGioVpbeVid0, &frameBuffPtr);
我是这么写的,可是获取不到两帧数据
lu edward:
你好:
我不知道我的理解对不对,你的意思是说每一帧图片你都要控制或者知道怎么来的又是何时送到显示缓存中的,这样就可以知道上一帧和当前帧以及下一帧的时间顺序了。不知道是不是这个意思?
如果是个意思的话 我用过poll函数,就是当capture抓到一帧后通知你的应用程序,然后你做一下帧间处理。
希望对你有帮助