Search Results for 'GStreamer'

3 POSTS

  1. 2008.02.27 libmms 포팅 1
  2. 2008.02.26 GStreamer Good Plug-ins 0.10.7 릴리즈 소식 2
  3. 2008.02.01 GStreamer 윈도 지원. 2

libmms 포팅

Posted 2008. 2. 27. 00:55
리눅스 쪽에서 mms/mmsh 스트리밍 소스를 사용하기 위한 libmms라는 프로젝트가 있습니다. 현재 0.4까지 올라와있습니다.

저는 오늘 GStreamer Plug-ins Bad에 있는 libmms 플러그인을 사용하기 위해 libmms를 윈도로 포팅하는 작업을 했습니다. 윈도 GStreamer에서 mms 소스를 간단히 테스트하려고 시작했는데, libmms가 제대로 포팅이 안 되어 있어서 조금 고쳐서 해본다는 게 결국 꽤 많은 코드를 수정하게 되었군요. 역시나 버리기 아까워서 패치로 묶어서 메인테이너한테 보냈는데 어찌될지는 모르겠습니다.

libmms의 외부 의존성은 소켓 라이브러리 밖에 없긴 한데, 윈도 포트를 고려를 안 해놔서 윈도의 경우 WinSock 함수를 쓰도록 패치를 했습니다. 윈도 프로그래밍 경험이 많지 않아서 역사적인 이유는 모르겠지만, WinSock이 유닉스 계열 소켓 함수와 거의 비슷하면서 조금씩 다른 부분들이 있어서 귀찮더군요.

처음에 WSAStartup을 안 부르고 테스트하다가 한참을 헤맸습니다. 더불어 snprintf나 strcasecmp, strncasemp도 윈도 쪽에 같은 이름으로 함수가 없어서 귀찮더군요. Glib이라도 쓰면 g_만 붙여서 g_snprintf, g_strcasecmp, g_strncasecmp로 사용하면 좋긴 한데, libmms 경우는 Glib 의존성을 제거한 흔적(glib.h)이 남아 있어서 그것도 안 되는 것 같고요.

새삼스러운 질문이지만 C에서 네트워크 관련 라이브러리를 리눅스 혹은 윈도로 포팅하는 가장 쉬운 방법은 무엇일까요?
미디어 프레임워크인 GStreaemr Good Plug-ins 0.10.7 버전이 릴리즈되었습니다. 앞서 릴리즈된 GStreamer Core와 Base 0.10.17의 릴리즈 소식을 전하지 않고 Good Plug-ins의 릴리즈 소식을 전하는 이유는 기여자에 제 이름이 포함되었기 때문입니다. 흐흐.

작년에 GStreamer 가져다가 컴파일하면서 윈도 쪽 컴파일 에러나는 부분들 고친 후에 다음 릴리즈에도 이짓을 또할 생각을 하니 끔찍해 고친 부분들을 패치로 만들어 몇 개 제출했는데 이게 소스 트리에 반영되면서 기여자 명단에 이름이 올라왔습니다. 오픈소스 프로젝트를 사용하다보면 이렇게 의도하지 않게 이름을 올리는 경우가 종종 있는 것 같습니다.


GStreamer 윈도 지원.

Posted 2008. 2. 1. 02:42
GStreamer는 리눅스에서 많이 사용하고 있는 멀티미디어 프레임워크입니다. 윈도의 DirectShow와 같은 역할을 한다고 보시면 됩니다. DirectShow와 마찬가지로 플러그인 기반으로 되어 있어 다양한 코덱을 외부 개발자가 쉽게 끼워 넣을 수 있는 구조로 되어 있습니다.

까멜레오는 교차 플랫폼을 지향하며 야심차게 GStreamer를 사용하고 있습니다. GStreamer 기반의 몇 가지 영상 분석 플러그인도 개발 중에 있고요. 복수의 멀티미디어 프레임워크를 사용하는 데서 오는 복잡함을 줄이기 위해 윈도에서도 DirectShow 사용 없이 GStreamer만으로 모든 영상을 재생할 수 있게 하는 것이 목표입니다.

하지만 아직까지 GStreamer를 윈도에서 사용한 비디오 플레이어는 전 세계적으로 하나도 없습니다. GStreamer 개발팀 자체는 대부분 리눅스에 적을 두고 있어서 윈도 운영체제 지원에 큰 우선순위를 두고 있지 않은 분위기입니다. 최근에 윈도에서 XViD 파일 재생 시 크래시나는 문제가 버그질라에 올라왔는데, 버그발견자가 매우중요(critical)로 설정한 우선순위를 메인 개발자가 보통으로 바꿔버리더군요.

하지마나 GStreamer를 윈도에서도 사용하려는 노력이 이어지고 있습니다. 오늘 Gecko 기반의 미디어 플레이어를 만들고 있는 SongBird 블로그에 GStreamer for all, all for GStreamer이 라는 제목으로 GStreamer 윈도 플랫폼 지원에 대한 글이 하나 올라왔습니다. SongBird의 경우도 리눅스에서는 GStreamer를 쓰는데, 윈도와 Mac OS X에서는 아직 VLC를 사용하고 있습니다.

SongBird 팀은 높은 자유도를 주는 GStreamer를 메인으로 생각하고 있고 유지 보수 문제를 줄이고자 하나의 미디어 프레임워크로 통일하고자 하고 있습니다. 하지만 문제는 아직 리눅스 외의 플랫폼에서 GStreamer의 안정성이 검증되지 않았다는 데 있습니다. 안정성을 높이고자 SongBird는 꽤 오래전부터 GStreamer 메일링 리스트를 통해 DirectShow 필터를 GStreamer 플러그인으로 사용할 수 있게 하는 DirectShow 래퍼를 만들고 있다는 이야기를 해왔는데 공개하는 시점이 자꾸 늦어지고 있습니다.

저희 회사 입장에서는 중복 노력을 피하기 위해 되도록이면 SongBird의 작업 결과를 활용하고 싶었는데 시기가 늦춰지면서 결국 GStreamer DirectShow 래퍼를 직접 만들기 시작했습니다. 2월말을 목표로 작업에 착수합니다. 그 전에 SongBird 팀에서 좋은 소식을 전해 주면 좋을 텐데 몇 차례 양치기 소년에게 당했기 때문에 조금 믿음이 안 가긴 합니다.