인코딩 2

추억의 오락실 (10/11) - 기판과 비디오인코딩

이번에 다룰 컴포넌트는 오락실 오락기의 코어에 가깝다고 할 수 있는 기판이다. 기판을 뜯어보면서 어떤식으로 동작하는지 살펴보고 그 중에서도 비디오 인코딩(오디오 인코딩은 파라미터나 고려할 것들이 비디오에 비해 상대적으로 제한적이라 생략) 관련 부분을 좀더 자세히 살펴보고자 한다. 아키텍처 위 그림은 기판의 쓰레드 구성, 의존하는 모듈, 제어 및 데이터의 흐름을 한곳에 담아보려고 그려보았다. 부연을 해보자면, 쓰레드는 크게 네가지가 있다. 메인 쓰레드 - 롬(Rom)매니저를 통해 필요한 게임롬들을 다운로드하고 프레임콜백을 등록하는 등의 초기화를 수행한 후에 에뮬레이터를 실해시킨다. 프레임콜백이 호출되면 채널을 통해 인코더쓰레드에게 프레임 데이터를 전달한다. 커맨드 처리 쓰레드 - IPC로부터 입력된 Key..

추억의 오락실 (3/11) - 초반 리서치

스케치 일단 러프하게 어떻게 구현할 수 있을지 스케치를 해본다. 대충 통밥으로 게임 에뮬레이터, 비디오/오디오 인코딩, 스트리밍 및 컨트롤이 있을 것 같다. 이들이 어떻게 조화를 이룰지 좀더 살을 붙여보자면, 1. 서버에서 돌고 있는 게임 에뮬레이터는 자신의 tick 에 맞춰 열심히 프레임(이미지, 오디오)를 만들어 낼텐데 2. 이 프레임을 넘겨받아 코덱을 이용해 인코딩을 한 후 3. 연결된 클라이언트(브라우저)에 인코딩된 패킷을 전송(스트리밍)하면 4. 클라이언트(브라우저)는 video element를 이용해 동영상 데이터를 플레이한다 5. 유저의 키입력이 발생하면 이걸 서버로 보내고 6. 서버에서는 이 키입력을 게임 에뮬레이터로 전달해 게임에 반영한다 7. 그리고는 1번으로 가서 계속 반복 게임 에뮬..