최대 16 채널의 PCM 오디오 스트림을 여러 스테레오 스트림으로 분할해야합니다. 그 일을 할 수있는 것을 찾지 못했기 때문에, 저는 첫 번째 직접 쇼 필터를 작성하려고합니다. 오디오를 분할 할 수DirectShow에서 오디오를 분리하거나 디멀티플렉서 필터를 작성하는 방법은 무엇입니까?
아무것도 매우 환영받을 것입니다하지만 난 내가 한 일이 그래서 내가해야 겠지 :
을 처음에는 ITransformFilter에 따라 필터를 만들려고. 그러나 그것은 단지 하나의 입력 핀과 하나의 출력 핀을 가진 필터를 생각하게 만든 것 같습니다. 여러 개의 출력 핀이 필요하기 때문에 무시했지만, 아마도 생각보다 쉽게 적용 할 수 있습니다. 따라서 조언을 해주시면 감사하겠습니다.
그런 다음 IBaseFilter를 기반으로 시작합니다. 나는 그럭저럭 할 수 있었다. 입력 핀이 연결되면 필요한 출력 핀을 만들고, 입력이 연결이 끊어지면이를 파괴합니다. 그러나, 출력 핀을 ACM 래퍼 (그냥 테스트)에 연결하면 입력이 다시 연결되어 모든 출력 핀이 파괴됩니다. 나는 그들을 파괴하지 않으려 고했지만, 그 다음에 입력 핀의 미디어 유형을 확인하고 스테레오 스트림으로 바꿨다. 내 코드에서 QueryAccept를 호출하지 않습니다.
어떻게 재 연결을 피할 수 있습니까? 또는 디멀티플렉서 필터를 사용하는 올바른 방법은 무엇입니까?
편집 2010-07-09 : ITransformFilter로 돌아 왔지만 필자는 필요한 핀을 만들고 있습니다. 그러나 IBaseFilter와 같은 문제가 발생했습니다 : 출력 핀을 ACM 래퍼에 연결할 때 입력 핀이 mediatype을 2 채널로 변경합니다. 지금 진행하는 방법을 잘 모름 ...
대단히 감사합니다. 나는 그것을 살펴볼 것이다. – raven
이것이 내가 필요한 것인지 확실하지 않습니다. 출력 핀은 미리 선언해야합니다. 입력이 연결될 때까지 얼마나 많은 채널을 가지고 있는지 모르기 때문에 실시간으로 생성 할 수 있다는 것이 좋습니다. 하루 이틀 안에 아무도 대답하지 않으면 답을 고를 것입니다. – raven
16 개의 출력 핀을 생성하고 필요한 핀만 사용할 수 있습니다. – wimh