デバイス SDK ラッパーは、デバイス間の実際の違いを維持しながら、呼び出し規約を標準化する必要があります。一致する API 名は、パラメーターのセマンティクス、バッファーの所有権、またはエラー状態を定義しません。以下はアダプターの設計方法であり、任意のデバイスがすでに統合されているという主張ではありません。

最初にパラメータのセマンティクスを定義する

分野 必要な情報 避けるべき問題
識別子 アプリケーション名、デバイスマッピング、および適用可能なモード 意味が異なる同じ名前
種類と単位 整数、浮動小数点、列挙、ブールおよび明示的な単位 互換性のない単位で番号をコピーする
アクセス機能 読み取り専用または書き込み可能、​​ダイナミック レンジと状態の依存関係 画像キャプチャ中に変更できないパラメータの書き込み
列挙とデフォルト 実際にサポートされている値とリードバック サポートされていない設定を成功として報告する
発動条件 停止、再起動、再接続が必要かどうか 呼び出しが戻った直後にフレームが新しい設定を使用すると仮定します。

フィールドの名前を変更するだけではありません。サポートされていない関数の識別可能な状態を返します。互換性のある単位の変換と丸めを定義します。ターゲット SDK の機能に従って、リードバック、デバイスの状態、イメージの変更を確認します。

フレームデータの寿命

ベンダー SDK、アダプター、または呼び出し元がバッファーを割り当てるかどうか、読み取り可能な状態を維持する期間、バッファーをいつ解放または返却する必要があるか、クロススレッド使用が許可されているかどうか、およびコピーが発生するかどうかを文書化します。次元、形式、行ストライド、および有効な長さは一緒になって画像データを表します。ぎっしり詰まった行を想定しないでください。

存続期間を確認せずに、長時間実行されるダウンストリーム タスクに非同期コールバック ポインターを渡さないでください。イメージ キャプチャのシャットダウン、切断、デバイスの破棄には、未処理のフレーム、キューに入れられたコールバック、およびリソースの解放の命令も必要です。

状態とエラーの原因

許可されたコールと移行条件とともに、切断、接続、構成、取得、停止、および障害の状態を個別に検討します。高速タイムアウト、切断、サポートされていないパラメータ、バッファ不足、解析失敗を個別に処理します。ベンダーのエラー コードとコンテキストをラッパーのエラー コードと一緒に保存します。

例以上の検証を行う

指定したデバイスとバージョンについて、パラメータの境界、繰り返し開始と停止、フレーム タイムアウト、バッファ リターン、同時呼び出し、および再接続をテストします。障害を挿入できなかった理由、またはサポートされなかった理由を記録します。 API ドキュメント、エラー テーブル、ビルド手順、例、合意されたテスト記録を提供します。

関連サービス: ビジョンデバイス SDK そして 埋め込み画像画像キャプチャ.