# CAMERA_I2CContextSwitch*

## 構文

  `#include <twl/camera.h>`
  `CAMERAResult CAMERA_I2CContextSwitch(CAMERASelect camera, CAMERAContext context);`
  `CAMERAResult CAMERA_I2CContextSwitchAsync(CAMERASelect camera, CAMERAContext context, CAMERACallback callback, void *arg);`

## 引数

camera | コンテキストを変更するカメラ(CAMERA_SELECT_IN/CAMERA_SELECT_OUT)
context | 変更するコンテキスト
callback | 非同期処理が完了した際に呼び出す関数
arg | コールバック関数の呼び出し時の引数

## 返り値

変更可能であったならばCAMERA_RESULT_SUCCESSを返します。

## 説明

カメラ設定のコンテキストを切り替えますします。
コンテキスト切り替えを使用したほうが個別に設定する場合に比べて、高速に設定を切り替えられます。
指定したカメラの設定情報を、指定したコンテキスト(A/B)のものに切り替える処理を行うため、camera に CAMERA_SELECT_NONE を、context に CAMERA_CONTEXT_BOTH を設定することはできません。
`CAMERA_I2CContextSwitchAsync()` は `CAMERA_I2CContextSwitch()` とは異なり、制御をすぐに戻し非同期で実行されます。
処理の完了を確認するにはcallbackを利用してください。
注意：
`CAMERA_I2C*()` 系の関数でカメラ設定を変更した場合、変更内容が反映されるタイミングが 1 フレーム程度ずれる可能性があります。
そのため、キャプチャ中にカメラ設定を変更した場合、アプリが意図したタイミングで変更内容が反映された画像が取得できないことがある点に注意してください。
・キャプチャ画像がずれる現象について
キャプチャ中に本関数で CAMERA_CONTEXT_B から CAMERA_CONTEXT_A へコンテキストを切り替えると、キャプチャ画像がずれる現象が発生する可能性があります。
CAMERA_CONTEXT_B から CAMERA_CONTEXT_A への切り替えを行う場合は、本関数を呼び出す前に `CAMERA_StopCapture()` で キャプチャを停止させた後に本関数を呼び出し、本関数の完了を確認した後に `CAMERA_StartCapture()` で キャプチャを再開するようにしてください。

## 参照

`CAMERASelect、CAMERAContext、CAMERACallback、CAMERAResult`

## 履歴

2009/11/11 キャプチャ画像が稀にずれる現象についての説明追加
2009/03/25 キャプチャ動作中のカメラ設定の変更について追記
2007/10/12 初版