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] sink Sinkオブジェクト [in] context ic4_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] context ic4_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] sink Sinkオブジェクト [in] context ic4_queuesink_create() に渡された contextパラメータです。Sinkが作成されたとき[in] image_type Sinkが受け取る、ネゴシエートされたイメージタイプ [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] sink Sinkオブジェクト [in] context ic4_queuesink_create() に渡された contextパラメータです。Sinkが作成されたとき
- 注意
- sink_disconnected 関数は、ic4_grabber_stream_stop() を呼び出すスレッド上で実行されます。
- 警告
- Sinkへのデータストリームが停止されると、ic4_grabber_stream_stop() の呼び出しはこの関数が戻るまで待機します。sink_disconnected コールバック内のコードが、ic4_grabber_stream_stop() を呼び出したスレッドでの動作を無条件に必要とする処理を行う場合、容易にデッドロックを引き起こす可能性があります。


