Netflix 광속 체험기…

요새 불면증이 좀 있어서 매일 새벽 3~4시까지 잠을 못자고 있었는데, 어제따라 일찍부터 잠을 자야겠다는 생각이 들어서 신기하다 싶었는데, 이 모든게 빠른 netflix 영접을 위한 것이 아니었나 싶다.
늘그랬듯 오늘도 이메일을 보며 하루를 시작했고, 그 중 눈에 들어온 Netflix 한국 서비스 시작 소식! 안전한 이불 속에서 첫 체험을 해보고 싶었으나 결제 정보를 입력하기 전에는 한달 무료체험이고 뭐고 암것도 안되길래, 침대 밖으로 나와 컴퓨터를 켰고, 결제 정보를 입력했다. Continue reading Netflix 광속 체험기…

WebRTC 세미나 후기

평상시와 다름없이 페이스북질을 하다가 WebRTC 세미나를 발견한 김에 오랫만에 웹쪽 세미나를 참석해봤다. (다행히 agenda에 비디오 코덱 관련해서 뭔가 이야기가 있을 것 같은 분위기를 띄워놔서 교육 신청에 성공!)
HTML5로 넘어가면서 Device API, Canvas, WebGL 등 운영체제 api를 통해서만 접근 가능하던 사항들을 브라우져 안으로 밀어넣었고, WebRTC가 나오면서 비디오 스트리밍 기능마저도 브라우져 안에 들어가게 된다는 점은 참 멋진 일인 것 같다.
간단하게 내가 듣고 기억하는 내용을 요약하자면, 아래와 같은데…
Continue reading WebRTC 세미나 후기

MPEG-LA에서 WebM에 대응되는 특허를 모으기 시작했습니다.

얼마 전 구글에서는 라이센스가 필요하다는 이유로 chrome 브라우져에서 h.264/AVC에 대한 지원을 그만두겠다는 이야기를 전했습니다.
하지만 예전 글에서 써놨듯이 WebM의 비디오 코덱인 VP8은 h.264/AVC와 유사한 부분이 굉장히 많기 때문에 특허에서 자유로울 수 없다고 생각하고 있었는데요. 드디어 MPEG-LA에서 VP8에 대한 대응을 시작한 것으로 보입니다.
2월 10일 MPEG-LA에서는 Call for patents를 발표했고, 3월 18일까지 제출된 특허들을 바탕으로 VP8에 해당 특허가 꼭 필요한 부분인지를 판단한 후 그런 특허들이 있다면 특허풀을 구성할 예정입니다.
그리고 특허풀이 만들어지게 되면, 관련 특허를 가진 회사들의 의견을 바탕으로 라이센스 방식을 결정하게 될 것이라고 하는데요. 이렇게 될 경우 구글에서 원했던 license free 정책은 쉽지 않을 것으로 예상됩니다.
결국 VP8이 가질 수 있는 장점이 거의 없을 것 같네요. H.264/AVC 같은 경우는 이미 많은 하드웨어 가속 칩들이 생산되어 있고, 또한 소프트웨어 인코더/디코더도 다양한 언어/라이센스로 배포되고 있기 때문에 사용하는 입장에서도 VP8보다는 H.264/AVC가 더 편리할 것이라는 거죠.
물론 특허풀이 형성되지 못할 가능성이 없는건 아닙니다. 이렇게 된다면 html5의 video 태그라거나 혹은 라이센스 비용을 감당할 수 없는 작은 단체들에게 VP8은 좋은 대안이 될 수 있을거라 생각합니다만 이렇게 될 가능성은 많지 않을 것으로 보이네요.
관심 있으신 분은 아랫 글도 읽어보시면 재밌을 것 같아요.
http://arstechnica.com/web/news/2011/02/mpeg-la-starts-the-search-for-vp8-patents.ars
덧: MPEG에서는 h.264/AVC의 baseline profile과 비슷한 성능을 낼 수 있는 license free 코덱을 표준화하려고 계획하고 있습니다. 아마도 중국에서 만든 AVS를 기반으로 시작할 것으로 예상되는데, MPEG-LA에서 VP8을 괴롭히는 것은 이 코덱과도 연관이 없진 않을 것 같네요.

HTML5 웹을 넘어 플랫폼으로…

webdevmobile에서 3회(1, 2, 3)에 걸쳐 개최한 열린 세미나가 성공적으로 끝이 났습니다. 웹은 예전부터 관심을 가지고 지켜보고 있었지만 최근 HTML5 등의 이슈에 대해서는 제대로 follow up 하지 못하고 있어서 약간의 죄책감을 가지고 있었는데, 덕분에 HTML5에서 지향하는게 무엇인지에 대해 약간이나마 알 수 있어 재밌었습니다. 🙂
아무래도 HTML이란 이름 때문에 웹퍼블리셔 분들이 많이 참석하셨던데 (특히) 3회째 세미나는 웹퍼블리셔 분들보다 앱 개발자 분들이 좋아하셨을 것 같네요.
Continue reading HTML5 웹을 넘어 플랫폼으로…

주관적 화질 평가: H.264/AVC vs VP8

오늘 MPEG-4 메일링 리스트로 날라온 글…
http://www.streamingmedia.com/Articles/Editorial/Featured-Articles/First-Look-H.264-and-VP8-Compared-67266.aspx
소렌슨 인코더를 이용하여 H.264/AVC의 베이스라인 프로파일로 인코딩된 파일과 VP8을 이용하여 인코딩된 파일을 비교하고 있다.
사실 H.264/AVC는 화질이 충분히 훌륭하지 못하다는 이유로 디즈니 등에서 사용을 거부 당했었고, 이런 점을 보완하기 위해 FRExt(Fidelity Range Extension)를 추가했었다. 그 결과 베이스라인 프로파일과 FRExt 등이 적용된 High profile은 굉장한 성능차가 있음에도 Baseline profile만을 이용하여 성능을 비교했다는 점은 조금 아쉽다.
어떻게 생각하면 전력으로 승부한 VP8과 2진으로 승부한 H.264/AVC였다고 할 수 있을 듯…
어쨌든 위 사이트에선 움직임이 적은 영상에선 VP8 쪽이 좋았다고 이야기 하고 (골든 프레임이 배경을 잘 예측하기 위한 기술이니 어찌보면 가능할 수도 있는 얘기란 생각) 움직임이 클 때는 H.264/AVC가 좋았다고 얘기하고 있다. 그런데 내 눈엔 스케이트 보드나 피자 도우 만드는 영상에선 H.264/AVC가 훨씬 좋아보이고 나머지 영상은 별 차이가 없어보인다.
High profile로 비교했다면 어떤 결과가 나올지 조금 궁금하지만 제목들이 First … 식으로 시작하는 걸 보니 곧 또 다른 성능 비교가 올라오지 않을까 하는 생각 중…
뭐 그리고 그와는 별도로 아랫 글에서 인용하는 걸 까먹었던 구문…

3. How likely is VP8 to actually be free of patents? Even if VP8 is worse than H.264, being patent-free is still a useful attribute for obvious reasons. But as noted in my previous post, merely being published by Google doesn’t guarantee that it is. Microsoft did similar a few years ago with the release of VC-1, which was claimed to be patent-free — but within mere months after release, a whole bunch of companies claimed patents on it and soon enough a patent pool was formed.
3. VP8이 정말 특허에서 자유로워보이나? H.264보다 VP8의 성능이 떨어진다 하더라도 특허에서 자유롭다면 분명 유용할 것이지만 예전 포스트에서 말했듯이 구글에서 말하는 것 만으로는 특허에서 자유롭다는 것을 보장할 수 없다. 마이크로소프트도 몇 년 전에 VC-1을 특허에서 자유로운 코덱이라 주장했지만 결국 몇 달 후 많은 회사들이 자신의 특허권을 주장했고, 곧 특허 풀이 형성되었다.
from The first in-depth technical analysis of VP8

어쨌든 재밌게 지켜보는 중…

WebM 조금 이르지 않을까?

Table of Contents

Introduction

Google I/O 2010에서 구글은 WebM이란 프로젝트를 발표했다.
WebM이란 HTML Video 등에 사용될 수 있도록 오픈소스/스펙으로 배포되는 동영상(비디오+오디오+컨테이너) 프로젝트로 다음과 같이 구성되어 있으며, 라이센스를 낼 필요가 없다는 점을 굉장히 강조하고 있다.

Table 1. WebM의 구성 요소
구분 기반
컨테이너 Matroska
비디오 On2 VP8
오디오 Ogg Vorbis

어쨌든 구글이 WebM을 내놓게 되면서 Firefox, Opera, IE, Safari 등의 브라우져에서 WebM을 지원하겠다라고 선언했고 (Safari를 제외한 메이져 브라우져는 전부인 듯) 구글 같은 경우 유튜브에서 WebM도 지원하도록 하겠다는 말을 남겼다.
그런데 정말 WebM의 라이센스가 Free인 것을 보장받을 수 있을까? 그리고 정말 On2의 주장에서처럼 VP8은 H.264/AVC보다 더 좋은 성능을 보이는 것일까? 라는 의문이 들었다.

H.264/AVC vs VP8

사실 최근 굉장히 많은 비디오 코덱들이 사용되고 있지만 실제 비디오 코딩에 사용되는 알고리즘은 다 다음과 같은 스킴을 사용하고 있다.

Encoder: Prediction(Inter, Intra)Inter는 현재 프레임 만을 이용해서 예측하는 것이 아니라 이미 복원된 프레임을 이용해서 예측한다는 것을 의미하며, Intra는 현재 프레임(그것도 이미 인코딩/디코딩되어있는 현재 프레임) 만을 이용해서 예측을 진행한다는 것을 의미한다. – Transform – Quantization – Entropy Coding – (In-loop filtering)
Decoder: Inverse entropy coding – Inverse Quantization – Inverse Transform – Prediction – (In-loop filtering)

물론 위 프로세스를 프레임 단위로 하는 것은 아니고 특정 사이즈의 block 단위로 위 프로세스를 거치게 된다.
하여튼 위의 내용을 바탕으로 x264 진영에 올라온 ‘The first in-depth technical analysis of VP8‘를 살펴보자.
H.264/AVC에서 각 파트를 위해 사용하는 기술과 VP8에서 사용하는 기술을 비교해보면 다음과 같다.

Table 2. H.264/AVC와 VP8의 파트별 기술 비교
구분 H.264/AVC On2 VP8
Intra prediction 9 방향의 4×4, 9 방향의 8×8, 4방향의 16×16 H.264/AVC의 4×4 모드, 16×16 모드의 동일하며, 8×8 모드는 없음
Ref frame 개수 up to 16 up to 3 (이전 프레임, 골든 프레임, alt ref 프레임)
양방향 예측 (B-frame) 가능 불가능
파티션 타입 16×16, 16×8, 8×16, 8×8, 8×4, 4×8, 4×4 16×16, 16×8, 8×16, 8×8, 4×4
Sub-pel 모션 탐색 1/2 및 1/4 픽셀 단위 1/2 및 1/4 픽셀 단위
Transform 단순화 된 DCT 단순화 된 DCT (H.264/AVC보단 덜 단순화)
Entropy Coding 바이너리에 대한 적응적 Arithmetic coding or VLC 기반의 엔트로피 코더 바이너리에 대한 Arithmetic coding으로 비트에 대한 확률 정보는 전송 필요
In-loop filter 적응적 Deblocking filter H.264/AVC의 그것과 비슷하지만 적응적이지는 않은 Deblocking filter

얼핏 봐도 H.264/AVC에 적용된 기술들에 비해 VP8에 새롭게 적용된 기술이 없음을 알 수 있다. 있다면 골든 프레임과 Alt ref(?) 프레임 정도? 그 외엔 H.264/AVC에 사용된 기술의 minor modification 정도라고 얘기할 수 있을 듯. 그리고 양방향 예측시간 축 상에서 봤을 때 앞에 위치한 프레임과 뒤에 위치한 프레임 모두에서 예측하는 방식으로 양방향 예측으로 인한 압축 효율 이득은 평균 10~20% 정도이다.이 빠졌기 때문에 압축 효율 상의 불이익이 있을 수 밖에 없다.
그리고 H.264/AVC Baseline Profile에는 CABAC(Context adaptive Arithmetic Coder) 대신 CAVLC가 사용되었으므로, 엔트로피 코더 면에선 VP8이 H.264/AVC BP보다 더 좋은 성능을 보일 수도 있겠다는 생각이 든다.
어쨌든 VP8은 성능 면에서 H.264/AVC와 대적할 수 없을 것으로 보이며, 실제 x264의 분석에서도 동일한 내용이 보고되고 있다.

WebM은 정말 License free를 보장해줄 수 있을까?

지난 며칠건 WebM과 관련된 글들이 올라올 때마다 드는 의문이 있다. 과연 WebM이 특허 문제에서 자유로울수 있을까 하는 것이 바로 그것이다.
사실 특허 문제를 검색해보면, H.264/AVC에 적용된 특허들 중 대다수가 VC-1에도 적용되어 있다. 그럴 수밖에 없는게 앞에서 얘기했다시피 다 기술 조합 방식의 차이이고, 어떤 기술에 대한 minor modification 들이기 때문에 원천 특허가 있을 경우 이를 피해가기가 거의 불가능하다.
살펴봤듯이 VP8의 Intra predictio은 H.264/AVC의 그것과 동일하다. H.264/AVC에 적용된 특허가 그대로 적용될 수 있다는 것이다. In-loop filter 같은 경우도 마찬가지로 H.264/AVC에 적용된 특허를 피해갈 수 없을 것으로 생각되며 그 외의 다른 부분들에 대해서도 아직 노출되지 않은 수많은 특허들을 침해하고 있을 지도 모른다.

JPEG과 특허 괴물의 사례

얼마 전 JPEG을 위기에 몰아넣었던 사례가 있다. 원래 JPEG 계열은 라이센스 프리를 목적으로 표준화된 포멧이지만, 어느 날 갑자기 어떤 회사가 혜성처럼 나타나 JPEG이 자신들의 특허를 침해하고 있다며 큰 회사들을 상대로 특허권 침해 소송을 한 사건이 바로 그것이다.
그 결과 MS, S-, … 등 많은 회사에서 거액의 특허권료를 지불해야했던 사건이 있었으며, 이로 인해 JPEG에 대한 특허 재심사 요구까지 생겨났고, 무료 표준으로써의 JPEG이 존폐 위기를 맞을뻔 했었다.

VP8은 아직 위험하다.

VP8은 아직 위험하다. 침해하는 특허 등에 대한 제대로된 분석 없이 구글의 언론 플레이에 휩싸여 VP8을 지원하는 것은 정말 위험할 수 있다.
H.264/AVC, VC-1 등은 MPEG-LA를 통해 특허를 침해하지 않으면서 안전하게 사용할 수 있는 합리적 라이센스료를 보장하고 있다. 하지만 VP8은 다르다. 라이센스 프리라고 주장하고 있지만 이면을 살펴보면 특허 침해로 인해 라이센스료를 내는 것보다 더 많은 금액을 들여야할 지도 모른다.
Web에 사용되는 기술이라면 굉장히 파급효과가 큰 만큼 특허를 침해하는 기술을 사용했을 때 오는 반동이 그만큼 더 커질 수 있으며, 이런 상황을 봤을 때 신중할 필요가 있다고 생각한다.
오픈소스는 라이센스 프리를 의미하지 않는다. 구글이 이걸 모르지 않을거라 생각하는데, 무슨 생각인 건지 난 잘 모르겠다.

Video Compression 자료…

오늘(어제?) 신입생 교육 때문에 만들었던 자료인데, 개인적으로 프레젠테이션 파일에 설명을 덕지덕지 붙여놓는 걸 좋아하지 않다보니 설명 없이 보기엔 조금 허전할 지도 모르겠다.
http://mytears.org/video_compression.mov
전해져 오는 자료들도 있었지만, Information theory라던가 energy compaction 등을 보여주는 자료들이 없는 등 개인적으로 맘에 들지 않아서 새로 자료를 만들어 버렸다. 어쩌면 이 정도까지 관심있는 사람들도 없었는지 모르겠지만…
그래도 만들어놓은거 2시간만에 버려지는 건 조금 아까워서 퀵타임으로 export!
간단하게 설명하자면 아래 정도?
1. 컬러 스페이스는 여러가지가 있다. RGB는 각 채널에 정보들이 고르게 분배되어 있는데 반해 YUV(Luminance + Chrominance)의 경우 Y(Luminance)성분에 대부분의 정보가 몰려있고, UV에는 상대적으로 정보가 적기 때문에 압축하는데 사용하기가 용이하다.
그렇기 때문에 영상을 압축하는데는 흔히 YUV가 사용된다.
2. 정보량을 나타내는 단위로 Entropy라는 것이 있으며, 이는 우리가 최대로 압축할 수 있는 값이라고도할 수 있다.
엔트로피에 최대한 가깝게 압축을 하기 위한 방법으로는 Shannon-Fano coding, Huffman coding, Arithmetic coding 등이 있으며, 대체로 Shannon-Fano coding보다는 Huffman coding이, Huffman coding보다는 Arithmetic coding이 엔트로피에 더 근접한 결과를 보인다.
Huffman coding은 AAC 등에, Arithmetic coding은 jpeg2k, h.264, AAC 등에 활용되고 있다.
3. Spatial 영역에서의 데이터는 어떤 위치에 얼마나 중요한 정보가 있는지를 나타낼 수 없지만 Transform을 통해 특정 위치에 중요한 정보를 위치시키는 것이 가능하다.
얘를 들어 Fourier/Cosain transform 등을 이용할 경우 저주파 성분에 대부분의 에너지를 집중 시킬 수 있고, wavelet을 사용할 경우 LL 성분에 대부분의 에너지가 모이게 된다.
4. 사람의 눈은 저주파 부분보다 고주파 부분에 민감하므로 Fourier/Cosain transform 등을 통해 도메인을 주파수 영역으로 전환시킨 뒤 저주파 영역은 여러 레벨로 quantization을 수행하고, 고주파 영역은 적은 레벨로 quantization을 수행할 경우 정보량을 줄이면서도 실제 주관적 화질에서는 큰 차이를 보이지 않게 만들 수 있다.
5. Inter frame correlation을 이용하기 위한 방법으로 motion estimation, motion compensation 등의 기법이 있으며, motion estimation을 통해 motion vector를 구하고, 앞에서 구한 motion vector를 이용 motion compensation을 수행하면 이전 프레임을 가지고 현재 프레임과 아주 유사한 프레임을 재구성해낼 수 있고, 이를 현재 프레임에서 빼줄 경우 정보량을 매우 많이 줄일 수 있다.
6. Fourier/Cosain transform을 수행한 뒤 quantization을 수행하게 되면 고주파 영역에는 0이 나올 확률이 아주 높아진다. 그렇기 때문에 Re-ordering을 수행하여 저주파->고주파 영역으로 값들을 정렬시키게 되면 특정 주파수 이후로는 0이란 값밖에 존재하질 않게 되고, 이 0들을 전부 보내기 보다는 N.C(Not coded)란 부호를 대신 보냄으로써 압축 효율을 증가시킬 수 있다.
7. 팩시밀리나 Reorder 된 transform coefficient들을 더 효율적으로 압축하기 위한 방법으로 Run Length Coding이란게 있으며, 0000011122222 같은 값을 Run Length Coding으로 압축하게 되면 051325 (값,반복된 횟수 형식)같은 식으로 표현된다.
이런 방식은 실제 RLE(BMP 압축 포멧), 비디오 코덱 등에 활용되고 있다.