2009-05-27 8 views
0

J'ai essayé de coder un framegrabber pour une caméra firewire, en utilisant libdc1394. L'initialisation de la caméra est effectuée correctement, le mode vidéo est défini sur le DC1394_VIDEO_MODE_640x480_YUV422 pris en charge et le cadre est saisi sans aucune erreur.Problème avec le cadre capturé sur libdc1394

Le problème est, cependant, que la trame qui est retournée se compose de 640x480x1.5 octets, ce qui est en fait l'emballage YUV411. La structure de la trame vidéo indique également que le mode vidéo utilisé était YUV411.

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

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

Je n'ai pas trouvé de solution à ce problème en recherchant sur Google. Des indices?

Répondre

0

Le problème est dû au fait que le microprogramme de l'appareil n'a pas renvoyé la valeur correcte du mode vidéo. Il peut être résolu en patchant libdc1394 pour retourner la valeur désirée.

Questions connexes