Hans de Goede, desenvolvedor Fedora Linux que trabalha na Red Hat, apresentou uma pilha aberta para câmeras MIPI (Mobile Industry Processor Interface) na conferência FOSDEM 2024. A pilha aberta preparada ainda não foi aceita no kernel Linux e no projeto libcamera, mas está marcada como tendo atingido um estado adequado para teste por uma ampla gama de entusiastas. A operação da pilha foi testada com câmeras MIPI baseadas em sensores ov2740, ov01a1s e hi556 usados em laptops como Lenovo ThinkPad X1 yoga gen 8, Dell Latitude 9420 e HP Spectre x360 13.5 2023.
A interface MIPI é usada em muitos novos modelos de laptop, em vez do streaming de vídeo usado anteriormente pelo barramento USB de dispositivos que suportam o padrão UVC (USB Video Class). O MIPI fornece acesso ao sensor da câmera por meio de um receptor CSI (Camera Serial Interface) e um processador de imagem integrado à CPU (ISP, Image Signal Processor), que fornece a formação de imagens com base nos dados brutos provenientes do sensor. A Intel fornece um conjunto de drivers proprietários para trabalhar com câmeras MIPI no Linux via IPU6 (Imaging Processing Unit) nos processadores Intel Tiger Lake, Alder Lake, Raptor Lake e Meteor Lake.
A principal dificuldade no desenvolvimento de drivers abertos para câmeras MIPI se deve ao fato de que a interface de hardware do processador ISP e os algoritmos de processamento de imagem nele implementados geralmente não são divulgados pelos fabricantes de CPU e são um segredo comercial. Para resolver este problema, Linaro e Red Hat desenvolveram uma implementação de software do processador de imagem - SoftISP, que permite trabalhar com câmeras MIPI sem usar componentes proprietários (SoftISP pode ser usado como substituto do IPU6 ISP).
A implementação do SoftISP foi submetida para inclusão no projeto libcamera, que oferece uma pilha de software para trabalhar com câmeras de vídeo, câmeras e sintonizadores de TV em Linux, Android e ChromeOS. Além do SoftISP, a pilha para trabalhar com câmeras MIPI inclui um driver para sensores ov2740 rodando no nível do kernel e código para suportar o receptor CSI no kernel Linux, que faz parte do IPU6 dos processadores Intel.
O kernel Linux e os pacotes libcamera, incluindo as alterações do projeto, estão disponíveis no repositório COPR para instalação no Fedora Linux 39. O servidor de mídia Pipewire pode ser usado para capturar vídeo de câmeras MIPI. O suporte para trabalhar com câmeras via Pipewire já foi adotado na biblioteca libwebrtc. No Firefox, a capacidade de trabalhar com câmeras via Pipewire foi levada a um estado adequado para uso com WebRTC, a partir da versão 122. Por padrão, trabalhar com câmeras via Pipewire no Firefox está desabilitado e requer o arquivo “media.webrtc.camera. permitir-” parâmetro a ser ativado em about:config pipewire."
Fonte: opennet.ru