Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 15 Apr 1998 20:47:55 -0700
From:      Amancio Hasty <hasty@rah.star-gate.com>
To:        Mark Handley <mjh@east.isi.edu>
Cc:        multimedia@FreeBSD.ORG
Subject:   Re: vic, image corruption with Wincast/TV card 
Message-ID:  <199804160347.UAA16881@rah.star-gate.com>
In-Reply-To: Your message of "Wed, 15 Apr 1998 23:39:31 EDT." <26450.892697971@north.lcs.mit.edu> 

next in thread | previous in thread | raw e-mail | index | archive | help
Just take out opt_bktr.h for now. Probably, I will submit a minor
driver upgrade to fix this problem as well as a couple of minor
fixes.


What sort of corrupting are you getting and whats your video format: NTSC
or PAL ?

----

This is a note which I got from brooktree:


ear Amancio,

We received your inquiry about the Bt848 PCI-based decoder recently.  For
your reference, it is repeated below:

>>
A little while ago I wrote a Bt848 driver from scratch for FreeBSD
a public domain unix system. The driver is very popular to be watching
TV in a multi tasking operating system and the driver has been
ported to BSDI and Linux.


More to the point here, my last remaining problem has to deal with
setting the frame rate:

This is a comment from one of the developers:

"    The problem: despite the databook's description of how temporal
decimation on frames is supposed to work (whole frames are masked as a unit
for purposes of synchronization), it appears that the engine is masking out
fields, or rotating the enablement of the fields based on the requested
number of dropped frames.  Anyway, I must be missing something.  Could sure
use a set of eyes with more bt experience."


Also, I have a simple question , what is the behavior of  the video engine
when it decides to drop a frame? does it report uniquely that it has
drop a frame as supposed to reporting that it has dropped a frame due
to a pci error?

This is the current code in the driver to set the frame rates:

static void
set_fps( bktr_ptr_t bktr, u_short fps )
{
        bt848_ptr_t     bt848;
        struct format_params    *fp;
        int i_flag;

        fp = &format_params[bktr->format_params];

        bt848 = bktr->base;

        switch(bktr->flags & METEOR_ONLY_FIELDS_MASK) {
        case METEOR_ONLY_EVEN_FIELDS:
                bktr->flags |= METEOR_WANT_EVEN;
                i_flag = 1;
                break;
        case METEOR_ONLY_ODD_FIELDS:
                bktr->flags |= METEOR_WANT_ODD;
                i_flag = 1;
                break;
        default:
                bktr->flags |= METEOR_WANT_MASK;
                i_flag = 2;
                break;
        }

        bt848->gpio_dma_ctl = FIFO_RISC_DISABLED;
        bt848->int_stat = ALL_INTS_CLEARED;

        bktr->fps = fps;
        bt848->tdec = 0;

        if (fps < fp->frame_rate)
                        bt848->tdec = i_flag*(fp->frame_rate - fps) & 0x3f;
                else
                        bt848->tdec = 0;
        return;

}

>>

It seems as if you understanding of the Bt848's Temporal Decimation process
 is correct.
FYI, this topic is discussed on pages 41, 42, 78-83, and 103 of the Bt848A
datasheet.

(See attached file: L848A_A.pdf)

The Bt848 provides temporal decimation in either a field or a frame basis
depending on what value is loaded into the TDEC register.  This register is
allowed to have a value from 1 to 60 for NTSC and 1 to 50 for PAL and is
located in the Local Register section, Memory Mapped location 0x08.

The value inserted into this register is the number of fields or frames
skipped by the Bt848 during a sequnce of 60 fields for NTSC or 50 fields
for PAL.  Skipped fields and frames will be considered inactive and this
inactivity will de indicated by the ACTIVE pin(# 88 - GPI/O 17) when the
Bt848 is in the Digital Video-In Mode or the VACTIVE and HACTIVE pins(GPI/O
17 and GPI/O 21 respectively) when the Bt848 is in the SPI input and output
modes.

While the Bt848 is in normal operation, these pins will indicate whether a
frame has been dropped by the TDEC register setting because each signal
will stay low, indicatinmg that no active video information is bing bursted
onto the PCI bus.

I will have to check on the behavior of the Bt848 when it drops a frame or
two unintentionally because of a PCI error.  I will send you this answer
when I find out myself.

Please visit our ftp site.  New documentation is available at:
ftp://bt848:pcivideo@ftp.brooktree.com/bt848/

	Enjoy,
	Amancio


	




To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-multimedia" in the body of the message



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