WebRTC 세미나 후기

평상시와 다름없이 페이스북질을 하다가 WebRTC 세미나를 발견한 김에 오랫만에 웹쪽 세미나를 참석해봤다. (다행히 agenda에 비디오 코덱 관련해서 뭔가 이야기가 있을 것 같은 분위기를 띄워놔서 교육 신청에 성공!)

HTML5로 넘어가면서 Device API, Canvas, WebGL 등 운영체제 api를 통해서만 접근 가능하던 사항들을 브라우져 안으로 밀어넣었고, WebRTC가 나오면서 비디오 스트리밍 기능마저도 브라우져 안에 들어가게 된다는 점은 참 멋진 일인 것 같다.

간단하게 내가 듣고 기억하는 내용을 요약하자면, 아래와 같은데…

Continue reading WebRTC 세미나 후기

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에 사용되는 기술이라면 굉장히 파급효과가 큰 만큼 특허를 침해하는 기술을 사용했을 때 오는 반동이 그만큼 더 커질 수 있으며, 이런 상황을 봤을 때 신중할 필요가 있다고 생각한다.

오픈소스는 라이센스 프리를 의미하지 않는다. 구글이 이걸 모르지 않을거라 생각하는데, 무슨 생각인 건지 난 잘 모르겠다.

오픈웹 관련해서 시끄러운 하루하루…

요 근래 오픈웹에 반감을 가지는 분들이 굉장히 많아지고 있는 것 같다. 뭐 오늘 읽은 내용만 하더라도 아래 정도?

일부 흥미로운 내용들도 있지만 감정에 치우친 글들도 많다. 방준영씨의 경우는 크게 다음 두 가지를 문제 삼고 있는데…

  1. 해외에서 ActiveX 없이 안전하다고? 니네가 페이팔 피싱 사례를 모르는구나?
  2. 공인 인증서는 보안 접속이 아니니까 쓸 필요가 없다고?

이 중 공인 인증서에 관련된 내용을 인용하면 다음과 같다.

그래서 아이디/패스워드만으로 보안을 담보하는 건 안전하지 않고, 돈을 보내고 받는 일은 불편하더라도 공인인증서같은 본인 확인 수단이 필요하다고 생각한다. 그런데 저 교수분의 주장은 공인인증서는 보안 접속이 아니라서 반드시 쓸 필요는 없다고 한다. 보안 접속은 영어로 secure connection이니까 당연히 공인인증서가 시큐어 커넥션일 리 없다. 공인인증서는 영어로 public key certificate니까. 그런데 이게 왜 공인인증서를 안써도 되는 이유가 되는 것인지…?

Founders at Work라는 책에 보면 페이팔 창립자가 인터뷰를 하면서 금융 사기꾼들을 막느라 고생한 이야기에 대해 상당 시간을 할애하고 있다. 특정 회사를 상대로 대규모로, 지속적으로 금융 사기를 벌이는데 못 막아서 쩔쩔 매다가 엄청난 금전 손해를 보거나 아예 어떤 회사는 문까지 닫은 이야기는 한국에서는 상상하기 힘들다. 처음부터 공인인증서 시스템을 만들어 놓고 본인 인증을 철저히 했는데도 그런 일을 당했을까?

김기창 교수님이 오픈웹에서 얘기하고 있다시피 사실 공인 인증서는 보안 접속과 관련된 부분이 아니다. 공인 인증서는 암호화된 통신을 위해 사용하는 것이 아니라 전자 서명에 사용된다. 전자 서명이 뭐냐고? 우선 오래전부터 email 에 사용되는 PGP Signature를 살펴보자.

Continue reading 오픈웹 관련해서 시끄러운 하루하루…

‘CSS 완벽 가이드’와 역자…

요번에 위키북스를 통해 출판된 ‘CSS 완벽 가이드‘의 경우 Eric. A. Meyer의 책을 남덕현님, 이준님, 연홍석님 그리고 저 이렇게 네 분이서 공동 번역을 하였습니다. (써놓고 보니 가나다라 순은 아니군요.)

그런데 온라인 쇼핑몰마다, 그리고 포털의 책 소개 페이지마다 역자는 전부 다르게 표기되어 있습니다. 아래는 ABCD순서로 본 각 쇼핑몰의 역자 표기입니다.

Continue reading ‘CSS 완벽 가이드’와 역자…