次の方法で共有


手順 2. フィルター クラスを宣言する

[このページに関連付けられている機能 DirectShow は、従来の機能です。 MediaPlayer、IMFMediaEngine、Media Foundation のオーディオ/ビデオ キャプチャに置き換わりました。 これらの機能は、Windows 10とWindows 11用に最適化されています。 新しいコードでは、可能であれば、DirectShow ではなく Media Foundation で MediaPlayerIMFMediaEngineAudio/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.メディアの種類のネゴシエーションをサポートします。

DirectShow フィルターの作成