Question

J'ai essayé de coder un framegrabber pour une caméra firewire, en utilisant libdc1394. L'initialisation de la caméra se fait correctement, le mode vidéo est réglé sur le DC1394_VIDEO_MODE_640x480_YUV422 pris en charge et le cadre est saisi sans aucune erreur.

Le problème est toutefois que le cadre qui est retourné se compose de 640x480x1.5 octets, ce qui est en fait YUV411 emballage. La struct image vidéo indique également le mode vidéo utilisé était YUV411.

Mais les données ne fait décodent pas avec YUV411. Au lieu de décodage YUV422 produit une image valide, mais la partie inférieure de l'image est manquante, évidemment en raison des données de trames manquantes les derniers octets (YUV422 est 16bits par pixel, YUV411 est 12bits par pixel).

Maintenant, l'appareil photo est IIDC v1.30 conforme et libdc1394 soutient que. Le seul mode vidéo pris en charge (comme indiqué par libdc1394) est utilisé et qui est celui que le manuel de l'appareil indique l'appareil photo utilise.

Je ne l'ai pas trouvé ma façon de contourner ce problème en googler. Des indices?

Était-ce utile?

La solution

Le problème est avec le firmware de l'appareil ne pas renvoyer la valeur correcte du mode vidéo. Il peut être résolu par rapiéçage libdc1394 pour renvoyer la valeur désirée.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top