07/03/12 08:07:00
>>300
そうです、Transformメソッドの中で2回Deliverしてます。
サンプルの流れがいまいち理解できないです。
そこで今行っている処理の流れを分かる範囲でまとめてみました。
[キャプチャフィルタ]-[変換フィルタ(自作)]-[色空間変換フィルタ]-[VMR9]
[色空間変換フィルタ]の入力ピンからの[変換フィルタ]への呼び出し
CTransformFilter::Receive (CTransformFilter::InitializeOutputSampleを呼び出す)
↓
CTransformFilter::InitializeOutputSample (新しいサンプルを[キャプチャフィルタ]の出力ピンから取得する)
↓
CTransformFilter::Transform
(サンプルの処理)
↓
CBaseOutputPin::Deliver (IMemInputPin::Receiveを呼び出す) ←これを>>286のように2回呼び出しています
↓
IMemInputPin::Receive ([変換フィルタ]の出力サンプルを取得する)
↓
[色空間変換フィルタ]での処理
↓
[VMR9]が付与されたタイムスタンプに従って画面に表示
疑問点
・>>289さんの言う、CTransformFilter::Receive内でもDeliverしている、という記述がMSDNで見つけられませんでした。
上記で言えばどの時点で発生するのでしょうか?
・最初のCTransformFilter::Receiveが呼び出されるタイミングが分かりません。
サンプルが変換フィルタで処理されるサイクルはどのようになっているのでしょうか?