AVStream での処理の再開

次のいずれかの条件に該当する場合、AVStream は処理を停止します。

  • ピン中心の環境では、現在、ピンで使用できるデータはありません。

  • フィルタ中心の環境では、KSPIN_DESCRIPTOR_EX 構造体の Flags メンバ に KSPIN_FLAG_FRAMES_NOT_REQUIRED_FOR_PROCESSING が設定されていない少なくとも1つのピンには、処理待ちのデータがありません。 既定では、このフラグは設定されていません。

  • ミニドライバーの処理ディスパッチ コールバック ルーチンは、フレームの可用性に関係なく、STATUS_PENDING を返します。 処理ディスパッチは、ミニドライバーがピン中心の処理またはフィルター中心の処理を実装しているかどうかに応じて、AVStrMiniFilterProcess または AVStrMiniPinProcess のいずれかになることに注意してください。

AVStream は、以前に空だったキューに新しいデータが到着すると、処理を開始します。 したがって、関連付けられているキューがいっぱいになったときにミニドライバーの処理ディスパッチが STATUS_PENDINGを 返す場合、処理を再開するためにミニドライバーが呼び出されることはありません。 ミニドライバーが STATUS_PENDING を設定した場合、ミニドライバーは KsPinAttemptProcessing または KsFilterAttemptProcessing を呼び出して処理を再開する必要があります。

ミニドライバーが実際にデータを処理しない場合は、処理ディスパッチから STATUS_SUCCESS を返さないでください。 これにより、AVStream は直ちにミニドライバーを再度呼び出し、AVStream と処理ディスパッチの間に無限ループが発生します。