Grabberの状態

Grabber オブジェクトは、そのライフサイクルの中で複数の状態を遷移します。

現在の Grabber の状態は、以下の状態プロパティによって確認できます。

初期状態

初期状態では、Grabber はまだビデオキャプチャデバイスを開いていません。

Property Value
is_device_open False
is_device_valid False
is_streaming False
is_acquisition_active False

Grabber.device_close() を呼び出すと、グラバーは常に Initial(初期)状態に戻ります。
Grabber.device_open() または関連する関数でデバイスを開くと、グラバーは Device Opened(デバイスオープン)状態になります。

Device Opened(デバイスオープン)

この状態は、デバイスが開かれているものの、まだストリーミングが開始されていない状態です。デバイスを開いた後は、ストリーミングを行うために必要な設定を行う必要があります。

Property Value
is_device_open True
is_device_valid True
is_streaming False
is_acquisition_active False

Grabber.device_close() を呼び出すと、グラバーは Initial(初期)状態に戻ります。

Grabber.stream_setup() を呼び出すと、グラバーの状態は Streaming(ストリーミング)に移行します。 もし呼び出し時の setup_option パラメータが StreamSetupOption.ACQUISITION_START に設定されている場合、取得(Acquisition)が即時に開始され、グラバーの状態は Acquisition Active(取得アクティブ)に移ります。

デバイスとの接続が失われた場合(例:ケーブルが抜かれたなど)、グラバーは Device Invalid(デバイス無効)状態に移行します。さらに、デバイスロストイベントが発生します(Grabber.event_add_device_lost() を参照)。

Streaming(ストリーミング)

この状態では、デバイスとホストの間にストリーミング接続が確立されています。デバイスが画像データを送信し、ホストが受信できる準備がすべて完了しています。

Property Value
is_device_open True
is_device_valid True
is_streaming True
is_acquisition_active False

取得(Acquisition)を開始するには、Grabber.acquisition_start() を呼び出すか、デバイスのプロパティマップで AcquisitionStart コマンドを実行します。 その後、グラバーは Acquisition Active(取得アクティブ)状態になります。

Grabber.stream_stop() を呼び出すとデータストリームが停止し、グラバーは Device Opened(デバイスオープン)状態に戻ります。

Grabber.device_close() を呼び出すとデータストリームが停止し、デバイスが閉じられ、グラバーは Initial(初期)状態に戻ります。

デバイスとの接続が失われた場合(例:ケーブルが抜かれたなど)、グラバーは Device Invalid(デバイス無効)状態に移行します。 さらに、デバイスロストイベントが発生します(Grabber.event_add_device_lost() を参照)。

Acquisition Active(取得アクティブ)

この状態では、デバイスがホストに画像データを送信しています。

Property Value
is_device_open True
is_device_valid True
is_streaming True
is_acquisition_active True

なお、特定のデバイス設定(例:PropId.TRIGGER_MODE)によっては、デバイスが画像送信を一時停止する場合があります。

取得(Acquisition)を停止するには、Grabber.acquisition_stop() を呼び出すか、デバイスのプロパティマップで AcquisitionStop コマンドを実行します。 その後、グラバーは Streaming(ストリーミング)状態になります。

Grabber.stream_stop() を呼び出すと、デバイス側の取得処理が停止し、データストリームも停止し、グラバーは Device Opened(デバイスオープン)状態に戻ります。

Grabber.device_close() を呼び出すと、取得が停止され、データストリームも停止し、デバイスが閉じられ、グラバーは Initial(初期)状態に戻ります。

デバイスとの接続が失われた場合(例:ケーブルが抜かれたなど)、グラバーは Device Invalid(デバイス無効)状態に移行します。 また、デバイスロストイベントが発生します(Grabber.event_add_device_lost() を参照)。

Device Invalid(デバイス無効)

この状態では、デバイスとの接続が失われています。

Property Value
is_device_open True
is_device_valid False

Grabber.device_close() を呼び出すと、グラバーは Initial(初期)状態に戻ります。