次の方法で共有


手順 2. Filter クラスを宣言する

[DirectShow このページに関連付けられている機能は、従来の機能です。 MediaPlayerIMFMediaEngine、および Media Foundation のオーディオ/ビデオキャプチャ に置き換えられました。 これらの機能は、Windows 10 および Windows 11 用に最適化されています。 新しいコードでは、可能な場合は、DirectShowではなく、Media Foundation MediaPlayerIMFMediaEngine、および Audio/Video Capture を使用することを強くお勧めします。 従来の 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フィルターの書き込み