정확히 7년 전, YouTube는 사람들이 매일 10억 시간의 콘텐츠를 플랫폼에서 시청한다는 놀라운 통계를 전 세계에 알렸습니다. 그 이후로 디지털 미디어 환경은 TikTok의 부상과 넷플릭스와 대형 미디어 회사 간의 온라인 스트리밍 전쟁으로 인해 더욱 성장했습니다. 이러한 온라인 서비스에서 매일 전송해야 하는 비디오 콘텐츠의 양이 엄청나게 증가함에 따라 기업은 품질 저하 없이 대역폭을 절약할 수 있는 최고의 압축 기술을 사용하는 것이 필수적입니다. 이것이 바로 오픈 미디어 연합의 AV1 코덱이 온라인 스트리밍 서비스 사이에서 주목을 받고 있는 이유입니다.
AV1은 h.264, h265 또는 VP9와 같은 이전 코덱에 비해 압축 효율이 뛰어난 비디오 코덱으로, AV1으로 인코딩된 비디오는 훨씬 낮은 비트레이트에서 비슷한 비디오 품질을 제공할 수 있습니다. 따라서 화질 저하 없이 스트리밍 서비스와 최종 사용자 모두의 대역폭 요구량을 줄일 수 있습니다. 하지만 스트리밍 업계에서 AV1을 선호하는 이유는 더 나은 성능뿐만이 아닙니다. AV1은 로열티가 전혀 없기 때문에 비용 절감을 원하는 스트리밍 서비스에 매력적인 옵션입니다.
하지만 스트리밍 서비스들은 콘텐츠에 AV1을 채택하는 속도가 느립니다. 유튜브, 넷플릭스, 인스타그램, 비메오와 같은 서비스는 이미 대부분의 콘텐츠를 AV1로 인코딩하고 있지만, 대부분의 소비자 디바이스에는 여전히 다른 코덱으로 콘텐츠를 제공하고 있습니다. 그 이유는 많은 소비자 디바이스가 아직 AV1 동영상 재생을 위한 하드웨어 지원이 부족하기 때문에 AV1 동영상을 재생하려면 CPU에서 실행되는 소프트웨어 디코더를 사용해야 하기 때문입니다.
비디오 디코더는 기본적으로 복잡한 알고리즘으로, CPU(소프트웨어 가속) 또는 멀티미디어 처리를 위한 전용 하드웨어 블록(하드웨어 가속)에서 실행할 수 있습니다. 비디오의 화질과 사용되는 코덱에 따라 비디오 파일 디코딩은 계산 집약적일 수 있습니다. 이상적으로는 디바이스에서 하드웨어 가속 디코더를 사용하여 AV1 콘텐츠를 재생하는 것이 더 원활하게 재생하고 전력 소비를 줄일 수 있습니다.
안타깝게도 대부분의 모바일 디바이스에는 하드웨어 가속 AV1 디코더가 없기 때문에 소프트웨어 가속 디코더를 사용하여 CPU에서 AV1 콘텐츠를 처리해야 합니다. 이는 대부분의 사용자에게 배터리 수명이 최우선 순위라는 점을 고려할 때 특히 문제가 됩니다. 마침내 스냅드래곤 8 2세대로 시작하는 퀄컴과 A17 프로로 시작하는 애플을 포함한 모든 주요 모바일 실리콘 공급업체가 하드웨어 가속 AV1 디코더를 탑재한 제품을 출시하고 있는 시점에 이르렀습니다. 대부분의 사람들이 매년 휴대폰을 업그레이드하지 않거나 최고급 하드웨어를 구매하지 않는다는 점을 감안하면 대부분의 모바일 디바이스가 하드웨어 가속 AV1 디코딩을 지원하려면 몇 년이 걸릴 것입니다.
왼쪽: 삼성 갤럭시 S24 울트라에서 사용 가능한 AV1 디코더 목록.
가운데: 시스템에서 제공하는 소프트웨어 가속 libgav1 AV1 디코더에 대한 세부 정보.
오른쪽: 퀄컴이 제공하는 하드웨어 가속 AV1 디코더에 대한 세부 정보.
한편, 구글은 하드웨어 가속 디코더가 없는 기존 기기에서도 AV1 콘텐츠를 적절히 재생할 수 있도록 Android 업데이트를 준비 중입니다. Android 10 출시 이후 AOSP에는 Google에서 개발한 오픈 소스 AV1 디코더인 libgav1 디코더가 포함되어 있습니다. 그러나 libgav1이 유일한 AV1 디코더는 아니며, 오픈 미디어 연합의 libaom(레퍼런스 디코더)과 VideoLAN의 libdav1d도 있습니다.
libdav1d는 libgav1과 마찬가지로 CPU에서 실행되지만, AV1 콘텐츠를 디코딩하는 성능이 libgav1보다 훨씬 뛰어납니다. 이는 libdav1d의 많은 부분이 ARMv8 칩용 어셈블리로 작성되어 성능 오버헤드가 많이 줄어들었기 때문일 수 있습니다. 실제로 libdav1d는 계산 효율이 매우 높아 저사양 하드웨어에서도 많은 CPU 전력을 소모하지 않고도 고품질 AV1 콘텐츠를 원활하게 재생할 수 있습니다.
비교를 위해 Google의 libgav1과 VideoLAN의 libdav1d AV1 디코더 간의 성능을 비교한 차트는 다음과 같습니다. 테스트한 기기는 하드웨어 가속 AV1 디코더가 없는 퀄컴의 스냅드래곤 845가 탑재된 구글 픽셀 3 XL이었습니다. 이 테스트에서는 AV1로 인코딩된 두 개의 동영상, 즉 4K60(8비트, 1165kb/s)에서 실행되는 6:30 클립의 아르테미스와 1080p25(10비트, 915kb/s)에서 Netflix의 "Sparks"라는 9:11 클립을 재생했습니다.
차트에서 볼 수 있듯이, 이 실험에서는 libdav1d가 libgav1보다 훨씬 뛰어난 성능을 보였습니다. 제 Pixel 3 XL은 libdav1d를 디코더로 사용하여 Artemis 1 클립을 재생할 때 평균 50fps 이상을 기록했습니다. 이에 비해 libgav1을 사용할 때는 평균 10fps 미만이었습니다. 마찬가지로, 제 Pixel은 libdav1d로 Sparks 클립을 재생할 때 평균 25fps, libgav1을 사용할 때는 10fps 미만이었습니다.
어떻게 Pixel 3 XL에서 libdav1d를 테스트할 수 있었는지 궁금하신 분들을 위해 설명하자면, libdav1d가 번들로 제공되는 VLC 미디어 플레이어를 사용했기 때문입니다. Android의 대부분의 미디어 플레이어 앱은 하드웨어 가속 AV1 디코더가 없는 경우 AV1 콘텐츠에 대해 시스템에서 제공하는 libgav1 디코더를 기본값으로 사용하는 Google의 ExoPlayer 라이브러리를 사용합니다. Google이 시스템 제공 AV1 디코더를 libgav1에서 libdav1d로 교체하면 ExoPlayer를 사용하는 미디어 플레이어 앱의 성능이 크게 향상될 수 있습니다. 이것이 바로 구글이 작년 말부터 준비해 온 작업입니다.
11월 초부터 AOSP 소스 코드에 libdav1d 디코더가 포함되었습니다. 이는 Google이 Android의 시스템 제공 AV1 디코더로 libgav1 대신 libdav1d를 사용하는 실험이 필요했기 때문입니다. 익명을 요구한 두 소식통에 따르면, 구글은 몇 달 전 파트너들에게 다가오는 구글 플레이 시스템 업데이트를 통해 2024년 3월까지 기존 기기에서 libgav1을 libdav1d로 대체할 계획이라고 알렸습니다. 이는 미디어 코덱이 Android의 프로젝트 메인라인 모듈의 일부이기 때문에 가능한 일입니다.
제 소식통 중 한 명이 구글이 이 변경 사항을 테스트 중이라고 확인했지만, 미디어 코덱 메인라인 모듈을 지원하는 모든 기기(안드로이드 10 이상)에 적용될지 아니면 안드로이드 14를 실행하는 기기에만 적용될지 여부는 불분명합니다. Android 14는 구글이 실제로 OEM에 AV1 디코더를 의무적으로 포함하도록 한 첫 번째 릴리스이기 때문에 구글이 이 변경 사항을 Android 14를 실행하는 디바이스로만 제한할 수도 있습니다. AOSP는 안드로이드 10부터 libgav1을 포함했기 때문에 이상하게 들릴 수 있지만, 실제로 구글은 안드로이드 14까지는 OEM이 빌드에 이 디코더를 포함하도록 요구하지 않은 것으로 보입니다.
어쨌든 다가오는 2024년 3월에 예정된 Google Play 시스템 업데이트에 실제로 libdav1d AV1 디코더가 포함될지 여부를 주시할 것입니다. 만약 포함된다면 저사양 하드웨어를 사용하는 사용자들은 AV1 동영상 재생 성능이 크게 향상될 수 있습니다. 그러나 스트리밍 서비스가 실제로 이러한 디바이스에 AV1 동영상 콘텐츠를 제공하는 데 얼마나 걸릴지는 아직 지켜봐야 합니다.