Проблема с захваченным кадром в libdc1394
-
06-09-2019 - |
Вопрос
Я пытался закодировать framegrabber для камеры firewire, используя libdc1394.Инициализация камеры выполнена правильно, режим видеосъемки установлен на поддерживаемый DC1394_VIDEO_MODE_640x480_YUV422
и кадр захватывается без каких-либо ошибок.
Проблема, однако, в том, что возвращаемый фрейм состоит из 640x480x1,5 байт, что на самом деле является упаковкой YUV411.В структуре видеокадра также указано, что в качестве видеорежима использовался YUV411.
Но данные на самом деле не декодируются с помощью YUV411.Вместо этого при декодировании YUV422 получается действительное изображение, но нижняя область изображения отсутствует, очевидно, из-за того, что в данных кадра отсутствуют последние байты (YUV422 - 16 бит на пиксель, YUV411 - 12 бит на пиксель).
Теперь камера совместима с IIDC версии v1.30, и libdc1394 поддерживает это.Используется единственный поддерживаемый режим видеосъемки (как указано в libdc1394), и это тот режим, который, как указано в руководстве по эксплуатации камеры, используется камерой.
Я не смог обойти эту проблему с помощью Google.Есть какие-нибудь зацепки?
Решение
Проблема заключается в том, что прошивка устройства не может вернуть правильное значение видеорежима.Это может быть устранено путем исправления libdc1394, чтобы вернуть желаемое значение.