Sobre o projeto
libplacebo é uma biblioteca independente de algoritmos de processamento e renderização de vídeo acelerados por GPU, originalmente derivada do mpv. Ela é projetada para ocultar detalhes de programação de GPU, espaços de cor, subamostragem e metadados de imagem atrás de APIs em camadas, enquanto ainda permite controle de baixo nível para aplicativos maiores.
Seus recursos de renderização incluem upscaling e downscaling otimizados com filtros polares como Jinc, anti-aliasing, anti-ringing e escalonamento com correção gama. Fornece mapeamento de tom HDR dinâmico com medição de histograma de cena em tempo real, detecção de mudança de cena, controle de exposição, alongamento de gama perceptual e recuperação de contraste. O suporte a Dolby Vision inclui conversão do Perfil 5 para HDR/PQ ou SDR, leitura de side data e reshaping quando compilado com a dependência relevante.
O mecanismo de gerenciamento de cores suporta mapeamento de gama suave, perfis ICC, emulação ITU-R BT.1886, compensação de ponto preto e 3DLUTs .cube personalizados. Um sistema de shader personalizado pode ingerir shaders GLSL ou .hook do mpv, permitindo o uso de shaders de usuário como RAVU, FSRCNNX e Anime4K. A biblioteca também fornece síntese de grão de filme AV1 e H.274, debanding, desentrelaçamento estilo YADIF e pontilhamento com correção gama, incluindo difusão de erro.
Os backends gráficos suportados são Vulkan 1.2, incluindo MoltenVK, OpenGL com GLSL 130 ou mais recente, OpenGL ES 3.0 ou mais recente e Direct3D 11 com feature level 9_1 ou mais recente. Uma interface dummy somente CPU também é exportada. Helpers de alto nível incluem pl_render_image e interoperação com frameworks de mídia baseados em AVFrame.
A API pública é organizada em camadas. A camada 0 oferece logging, cache, matemática de espaço de cor, filtros, mapeamento de tom, mapeamento de gama e helpers de pontilhamento. A camada 1 fornece abstrações de GPU e swapchain, além de implementações Vulkan, OpenGL, D3D11 e dummy. A camada 2 expõe geração GLSL e rotinas de shader para conversão de espaço de cor, shaders personalizados, desentrelaçamento, pontilhamento, grão de filme, perfis ICC, LUTs, amostragem, debanding e escalonamento. A camada 3 despacha e armazena em cache shaders completos, enquanto a camada 4 fornece o renderizador de alto nível, estrutura de opções, fila de quadros, helpers de upload de textura, interop com Dav1dPicture e interop com FFmpeg libav.
O projeto inclui um programa de demonstração plplay e exemplos em suas demos e testes. Foi adotado pelo VLC como um caminho de saída de vídeo opcional baseado em Vulkan e pelo FFmpeg como um filtro de vídeo baseado em Vulkan.
libplacebo usa o sistema de build Meson com Ninja. Um clone recursivo puxa dependências empacotadas, embora a maioria das dependências seja opcional. Componentes opcionais úteis incluem glslang ou shaderc, lcms2, libdovi, suporte a Vulkan com Python Jinja2 para geração de código, suporte a OpenGL via glad2 e xxhash. Alvos de teste e benchmark são opções Meson configuráveis. A biblioteca é distribuída sob LGPLv2.1 ou posterior, com o README observando que uma licença BSD2 mais permissiva pode ser considerada para casos de uso específicos.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.