Pergunta

Eu tenho tentado código de um framegrabber para uma câmera firewire, usando libdc1394. A inicialização da câmera é feito corretamente, o modo de vídeo está definido para o DC1394_VIDEO_MODE_640x480_YUV422 suportado eo quadro é agarrou sem erros.

O problema é, no entanto, que a armação que é devolvido consiste em 640x480x1.5 bytes, o que é, na verdade, YUV411 embalagem. A estrutura de quadro de vídeo também afirma o modo de vídeo utilizado foi YUV411.

Mas os dados realmente não decodifica com YUV411. Em vez YUV422 decodificação produz uma imagem válida, mas a região inferior da imagem está faltando, obviamente, devido aos dados do quadro faltando os últimos bytes (YUV422 é 16bits por pixel, YUV411 é 12bits por pixel).

Agora, a câmera é IIDC v1.30 suportes compatíveis e libdc1394 isso. O modo somente de vídeo com suporte (como afirma libdc1394) está sendo usado e isso é o que os estados manual da câmera A câmera está usando.

Eu não encontrei minha maneira de contornar este problema por googling. Qualquer pistas?

Foi útil?

Solução

O problema é com o firmware do dispositivo não retornar o valor correto do modo de vídeo. Ele pode ser resolvido por remendar libdc1394 para retornar o valor desejado.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top