Hello Benoit,
Everything is now properly working. But I had some hard difficulties
with PCI (making either black lines on the grabbed images or mixing frames from
several inputs). So I'd like to know more about the following lines in bt848_muxsel:
How fast do you need to switch your inputs, ie. how many switches per
second do you need?
Switching the sources and grabbing really fast (ie. switch to port 0,
grab picture to buffer 0, switch to input 1, grab picture to buffer 2)
won't work.
Your four inputs provide analogue video signals. If you switch from one
input to the other, the bt848 needs to synchronize to the new input
first. The time it needs to do this is unpredictable. This depends on
the video source and can vary from a few ms to about 100ms in the worst
case (ie. you will miss about 2-3 video frames).
If you get black lines in your picture, then the bt848 was not able to
synchronize to the new source yet and tries to recover gracefully by
skipping the lines. If you get mixed up pictures, then you tried to
capture an image while the channel change was not completed yet.
I don't know the internas of the bt848 driver, but I suspect it cannot
detect when the input switch is completed.
- why it's needed to write 00 in the MUXSEL registers?
Sorry, I don't know.
- what's the purpose of mdelay(10)?
- where does the value 10 (10 ms) comes from? Is it related 2 video
signals?
I think it's an arbitrary value and not related to anything. It just
wait a few ms to let the bt848 synchronize again.
I reduce the mdelay(10) which is 10 ms to 1ms since one image is 40ms.
Then the probability for getting mixed up pictures increases.
Any ideas is welcome. I'll send a patch on this list if some people are
insterested (but like I said I made all kinds of modification based on
bttv-0.7.91).
I think this problem is unsolvable.
If time is not important for you, make sure to wait long enough after a
channel switch. If time does matter, you should probably use multiple
video cards.
Benoit
CU
Michael.