Esta apresentação tentar mostrar de forma simples como uma aplicação de usuário consegue capturar imagens de uma webcam, utilizando chamadas de sistema e mostrando essas imagens com SDL.
2. dxtec.inf.furb.brMarcos Paulo de Souza2
Quem sou eu
● Desenvolvedor Linux a 4 anos
● Contribuidor do Kernel Linux e LibreOffice
● Usuário Linux a mais de 6 anos
● Trabalho como Engenheiro de Software na ZPE Systems
3. dxtec.inf.furb.brMarcos Paulo de Souza3
Tópicos
● Introdução
● Kernel space vs user space
● Dispositivos de mídia no kernel
● Ferramentas
● sysfs
● v4l2-ctl
● Integração
● SDL
● video4linux2 (v4l2)
● ioctl
● Implementação
● Referências
4. dxtec.inf.furb.brMarcos Paulo de Souza4
kernel space vs user space
Fonte: http://rhelblog.redhat.com/2015/07/29/architecting-containers-part-1-user-space-vs-kernel-space/
6. dxtec.inf.furb.brMarcos Paulo de Souza6
Dispositivos de mídia no kernel
● Rádio FM
● DVB (Digital Video Broadcasting)
● Controle Remoto (IR)
● Câmeras
7. dxtec.inf.furb.brMarcos Paulo de Souza7
Ferramentas
●
sysfs
/sys/class/video4linux
●
v4l2-ctl
[marcos@xfiles v4l2_webcam]$ v4l2-ctl --list-devices
USB2.0 Camera (usb-0000:00:14.0-1):
/dev/video0
USB2.0 HD UVC WebCam (usb-0000:00:14.0-5):
/dev/video1
9. dxtec.inf.furb.brMarcos Paulo de Souza9
Integração
● video4linux2 (v4l2)
● Framework
● UAPI (User space API)
● Ferramentas
● ioctl
● syscall
● opera/configura arquivos especiais (device files)
● ao configurar, o driver responsável pelo dispositivo é
chamado e então altera as configurações no hardware
10. dxtec.inf.furb.brMarcos Paulo de Souza10
Integração
Fonte: http://menehune.opt.wfu.edu/Kokua/Irix_6.5.21_doc_cd/usr/share/Insight/library/SGI_bookshelves/SGI_Developer/books/DevDriver_PG/sgi_html/ch03.html
12. dxtec.inf.furb.brMarcos Paulo de Souza12
Implementação
Demonstração da implementação no kernel e userspace
drivers/media/usb/uvc/uvc_v4l2.c
v4l2_webcam/v4l_webcam.c
13. dxtec.inf.furb.brMarcos Paulo de Souza13
Implementação
● Exemplos de utilização de V4L2
GCW Radio: https://github.com/marcosps/gcw_radio
V4L2_webcam: https://github.com/marcosps/v4l2_webcam
GNOME Cheese: https://wiki.gnome.org/Apps/Cheese
14. dxtec.inf.furb.brMarcos Paulo de Souza14
Referências
Linux MediaAPI: https://linuxtv.org/downloads/v4l-dvb-apis/
SDL: https://www.libsdl.org/
ioctl: http://man7.org/linux/man-pages/man2/ioctl.2.html
v4l2_tools: https://www.linuxtv.org/wiki/index.php/V4l-utils
Linux Docs:https://www.kernel.org/doc/Documentation/media/
Desafio: eudyptula-challange.org