Primeira versão do libcamera, uma pilha de suporte a câmeras no Linux

Após quatro anos de desenvolvimento, foi formada a primeira versão do projeto libcamera (0.0.1), que oferece uma pilha de software para trabalhar com webcams, câmeras fotográficas e sintonizadores de TV no Linux, Android e ChromeOS, continuando o desenvolvimento da API V4L2 e, eventualmente, substituindo-a. Como a API da biblioteca ainda continua a mudar e não está estabilizada, o projeto até agora se desenvolveu sem bifurcação de versões individuais, utilizando um modelo de desenvolvimento contínuo. Em resposta à necessidade das distribuições de acompanhar as mudanças na API que afetam a compatibilidade e para simplificar a entrega da biblioteca em pacotes, agora foi tomada a decisão de formar lançamentos periodicamente, refletindo o nível de mudança do ABI e da API. O código do projeto é escrito em C++ e distribuído sob a licença LGPLv2.1.

O projeto está sendo desenvolvido por desenvolvedores de subsistemas multimídia do núcleo Linux em colaboração com alguns fabricantes de câmeras, visando normalizar a situação do suporte a câmeras para smartphones e dispositivos embutidos no Linux, que estão vinculados a drivers proprietários. A API V4L2 já existente no núcleo Linux foi criada considerando o funcionamento com webcams tradicionais, e é mal adaptada para a recente tendência de transferir a funcionalidade do MCU para o CPU.

Diferentemente das câmeras tradicionais, nas quais as operações de processamento primário de imagens são realizadas em um processador especializado embutido na câmera (MCU), em dispositivos embutidos, para reduzir custos, essas funções são transferidas para o CPU principal e requerem um driver mais complexo, incluindo componentes licenciados que não podem ser abertos. No âmbito do projeto libcamera, defensores do software livre e fabricantes de hardware tentaram criar uma solução de compromisso que, por um lado, atenda às necessidades dos desenvolvedores de software aberto e, por outro, proteja a propriedade intelectual dos fabricantes de câmeras.

A pilha proposta pela biblioteca libcamera é completamente implementada no espaço do usuário. Para garantir a compatibilidade com os ambientes e aplicativos existentes, são fornecidas camadas de compatibilidade com as APIs V4L, Gstreamer e Android Camera HAL. Componentes proprietários específicos de cada câmera que interagem com o hardware são organizados na forma de módulos executados em processos separados e que interagem com a biblioteca através de IPC. Os módulos não têm acesso direto ao dispositivo e se comunicam com o hardware através de uma API intermediária, cujos pedidos são verificados, filtrados e limitados apenas ao acesso às funcionalidades necessárias para o controle da câmera.

A biblioteca também oferece acesso a algoritmos para processamento e aprimoramento da qualidade de imagens e vídeos (ajuste de balanço de brancos, redução de ruído, estabilização de vídeo, foco automático, seleção da exposição, etc.), que podem ser conectados na forma de bibliotecas externas abertas ou módulos isolados proprietários. A API oferece acesso a funções como definição das funcionalidades de câmeras externas e integradas disponíveis, utilização de perfis de dispositivos, processamento de eventos de conexão e desconexão de câmeras, controle da captura de dados das câmeras em nível de quadros individuais e sincronização de fotos com a operação do flash. É possível operar separadamente com várias câmeras no sistema e organizar a captura simultânea de vários fluxos de vídeo de uma única câmera (por exemplo, um com baixa resolução para videoconferência, e outro com alta resolução para gravação em disco).

Fonte: opennet.ru

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster