비디오 코덱 엔지니어 후기

2011년 1월 24일 나는 비디오 코덱 전문가로써의 커리어를 시작했고, 2017년 3월 31일을 첫 회사를 퇴사하면서 비디오 코덱 전문가 포지션은 과거의 포지션이 되었다.

과거 비디오 코덱 전문가 포지션으로 월급을 받아봤던 경험을 바탕으로, 비디오 코덱을 전공하고, 비디오 코덱 엔지니어로써의 커리어로 일을 하고, 이직을 하면서 느꼈던 점들을 기록으로 남겨보고 싶어졌다.

취업

박사 수료와 함께 병역 특례를 구해야 하는 시점이 되었고, 그동안 연구했던 비디오 코딩 기술은 나름 세상을 널리 이롭게 할 수 있는 기술이라 생각했기에 가능하면 그동안 연구했던 것들을 살릴 수 있는 회사로 취업을 하고 싶었다.

하지만 중소기업 지원책의 일환으로 대기업의 신규 병역 특례 T/O 사라지고 있던 시기다보니 이력서를 넣을 수 있는 곳은 상당히 제한적이었던 것으로 기억된다. 결국 당시 실제 코덱 관련 비지니스를 하고있던 중소 기업 세군데에 이력서를 제출했었고, 입사 제의를 보내준 곳들 중 가장 처우가 좋았던 회사로 입사를 하게 되었다.

당시엔 몰랐지만 h.264/AVC의 인기와 함께 우후죽순 생겨났던 비디오 코덱 개발회사들 중 많은 회사들이 당시 경영 악화를 겪고 있었던것 같다. 나중에 들은 얘기지만 내게 입사 제의를 보내줬던 회사들 중 한 곳은 그해 경영 악화로 3개월간 월급이 밀리는 일이 발생했었고, 내가 이미 병역특례로 편입된 이후에 면접을 보자며 연락을 했던 그 회사는 몇 년전부터 상장 폐지 얘기가 나오고있다.

애증의 H.264/AVC

회사에 입사하고 처음 맡게된 프로젝트는 기존의 h.264/AVC 모델/펌웨어에 h.264/AVC Annex H. Multi-view Video Coding Extension을 구현하는 일이었다.

사실 내가 입사하기 전 시점부터 진행이 되었어야 하는 프로젝트였으나 당시 내부적인 이슈로 프로젝트가 진행되지 않고 있던 상황이었는데, 입사 후 아직 주 업무가 주어지지 않았던 상황에서 스펙 및 h.264/AVC Reference Model 코드를 구경하다 보니 그리 어렵지 않게 구현이 가능할 것 같아서 일부 기능을 구현해봤었는데, 어쩌다보니 어느새 내 프로젝트로 탈바꿈 되어버렸었다.

프로젝트 deadline까지 얼마 남지 않은 상황에서 프로젝트를 진행하게 되었기 때문에 실제 개발 외 이슈로 고통을 받긴 했지만 MVC 프로젝트를 진행하며 H.264/AVC의 DPB(Decoded Picture Buffer) 관리 기법이라거나 Reference Picture List와 관련된 세부적인 내용들을 파악할 수 있었고, 이후 팀 내 H.264/AVC, HEVC 전문가 포지션을 담당하게 되는데 큰 도움이 되었던 프로젝트였던 것 같다.

다행히 MVC 프로젝트는 제 때 잘 마무리할 수 있었고, 이후 한동안 고객사로부터 전달되는다양한 h.264/AVC (에러) 스트림들을 마주하며, h.264/AVC 관련 내공을 열심히 쌓았던 것 같다.

지금와서 생각이지만 내가 입사하던 시기만 해도 아직 비디오 코덱 관련 시장이 성숙하지 않았던게 아닌가 하는 생각이 든다. 당시 제품만 봐도 에러 처리가 굉장히 부족한 상황이었기 때문에 에러 스트림들을 만나면 심각한 문제가 되는 경우가 많았지만 그런 부분에 문제를 제기하는 회사도 거의 없었고, 회사 매출만 봐도 기존 제품에 대한 로열티 보다는 새 제품에 대한 라이센스 위주였으니 말이다.

애증의 HEVC

(관련해서도 해보고 싶은 얘기가 많은데,) HEVC(High-Efficiency Video Coding)의 경우 내가 박사 과정에 있을 때 표준화가 시작되었고, 2013년 FDIS(Final Draft of International Standard) 스케쥴이 잡혀있던 차세대 비디오 코딩 표준이다.

표준화가 시작되고 표준화가 진행되는걸 실제 내 눈과 귀로 보고 들었던 표준이기 때문에 개인적으로 많이 욕심이 났던 프로젝트였으나 처음에는 이 프로젝트가 나에게 주어지지 않았기 때문에 애증의 HEVC라고 얘기할만 한 프로젝트였던 것 같다.

어쨌든 HEVC 표준이 완성되어가던 시점 나는 기존의 h.264/AVC reference model에 HAL(Hardware Abstract Layer)을 생성하는 소프트웨어 리팩토링 프로젝트를 진행하게 되었고, HEVC 모델링 프로젝트는 다른 분에게 넘어가게 되었다.

이 프로젝트를 진행하며 참 여러가지 사건들이 좀 있었는데, 여튼 HEVC 모델링 프로젝트는 결국 나에게 넘어와서 내가 Project Lead를 하는 것으로 결정되었고, 처음부터 스펙을 분석하며 레퍼런스 모델 아키텍쳐를 정리하고 업무를 분장하며 개발을 진행하는 경험은 참 재밌었던거 같다.

이후 실제 제품화 과정에서 Arm-like CPU를 도입하게 되고 이 시점에서 팀을 옮겨 CPU 부트 코드부터 CRT(C-RunTime) 까지 직접 짜보는 신선한 경험도 나쁘지 않았던 것 같다. 실제 모델링 부터 제품화 마무리까지 전부 관여해볼 수 있었기 때문에 나름 큰 의미가 있었던 프로젝트가 아니었나 싶다.

퇴사 결정

박사 수료까지 인정을 받아서 직급은 낮지 않게 인정 받았지만, 신입이었음에도 불구하고 (위에 언급하지 않았지만 Wave-front Frame Parallel Processing을 위한 소프트웨어 아키텍쳐 제안 및 구현, DxVA 지원을 위한 소프트웨어 아키텍쳐 제안, Queueing 기반 비동기 API 등) 나름 재미있는 프로젝트들을 대부분 담당할 수 있었던건 축복이었던 것 같다.

하지만 재밌는 일이 다 나에게 오기만을 바랄 수도 없는 거고, 실제로도 코덱 엔지니어로써 해볼 수 있는 새로운 코덱 관련 연구나 모델링 등의 작업은 나에게 주어지는 빈도는 점점 없어지는 것 처럼 느껴졌다. 이미 플랫폼 전환 및 비동기 API 전환 작업 등을 완료한 시점에서 더 해볼 수 있는 새로운 경험들은 제한적이라고 느꼈고 개인적으로 성장이 정체된다는 느낌을 받게 되었다.

그러던 어느날 업무시간 이후 휴게실에서 옆팀 분들과 와인을 마시며 여러 대화를 나눴었는데, 그 여운이 좀 길었던거 같다. 다음 날 점심을 먹다 갑자기 전날 나눴던 얘기가 생각나면서 ‘난 지금 뭘하고 있는걸까’라는 생각과 함께 갑자기 눈물이 나왔다.

그리고 퇴사를 하기로 결정했다.

에필로그

막상 퇴사를 결정한 건 좋았는데, 이력서를 넣을 곳을 찾다보니 비디오 코덱 엔지니어로써 계속 일할 수 있는 회사가 많지는 않다는 느낌을 받았다.

실제 서비스 업체들을 보면 비디오 코덱 관련 업무는 FFMpeg 등의 오픈소스 코덱 라이브러리를 활용하는 것들이나 스트리밍 서비스 등 더 상위 레벨의 업무 포지션이었고 나처럼 순수하게 CABAC, Intra Prediction 이런걸 직접 구현해본 경험으로 가치를 더해줄 수 있을만한 곳들 중 눈에 띄는 곳은 없었던 것 같다.

이후 이런 저런 회사를 거치며 돈주는 사람들이 go로 짜달라면 go로 짜주고, 파이썬으로 짜달라면 파이썬으로 짜주고, 원하는 바에 맞춰 결과물들을 만들어내는데 문제는 없었기 때문에 더 상위 레벨의 업무 포지션이라도 감당할 수 없다는 생각은 전혀 없지만, 이력서 상에 관련된 능력을 뒷받침할 내용이 없다는 점에서 나란 개발자에 대해 크게 메리트를 느끼지 못하는게 아닌가 싶다.

학생들이 기초 과학 쪽을 선호하지 않는게 이런 이유가 아닐까 싶은데, 한국은 실제 코어 파트에 깊게 파고드는 회사들이 많지 않아서 나처럼 코어 그 자체와 관련된 업무를 하다보면 이후 기존 경험을 그대로 살려서 이직하는게 쉽지 않은 게 사실인거 같다. 연구실 후배들을 봐도 이제 비디오 코딩 보다는 머신 러닝 관련 쪽으로 연구 분야들을 거의 전환된걸 보면 시대의 흐름인 것 같기도 해서 좀 슬프다.

어찌됐건 그 후 다시 취업해서 당시 받던 이상의 대우를 받으며 일하고 있는거 보면 다들 어떻게든 먹고 살아간다는 사람들의 말이 거짓이 아니긴 한 것 같다.

지금 하고 있는 일이 아직 재미없거나 싫지는 않지만 언젠가 무슨 이유로든 퇴사를 결정하게 될 일이 있을텐데, 그 때는 어떤 생각을 가지고 퇴사를 결정하게 될지 그리고 그 다음에는 어떻게 살아가게 될지 의문이다.

뭐가 되던 하루하루 재밌게 살아갈 수 있었음 좋겠다.

Similar Posts:

Facebooktwitterlinkedinmail

Leave a Reply