I've almost got My WinTV card tow work but ...

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



I've almost got my bttv WinTV card working (I get pictures out at 25fps for
384x288 and about 15fps at 768x576 including rendering using openGL). The last
problem I have is that sometimes the buffer I read seems to either 1) have
not finnished updating before I read it or 2) Have started updating the next 
frame before I've read the whole image. See:

http://www.comp.leeds.ac.uk/drm/problem.gif

I'm trying to read/write from/to 2 frames the reading code is (VERSION 1):

the_read_function()
{
    ioctl(fd,VIDIOCMCAPTURE,&vmmap) ; // Request capture to current buffer
    src = buff + mbuf.offsets[currentBuffer] ; // Set read pointer

    if(currentBuffer==0) currentBuffer = 1 ;
    else                 currentBuffer = 0 ;

    vmmap.frame = currentBuffer ;
    ioctl(fd,VIDIOCSYNC,&vmmap) ; // Release next buffer for writing

    ..... Read out data from src (i.e. frame just written to)
}

Alternatively (VERSION 2):

the_read_function_v2()
{
    ioctl(fd,VIDIOCSYNC,&vmmap) ; // Release current buffer for writing
    ioctl(fd,VIDIOCMCAPTURE,&vmmap) ; // Request capture to current buffer
    src = buff + mbuf.offsets[currentBuffer] ; // Set read pointer

    if(currentBuffer==0) currentBuffer = 1 ;
    else                 currentBuffer = 0 ;

    vmmap.frame = currentBuffer ;

    ..... Read out data from src (i.e. frame just written to)
}


Both these combinations produce the problem reasonably frequently. Am I doing
something wrong or is it a feature of the hardware?

Many thanks

Derek Magee
 





[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