VIDIOCSYNC and bad data

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]



hello.  its me again with another newbie question.  im writing a tv program, 
and am having trouble capturing data using mmap (bttv driver from kernel 
2.6.0-test2, bt 878 based hauppauge card).  it seems that if i use the 
VIDIOCSYNC ioctl to sync with the video card writing to the memory, i get a 
lot of empty spaces in the frame (black if i memset it to 0 before each 
VIDIOCMCAPTURE, or the data from the last time it was written to if i dont).  
the larger the capture dimensions are, the higher the percentage of the frame 
is missing.  

it seems to me (and i dont really know exactly how the driver or the hardware 
works) that the VIDIOCSYNC ioctl is forcing the video card to finish copying 
the frame, instead of just waiting to return until the video card is done 
(which is what i want it to do).  i tried adding a usleep for 1/30th of a 
second between the VIDIOCMCAPTURE and the VIDIOCSYNC calls, hoping that it 
would at least reduce the amount of missing frame, but it didnt work.  
currently i am syncing by checking the return value of VIDIOCMCAPTURE, to see 
if the previous frame is finished before drawing it, but that uses all the 
available cpu time (since its a while() loop that just spins), and i would 
like to avoid that.

so, is this the expected behaviour? am i doing something wrong (i can post 
code if needed)? or is this a bug that i should be reporting?

thanks for your help (or at least reading this far)
thomas
spiralman@xxxxxxxxxxxx




[Index of Archives]     [Linux DVB]     [Video Disk Recorder]     [Asterisk]     [Photo]     [DCCP]     [Netdev]     [Xorg]     [Util Linux NG]     [Xfree86]     [Free Photo Albums]     [Fedora Users]     [Fedora Women]     [ALSA Users]     [ALSA Devel]     [Linux USB]

Powered by Linux