2009-05-27 9 views
0

Ich habe versucht, einen Framegrabber für eine FireWire-Kamera zu kodieren, mit libdc1394. Die Initialisierung der Kamera ist ordnungsgemäß abgeschlossen, der Videomodus ist auf den unterstützten DC1394_VIDEO_MODE_640x480_YUV422 eingestellt und der Rahmen wird ohne Fehler erfasst.Problem mit dem aufgenommenen Bild auf libdc1394

Das Problem ist jedoch, dass der Rahmen, der zurückgegeben wird, besteht aus 640x480x1.5 Bytes, die eigentlich YUV411 Verpackung ist. Die Videoframe-Struktur gibt außerdem an, dass der verwendete Videomodus YUV411 war.

Aber die Daten entschlüsseln tatsächlich nicht mit YUV411. Stattdessen erzeugt die YUV422-Dekodierung ein gültiges Bild, aber der untere Bereich des Bildes fehlt, offensichtlich aufgrund der Rahmendaten, die die letzten Bytes fehlen (YUV422 ist 16 Bits pro Pixel, YUV411 ist 12 Bits pro Pixel).

Jetzt ist die Kamera IIDC v1.30 kompatibel und libdc1394 unterstützt das. Der einzige Videomodus, der unterstützt wird (wie von libdc1394 angegeben), wird verwendet, und das ist der Kameramann, den die Kamera angibt.

Ich habe dieses Problem nicht durch Googlen gefunden. Irgendwelche Hinweise?

Antwort

0

Das Problem liegt darin, dass die Firmware des Geräts nicht den korrekten Wert des Videomodus zurückgibt. Es kann gelöst werden, indem Sie libdc1394 patchen, um den gewünschten Wert zurückzugeben.