2010-07-07 7 views
1

최대 16 채널의 PCM 오디오 스트림을 여러 스테레오 스트림으로 분할해야합니다. 그 일을 할 수있는 것을 찾지 못했기 때문에, 저는 첫 번째 직접 쇼 필터를 작성하려고합니다. 오디오를 분할 할 수DirectShow에서 오디오를 분리하거나 디멀티플렉서 필터를 작성하는 방법은 무엇입니까?

아무것도 매우 환영받을 것입니다하지만 난 내가 한 일이 그래서 내가해야 겠지 :

을 처음에는 ITransformFilter에 따라 필터를 만들려고. 그러나 그것은 단지 하나의 입력 핀과 하나의 출력 핀을 가진 필터를 생각하게 만든 것 같습니다. 여러 개의 출력 핀이 필요하기 때문에 무시했지만, 아마도 생각보다 쉽게 ​​적용 할 수 있습니다. 따라서 조언을 해주시면 감사하겠습니다.

그런 다음 IBaseFilter를 기반으로 시작합니다. 나는 그럭저럭 할 수 있었다. 입력 핀이 연결되면 필요한 출력 핀을 만들고, 입력이 연결이 끊어지면이를 파괴합니다. 그러나, 출력 핀을 ACM 래퍼 (그냥 테스트)에 연결하면 입력이 다시 연결되어 모든 출력 핀이 파괴됩니다. 나는 그들을 파괴하지 않으려 고했지만, 그 다음에 입력 핀의 미디어 유형을 확인하고 스테레오 스트림으로 바꿨다. 내 코드에서 QueryAccept를 호출하지 않습니다.

어떻게 재 연결을 피할 수 있습니까? 또는 디멀티플렉서 필터를 사용하는 올바른 방법은 무엇입니까?

편집 2010-07-09 : ITransformFilter로 돌아 왔지만 필자는 필요한 핀을 만들고 있습니다. 그러나 IBaseFilter와 같은 문제가 발생했습니다 : 출력 핀을 ACM 래퍼에 연결할 때 입력 핀이 mediatype을 2 채널로 변경합니다. 지금 진행하는 방법을 잘 모름 ...

답변

1

Windows 서버 2003 R2 플랫폼 SDK에서 DMOSample을 살펴볼 수 있습니다. 그것은 또한 오래된 directx SDK에 포함되어 있지만 최신 Windows SDK에는 포함되어 있지 않습니다. Samples \ Multimedia \ DirectShow \ DMO \ DMOSample에서 찾을 수 있습니다. Here은이 샘플의 문서입니다.

저는 누군가 스테레오 입력과 2 개의 모노 출력을 가진 이것을 기반으로 필터를 생성하는 것을 보았습니다. 불행히도 저는 소스 코드를 게시 할 수 없습니다.

+0

대단히 감사합니다. 나는 그것을 살펴볼 것이다. – raven

+0

이것이 내가 필요한 것인지 확실하지 않습니다. 출력 핀은 미리 선언해야합니다. 입력이 연결될 때까지 얼마나 많은 채널을 가지고 있는지 모르기 때문에 실시간으로 생성 할 수 있다는 것이 좋습니다. 하루 이틀 안에 아무도 대답하지 않으면 답을 고를 것입니다. – raven

+0

16 개의 출력 핀을 생성하고 필요한 핀만 사용할 수 있습니다. – wimh

관련 문제