고급 비디오 코딩
H.264 / AVC
ITU-T와 ISO/IEC가 공동으로 제정한 영상 압축 표준으로, 각각 H.264와 MPEG-4 AVC로 발표되었으며, 방송, 광디스크, 인터넷 영상, 모바일 기기 및 실시간 통신 분야에서 널리 사용되고 있다.
상세 설명
H.264는 AVC(Advanced Video Coding, 高级视频编码)라고도 불리며, ITU-T 영상 코딩 전문가 그룹과 ISO/IEC 동영상 전문가 그룹이 공동으로 제정한 영상 압축 표준입니다. 두 기구는 2001년에 합동 영상 팀(Joint Video Team, JVT)을 구성했으며, 2003년에 제1판 규격이 승인되어 각각 ITU-T H.264와 ISO/IEC 14496-10으로 발표되었다. 이에 따라 MPEG 체계에서는 이를 MPEG-4 Part 10 또는 MPEG-4 AVC라고도 부릅니다.
H.264는 초기 MPEG-4 Visual과 동일한 코덱이 아닙니다.
MPEG-4 Visual은 ISO/IEC 14496-2에 속하며, 일반적인 구현 예로는 초기 DivX 및 Xvid가 있습니다. AVC는 ISO/IEC 14496-10에 속합니다. 단순히 “MPEG-4 비디오”라고만 표기해서는 이 둘을 정확하게 구분할 수 없습니다.
이 표준은 규격에 부합하는 비트스트림의 구문과 디코더가 화면을 재구성하는 방법을 규정할 뿐, 인코더가 어떻게 움직임을 탐지하고, 비트레이트를 할당하며, 예측 모드를 선택해야 하는지는 규정하지 않습니다. H.264 인코더는 일반적으로 먼저 동일한 화면 내에서 이미 재구성된 인접 영역을 이용하여 프레임 내 예측을 수행하거나, 다른 참조 화면에서 유사한 콘텐츠를 찾아 프레임 간 예측을 수행한 다음, 원본 이미지와 예측 결과 간의 잔차에 대해 변환, 양자화 및 엔트로피 인코딩을 수행합니다. 디코딩 측에서는 비트스트림 내의 예측 정보와 잔차 데이터를 바탕으로 화면을 재구성하므로, 예측 정확도, 참조 구조 및 양자화 선택이 필요한 데이터 양에 공동으로 영향을 미칩니다. 기본 인코딩 단위는 매크로블록이며, 하나의 매크로블록은 일반적으로 16×16개의 휘도 샘플과 이에 상응하는 색도 샘플을 포함합니다. 인프레임 인코딩은 16×16 또는 그보다 작은 영역에서 서로 다른 방향의 예측을 선택할 수 있습니다. High Profile은 8×8 인프레임 예측도 도입했습니다. 인터프레임 매크로블록은 16×16, 16×8, 8×16, 8×8로 분할될 수 있으며, 후자는 다시 4×4로 세분화되어 운동 경계와 국소적 변화에 각각 다른 운동 벡터를 사용할 수 있습니다. 표준은 다중 참조 프레임과 서브픽셀 운동 보정을 지원하지만, 인코더가 광범위한 검색을 수행할지, 참조 프레임을 몇 개 사용할지, 그리고 최적의 분할을 어떻게 판단할지는 구현 전략의 문제이지 비트스트림 사양의 문제가 아닙니다.
예측 잔차는 주로 4×4 정수 변환을 통해 처리되며, High Profile에서는 8×8 변환을 사용할 수 있습니다. 그 연산 형식은 규정되어 있어, 서로 다른 디코더가 유한한 정수 정밀도 하에서 일관된 결과를 얻을 수 있도록 합니다. 양자화는 변환 계수의 정밀도 일부를 희생시키며, 이는 손실 압축의 주요 원인입니다. 양자화 강도는 이미지, 슬라이스 또는 매크로블록 범위 내에서 조정할 수 있습니다. 재구성 루프 내의 블록 제거 필터는 이후 블록 경계를 처리하며, 그 출력은 표시 용도로 사용될 뿐만 아니라 후속 예측을 위한 참조 프레임으로도 활용되므로, 플레이어가 임의로 추가한 화면 미화 기능이 아닙니다. H.264는 CAVLC와 CABAC이라는 두 가지 주요 엔트로피 인코딩 방식을 정의합니다. CAVLC는 인접 블록의 계수 특성에 따라 가변 길이 코드를 선택하며, 구조가 비교적 단순합니다. CABAC는 먼저 구문 요소를 이진 기호로 변환한 후, 문맥 모델을 기반으로 적응형 산술 부호화를 수행하며, 일반적으로 비트율을 더욱 줄일 수 있지만 계산 및 상태 의존성이 더 복잡합니다. Baseline Profile은 CABAC을 사용하지 않지만, Main 및 High와 같은 프로파일에서는 사용할 수 있습니다.
비트스트림은 I, P, B 등 다양한 슬라이스 유형을 포함할 수 있습니다. I 슬라이스는 동일한 화면 내의 정보만으로 예측되는 반면, P 및 B 슬라이스는 다른 화면을 참조할 수 있습니다. B 슬라이스가 반드시 시간상 앞뒤로 한 프레임씩만 참조해야 하는 것은 아닙니다. IDR(Immediate Decoding Refresh) 영상은 명확한 임의 접근 및 참조 정리 의미를 갖는 즉각적인 디코딩 갱신 지점인 반면, 일반 I 영상은 내부 슬라이스가 프레임 내 인코딩을 채택한다는 점만을 나타내며, 모든 비트스트림 구조에서 완전히 동등한 “키 프레임”으로 간주될 수는 없습니다.
프로파일과 레벨은 두 가지 차원을 설명합니다. 프로파일은 사용 가능한 인코딩 도구, 비트 심도 및 색도 형식을 제한하며, 예를 들어 Baseline, Main, High, 그리고 더 높은 비트 심도나 전문적인 색도 샘플링을 위한 High 10, High 10, High 4:2:2 및 High 4:4:4 Predictive 등이 있습니다. 레벨은 최대 화면 샘플 수, 초당 처리량, 디코딩 화면 버퍼 및 비트레이트 등의 자원을 제한합니다. 기기가 H.264를 지원한다고 주장한다고 해서 모든 프로파일, 레벨, 해상도 및 참조 프레임 조합을 디코딩할 수 있는 것은 아닙니다. H.264는 동시에 프로그레시브 및 인터레이스 비디오의 인코딩 방식을 규정합니다. 필드 적응형 이미지 인코딩은 전체 이미지를 기준으로 프레임 또는 필드 구조를 선택할 수 있으며, 매크로블록 적응형 프레임/필드 인코딩은 동일한 화면 내의 매크로블록 쌍 간에 프레임 인코딩 또는 필드 인코딩을 선택할 수 있게 합니다. 후자는 정지 영역과 인터레이스 움직임에 더 세밀하게 적응할 수 있지만, 인코딩 판단과 디코딩 의존성도 증가시킵니다. 방송 및 초기 HD 디스크의 1080i 프로그램에서는 이러한 도구를 사용할 수 있지만, 프로그레시브 네트워크 비디오에서는 일반적으로 필요하지 않습니다.
인코딩된 데이터는 네트워크 추상 계층 단위로 구성되며, 매개변수 세트, 슬라이스 및 보충 강화 정보는 애플리케이션 요구에 따라 다양한 전송 환경에 매핑될 수 있습니다. H.264 자체는 파일 형식이 아닙니다.
비트스트림은 MP4, QuickTime, Matroska, MPEG-2 전송 스트림, M2TS 또는 기타 컨테이너에 캡슐화될 수 있으며, 다양한 오디오 및 자막과 결합될 수 있습니다. 파일 확장자만으로는 내부 비디오 인코딩 방식을 확인할 수 없으며, 인코딩 표준은 챕터, 메뉴 또는 디지털 저작권 관리(DRM)를 규정하지 않습니다. AVCHD, 블루레이 디스크, 디지털 TV, 네트워크 스트리밍, 화상 회의, 감시 녹화 및 모바일 기기 모두 H.264를 채택해 왔으나, 각 응용 분야마다 허용되는 프로파일, 레벨, 프레임 속도 및 비트레이트를 추가로 제한합니다. 블루레이의 AVC는 디스크 적용 사양을 준수해야 하며, 규격을 준수하는 임의의 H.264 파일을 데이터 디렉터리에 직접 기록한다고 해서 이를 블루레이 비디오라고 부를 수는 없습니다. x264, OpenH264 및 칩 내의 하드웨어 인코더는 H.264 비트스트림을 생성하거나 처리하는 구체적인 구현체일 뿐, 새로운 형식 명칭은 아닙니다.
H.264는 특정 해상도에 대해 유일하게 적합한 비트레이트를 규정하지 않으며, 이를 채택한 파일이 반드시 MPEG-2, VC-1 또는 후속 코덱보다 우수할 것이라고 보장하지도 않습니다. 화면 내용, 원본 자료, 전처리, 인코더 구현, 비트레이트 제어, 키프레임 구조 및 처리 시간은 모두 압축 결과에 영향을 미칩니다. “H.264” 표기는 디코딩 구문을 설명할 뿐, 최종 화질에 대한 등급을 나타내는 것이 아닙니다.