Cámara UVC / Cámara Usb personalizada app para Android análisis by AndroidFreeware
Cámara-UVC-Android
La aplicación se conecta a una cámara USB desde tu dispositivo Android. (Se necesita cable OTG o Hub OTG)
Este proyecto fue creado para realizar un flujo de video isocronizado para todos los dispositivos Android (por encima de 4.1 Ice Cream Sandwich) (también dispositivos Mediathek) con cámaras UVC. El programa utiliza el controlador de dispositivo USB en espacio de usuario para realizar una transferencia isocronizada con tu dispositivo de cámara.
Sigue este procedimiento para configurar tu propio controlador de dispositivo en espacio de usuario:
Primero debes configurar todos los ajustes de la cámara para tu dispositivo. El programa luego guarda los valores y puedes restaurarlos más tarde o sobrescribirlos con otros valores. Usa el botón Editar/Guardar/Restaurar para ajustar los valores. Usa la búsqueda automática de cámaras para encontrar y configurar la cámara.
Explicación:
Cuando la búsqueda automática tiene éxito, primero configuras el TAMAÑO MÁXIMO DEL PAQUETE. Si tu dispositivo es un dispositivo Mediathek, es posible que debas reducir el valor del tamaño máximo del paquete. El valor PAQUETES POR SOLICITUD define el número de paquetes enviados al dispositivo: Un paquete tiene un tamaño de 3000 bytes y usas 16 paquetes a la vez para enviar. Aquí defines la cantidad de bytes que se envían.
Lo siguiente son los BLOQUES DE SOLICITUD USB (activeUrb): Estos están en relación con el tamaño máximo del paquete. Debes encontrar aquí los valores correctos para tu dispositivo y controlar la salida en la pantalla bajo el punto de menú Isoread. Algunos valores típicos para dispositivos Qualcomm son: 8 para los activeUrbs y 16 paquetes por solicitud....
Lo primero del método Isoread es una transferencia de control al dispositivo de la cámara:
Si la transferencia de control es exitosa, entonces estás listo para continuar.
A continuación, echa un vistazo a los fotogramas.
Cuando recibes fotogramas idénticos y largos, puedes proceder al método Isostream, donde los fotogramas se muestran en tu pantalla.
Para saber cuán grande debe ser un fotograma, puedes mirar la salida de la transferencia de control de la cámara en el registro: maxVideoFrameSize. Este valor es devuelto por la cámara y debe ser el tamaño de fotograma válido (El valor se calcula por ancho de imagen x altura de imagen x 2).
La clase IsochronousRead1 te muestra cómo están estructurados los fotogramas por la cámara. Diferentes configuraciones de cámara == Diferentes estructuras de fotogramas. Pruébalo con diferentes configuraciones y observa la salida. La indicación eof muestra el tamaño del fotograma en el registro. Para configuraciones de cámara válidas, el tamaño debería ser el mismo que el valor maxFrameSize de la transferencia de control.
Método de salida Isoread: (Transferencia de control) Primero, el programa enviará una transferencia de control a tu dispositivo de cámara. La salida se ve de la siguiente manera:
Parámetros de streaming iniciales: hint=0x0 format=1 frame=1 frameInterval=2000000 keyFrameRate=0 pFrameRate=0 compQuality=0 compWindowSize=0 delay=0 maxVideoFrameSize=0 maxPayloadTransferSize=0
Parámetros de streaming sondeados: hint=0x0 format=1 frame=1 frameInterval=2000000 keyFrameRate=0 pFrameRate=0 compQuality=0 compWindowSize=0 delay=0 maxVideoFrameSize=614400 maxPayloadTransferSize=3000
Parámetros de streaming finales: hint=0x0 format=1 frame=1 frameInterval=2000000 keyFrameRate=0 pFrameRate=0 compQuality=0 compWindowSize=0 delay=0 maxVideoFrameSize=614400 maxPayloadTransferSize=3000
La primera línea son los valores que configuraste en el programa para conectar la cámara. (Parámetros de streaming iniciales)
La segunda línea son los valores de la cámara, que la cámara devolvió a partir de tus valores.
Y en la tercera línea están los nuevos valores guardados y finales de la cámara USB.
Salida del primer método: isoRead:
EOF frameLen=10436. --> Por ejemplo, aquí un fotograma termina con una longitud de 10436, que no es 614400 como esperábamos de la transferencia de control, por lo que es posible que debas cambiar algunos valores de tu programa para obtener un tamaño de fotograma válido.