Realtime 처리…

요새 별의 별 이상한 짓을 다 하고 있다보니 실시간으로 동영상을 저장해야할 필요가 생겼다. 그런데 MFC의 타이머는 message 기반이다보니 기본 타이머에 의존해서는 내가 원하는 것을 처리할 수 없을 것 같았다.

물론 MS 개발자들은 아주 똑똑하다보니 이런 경우를 위해 Multimedia timer라는 것을 제공하고 있다.

MFC에서 Multimedia timer 사용하기

우선 Multimedia timer에서 보장하는 resolution은 1ms까지이다. 그거보다 더 정밀하게 무언가를 처리해야한다면 multimedia timer를 사용하면 안된다.

우선 Multimedia timer를 시작/종료 하는 함수는 다음과 같다.
Continue reading Realtime 처리…

맥에서 tex 사용하기…

다음 주면 방학이고, 학생으로 얼마나 더 있을지 모르는 상황이다보니 그동안 실험해 놓았던 것들을 슬슬 논문화 할 계획을 세웠다.
디모자이킹 관련해서 했던 연구는 Optical Engineering (O.E) 저널에 내보면 좋을 것 같고, Motion estimation 관련해서 했던건 Consumer Electronics에, Video compression 이슈는 IEEE Electronic Letter에 내보면 어떨까 하고 생각을 해봤다.
그런데 찾아보니 O.E에서 tex 서식 파일을 제공하고 있길래 어짜피 준비하는 논문에 tex을 활용해보면 어떨까 하는 생각이 들었다.
예전에도 한 번 구조적인 글쓰기를 도전해볼까하는 생각에 tex을 시도해본 적이 있었는데, 몇 년이 지난 지금의 맥은 tex을 쓰기 훨씬 더 쉬워져 있었다.

tex과 관련된 패키지 설치하기

앞서 가볍게 언급했듯이 맥에서 tex 관련 패키지들을 설치하는건 아주 쉽다. MacTex 등을 활용하는 방법도 있겠지만 난 내 손에 익숙한 macports를 이용하기로 결정했다.
자 아래 사이트로 접속해서 macports를 받은 뒤 설치를 하자.
http://www.macports.org/
그런 다음 ‘응용 프로그램>유틸리티>터미널’을 실행시키고, 다음 명령을 실행시키면 tex과 관련된 모든 것이 설치된다.

참고로 TeXShop은 오픈소스로 개발되는 tex 편집 툴로 편집 및 프리뷰 기능 등을 제공하고 있으므로 나같은 초보들도 쉽게 tex 문서를 작성할 수 있도록 도와준다.
어쨌든 위 명령을 실행시키고 계정 비밀번호를 입력해주면 한동안 이것저것 가져다 빌드를 할 것이다. 에러 없이 명령이 종료되었다면 설치 완료!

TeXShop 설정하기

위 명령이 끝나고 나면 ‘응용 프로그램>MacPorts>’ 밑에 TeXShop.app이 생성된다. 우선 이 TeXShop.app을 실행시키고, 다음과 같은 내용으로 tex 파일을 작성해보자.

편집 창에 있는 typeset 버튼을 클릭하게 되면 이 파일이 컴파일된다. 단 아쉽게도 tex 관련된 바이너리가 있는 디렉토리 설정이 기본으로 잘못되어있기 때문에 에러가 나게 된다.

tex binary 경로 설정하기

Path를 설정해주기 위해 ‘커맨드 + ,’를 눌러서 Preference를 실행시키자. 그런 다음 Engine 탭에 있는 Path settings에서 (pdf)Tex… 항목과 Distiller (…) 항목을 /opt/local/bin으로 수정해주자.
이제 정말 끝!!
오른쪽 아래의 OK 버튼을 눌러준 다음에 Typeset 버튼을 다시 클릭해주면 아무 에러 없이 프리뷰가 뜨는 것을 확인할 수 있다.
아래는 간단하게 만들어본 revtex용 tex파일

덧: macports에서는 APS 저널을 위한 스타일인 revtex 패키지도 지원하고 있으므로 APS 저널을 위해 tex을 설치하는 것이라면 sudo port install revtex을 통해 revtex 패키지도 설치해주도록 하자.
덧2: 쓸 줄 알면 그냥 내용만 대강대강 채우면 된다고 하지만 분명 tex을 사용하는데 진입 장벽이 있긴 한 것 같다.

내 첫 cocoa application: yuv player

저번 주에 개인적으로 de-interlacing 관련된 발표를 준비하느라 논문에 있는 de-interlacing 기법들을 구현해서 실험을 했었는데, 맥에서 돌아가는 yuv player 를 못찾는 바람에 결과는 윈도우로 옮겨서 확인해야하는 불편이 있었다.
랩에 이미 충분히 쓸만한 yuvplayer 가 있기는 하지만 윈도우 전용이고, 내가 예전 신입생 과제를 하면서 만들었던 플레이어 역시 윈도우용;; 뭐 하튼 플레이어를 구현하는데 필요한 기반 테크닉은 다 갖추고 있었기 때문에 MFC + OpenGL 로 구현해봤던 것을 똑같이 Cocoa+OpenGL 로 구현해봤다.

메뉴를 이용해서 size 와 color format, frame rate 등을 준비할 수 있도록 만들었는데, size 와 frame rate 를 사용자가 직접 입력하는 것은 귀찮은 관계로 나중에 -_-;;
뭐 하튼 Zoom 하고 Drag And Drop 과 관련된 코드만 추가하고 나면 내가 구현하고 싶었던 모든 기능이 다 들어가는 거 같다. (Zoom 이야 glPixelZoom 을 사용하면 한방에 오케이니 흐흣)
XCode + Interface Builder 를 이용한 첫 결과물인데, 굉장히 오래전에 이미 나와있던 프로그래밍 인터페이스인데도 불구하고 굉장히 편리하게 프로그래밍이 가능해서 감탄을 해버렸다. 물론 MS 진영도 Visual Studio 2005 로 오면서 편리한 기능들이 꽤 많이 추가되긴 했지만, GUI Application 을 만들기 위한 IDE 로는 XCode + 인터페이스 빌더 쪽이 한 수 위인 듯…
MFC 나 Cocoa 나 진입 장벽이 꽤 높지만… 기본적인 테크닉을 익히고 나면 굉장히 강력하게 사용이 가능한 것 같다. 그리고 C 에 능숙하다면 다른 언어를 접하는 데도 그리 큰 어려움을 느끼지 않는 것 같다. 학부 시절 C++, Java 등에 눈길을 뺐기지 않고 주력 언어로 C 를 선택했던 게 탁월한 선택이었던 듯…
p.s) 코드를 좀 정리하고 sourceforge 등에 자리를 틀어볼까 싶네요. 🙂