HTML5 웹을 넘어 플랫폼으로…

webdevmobile에서 3회(1, 2, 3)에 걸쳐 개최한 열린 세미나가 성공적으로 끝이 났습니다. 웹은 예전부터 관심을 가지고 지켜보고 있었지만 최근 HTML5 등의 이슈에 대해서는 제대로 follow up 하지 못하고 있어서 약간의 죄책감을 가지고 있었는데, 덕분에 HTML5에서 지향하는게 무엇인지에 대해 약간이나마 알 수 있어 재밌었습니다. :)

아무래도 HTML이란 이름 때문에 웹퍼블리셔 분들이 많이 참석하셨던데 (특히) 3회째 세미나는 웹퍼블리셔 분들보다 앱 개발자 분들이 좋아하셨을 것 같네요.

Continue reading HTML5 웹을 넘어 플랫폼으로…

2회 HTML5 열린 세미나 후기…

예전부터 방관자 입장으로 멀찍이에서 웹을 바라보고 있었는데, 최근 이슈가 되고 있는 HTML5에 대한 열린 세미나에 참석할 기회가 생겼습니다.

사실 기술 세미나는 잘 참석하지 않는 편인데, 요번 세미나 및 뒷풀이를 통해 재밌는 이야기를 많이 해볼 수 있었던 것 같습니다.

제가 이해한 내용, 그리고 사석에서 이야기 해봤던 내용은 다음과 같습니다. 다만 음주 토크가 좀(?) 있었고, 따로 HTML5에 대해 공부를 해보진 않았기 때문에 잘못된 내용이 있을 수도 있습니다.

좀 더 세분화된 컨텐츠 구조화를 위해 정의된 태그들

html4에서는 문서의 구조화를 위해 heading element(h1 ~ hx) 태그만을 활용할 수 있었습니다. 하지만 html5에서는 문서 컨텐츠의 구조화를 위해 article, aside, header, section 등의 태그가 새롭게 정의되었습니다.

문서 하나에 여러 가지 주제의 글들이 있을 경우 각각을 article로 묶어주고, 그 안에서 독립적인 구조(section, h1~hx)를 가질 수 있는 구조가 되었으므로, 기계 입장에서 조금 더 쉽게 문서를 분석해낼 수 있을 것으로 생각됩니다.

HTML5: 웹을 넘어 앱으로…

구글 애플리케이션, EyeOS, 구글 OS 등에서는 이미 웹을 이용한 애플리케이션의 가능성을 보여주고 있었습니다. HTML5에서는 드래그앤 드롭, Video, Audio, Canvas, Device API 등의 기능을 제공하고 있고, 이를 통해 네이티브 애플리케이션에 버금가는 기능들을 제공할 수 있게 될 것으로 생각됩니다.

열린 세미나에서는 W3C 위젯을 이용한 애플리케이션 개발 데모를 볼 수 있었는데요. 정말 간단하더군요. :)

HTML/CSS로 UI를 구성하고 javascript로 사용자 인터렉션을 구현하고, config.xml을 통해 시작 페이지나 윈도우 사이즈 등을 정의한 뒤 zip으로 묶으면 끝입니다. (사실 확장자를 zip에서 widget으로 바꿔주는 과정이 추가로 필요하긴 합니다.)

사실 어떻게 보면 안드로이드 앱 개발 과정과 크게 달라보이진 않습니다. 참고로 안드로이드 앱 개발 과정은 XML로 UI를 구성하고, JAVA로 사용자 인터렉션을 구현하고 패키징을 하는 과정으로 구성됩니다. Widget을 만드는 방법과 동일하죠? (사실 둘 다 개발툴로 이클립스를 사용하다 보니 더욱더 거기서 거기가 아닐까 싶은데…)

하지만 아무래도 특수하게(그리고 빡빡하게) 정의된 XML보단 아주 유연하게 정의된 HTML 쪽이 진입 장벽이 쉽다고 생각됩니다. 그리고 이미 파이어폭스, 사파리, 오페라 등등 아주 훌륭한 에뮬레이터(?)들이 수없이 존재한다는 점은 큰 장점이죠.

안드로이드에서도 앱(웹?) 스토어를 준비하고 있고, 휴대폰 시장에서도 대동단결하여 W3C Widget을 지원할 예정이라고 하네요.

하지만 그 이면에서 생각해볼만한 문제들…

분명 HTML5는 표현에 머물러있던 HTML4를 확장하기 위해 많은 노력을 하고 있는 것으로 보입니다. 웹을 넘어 앱으로 나아가기 위한 준비에 특히나 초점을 맞추고 있는 것으로 생각되구요.

하지만 조금 생각해봤을 때 몇 가지 생각해볼만한 문제를 발견할 수 있었습니다.

HTML을 통한 Widget 개발은 쉽다. 그런데 소스 노출 문제는 어떻게?

HTML을 통한 widget 개발은 분명 쉬워보입니다. 하지만 zip이라는 아주 범용적인 압축 포멧을 사용하고 있다보니 widget을 소스로 다시 풀어내기도 쉽습니다.

제가 어떤 widget을 개발해서 판매한다고 하면 누군가 제 widget을 압축 해제하고 조금만 수정한다면 무슨 일이 일어날까요?

뒷풀이 자리에서는 이런 내용에 대해 논의해볼 수 있었고, 이런 문제 때문에 digital signature 기능이 새롭게 추가되고 있다는 이야기를 들을 수 있었습니다만 digital signature가 이 문제를 해결할 수 있을 지에 대해서는 조금 더 생각을 해봐야할 것으로 생각됩니다.

Video Tag… Open Codec은 답이 될 수 없는건가?

W3C에서 HTML5 표준화와 관련해서 난항을 겪고 있는 점 중 하나가 Video Tag에 어떤 코덱을 사용해야하는지를 결정하지 못해서라고 들었습니다.

하지만 Video tag를 보니 아래와 같이 fall back을 제공할 수 있는 구조로 되어 있었습니다.

다시 말해 Codec 이슈를 open codec으로 해두고, 서비스 프로바이더에서 타겟에 맞춰 알아서 파일들을 제공하면 안될까 하는 생각이 들었습니다.

사실 DMB, DVB 등의 서비스를 지원하는 장치에는 이미 H.264/AVC 코덱이 포함되어 있습니다. 이런 장치들은 이미 하드웨어 코덱을 가지고 있을테므로 (혹은 라이센스된 코덱을 가지고 있을테므로) 이와 링크된 WebView library에서 따로 라이센스를 지불할 필요는 없을거라고 생각됩니다.

OS 위에 올라가는 브라우져라면? 윈도우에서는 DirectShow를 이용하면 됩니다. 맥에서는 퀵타임을 이용하면 됩니다. 리눅스에선 Xine, vlc, gstreamer 등을 이용하면 됩니다. 이렇게 할 경우 미디어 플레이어/Quicktime/Totem 등에 코덱을 설치하게 되면 브라우져에서도 이 코덱으로 인코딩된 영상을 재생할 수 있습니다.

게다가 이 기능을 브라우져 자체에서 제공하는 것이 아니므로 따로 라이센스료를 낼 필요는 없을 것이라 생각되므로 이후 어떤 코덱이 더 많이 사용될 지는 시장의 선택에 맡기면 될 것이라 생각합니다.

WebM 코덱이 많이 사용된다면 WebM 코덱을 지원하는 Consumer Device도 점점 늘어날 것입니다. Ogg Theora도 마찬가지겠죠.

이원석 박사님께서 막차 시간 문제로 일찍 돌아가셔야 했던 관계로 이 이야기를 길게 나누지 못해 조금 아쉬웠네요.

에필로그

하여튼 오랫만에 재밌는 이야기를 나눌 수 있었던 자리였던 것 같습니다. :)

세미나 일정이 이원석 박사님의 출장 일정에 맞춰지기 때문에 다음 일정이 어떻게 될 지는 아직 잘 모른다고 하네요. 다음에도 또 재밌는 이야기들을 나눌 수 있었음 좋겠습니다.

이만 후기 끝!

p.s) 막상 써놓고 보니 제 블로그 제목대로 정말 제 맘대로만 보고 온 것 같네요.

참고 자료

  1. Future Web Accessibility: HTML5 Semantic Elements
  2. HTML5 articles and sections: what’s the difference?
  3. Video on Web – Dive into HTML5
  4. 제 2회 열린 세미나 후기

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

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