AV1 코덱, VP9보다 압축 효율이 30% 높아진 원리
로열티 없이 쓸 수 있는 오픈소스 비디오 코덱이 필요하다는 문제의식에서 AV1이 출발했습니다. 지금은 유튜브와 넷플릭스 같은 대형 스트리밍 서비스의 표준 코덱 중 하나로 자리 잡았습니다. VP9 대비 압축 효율이 얼마나 개선됐는지, 그 개선이 어떤 기술적 변화에서 나왔는지 살펴보겠습니다.
AV1은 어디서 시작됐나
AV1의 출발점은 2015년 설립된 Alliance for Open Media(AOMedia)입니다. Google, Mozilla, Cisco, Microsoft, Netflix를 포함한 기업들이 참여했습니다. 개방형이면서 로열티 없는 비디오 코딩 기술을 만드는 게 목표였습니다.
계보를 따라가면 흐름이 보입니다. Google이 2010년 On2 Technologies를 인수하면서 VP8을 오픈소스로 공개했고 뒤이어 개발한 VP9이 2013년 유튜브에 채택됐습니다. AV1은 2016년 초 개발을 시작해 2018년 중반 완료됐습니다. 여기에 VP9의 구조를 바탕으로 Cisco의 Thor, Mozilla의 Daala 기술을 통합했습니다.
이렇게 만들어진 AV1은 VP9 대비 약 30%의 압축 효율 향상을 달성했습니다.
이 30%라는 숫자가 어디서 나왔는지 항목별로 뜯어보겠습니다.
코딩 블록 분할: 더 크게, 더 다양하게
VP9은 최대 64×64 블록에서 시작해 4-way 분할 트리를 따라 최소 4×4까지 내려갑니다. 이때 8×8 블록 안의 모든 서브블록은 동일한 reference frame을 공유해야 한다는 제약이 붙습니다.
AV1은 이 두 지점을 모두 확장했습니다. 최대 코딩 블록 크기는 128×128로 커졌고 분할 방식도 10가지 결과를 지원하도록 넓어졌습니다. 4:1과 1:4 비율의 직사각형 블록이 여기에 포함되고 각 서브 유닛은 독립적으로 inter/intra 모드와 reference frame을 고를 수 있습니다. Chroma 성분에는 2×2 inter prediction도 지원합니다.
블록 하나를 더 잘게, 더 다양한 모양으로 쪼갤 수 있으니 장면의 실제 경계에 더 가깝게 압축 단위를 맞출 수 있습니다. 압축 효율 개선의 첫 번째 축이 여기입니다.
인트라 예측 방향 모드 56개
VP9의 IPM은 10개입니다. 8개의 방향 모드와 DC, True Motion(TM) 두 개의 비방향 모드입니다.
AV1은 방향 모드마다 -3에서 +3까지 7가지 증분 각도를 추가해 총 56개의 방향 모드를 정의합니다. 화면 안의 경계선이 정확히 45도나 90도로 떨어지는 경우는 드물기 때문에 각도를 세밀하게 나눌수록 예측 오차가 줄어듭니다.
reference frame 7개를 쓰는 인터프레임 예측
AV1에서 가장 크게 확장된 부분 중 하나가 reference frame입니다. VP9의 3개에서 7개로 늘었습니다.
새로 추가된 참조 프레임 유형은 이렇습니다.
| 참조 프레임 | 역할 |
|---|---|
| LAST2, LAST3 | 근거리 과거의 추가 참조 |
| BWDREF | 시간 필터링을 적용하지 않은, 직접 코딩된 선호 프레임 |
| ALTREF2 | GOLDEN과 ALTREF 사이 중간 지점의 미래 참조 |
참조할 수 있는 프레임이 많아지면 단일 예측뿐 아니라 복합 예측 조합의 선택지도 늘어납니다. AV1은 양방향과 단방향 복합 예측을 모두 지원합니다. 장면 전환이나 노이즈가 많은 구간에서도 더 가까운 참조를 찾을 확률이 높아집니다.
변환 코딩
VP9은 코딩 블록마다 고정된 변환 단위 크기를 씁니다. AV1에는 그 제약이 없습니다. luma inter 코딩 블록을 4×4부터 64×64까지 다양한 크기(정사각형, 2:1/1:2, 4:1/1:4)의 변환 단위로 나눌 수 있습니다. Chroma 블록은 최대 변환 단위만 허용하되 intra와 inter 블록 모두에 더 풍부한 변환 커널이 정의되어 있습니다.
비트스트림 절반을 차지하는 엔트로피 코딩
엔트로피 코딩은 변환된 계수 행렬을 압축하고 전송합니다. 전체 비트스트림의 50% 이상을 차지하니 압축 효율에 곧바로 영향을 줍니다.
VP9은 tree 기반의 이진 산술 코더를 씁니다. AV1은 여기서 한 단계 나아가 멀티-심볼 산술 코딩을 도입했습니다. 심볼 단위로 적응하는 멀티-심볼 산술 코더는 처리량이 높고 확률 모델 적응 속도가 빠릅니다. 컨텍스트 적응과 계층화 코딩, 레벨 맵 계수 코딩 같은 기능도 함께 갖췄습니다.
루프 필터링과 후처리
AV1은 여러 필터링 도구를 순차적으로 적용합니다.
첫 단계는 Deblocking Filter입니다. VP9과 비슷한 방식이지만 최대 필터 탭 수가 15에서 13으로 조정됐습니다. 이후 CDEF, Loop Restoration Filter, Frame Super Resolution이 차례로 적용됩니다. Luma와 각 chroma plane에 대해 수평, 수직 필터 레벨을 따로 설정할 수 있어 유연성도 높아졌습니다.
타일링과 멀티스레딩
AV1의 타일은 여러 superblock으로 구성된 독립적인 단위입니다. 임의의 순서로 인코딩하거나 디코딩할 수 있습니다. 크기가 균일한 uniform 타일과 크기가 제각각인 non-uniform 타일을 모두 지원합니다.
libaom 코드베이스는 block row level, tile level, frame level의 병렬 처리를 구현합니다. 타일 기반 멀티스레딩은 속도를 끌어올리고 row 기반 멀티스레딩은 superblock row 단위로 병렬 처리합니다. 코딩 블록이 128×128까지 커진 만큼 이런 병렬화 구조가 실제 인코딩 속도를 지탱합니다.
H.264, H.265, VP9과 나란히 놓고 보면
| 항목 | H.264/AVC | H.265/HEVC | VP9 | AV1 |
|---|---|---|---|---|
| 특징 | 저지연, 실시간 적용에 적합 | 높은 압축 효율, 시간과 품질의 균형 | 로열티 무료, 온라인 시청에 적합 | 로열티 무료, H.265 동등 이상의 압축 효율 |
| 압축 효율 | 양호 | H.264보다 우수하나 복잡도 높음 | 높음, H.265와 동등 수준 | H.264보다 우수, H.265와 동등 이상 |
| 인코딩/디코딩 복잡도 | 낮음 | 높음 | 중간 | 높음 |
| 하드웨어 지원 | 성숙 | 개선 중, H.264에는 못 미침 | 점진적으로 증가 | 증가 중, 아직 초기 단계 |
| 로열티 | 로열티 가능성 있음 | 로열티 가능성 있음 | 오픈소스, 로열티 무료 | 오픈소스, 로열티 무료 |
| 주요 적용 분야 | 실시간 캡처, 스트리밍 | 시간과 품질의 균형이 필요한 시나리오 | 온라인 시청, 유튜브 | 스트리밍, VOD |
어디에 쓰이고 있나
AV1은 유튜브와 넷플릭스 같은 스트리밍 서비스에서 고품질 비디오 전송에 쓰입니다. 화상 회의나 온라인 교육처럼 스크린 콘텐츠와 카메라 콘텐츠를 함께 다루는 실시간 통신(RTC) 분야에도 적합합니다.
AWS, Google Cloud, Tencent Cloud MPS를 비롯한 클라우드 트랜스코딩 서비스도 AV1 인코딩을 지원합니다. 압축 효율이 중요한 8K급 초고해상도 비디오 처리에도 활용도가 높습니다. libaom과 dav1d 같은 오픈소스 프로젝트에서도 개발과 최적화가 계속 진행되고 있습니다.
정리
- AV1은 2015년 설립된 AOMedia가 VP9, Thor, Daala의 기술을 통합해 만든 오픈소스 코덱입니다. VP9 대비 약 30% 높은 압축 효율을 달성했습니다.
- 코딩 블록은 최대 128×128까지, 분할 방식은 10가지(4:1/1:4 직사각형 포함)까지 넓어졌고 인트라 예측 방향 모드는 8개에서 56개로 늘었습니다.
- reference frame이 3개에서 7개로 늘면서 복합 예측의 선택지가 넓어졌고 변환 코딩도 고정 크기 제약에서 벗어났습니다.
- 비트스트림의 절반 이상을 차지하는 엔트로피 코딩에는 멀티-심볼 산술 코딩이 도입됐고 Deblocking, CDEF, Loop Restoration, Super Resolution이 순차적으로 적용됩니다.
- 압축 효율은 H.265와 동등하거나 그 이상이면서 로열티는 무료라는 점 때문에 스트리밍과 VOD, 8K 콘텐츠 분야에서 채택이 계속 늘고 있습니다.