2009-12-30 2 views
0

DS 용 필터가 있습니다. 그것은 작동 - 표준 승리 DLL을 사용합니다.DirectShow Filter를 C++ C#으로 변환하는 방법?

해당 필터를 DS를 사용하지 않는 프로그램으로 변환하려고합니다. dll을 올바른 순서로 호출하고 DS가 수행하는 모든 작업을 수행하지만 DS에서는 신뢰할 수없는 작업을 수행합니다. 필터 dll에서만 가능합니다.

그래서 ... DirectShow 필터를 C++ \ C#으로 변환하는 방법?

답변

1

보다 나은 해결책은 필터를 응용 프로그램에서 제공하는 사용자 지정 원본과 출력을 받고 응용 프로그램에 전달하는 사용자 지정 싱크가있는 단일 목적 그래프 내에서 필터를 사용하는 것입니다. 이것에 대한 예가 www.gdcl.co.uk에 있습니다. 나는 이것이 당신이 요구하는 것이 아니라는 것을 알고 있지만, dshow에 대한 당신의 의존성은 매우 제한되어 있으며 필터 바이너리는 작동하지만 dshow의 기본은 사용할 수없는 환경을보기가 어렵습니다.

g

0

DirectShow를 사용하지 않고도 DirectShow 필터를 사용할 수 있지만 직접 구현 한 그래프를 작성해야합니다.

즉, DirectShow 필터가 네이티브 환경에서 실행되고 있다고 생각하게하려면 IFilterGraph, IMemInputPinIMemOutputPin 인터페이스를 구현해야합니다.

필터를 통해 버퍼를 통과하기 위해서는 IMemAllocatorIMediaSample

버퍼 전달은, 특히 관리 코드에서 수행 할 수없는 구현해야 할 수도 있습니다. interop을 사용하여이 작업을 수행 할 수는 있지만 C#보다는 C++에서 수행하기가 더 쉬울 것이라고 생각합니다. 나는 이것을 한 해 전에 한 번했다. 약 3 개월이 걸렸습니다.

관련 문제