2009-09-03 4 views
0

저는 DirectShow를 처음 접했고 그 순간에 정말 감탄했습니다. DirectShow 렌더러 창을 WPF 응용 프로그램 내에서 호스트하고 싶습니다. 현재이 작업을 수행하기 위해 HwndHost 클래스를 사용하고 있습니다. HwndHost에 필요한 것은 비디오를 렌더링하는 창 핸들입니다. IVideoWindow 인터페이스의 핀을 열거하고 IOverlay를 쿼리하여 GetWindowHandle 메서드를 사용하여 핸들을 얻을 수 있도록 핸들을 가져 오는 예제를 발견했습니다.DirectShow.Net에서 IOverlay 인터페이스를 사용할 수 있습니까?

문제는 IOverlay가 DirectShow.Net에서 사용할 수없는 것 같습니다. DirectShow.Net About 페이지에서 IOverlay는 표제에 이라는 제목으로 나열되어 있습니다. "이러한 인터페이스는 소스 코드에 있지만 더 이상 사용되지 않으며 문서화되지 않았으며 Ole 자동화 또는 테스트 할 수없는 것입니다. 테스트 됨 ".

그래서이 정의에 액세스하려면 어떻게해야합니까? 라이브러리로 배포되는 빌드에서 제외되었으므로 직접 소스에서 라이브러리를 빌드해야합니까?

또는 내가하려는 일을하는 더 좋은 방법이 있습니까? Anyhelp는 내가이 모든 것을 처음 접했을 때처럼 감사 할 것입니다.

미리 감사드립니다.

편집 : DirectShow가 없습니까? 아니면이 멍 청한 질문, 어떤 조언을 들여다 볼 수 있습니다.

답변

2

정상적인 방법은 IVideoWindow :: put_Owner를 사용하여 비디오 창을 reparent하여 자신의 창 자식으로 만드는 것입니다. 또한 AutoShow (false), Visible, Width 및 Height 속성을 설정하고 WindowStyle 속성을 변경하여 자식 창으로 만들려고합니다.

IOverlay 인터페이스는 사용되지 않은 하드웨어 디코더를 지원하기 위해 DirectShow (1996)의 첫 번째 버전에서 구현되었습니다. 현재 비디오 렌더러가 지원할 것이라고 생각하지 않습니다.

잘못된 응용 프로그램 프로그래밍으로 인해 Windows 용 비디오에서 자주 교착 상태가 발생하고 개발자가 DirectShow 스레드와 소유하고있는 창과 응용 프로그램 스레드간에 명확한 분리가 필요하다고 느끼기 때문에 창 핸들을 얻기가 어려웠습니다.

G

+0

이 아주 많이 필요 단지 사람을 당신을 감사합니다 :)이 (그것의 매우 도움이되었습니다) 귀하의 GMFBridge 툴킷을 사용하는 프로젝트의 일부가 될 일이 –

관련 문제