はじめに
前回までの記事で、オーディオチャンネルを分離するDirectShowフィルタをCBaseFilter
クラスから派生して作成する方法を紹介しました。今回は逆に結合するフィルタを作成してみたいと思います(図1)。
対象読者
- C++言語が分かる方
- DirectShowアプリケーションを作成したことのある方
- DirectShowフィルタの作成に興味のある方
本稿では、前回までの記事と重複する内容は省略し、異なる部分や重要なポイントに絞って解説していきます。
必要な環境
- Windows Vista/XP
- Visual Studio 2008
- Windows SDK for Windows Server 2008 and .NET Framework 3.5
フィルタの仕様
今回作成するフィルタは、2つの入力ピンから受信したモノラルオーディオストリームを、それぞれL/Rチャンネルとして結合し、1つの出力ピンからステレオオーディオストリームを送信します。作成するフィルタの仕様を示します(表1)。
種類 | Muxフィルタ |
名前 | Audio Channel Muxer Filter |
入力ピン数 | 2 |
出力ピン数 | 1 |
メジャータイプ | MEDIATYPE_Audio |
サブタイプ | MEDIASUBTYPE_PCM |
フォーマットタイプ | FORMAT_WaveFormatEx |
実装するクラスと関係を整理しておきます。クラス構成は前回とほぼ同じですが、フィルタクラスの名前が異なります(図2、表2)。
役割 | クラス名 | 派生元 |
フィルタクラス | AudioChMuxerFilter | CBaseFilter |
入力ピンクラス | AudioInPin | CBaseInputPin |
出力ピンクラス | AudioOutPin | CBaseOutputPin |