Zoneminder and multichannel cards
Achilleas Mantzios
achill at matrix.gatewaynet.com
Fri Oct 5 07:02:35 PDT 2007
Στις Παρασκευή 05 Οκτώβριος 2007 16:07, ο/η Mark Tinguely έγραψε:
> Achilleas Mantzios asks:
> > I dont know if you are familiar with zoneminder,
> > it has a capture daemon (zmc) which is used to grab the video.
>
> There are several clone simular to that card.
>
> > In the installation we have at work under linux, using a 4-chip board=20
> > (LMLBT44), i can see that there are only 4
> > instances of it (zmc) running=20
> > on /dev/video0,/dev/video1,/dev/video2,/dev/video3
> > to capture all 8 cameras.
> > This board supports 4 full rate inputs, or 8 multiplexed inputs.
> >
> > So for each one of the 4 chips, the corresponding zmc daemon is used
> > to simultaneously capture both channels (cameras) of the same chip.
> >
> > Theoritically is that possible with FreeBSD's bktr driver?
> > Could we have an app like lets say xawtv to display all (4 in my
> > case)=20 channels of a multiplexer board like LMLBT4M which utilizes only
> > one 878 ch= ip=20
> > and supports 4 multiplexed channels i.e. 4 cameras?
> >
> > If your answer is yes, then i should keep on trying with=20
> > =46reeBSD/ZoneMinder/zmc, etc...
> > Else i should buy 3 additional bt 878 cards, or switch to linux which i
> > wan= t=20
> > to avoid!
>
> No matter the OS, a BT878 can capture from one video input AT ONE TIME.
>
> The LMLBT4M has only one BT878 video capture chip. A person can write
> a program to capture images from up to 4 inputs using time division
> multiplexing.
I booted with linux and ZM works perfectly with multiplexed inputs.
From what i see in the linux version of the zoneminder, in
zm_local_camera.cpp:579
it does:
if ( ioctl( m_videohandle, VIDIOCSCHAN, &vid_src ) < 0 )
{
Error(( "Failed to set camera source %d: %s", channel, strerror(errno) ));
return( -1 );
}
I suppose the above is a service of the linux bttv driver, right?
I.e. the bttv driver does the time division demultiplexing?
I tried smth for the FreeBSD version (zm_fbsd_camera.cpp)
if (ioctl(m_videohandle, TVTUNER_SETCHNL, &tmpchannel) < 0) {
Error(( "Failed to set camera source %d: %s", tmpchannel, strerror(errno) ));
return( -1 );
}
but i got "Inappropriate ioctl for device".
However for single cameras (and testing with their input number)
ioctl(m_videohandle, METEORSINPUT, &c)
where c is
METEOR_DEV0, METEOR_DEV1, METEOR_DEV2, METEOR_DEV3
seems to work (as you had suggested some time ago).
When i tried to be sneaky and replaced the above
ioctl(m_videohandle, TVTUNER_SETCHNL, &tmpchannel)
with
ioctl(m_videohandle, METEORSINPUT, &c)
it didnt complain as a ioctl, but i got a strange (but rather expected effect)
of the video of one camera, inside the video of the 2nd camera.
(i tested with only 2 cameras).
So what i cant understand is:
1) How bktr understands about METEOR_DEV0, METEOR_DEV1, METEOR_DEV2,
METEOR_DEV3, how does it distinguish the 4 channels in LMLBT4M?
2) How could i arrange smth similar, provided its not very time consuming?
( i am trying to do all this at home hours, and they are extremely limited).
If you could have an idea on how to (easily) programmatically demux
the inputs, i'd be grateful.
>
> As you said there are cards with multiple BT878 that are either dedicated
> to one input or allow multiple inputs. For example, the Kodicom 4400 (and
> clones) have 4 BT878 capture chips and a crossbar that lets a person choose
> from 16 inputs (on at a time per capture chip). I have a patch (see last
> week's archive for thread) that sets up the crossbar on the Kodicom 4400.
> There is also a Kodicom 8800 (and clones) with 8 BT878 capture chips which
> I have not used.
>
> --Mark Tinguely.
--
Achilleas Mantzios
More information about the freebsd-multimedia
mailing list