프로젝트 소개

libplacebo는 원래 mpv에서 파생된 GPU 가속 비디오 처리 및 렌더링 알고리즘의 독립형 라이브러리입니다. 계층화된 API 뒤로 GPU 프로그래밍, 색 공간, 서브샘플링, 이미지 메타데이터의 세부 사항을 숨기면서도 대규모 애플리케이션을 위한 저수준 제어를 허용하도록 설계되었습니다. 렌더링 기능에는 Jinc과 같은 폴라 필터를 사용한 최적화된 업스케일링 및 다운스케일링, 안티 앨리어싱, 링잉 방지, 감마 보정 스케일링이 포함됩니다. 실시간 장면 히스토그램 측정, 장면 전환 감지, 노출 제어, 지각적 색역 확장, 대비 복구를 갖춘 동적 HDR 톤 매핑을 제공합니다. Dolby Vision 지원에는 관련 종속성으로 빌드된 경우 HDR/PQ 또는 SDR로의 Profile 5 변환, 사이드 데이터 읽기, 리셰이핑이 포함됩니다. 색상 관리 엔진은 소프트 색역 매핑, ICC 프로필, ITU-R BT.1886 에뮬레이션, 블랙 포인트 보정, 사용자 정의 .cube 3DLUT를 지원합니다. 사용자 정의 셰이더 시스템은 GLSL 또는 mpv .hook 셰이더를 받아들일 수 있어 RAVU, FSRCNNX, Anime4K과 같은 사용자 셰이더를 사용할 수 있습니다. 또한 AV1 및 H.274 필름 그레인 합성, 디밴딩, YADIF 스타일 디인터레이싱, 오차 확산을 포함한 감마 보정 디더링을 제공합니다. 지원되는 그래픽스 백엔드는 MoltenVK를 포함한 Vulkan 1.2, GLSL 130 이상을 지원하는 OpenGL, OpenGL ES 3.0 이상, Direct3D 11 기능 수준 9_1 이상입니다. 더미 CPU 전용 인터페이스도 제공됩니다. 고수준 헬퍼에는 pl_render_image와 AVFrame 기반 미디어 프레임워크와의 상호 운용이 포함됩니다. 공개 API는 계층으로 구성됩니다. Tier 0은 로깅, 캐싱, 색 공간 수학, 필터, 톤 매핑, 색역 매핑, 디더링 헬퍼를 제공합니다. Tier 1은 GPU 및 스왑체인 추상화와 함께 Vulkan, OpenGL, D3D11, 더미 구현을 제공합니다. Tier 2는 GLSL 생성과 색 공간 변환, 사용자 정의 셰이더, 디인터레이싱, 디더링, 필름 그레인, ICC 프로필, LUT, 샘플링, 디밴딩, 스케일링을 위한 셰이더 루틴을 노출합니다. Tier 3은 완전한 셰이더를 디스패치하고 캐시하며, Tier 4는 고수준 렌더러, 옵션 프레임워크, 프레임 큐, 텍스처 업로드 헬퍼, Dav1dPicture 상호 운용, FFmpeg libav 상호 운용을 제공합니다. 프로젝트에는 plplay 데모 프로그램과 demos 및 tests의 예제가 포함됩니다. VLC에서는 선택적 Vulkan 기반 비디오 출력 경로로, FFmpeg에서는 Vulkan 기반 비디오 필터로 채택되었습니다. libplacebo는 Ninja와 함께 Meson 빌드 시스템을 사용합니다. 재귀 클론은 번들된 종속성을 가져오지만 대부분의 종속성은 선택 사항입니다. 유용한 선택적 구성 요소에는 glslang 또는 shaderc, lcms2, libdovi, 코드 생성용 Python Jinja2를 사용하는 Vulkan 지원, glad2를 통한 OpenGL 지원, xxhash가 있습니다. 테스트 및 벤치마크 대상은 Meson 옵션으로 구성할 수 있습니다. 라이브러리는 LGPLv2.1 이상으로 배포되며, README에 따르면 특정 사용 사례에 대해 더 허용적인 BSD2 라이선스가 고려될 수 있습니다.