Microsoft DirectX 8.0

CSource クラス

CSource クラスの階層

ソース フィルタ実装の基底クラス。

宣言: Source.h

CSource から派生したフィルタには、CSourceStream クラスから派生した 1 つまたは複数の出力ピンが含まれる。それぞれの出力ピンは、メディア サンプルをダウンストリームにプッシュするワーカー スレッドを作成する。

出力ピンを実装するには、次の操作を行う。

フィルタを実装するには、次の操作を行う。

複数のスレッド間でフィルタの状態を同期するには、CSource::pStateLock メソッドを呼び出す。このメソッドは、フィルタ状態のクリティカル セクションへのポインタを返す。CAutoLock クラスを使って、クリティカル セクションを保持する。次に示すように、ピンからはピンの CBasePin.m_pFilter メンバ変数から pStateLock にアクセスできる。

CAutoLock lock(m_pFilter->pStateLock());

注 :  CSource クラスは、データ フローのプッシュ モデルをサポートするように設計されている。このクラスは、ファイル リーダー フィルタの作成には推奨されない。ファイル リーダーは、IAsyncReader インターフェイスを介して、プル モデルをサポートする必要がある。詳細については、「フィルタ開発者が使用するデータ フロー」を参照すること。

プロテクト メンバ変数
m_iPinsフィルタ上のピン数。
m_paStreamsピンの配列。
m_cStateLockフィルタの状態を保護するクリティカル セクション オブジェクト。
Public メソッド
CSourceコンストラクタ メソッド。
~CSourceデストラクタ メソッド。
GetPinCountフィルタ上のピン数を取得する。
GetPinピンを取得する。
pStateLockフィルタのクリティカル セクション オブジェクトへのポインタを取得する。
AddPinフィルタに新しい出力ピンを追加する。
RemovePinフィルタから指定されたピンを取り除く。
FindPinNumberフィルタ上から、指定された数のピンを取得する。
IBaseFilter Methods
FindPin指定された識別子を持つピンを取得する。

CSource.m_iPins

CSource クラス

フィルタ上のピン数。

構文

int m_iPins;

CSource.m_paStreams

CSource クラス

ピンの配列。

構文

CSourceStream **m_paStreams;

CSource.m_cStateLock

CSource クラス

フィルタの状態を保護するクリティカル セクション オブジェクト。pStateLock ヘルパー メソッドは、このメンバ変数へのポインタを返す。

構文

CCritSec m_cStateLock;

CSource::AddPin

CSource クラス

新しい出力ピンをフィルタに追加する。

構文

HRESULT AddPin(
    CSourceStream *pStream
    );

パラメータ

pStream
ピンを実装する CSourceStream オブジェクトへのポインタ。

戻り値

次の表に示されるいずれかの HRESULT 値を返す。

S_OK成功。
E_OUTOFMEMORYメモリ不足。

注意

CSourceStream コンストラクタはこのメソッドを呼び出し、出力ピンをフィルタに追加する。

CSource::CSource

CSource クラス

コンストラクタ メソッド。

構文

CSource(
    TCHAR *pName,
    LPUNKNOWN lpunk,
    CLSID clsid
    );

パラメータ

pName
オブジェクトの名前が含まれた文字列へのポインタ。詳細については、「CBaseObject」を参照すること。
lpunk
このオブジェクトの所有者へのポインタ。このオブジェクトが集成された場合は、派生クラスの CreateInstance 関数に渡された集成オブジェクトの IUnknown インターフェイスに、ポインタを渡す。それ以外の場合は、このパラメータに NULL を設定する。
clsid
フィルタのクラス識別子。

CSource::~CSource

CSource クラス

デストラクタ メソッド。

構文

~CSource(void);

CSource::FindPin

CSource クラス

指定された識別子を持つピンを取得する。IBaseFilter::FindPin メソッドを実装する。

構文

HRESULT FindPin(
    LPCWSTR Id,
    IPin **ppPin
);

パラメータ

Id
ピンを識別する、NULL で終了する文字列へのポインタ。
ppPin
ピンの IPin インターフェイスへのポインタを受け取る変数のアドレス。メソッドが失敗すると、*ppPin は NULL に設定される。

戻り値

次の表に示されるいずれかの HRESULT 値を返す。

S_OK成功。
E_POINTERNULL ポインタ引数。
VFW_E_NOT_FOUNDこの識別子を持つピンは見つからなかった。

注意

最初のピンは、"1"、2 つ目のピンは "2"、以後同様である。詳細については、「CSourceStream::QueryId」を参照すること。

CSource::FindPinNumber

CSource クラス

フィルタ上のピンを指定する。

構文

int FindPinNumber(
    IPin *iPin
    );

パラメータ

iPin
ピンの IPin インターフェイスへのポインタ。

戻り値

ピン番号を返す。フィルタ上にピンが見つからなかった場合は -1 を返す。最初のピンの番号は 0 である。

CSource::GetPin

CSource クラス

ピンを取得する。純粋仮想メソッド CBaseFilter::GetPin を実装する。

構文

CBasePin *GetPin(
    int n
    );

パラメータ

n
指定されたピンの数。

戻り値

ピンを実装する CBasePin オブジェクトへのポインタを返す。インデックスが範囲外の場合は NULL を返す。

CSource::GetPinCount

CSource クラス

フィルタ上のピンの数を取得する。純粋仮想メソッド CBaseFilter::GetPinCount を実装する。

構文

int GetPinCount(void);

戻り値

フィルタ上のピンの数を返す。

CSource::pStateLock

CSource クラス

フィルタのクリティカル セクション オブジェクトへのポインタを取得する。

構文

CCritSec* pStateLock(void);

戻り値

m_cStateLock メンバ変数へのポインタを返す。

CSource::RemovePin

CSource クラス

フィルタから指定されたピンを取り除く。このメソッドはピンを削除しない。

構文

HRESULT RemovePin(
    CSourceStream *pStream
    );

パラメータ

pStream
ピンを実装する CSourceStream オブジェクトへのポインタ。

戻り値

次の表に示されるいずれかの HRESULT 値を返す。

S_OK成功。
S_FALSEフィルタには、このピンは含まれていない。

注意

CSourceStream デストラクタはこのメソッドを呼び出し、フィルタから出力ピンを取り除く。