Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 11 Feb 1997 23:25:48 -0500
From:      Randall Hopper <rhh@ct.picker.com>
To:        multimedia@freebsd.org
Cc:        Amancio Hasty <hasty@rah.star-gate.com>
Subject:   Bt848 driver & Wincast -- some success
Message-ID:  <19970211232548.58351@ct.picker.com>

next in thread | raw e-mail | index | archive | help
     Got the latest Bt848 driver linked into 2.2-ALPHA this evening and had
some success with Luigi's 8-bit TV on the new Wincast TV/dbx.  I got sound
and the 320x240 image was updating at a reasonable speed, but only the even
scan lines (or frames) were updating with every refresh.  The odd scan
lines (or frames) seemed to update somewhat randomly with a frequency of
1-10 seconds, giving the image a strange ghosting look to it.

     I could still easily see the effect when I beefed the size up to
640x480.  It was much less prominent though if I ran xmag or some program
that dogged the X server, slowing down the frame rate.

     I haven't looked at the driver code yet so I don't know what all the
ioctls do, but does this:

          i = METEOR_CAP_SINGLE ;                     /* buffer up 1 frame */
          ioctl(video, METEORCAPTUR, &i)

start assembling a single "frame" into the mmap driver buffer (as the
comment suggests), or a single "image" (2 adjacent frames).  I'm guessing
its the former and I think that would explain the behavior I'm seeing.  If
the CAP_SINGLE submissions were just happening to coincide closely with the
2x the frame rate, I'd only be getting one frame updated most of the time.

     I flipped into CONTINUOUS mode, and though that got rid of the
odd-frame ghosting, but now there was dancing noise in the image.  I guess
this might be because TV's reading while the driver's writing into the
buffer.

     Question:  what happens when a CAP_SINGLE is sent to the driver when
the previous CAP_SINGLE is still running.  Is it queued or ignored?

     Gotta hang it up for this evening.  If anyone has suggestions of
things I should try next to improve my "reception", please send e-mail.

     I'm thinking of memcpying the data out of the mmap buffer before
processing; maybe that'll clear up some of the static in a CONTINUOUS run.
Alternatively, is there a "capture two adjacent frames" function (something
like a CAP_DOUBLE) in the bktr driver?  That'd be useful.  Also, is there
any asynchronous notification from the driver when a frame has been
assembled.

     After trying that, I'll look at getting the 15-/24-bit TV working in
the 16-/32-bit modes my card supports.  From what little I've looked at the
code, I think this is just be a matter of shuffling the RGB bits when
building the image.

     Another question.  Does the bktr driver support bus-mastered DMA
straight to the video card memory if it supports linear addressing?  I
think you mentioned that TV doesn't use this capability now, but I wasn't
clear as to whether the device driver supported that or not.

     Thanks for the driver Amancio, for the TV updates Luigi, and for the
help getting started.

Randall





Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?19970211232548.58351>