영상 코딩 포맷

영상 코딩 포맷 또는 비디오 코딩 포맷(Video coding format) (또는 때때로 영상 압축 포맷)은 데이터 파일이나 비트스트림과 같은 디지털 영상 콘텐츠의 인코딩된 포맷이다. 일반적으로 표준화된 영상 압축 알고리즘을 사용하며, 가장 일반적으로는 이산 코사인 변환 (DCT) 코딩 및 움직임 보상을 기반으로 한다. 특정 영상 코딩 포맷을 압축하거나 압축 해제하는 컴퓨터 소프트웨어 또는 컴퓨터 하드웨어 구성 요소를 영상 코덱이라고 한다.

일부 영상 코딩 포맷은 영상 코딩 규격으로 알려진 상세한 시방서 문서로 문서화되어 있다. 일부 이러한 규격은 표준화 기구에 의해 작성 및 승인되어 기술 표준으로 알려져 있으며, 따라서 영상 코딩 표준으로 불린다. 사실상 표준과 공식 표준이 있다.

특정 영상 코딩 포맷을 사용하여 인코딩된 영상 콘텐츠는 일반적으로 오디오 코딩 포맷을 사용하여 인코딩된 오디오 스트림과 함께 멀티미디어 컨테이너 포맷 (예: AVI, MP4, FLV, 리얼미디어, 또는 Matroska) 내부에 번들링된다. 따라서 사용자는 일반적으로 H.264 파일을 가지고 있는 것이 아니라, H.264로 인코딩된 영상과 일반적으로 AAC로 인코딩된 오디오를 포함하는 MP4 컨테이너인 비디오 파일을 가지고 있다. 멀티미디어 컨테이너 포맷은 여러 다른 영상 코딩 포맷 중 하나를 포함할 수 있다. 예를 들어, MP4 컨테이너 포맷은 MPEG-2 파트 2 또는 H.264와 같은 영상 코딩 포맷을 포함할 수 있다. 또 다른 예는 WebM 파일 형식의 초기 사양으로, 컨테이너 포맷(Matroska)을 지정할 뿐만 아니라 Matroska가 VP9 비디오를 포함할 수 있고, 오푸스 오디오 지원이 나중에 WebM 사양에 추가되었음에도 불구하고, Matroska 컨테이너 내부에 어떤 비디오(VP8) 및 오디오(Vorbis) 압축 포맷이 정확히 들어있는지 지정한다.

 포맷과 코덱의 구분 
포맷은 코덱이 생성하거나 소비하는 데이터의 레이아웃 계획이다.

H.264와 같은 영상 코딩 포맷이 때때로 코덱으로 불리기도 하지만, 규격과 그 구현체 사이에는 명확한 개념적 차이가 있다. 영상 코딩 포맷은 규격에 기술되어 있으며, 주어진 영상 코딩 포맷의 데이터를 비압축 영상으로/에서 인코딩/디코딩하는 소프트웨어, 펌웨어 또는 하드웨어는 해당 규격의 구현체이다. 비유하자면, 영상 코딩 포맷 H.264 (규격)는 코덱 OpenH264 (특정 구현체)에 대해 C 프로그래밍 언어 (규격)가 컴파일러 GCC (특정 구현체)와 같다. 각 규격(예: H.264)에 대해 해당 규격을 구현하는 여러 코덱(예: x264, OpenH264, H.264/MPEG-4 AVC 제품 및 구현)이 있을 수 있다는 점에 유의해야 한다.

이러한 구분이 문헌에서 용어상 일관되게 반영되지는 않는다. H.264 규격은 H.261, H.262, H.263, H.264를 영상 코딩 표준이라고 부르며, 코덱이라는 단어를 포함하지 않는다. 얼라이언스 포 오픈 미디어는 AV1 영상 코딩 포맷과 개발 중인 동반 코덱을 명확하게 구분하지만, 영상 코딩 포맷 자체를 영상 코덱 규격이라고 부른다. VP9 규격은 영상 코딩 포맷 VP9 자체를 코덱이라고 부른다.

혼동의 한 예로, 크로미움의 및 모질라의 영상 포맷 지원 페이지는 H.264와 같은 영상 코딩 포맷을 모두 코덱이라고 부른다. 또 다른 예로, 시스코가 무료 영상 코덱을 발표했을 때, 보도 자료는 H.264 영상 코딩 포맷을 코덱("공통 영상 코덱의 선택")이라고 언급하지만, 시스코의 H.264 인코더/디코더 구현을 곧바로 코덱("H.264 코덱을 오픈 소스화")이라고 부른다.

영상 코딩 포맷은 포맷을 구현하는 코덱이 사용하는 모든 알고리즘을 지시하지 않는다. 예를 들어, 영상 압축이 일반적으로 작동하는 방식의 큰 부분은 영상 프레임 간의 유사성 (블록 매칭)을 찾고, 이전 코딩된 유사한 하위 이미지(예: 매크로블록)를 복사하고 필요할 때 작은 차이를 추가하여 압축을 달성하는 것이다. 이러한 예측자와 차이점의 최적 조합을 찾는 것은 NP-난해 문제이며, 이는 실제로 최적의 해결책을 찾는 것이 불가능하다는 것을 의미한다. 영상 코딩 포맷은 비트스트림 포맷에서 프레임 간 이러한 압축을 지원해야 하지만, 이러한 블록 매칭 및 기타 인코딩 단계를 찾는 특정 알고리즘을 불필요하게 강요하지 않음으로써, 영상 코딩 규격을 구현하는 코덱은 알고리즘 선택에서 최적화하고 혁신할 수 있는 자유를 가진다. 예를 들어, H.264 규격의 0.5절은 인코딩 알고리즘이 규격의 일부가 아니라고 명시한다. 알고리즘의 자유로운 선택은 동일한 영상 코딩 포맷에 대해 다른 공간-시간 복잡도 절충을 허용하여, 실시간 피드는 빠르지만 공간 비효율적인 알고리즘을 사용할 수 있고, 나중에 대량 생산을 위한 일회성 DVD 인코딩은 긴 인코딩 시간 대신 공간 효율적인 인코딩을 선택할 수 있다.

 역사 
아날로그 비디오 압축의 개념은 1929년 영국의 R.D. 켈이 프레임마다 변하는 장면의 부분만 전송하는 개념을 제안하면서 시작되었다. 디지털 영상 압축의 개념은 1952년 벨 연구소 연구원 B.M. 올리버와 C.W. 해리슨이 영상 코딩에 차분 펄스 부호 변조 (DPCM)를 사용할 것을 제안하면서 시작되었다. 1959년 NHK 연구원 Y. 타키, M. 하토리, S. 타나카가 프레임 간 움직임 보상의 개념을 제안했으며, 이들은 시간적 차원에서 예측적인 프레임 간 영상 코딩을 제안했다. 1967년 런던 대학교 연구원 A.H. 로빈슨과 C. 체리는 아날로그 텔레비전 신호의 전송 대역폭을 줄이기 위해 런 렝스 부호화 (RLE)라는 비손실 압축 방식을 제안했다.

초기 디지털 비디오 코딩 알고리즘은 비압축 영상을 위한 것이거나 비손실 압축을 사용했으며, 두 방법 모두 디지털 비디오 코딩에 비효율적이고 비실용적이었다. 디지털 비디오는 1970년대에 도입되었으며, 초기에는 비압축 펄스 부호 변조 (PCM)를 사용하여 표준 해상도 (SD) 비디오에 대해 약 45200 Mbit/s의 높은 비트레이트를 필요로 했다. 이는 1990년대까지 사용 가능했던 전기통신 대역폭 (최대 100kbit/s)보다 최대 2,000배 높았다. 마찬가지로, 비압축 고선명 (HD) 1080p 비디오는 1Gbit/s를 초과하는 비트레이트를 필요로 하며, 이는 2000년대에 사용 가능했던 대역폭보다 훨씬 높다.

움직임 보상 DCT
실용적인 영상 압축은 움직임 보상 DCT (MC DCT) 코딩의 개발과 함께 나타났다. 이는 블록 움직임 보상(BMC) 또는 DCT 움직임 보상이라고도 불린다. 이는 하이브리드 코딩 알고리즘으로, 두 가지 주요 데이터 압축 기술을 결합한다: 공간적 차원의 이산 코사인 변환 (DCT) 코딩과 시간적 차원의 예측적 움직임 보상이다.

DCT 코딩은 손실 압축 블록 압축 변환 부호화 기술로, 1972년 캔자스 주립 대학교에서 근무하던 나시르 아메드에 의해 처음 제안되었으며, 그는 처음에 이미지 압축을 위해 의도했다. 그 후 1973년 텍사스 대학교에서 아메드와 T. 나타라잔, K. R. 라오에 의해 실용적인 이미지 압축 알고리즘으로 개발되었고, 1974년에 발표되었다.

또 다른 주요 개발은 움직임 보상 하이브리드 코딩이었다. 1974년 서던캘리포니아 대학교의 알리 하비비는 예측 코딩과 변환 코딩을 결합한 하이브리드 코딩을 도입했다. 그는 DCT, 고속 푸리에 변환, 푸리에 변환, 슬랜트 변환, 카루넨-로에베 변환을 포함한 여러 변환 코딩 기술을 조사했다. 그러나 그의 알고리즘은 초기에는 공간적 차원에서의 프레임 내 코딩으로 제한되었다. 1975년 존 A. 로즈와 거너 S. 로빈슨은 하비비의 하이브리드 코딩 알고리즘을 시간적 차원으로 확장하여, 공간적 차원에서는 변환 코딩을, 시간적 차원에서는 예측 코딩을 사용하여 프레임 간 움직임 보상 하이브리드 코딩을 개발했다. 공간 변환 코딩을 위해 그들은 DCT와 고속 푸리에 변환 (FFT)을 포함한 다른 변환을 실험하여 이들을 위한 프레임 간 하이브리드 코더를 개발했으며, DCT가 복잡성이 줄어들어 가장 효율적이라는 것을 발견했다. DCT는 일반적인 프레임 내 코더가 화소당 2비트를 요구하는 반면, 화상통화 장면의 이미지 데이터를 화소당 0.25비트까지 압축하여 비슷한 이미지 품질을 제공할 수 있었다.

DCT는 1977년 C.H. 스미스와 S.C. 프랄릭과 함께 고속 DCT 알고리즘을 개발한 첸 원슝에 의해 영상 인코딩에 적용되었고, DCT 기술을 상업화하기 위해 컴프레션 랩스를 설립했다. 1979년 아닐 K. 자인과 자스완트 R. 자인은 움직임 보상 DCT 영상 압축을 더욱 발전시켰다. 이는 첸이 1981년 움직임 보상 DCT 또는 적응 장면 코딩이라고 불리는 실용적인 영상 압축 알고리즘을 개발하는 계기가 되었다. 움직임 보상 DCT는 나중에 1980년대 후반부터 영상 압축의 표준 코딩 기술이 되었다.

 영상 코딩 표준 
최초의 디지털 영상 코딩 표준은 1984년 CCITT (현재 ITU-T)에 의해 개발된 H.120이었다. H.120은 성능이 너무 좋지 않아 실제로 사용될 수 없었다. H.120은 움직임 보상 DPCM 코딩을 사용했는데, 이는 영상 코딩에 비효율적인 비손실 압축 알고리즘이었다. 1980년대 후반, 여러 회사들이 영상 코딩에 훨씬 더 효율적인 압축 형태인 이산 코사인 변환 (DCT) 코딩을 실험하기 시작했다. CCITT는 벡터 양자화 (VQ) 압축을 기반으로 한 단일 제안과는 대조적으로 DCT 기반 영상 압축 포맷에 대한 14가지 제안을 받았다. H.261 표준은 움직임 보상 DCT 압축을 기반으로 개발되었다. H.261은 최초의 실용적인 영상 코딩 표준이었으며, 히타치 제작소, PictureTel, 일본전신전화, BT 그룹, 도시바 등을 포함한 여러 회사로부터 특허를 라이선스했다. H.261 이후, 움직임 보상 DCT 압축은 이후의 모든 주요 영상 코딩 표준 ( H.26x 및 MPEG 포맷 포함)에 채택되었다.

MPEG에 의해 개발된 MPEG-1은 1991년에 출시되었고, VHS 품질의 비디오를 압축하도록 설계되었다. 1994년에는 MPEG-2/H.262로 대체되었으며, 이는 주로 소니그룹, 톰슨, 미쓰비시 전기 등 여러 회사로부터 라이선스된 특허로 개발되었다. MPEG-2는 DVD 및 SD 디지털 텔레비전의 표준 비디오 포맷이 되었다. 그 움직임 보상 DCT 알고리즘은 최대 100:1의 압축비를 달성할 수 있어 주문형 비디오 (VOD) 및 고선명 텔레비전 (HDTV)과 같은 디지털 미디어 기술의 발전을 가능하게 했다. 1999년에는 MPEG-4/H.263이 뒤를 이었는데, 이는 영상 압축 기술의 큰 도약이었다. 주로 미쓰비시, 히타치 제작소 및 파나소닉 홀딩스를 포함한 여러 회사로부터 특허를 라이선스한다.

가장 널리 사용되는 영상 코딩 포맷은 2019년 기준으로 H.264/MPEG-4 AVC이다. 2003년에 개발되었으며, 주로 파나소닉, 고도 가이샤 IP 브리지 및 LG전자를 포함한 여러 조직으로부터 특허를 라이선스했다. 이전 버전에서 사용된 표준 DCT와 달리, AVC는 정수 DCT를 사용한다. H.264는 블루레이 디스크의 비디오 인코딩 표준 중 하나이다. 모든 블루레이 디스크 플레이어는 H.264를 디코딩할 수 있어야 한다. 또한 유튜브, 넷플릭스, 비메오 및 아이튠즈 스토어와 같은 스트리밍 인터넷 소스, 어도비 플래시 플레이어 및 마이크로소프트 실버라이트와 같은 웹 소프트웨어, 그리고 지상파(ATSC, ISDB-T, DVB-T 또는 DVB-T2), 케이블(DVB-C), 위성(DVB-S2)을 통한 다양한 HDTV 방송에서 널리 사용된다.

많은 영상 코딩 포맷의 주요 문제는 특허였으며, 이는 사용 비용을 비싸게 만들거나 잠수함 특허로 인해 특허 소송의 위험을 초래할 수 있었다. 테오라, VP8, VP9와 같이 최근에 설계된 많은 영상 코딩 포맷의 동기는 로열티 없는 특허로만 보호되는 (자유) 영상 코딩 표준을 만드는 것이었다. 특허 상태는 주류 웹 브라우저가 HTML5 비디오 태그 내에서 어떤 영상 포맷을 지원할지 선택하는 데에도 주요 논쟁점이 되어왔다.

현재 세대의 영상 코딩 포맷은 2013년에 도입된 HEVC (H.265)이다. AVC는 4x4 및 8x8 블록 크기의 정수 DCT를 사용하고, HEVC는 4x4에서 32x32 사이의 다양한 블록 크기를 가진 정수 DCT 및 DST 변환을 사용한다. HEVC는 주로 삼성전자, GE, 일본전신전화, JVC 켄우드에 의해 특허가 많이 걸려 있다. 이는 무료 라이선스를 위한 AV1 포맷에 의해 도전받고 있다. 2019년 현재 AVC는 영상 콘텐츠의 녹화, 압축 및 배포에 가장 일반적으로 사용되는 포맷으로, 영상 개발자의 91%가 사용하고 있으며, 그 다음으로 HEVC가 43%의 개발자가 사용하고 있다.

 영상 코딩 표준 목록 

 비손실, 손실, 비압축 
소비자용 비디오는 일반적으로 손실 압축 영상 코덱을 사용하여 압축되는데, 이는 비손실 압축보다 훨씬 작은 파일을 생성하기 때문이다. 일부 영상 코딩 포맷은 손실 또는 비손실 압축 중 하나를 위해 명시적으로 설계되었으며, 디랙 및 H.264와 같은 일부 영상 코딩 포맷은 둘 다 지원한다.

클린 HDMI와 같은 비압축 영상 포맷은 HDMI 연결을 통해 디스플레이로 영상을 전송하는 등 일부 상황에서 사용되는 비손실 영상의 한 형태이다. 일부 고급 카메라는 이 포맷으로 직접 영상을 캡처할 수도 있다.

 프레임 내 
프레임 간 압축은 인코딩된 비디오 시퀀스의 편집을 복잡하게 만든다.
비교적 간단한 영상 코딩 포맷의 한 하위 클래스는 DV와 같은 프레임 내 영상 포맷인데, 이 포맷에서는 비디오 스트림의 각 프레임이 스트림의 다른 프레임을 참조하지 않고 독립적으로 압축되며, 더 나은 압축을 위해 시간 경과에 따른 연속적인 그림 간의 상관 관계를 활용하려는 시도는 이루어지지 않는다. 한 가지 예는 모션 JPEG로, 단순히 개별적으로 JPEG 압축된 이미지의 시퀀스이다. 이 접근 방식은 빠르고 간단하지만, 인코딩된 영상이 프레임 간 코딩을 지원하는 영상 코딩 포맷보다 훨씬 크다는 단점이 있다.

프레임 간 압축은 한 프레임에서 다른 프레임으로 데이터를 복사하기 때문에, 원본 프레임이 단순히 잘려나가거나 (또는 전송 중 손실되거나)하면 이후 프레임을 제대로 재구성할 수 없다. 프레임 내 압축 영상에서 컷을 만드는 것은 영상 편집 시 비압축 영상을 편집하는 것만큼이나 쉽다. 각 프레임의 시작과 끝을 찾아 유지하고 싶은 프레임은 비트 단위로 복사하고, 원하지 않는 프레임은 버리기만 하면 된다. 프레임 내 압축과 프레임 간 압축의 또 다른 차이점은 프레임 내 시스템에서는 각 프레임이 유사한 양의 데이터를 사용한다는 것이다. 대부분의 프레임 간 시스템에서는 특정 프레임(I-프레임과 같은 MPEG-2의 경우)은 다른 프레임에서 데이터를 복사할 수 없으므로 주변의 다른 프레임보다 훨씬 많은 데이터가 필요하다.

I 프레임이 편집되어 제거되었는데 다른 프레임에서 해당 I 프레임을 필요로 할 때 발생하는 문제를 찾아내는 컴퓨터 기반의 비디오 편집기를 구축할 수 있다. 이로 인해 HDV와 같은 새로운 포맷이 편집에 사용될 수 있게 되었다. 그러나 이 과정은 동일한 화질의 프레임 내 압축 비디오를 편집하는 것보다 훨씬 더 많은 컴퓨팅 파워를 요구한다. 하지만 이 압축 방식은 어떤 오디오 포맷에도 효과적으로 사용하기에는 적합하지 않다.

 프로파일 및 레벨 
영상 코딩 포맷은 프로파일 및 레벨이라고 불리는 인코딩된 영상에 대한 선택적 제한을 정의할 수 있다. 예를 들어, 디코더 프로그램/하드웨어를 더 작고, 간단하며, 빠르게 만들기 위해 주어진 영상 포맷의 프로파일 및 레벨의 하위 집합만 디코딩을 지원하는 디코더를 가질 수 있다.

프로파일은 허용되는 인코딩 기술을 제한한다. 예를 들어, H.264 포맷에는 베이스라인, 메인, 하이 (및 기타) 프로파일이 포함된다. P-슬라이스 (이전 슬라이스를 기반으로 예측될 수 있는)는 모든 프로파일에서 지원되지만, B-슬라이스 (이전 및 이후 슬라이스를 기반으로 예측될 수 있는)는 메인 및 하이 프로파일에서는 지원되지만 베이스라인에서는 지원되지 않는다.

레벨은 최대 해상도 및 데이터 전송률과 같은 매개변수에 대한 제한이다.

 같이 보기 
 영상 컨테이너 포맷 비교
 
 해상도
 영상 압축 포맷 목록
 비디오 파일 형식

 내용주 

 각주 

분류:영상 코덱
분류:영상 형식
분류:영상 압축