IC4_QUEUESINK_CALLBACKS 構造体リファレンス

QueueSinkの動作を指定するために使用される関数ポインタを格納します。 詳細...

データフィールド

void(* release )(void *context)

Sinkがこれ以上コールバック関数を呼び出さないことをユーザーに通知します。

bool(* sink_connected )(struct IC4_SINK *sink, void *context, const struct IC4_IMAGE_TYPE *image_type, size_t min_buffers_required)

Sinkへのデータストリームが作成されたときに呼び出されます。

void(* sink_disconnected )(struct IC4_SINK *sink, void *context)

Sinkへのデータストリームが停止したときに呼び出されます。

void(* frames_queued )(struct IC4_SINK *sink, void *context)

新しいイメージがSinkの「埋まったバッファのキュー」に追加されたときに呼び出されます。

詳細説明

QueueSinkの動作を指定するために使用される関数ポインタを格納します。

フィールドドキュメント

◆ frames_queued

void(* frames_queued) (struct IC4_SINK *sink, void *context)

新しいイメージがSinkの「埋まったバッファのキュー」に追加されたときに呼び出されます。

このコールバックは通常、ImageBufferにアクセスするために ic4_queuesink_pop_output_buffer() を呼び出します。

パラメータ
[in]sinkSinkオブジェクト
[in]contextic4_queuesink_create() に渡された context パラメータです。Sinkが作成されたとき
注意
このコールバック関数が時間のかかる処理を行う場合は、データストリームが停止されようとしているかどうかを判断するために、定期的に ic4_queuesink_is_cancel_requested() を確認することを推奨します。
frames_queued 関数は、Sinkが管理する専用スレッド上で実行されます。
警告
Sinkへのデータストリームが停止されると、ic4_grabber_stream_stop() の呼び出しはこの関数が戻るまで待機します。frames_queued コールバック内のコードが、ic4_grabber_stream_stop を呼び出したスレッドでの動作を無条件に必要とする処理を行う場合、容易にデッドロックを引き起こす可能性があります。

◆ release

void(* release) (void *context)

Sinkがこれ以上コールバック関数を呼び出さないことをユーザーに通知します。

context パラメータに付随するすべてのリソースを解放できます。

パラメータ
[in]contextic4_queuesink_create() に渡された context パラメータです。Sinkが作成されたとき
注意
release コールバック関数は、ic4_sink_unref() の最後の呼び出しでSinkを破棄するスレッド上で実行されます。

◆ sink_connected

bool(* sink_connected) (struct IC4_SINK *sink, void *context, const struct IC4_IMAGE_TYPE *image_type, size_t min_buffers_required)

Sinkへのデータストリームが作成されたときに呼び出されます。

パラメータ
[in]sinkSinkオブジェクト
[in]contextic4_queuesink_create() に渡された context パラメータです。Sinkが作成されたとき
[in]image_typeSinkが受け取る、ネゴシエートされたイメージタイプ
[in]min_buffers_requiredデバイスがストリームを開始するために必要な最小バッファ数
戻り値
データストリームを作成すべき場合は true。false が返された場合、ic4_grabber_stream_setup() の呼び出しは失敗します。
注意
Sinkが動作を開始するには、min_buffers_required 個のバッファを確保してキューに入れる必要があります。この関数が ic4_queuesink_alloc_and_queue_buffers() を呼び出す場合、必要な数のバッファは関数が戻った後に自動的に作成されます。関数がバッファを確保しても、その数が必要数より少ない場合、ic4_grabber_stream_setup() は失敗します。
queuesink_sink_connected 関数は、ic4_grabber_stream_setup() を呼び出すスレッド上で実行されます。

◆ sink_disconnected

void(* sink_disconnected) (struct IC4_SINK *sink, void *context)

Sinkへのデータストリームが停止したときに呼び出されます。

パラメータ
[in]sinkSinkオブジェクト
[in]contextic4_queuesink_create() に渡された context パラメータです。Sinkが作成されたとき
注意
sink_disconnected 関数は、ic4_grabber_stream_stop() を呼び出すスレッド上で実行されます。
警告
Sinkへのデータストリームが停止されると、ic4_grabber_stream_stop() の呼び出しはこの関数が戻るまで待機します。sink_disconnected コールバック内のコードが、ic4_grabber_stream_stop() を呼び出したスレッドでの動作を無条件に必要とする処理を行う場合、容易にデッドロックを引き起こす可能性があります。