目次 - SDL 3.0 API(機能別) - ビデオキャプチャ - SDL_CameraID

SDL_OpenCamera

ビデオ録画デバイス(カメラ)をオープンする

ヘッダ

SDL3/SDL_camera.h

構文

SDL_Camera * SDL_OpenCamera(SDL_CameraID instance_id, const SDL_CameraSpec *spec);

引数

SDL_CameraIDinstance_idカメラデバイスインスタンスID
const SDL_CameraSpec *specデバイスに要求するデータの形式. NULLも可

戻り値

(SDL_Camera *) カメラオブジェクトを戻す. 失敗のときNULLを戻す. SDL_GetError()を呼んで詳細を知ることができる.

詳細

デバイスは指定のスペックでオープンすることができる. そのスペックにハードウェアが直接対応できない場合は, データを要求した形式にシームレスに変換させる. これには画像データの拡大縮小などのオーバーヘッドが存在する場合がある.

デバイスが提供する形式がどのようなものでもよいならば, 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以外を戻すまでポーリングする必要がある. ユーザに明示的に許可を求めない環境(およびユーザが以前にアクセスを許可した場合)は, 許可イベントはすぐに発生する場合もあるが, 数秒後, 数分後, 数時間後もありうる.

スレッドセーフ

この関数はどのスレッドからも安全に呼べる.

バージョン

SDL 3.2.0以降

関連項目

SDL Wikiへのリンク

SDL_OpenCamera - SDL Wiki