Hi Tim,
Sorry for the long wait, I hope my answer will still be helpful.
On Thu, 2008-02-21 at 10:21 +0100, Tim Niemueller wrote:
> Damien Douxchamps schrieb:
> > Hi Tim,
>
> Hi Damien, hi all.
>
> > Just in case: after setting the operation mode to "B", you should also
> > set the speed to "S800". The maximal packet size should change before
> > and after that setting is done.
>
> Yes, we did that :-)
>
> >> anything greater than 4096 will result in garbage images.
> >
> > That may sound stupid, but what is the framerate of the garbage images?
> > With 1394B you can set the packet size to more than 4096, and this is
> > going to be necessary for you to go beyond 1394A speeds. If you get
> > 33fps garbage then at least we can reasonably guess that the camera is
> > indeed streaming at full speed.
>
> I have added a tarball which contains the test program that we used in
> source and the resulting output. The s400.txt contains the output when
> we set the speed to S400, everything makes sense. The recommended packet
> size is 4096 which we set and then we gather packages. The speed is very
> slow, it takes ~61ms to get a single frame. The s800.txt file contains
> the output that we get when we set the speed to S800 (B-Mode was set in
> both cases). As you can see the recommended packet size now is 8192
> which we set. Now the capture takes ~0.6 ms (with 0 frames behind, so
> its not just returning a pre-filled buffer). But this is way too short
> for the transmitted data so we suspect that no data is transmitted at
> all. We also tried a 2.6.24 kernel with the very same result. Note that
> this was done with Fedora stock and koji kernels on F8.
>
> Any ideas of what's going wrong or hints where to look or how to
> continue debugging?
>
> Damien, if you want we can give you access to one of our robots so that
> you can run tests directly on the hardware in question.
I've just tried 1394B for the first time in my life and it works (!) I
am using a PGR Grasshopper 5MP, a Unibrain PCI64 1394B card (in a PCI32
slot) and a nice cable donated by Viewplus (thanks!). For the software:
latest libdc1394 and coriander, stock kernel 2.6.22-14 from Ubuntu,
single proc (P4) machine with 1GB RAM. I'm using the legacy firewire
drivers.
Details about the image format: 2448x2048, packet size=9568, Format7,
RAW8. I can reach 15fps with that, which gives 601e6 Mbit/s. Note that
the packet size is off-specs (too large) and will lead to frame
corruption on Linux, but the purpose here is just to "go to 11".
I've also tried your program, which returns good results in S800 (output
attached).
My guess at this point is the same as yours: the problem is likely in
juju (or maybe in the juju backend of libdc?) Posting a summary of the
problem on linux1394 may lead to an answer. Have you tried the legacy
stack in the meantime?
--
Damien 高原 Douxchamps
Assistant Professor, Image Processing Laboratory, NAIST
http://damien.douxchamps.net/
|