2013-03-12 3 views
0

Windows 프로그램 (Win32/MFC/C++)에 대한 비디오 지원과 함께 PJSIP를 사용하고 싶습니다. PJSIP 프로젝트 (http://trac.pjsip.org/repos/wiki/Getting-Started/Windows) 나는 다른 사람의 사이에서 참조 (추가 요구 사항)의 사이트에서 살펴 본다 작성자 :Windows 용 비디오 지원과 함께 PJSIP 사용

  • 의 DirectShow SDK, 윈도우 SDK에 포함되어 있습니다. 내 config_site.h에서
  • SDL이 경우 버전 2.0 또는 버전 1.3

나는 다음 필요 구성 : 내 PJSIP 프로젝트에이 두 가지 구성 요소를 추가하는 경우

#define PJMEDIA_HAS_VIDEO    1 
#define PJMEDIA_HAS_FFMPEG    1 
#define PJMEDIA_VIDEO_DEV_HAS_SDL  1 
#define PJMEDIA_VIDEO_DEV_HAS_DSHOW  1 

는, 모두가 잘 작동, 걸려 오는 전화에 대한 알림을 받고 카메라의 비디오를 표시/캡처 할 수 있습니다.

내 질문 : Windows 프로그램에이 두 구성 요소 (SDL 및 DirectX/DirectShow)가 실제로 필요합니까? 즉, 필자는 SDL (필자는 그렇지 않다고 가정)을 필요로합니까? 그렇다면 DirectX도 필요합니까? Windows 용 OpenGL을 사용할 수없는 이유는 무엇입니까? 어쩌면 누군가이 주제에 대한 경험을 가지고있을 것입니다 - 당신의 도움에 감사드립니다!

답변

1

확실히 DirectShow가 필요합니다. SDL을 요구하는 것에 대해 긍정적이지는 않습니다 ...

DirectShow는 Windows에서 비디오 캡처 소스에 스트리밍 인터페이스를 제공합니다. DirectShow 자체가 주로 사용자 모드 구성 요소 집합이지만, 제공된 비디오 캡처 필터 (일반적으로 KsProxy.ax)는 정의 된 인터페이스 집합과 속성 집합을 통해 커널 수준 캡처 드라이버와 통신합니다. 일부 카메라 제조업체는 자신의 사용자 모드 인 DirectShow 캡처 필터에 자신의 하드웨어에 대한 개인 (일반적으로 커널) 인터페이스를 제공하기로 선택하며 DirectShow를 모든 Windows 비디오 캡처 장치에 대한 공통 액세스 지점으로 만듭니다.

SDL은 디스플레이에 빠르게 액세스 할 수있는 크로스 플랫폼 라이브러리를 제공합니다. 이것은 디코딩 된 비디오를 디스플레이로 가져 오기 위해 PJSIP의 코덱에서 사용됩니다.

PJSIP 은 렌더링 필터로 DirectShow를 사용할 수 있습니다. 참조 : http://svn.pjsip.org/repos/pjproject/trunk/pjmedia/src/pjmedia-videodev/dshow_dev.c

그것은 활성화 된 경우 코드가 작동 것이다 라인 (52)의 DirectShow를 렌더러를 사용할지 여부를 소스에서 불분명 :이 이후

/* Temporarily disable DirectShow renderer (VMR) */ 
#define HAS_VMR   0 

는 주석, 나는 코드가 아니었다 가정 것 완전하게 완성 되었기 때문에 모든 예제에서도 SDL이 필요합니다.

+0

이 정보를 제공해 주셔서 감사합니다. Jay! DirectX 대신 OpenGL을 사용하는 것은 무엇입니까? SDL은 가능하며 필요합니까? – duDE

+0

위의 대답을 추가 정보로 업데이트했습니다 ... –

+0

PJMEDIA_VIDEO_DEV_SDL_HAS_OPENGL을 정의하면 SDL에서 OpenGL을 사용하는 것처럼 보입니다. 참조 : http://svn.pjsip.org/repos/pjproject/trunk/pjmedia/src/pjmedia-videodev/sdl_dev.c –