구글에서 에피소딕이라고 하는 real-time video streaming 회사를 인수했습니다.
유투브에서 real-time service를 몇차례 시도한 적이 있고, 트위터 연동등으로 real-time video service를 제공하는 업체들도 여럿 있어서 그리 새로운 시도는 아니겠습니다만, 앞으로 유투브의 방향이 그 쪽으로 모멘텀이 생기지 않을까 합니다. 이미 많은 매체에서 에피소딕의 개발자들이 유투브로 인수와 함께 옮긴다고 하고 있고요.
여기서 오디오는 무엇을 할 수 있을까~?를 생각해본다면, 기존보다는 조금 다른 방향으로 개발이 가능할 것 같습니다.
먼저 그전에, 기존 코덱들에 대한 특징부터 간략하게 이야기 해야겠군요.
음성 코덱은, real-time communication을 위해 개발했었고요. 오디오 코덱은 storage 또는 streaming을 위해 개발했었습니다.
여기서 모순점이 발생을 하지요. real-time streaming이라니요.
real-time이면서 streaming 서비스를 할 수 없기 때문이죠.
그래서 real-time streaming 서비스는 (엄밀히 말하면 real-time만큼은 아니지만) 딜레이가 매우 작은 streaming 서비스가 될 겁니다.
그렇다면, 코덱에서도 이런 특징을 받아줘야겠지요.
우선은 비디오 코덱부터 이런 특징을 반영해야겠군요.
key frame의 간격을 줄이던지 해서 딜레이를 조절해야할테고요.
이에 따라서 오디오 코덱은 (비디오 코덱에서 발생한 딜레이 안에서)
최대한 압축률을 높일 수 있는 방향으로 개발되어야 합니다.
아 그리고, 부호화 계산량도 낮아야하겠군요.
그렇다면, 여태까지 오디오 코덱에서는 거의 사용하지 않았던,
inter-frame processing 들을 이용할 수 있게 됩니다.
(물론 비디오 코덱에 따라서 scalable하게..)
코덱에서는 저정도 이슈가 있을테고요.
사실 real-time streaming 서비스가 제공되기 시작하면 장비에서부터 pre/post processing 분야가 엄청나게 각광을 받을겁니다.
고성능 마이크라든지, 5.1 채널 마이크라든지, 잡음 제거, 보이스 부스트,
디렉셔널 마이크 등등..
서비스를 받는 사람 입장에서는 아주 재미있는 일들이 많이 일어 날겁니다. f1 레이스를 보면서 실제로 운전자 시야에서 보이는 장면들을 본다든지...물론 실시간으로 컴퓨터 앞에서 말이죠. :) 상상만 해도 즐겁습니다. 하핫~
보너스 영상으로는 샌프란시스코에서 열린 유아용 자전거 레이스입니다.
저런 영상을 실시간으로 받아서 볼수 있는 날도 이제 얼마 남지 않았습니다.^^
이번 CES 2010 에서 부스를 차리고 나온 Fraunhofer IIS의 차세대 코덱으로 미는 것..정도 되지 않을까 합니다. 먼저 히스토리를 간략히 소개하면,
MP3를 만드는데 큰 공헌을 한 Fraunhofer에서 AAC의 core를 만들었죠. 이것도 벌써 근 20년이 되어 가는 일인데, 이 녀석들이 잘 만들어서 그러겠지만, 아쉽게도 오디오 쪽에서 이 녀석들을 따라잡는 곳이 거의 없습니다. 스핀오프로 나온 회사들이나 그를 인수하거나 스카웃해가더라도 아직까진 fraunhofer가 언터쳐블..anyway,
그래서 일까요? 한번 만들어놓은 진입장벽을 아주 정석대로 잘 써먹고 있습니다.
BWE를 만들어도 baseline은 AAC, (SBR)
stereo coding을 만들어도 baseline은 AAC, (PS)
multichannel coding을 만들어도 baseline은 AAC로 만들더니 (Surround) lossless coding마저 baseline을 AAC로 만듭니다. SLS, HD-AAC
SLS은 원래 baseline을 뭘로 만들더라도 상관은 안합니다만,
만든 녀석들이 그 녀석들이라 HD-AAC라는 이름으로 하나의 코덱을 릴리즈 하고 만것이지요. 코드를 보지 못했지만 홈페이지에서 언급하고 있는 것으로 보아 SLS에 baseline만 AAC로 만들어 놓은 것일겁니다.
물론 오디오 코덱은 encoder를 공개할 필요가 없기때문에 엄청 잘만들어놓고 비공개로 딱~! 닫아놓고 팔아먹겠죠..-_-;;
사실 이러한 코덱들이 무서울 것은 없습니다.
원래 코덱이라는 것은 아무리 성능이 좋더라도 쓰여야 소용이 있는 것이지요. MP3처럼 말입니다.
하지만 lossless 라고 해봐야, 방송에서는 지금 ALS가 먼저 선점하고 있는 상태이고, 일반인들이 쓰는 것은 FLAC이 그나마 선점하고 있는 상태니까요. 그렇지만 fraunhofer AAC의 엄청난 우군이 있으니 이는 바로..
그렇습니다. AAC를 사랑하는 애플이죠.
이미 세상이 발에 치일정도로 깔린 아이팟과 아이폰, 그리고 아이패드-_-
게다가 단일시장으론 가장 크다는 아이튠 스토어가 있는거죠.
애플에서 HD-AAC에 대한 라이센싱이나 MOU는 잘 모르겠으나,
예전에 MPS에 대한 것은 진행을 했으니, 아마도,
아마~도 애플에서 관심을 가지고 있을겁니다. backward-compatible하기도 하니, 기존 유저들도 사용하면서 새로운 기기 유저에게 돈 더 받으면서 무손실 음악을 제공할 수 있는, 아주 좋은 코덱이니까요. 게다가 인코딩도 한번 해놓고 AAC랑 나눠 팔수도 있고요.ㅋㅋ
그래서 미리 움직이실 분들은 HD-AAC를 주시하는 것도 좋을 것 같네요.
물론 최적화 구현이나 칩구현, Encoder 개발 등, 해볼만한 것이 많습니다. 소스는 하나쯤 구해놓는 것도 나중에 장사하시는데 도움이 될 것이고요. 예전에는 거들떠보지도 않던 aac 요즘에 왠만한 mp3p에서는 다 지원되죠. 왜냐하면, 애플이 하니까;; (기분나빠도 떱..) 언젠간 HD-AAC도 필수 코덱 중 하나로 쓰일 가능성이 있지 않을까 합니다.
지난 12월 초, 한국 MPEG 포럼에서
개최하는 워크샵이 있어 참석하였습니다.
오디오 코딩과 관련해서는 현재 진행중인 이슈가 2개가 있어
follow-up하는 의미에서 참석을 하였고요.
내부적으로 정리해놓은 내용이 있는데,
본 블로그에서는 오디오나 음성 코딩 부분만 다루니,
그 부분만 띄어서 써봅니다. :)
1-1 SAOC
MPS에 사용된 기술을 이용하여 object audio를 처리하는데 낮은 비트율에서 제공하기 위한 solution 제공을 목표로 개발이 되는 코덱.
물론 객체들이 방향성은 살아있지만, 완벽하게 분리되지 않음.
특히, 보컬이나 특정 음원을 지우는 것은 크게 문제가 되지 않지만,
보컬이나 특정 음원만 재생하는 경우 성능의 열화가 분명함.
이를 해결하기 위해 residual channel이라는 것을 만들어서,
이를 보상해주는 방식을 사용하고 있음.
(하지만 이 경우에
결국 비트율이 올라가는 문제점이 있어,
특별히 SAOC가 낮은 비트율에서 서비스 제공한다라는 장점을
역으로 감쇄시키는 부분임. 옵션이 있다는 정도가 장점)
알고리즘적으로는 MPS에서 사용된 기술이
그대로 사용하고 있기 때문에 기술적으로 추가된 부분은 없으며,
구조적으로 어떻게 configuration하였지가 이슈로 보임.
1-2 USAC
음성과 오디오 신호를 동시에
잘 처리할 수 있는 통합된 코덱을 개발하는 것을 목적으로 함.
현재 baseline인 reference software는 release 된 상태이고,
성능 및 음질 향상을 위한 개발을 하고 있음.
실질적으로는 음성의 경우 AMR-WB+가,
오디오의 경우 AAC로 처리하는 방식을 따르고 있음.
즉, 음성의 경우 TCX 기법을
사용하며,
AAC의 경우 MDCT 도메인에서 처리하는 방식을 사용.
전처리단으로 MPS와 eSBR이 사용되어 있고,
core
codec의 입력으로는 stereo or mono 채널을 사용함.
특히, core codec에서는 voiceage와
fraunhoffer에서
encoder 등을 완벽히 오픈하지 않아,
다른 업체에서 core codec의 성능
향상에 접근하지 못함.
삼성 및 기타 업체에서 품질 향상을 위해 contribution 한 부분은
MPS 나 eSBR과
같은 전/후처리 모듈에 대한 부분.
특히 삼성에서는 MPS 성능을 높이는 부분에서
기존에 ILD 및 ICC 와 함께 사용되는
parameter인
IPD와 OPD의 비트율을 반으로 줄임으로써
(실질적으로는 OPD를 ILD와 ICC에서 예측)
비트효율을
높여 음질을 향상시키는 방법으로 접근하고 있음.
(관련 논문 이미 published 된 것으로 보임, 언제 보긴 했는데;;)
AMR-WB+ 모듈에서는 기존의 방식과 달리 LPC 압축을 위해
AVQ 방식을 사용하고 있음.
(기존에는 ISF 방식으로 압축, (LSF)와 유사)
현재 논의 point로는 각 모듈이 transition될 때
overlap-add를 해야하는데,
이 부분과 관련하여 어떻게 처리를 하는 것이
음질 열화를 최소화할지를 고민하고 있음.
표준화 진행사항으로는 CD를 내년에 제출할 상태이고
2011년 초까지 FDIS를 제출할 예정으로 있다.
그 외에 video 코딩에 대한 설명들이 있어서 재미있게 들을 수 있었습니다.
그리고 시스템적인 입장에서도 접근할 부분이 많이 있어 보이네요.
결국 다양한 서비스를 창출하기 위해서는 시스템이나 포맷에서 지원해주어야 하는 부분이 있으니까요. 하지만 (여지껏 그랬고 지금도 그런 문제이지만) 가장 큰 문제는 시장을 만들어내지 못하면서 표준이 범람하는데 있지 않나 합니다. 게다가 큰 업체들은(예를 들면, 구글이나..) 구지 표준을 쓰기보다는 개별적인 솔루션을 개발하는 경우들도 많고요.
그리고 지금 슬슬 ffmpeg을 보고 있는데,
이 부분에 대해서 정리를 함 해볼까 합니다.
물론 사용법보단, 코덱개발 입장에서 전체적을 프로그램 구조를 보는 것이 주가 되겠지요. :)
그럼 또 다음에 뵙도록 하지요.
이제 트위터는 줄일 예정이니, 블로그에서 더 자주 볼 수 있을겁니다. :)