SDL_Camera * SDL_OpenCamera(SDL_CameraID instance_id, const SDL_CameraSpec *spec);
| SDL_CameraID | instance_id | カメラデバイスインスタンスID |
| const SDL_CameraSpec * | spec | デバイスに要求するデータの形式. NULLも可 |
デバイスは指定のスペックでオープンすることができる. そのスペックにハードウェアが直接対応できない場合は, データを要求した形式にシームレスに変換させる. これには画像データの拡大縮小などのオーバーヘッドが存在する場合がある.
デバイスが提供する形式がどのようなものでもよいならば, specにNULLを渡して選ばせる(そして必要ならばSDLサーフェイスの変換・拡大縮小関数を直接使用する)こともできる.
specにNULLを渡した場合, SDL_GetCameraFormat()で実際のデータ形式を得ることができる.
変換ではないデバイスの実際のスペックはSDL_GetCameraSupportedFormats()で得ることができる.
SDLはフレームレートをエミュレートしない. 要求した速度と近いフレームレートをハードウェアに設定しようとするが, フレームの作為的なドロップやコピーは行わない. これがアプリケーションにとって重要ならば, SDL_GetCameraFormat()でオープンしたデバイスの実際のフレームレートを得て, アプリケーションでタイムスタンプをチェックすること.
カメラはユーザが許可するまで使用できないので注意すること. 一部の環境では, OSはユーザにカメラへのアクセスの許可を確認し, ユーザはこの時点で許可か不許可化を選択できる. それまではカメラは使用できない. アプリケーションはSDL_EVENT_CAMERA_DEVICE_APPROVED(またはSDL_EVENT_CAMERA_DEVICE_DENIED)イベントを待つか, SDL_GetCameraPermissionState()が0以外を戻すまでポーリングする必要がある. ユーザに明示的に許可を求めない環境(およびユーザが以前にアクセスを許可した場合)は, 許可イベントはすぐに発生する場合もあるが, 数秒後, 数分後, 数時間後もありうる.