手順 2. フィルター クラスを宣言する
[このページに関連付けられている機能 DirectShow は、従来の機能です。 MediaPlayer、IMFMediaEngine、Media Foundation のオーディオ/ビデオ キャプチャに置き換わりました。 これらの機能は、Windows 10とWindows 11用に最適化されています。 新しいコードでは、可能であれば、DirectShow ではなく Media Foundation で MediaPlayer、IMFMediaEngine、Audio/Video Capture を使用することを強くお勧めします。 Microsoft は、レガシ API を使用する既存のコードを、可能であれば新しい API を使用するように書き換えるよう提案しています。]
これは、 変換フィルターの記述に関するチュートリアルの手順 2 です。
まず、基本クラスを継承する C++ クラスを宣言します。
class CRleFilter : public CTransformFilter
{
/* Declarations will go here. */
};
各フィルター クラスには、ピン クラスが関連付けられています。 フィルターの特定のニーズに応じて、ピン クラスをオーバーライドする必要がある場合があります。 CTransformFilter の場合、ピンはほとんどの作業をフィルターに委任するため、ピンをオーバーライドする必要はおそらくありません。
フィルターの一意の CLSID を生成する必要があります。 Guidgen ユーティリティまたは Uuidgen ユーティリティを使用できます。既存の GUID をコピーしないでください。 CLSID を宣言するには、いくつかの方法があります。 次の例では、 DEFINE_GUID マクロを使用します。
[RleFilt.h]
// {1915C5C7-02AA-415f-890F-76D94C85AAF1}
DEFINE_GUID(CLSID_RLEFilter,
0x1915c5c7, 0x2aa, 0x415f, 0x89, 0xf, 0x76, 0xd9, 0x4c, 0x85, 0xaa, 0xf1);
[RleFilt.cpp]
#include <initguid.h>
#include "RleFilt.h"
次に、フィルターのコンストラクター メソッドを記述します。
CRleFilter::CRleFilter()
: CTransformFilter(NAME("My RLE Encoder"), 0, CLSID_RLEFilter)
{
/* Initialize any private variables here. */
}
CTransformFilter コンストラクターのパラメーターの 1 つが、前に定義した CLSID であることに注意してください。
次へ: 手順 3.メディアの種類のネゴシエーションをサポートします。
関連トピック