자유 소프트웨어로서 개정된 BSD 라이선스 조항에 따라 소스 코드 형태로도 공개된다. libvpx는 그 기능을 기반으로 구축된 명령줄 도구인 vpxenc/aomenc 및 vpxdec/aomdec와 함께 배포된다.
역사
libvpx는 90년대 중반에 첫 소프트웨어 코덱을 판매했던 영상 코덱 기업 On2 테크놀로지스에서 시작되었다.
libvpx는 On2 테크놀로지스를 약 1억 2천만 달러 이상의 추정 금액으로 인수한 후, 2010년 5월 19일 구글에 의해 자유 소프트웨어로 공개되었다.
2010년 6월, 구글은 기존 라이선스가 실제로 오픈 소스인지에 대한 논란이 있은 후 VP8 코덱 소프트웨어 라이선스를 3-조항 BSD 라이선스로 개정하였다.
구글은 libvpx의 초기 릴리스 당시 정돈되지 않은 코드와 열악한 문서화, 그리고 과정에 커뮤니티를 참여시키지 않은 채 비공개로 개발한 점에 대해 비판받았다. 개발 과정은 VP9 릴리스 이후 공개되었다.
VP9에 대한 예비 지원은 2013년 6월 17일 libvpx에 추가되었다. 이는 비손실 압축을 지원하는 12월 2일 버전 1.3의 릴리스와 함께 공식적으로 도입되었다.
2015년 4월, 구글은 libvpx 라이브러리에 대한 중요한 업데이트를 릴리스했으며, 1.4.0 버전에서는 10비트 및 12비트 비트 깊이, 4:2:2 및 4:4:4 크로마 서브샘플링(VP9 프로파일 1, 2, 3), 그리고 VP9 멀티스레드 디코딩/인코딩에 대한 지원을 추가하였다.
1.5 버전(2015년 11월), 1.6 버전(2016년 7월), 1.7 버전 (2018년 1월), 1.8 버전 (2019년 2월)은 인코딩과 디코딩 모두에서 상당한 속도 향상을 가져왔다.
기능
libvpx는 비트레이트 또는 품질 목표 설정과 함께 단일 패스 및 이중 패스 인코딩 모드를 구현한다.
libvpx는 인코딩이 디코딩보다 훨씬 오래 걸리는 비대칭 코덱을 제공하며, 디코딩 복잡성과 독립적으로 인코딩 비용을 구성할 수 있는 옵션을 제공한다. 최대 25프레임의 룩어헤드(Lookahead)를 구성할 수 있는데, 이는 압축 효율을 향상시키지만 지연 시간을 발생시켜 실시간 성능을 저하시킨다.
libvpx는 인코딩 속도를 재생 속도(실시간)와 거의 동일하게 유지하면서 지연 없이 품질을 최대한 높게 유지하기 위해 가능한 최대 CPU 자원을 사용하는 모드를 포함하고 있다.
고해상도(예: UHD)에서 VOD 애플리케이션을 위해 libvpx로 인코딩된 VP9는 X264로 인코딩된 H.264보다 상당한 개선을 제공한다. X265로 인코딩된 HEVC는 더 나은 품질을 달성할 수 있지만, VP9의 로열티 프리 특성은 지원되는 플랫폼에서 고해상도 영상을 제공하기 위한 매력적인 선택지가 된다.
디코딩 성능은 코드 기반을 유지 관리하기 쉽게 유지하기 위해 부분적으로 다소 느린 편이다. libvpx의 초기 릴리스와 비교했을 때, FFmpeg 프로젝트의 ffvp8은 성능을 22%에서 66% 이상 향상시켰다. 2016년 기준, 대체 VP9 디코더들은 여전히 25~50% 더 빠른 디코딩 성능을 달성했다.
기술
libvpx는 C와 어셈블리어로 작성되었다. 2015년 기준 완전한 SIMD 커버리지를 갖추지는 못했다.