# CAMERA_I2CEffect*

## 構文

  `#include <twl/camera.h>`
  `CAMERAResult CAMERA_I2CEffect(CAMERASelect camera, CAMERAEffect effect);`
  `CAMERAResult CAMERA_I2CEffectAsync(CAMERASelect camera, CAMERAEffect effect, CAMERACallback callback, void *arg);`
  `CAMERAResult CAMERA_I2CEffectEx(CAMERASelect camera, CAMERAContext context, CAMERAEffect effect);`
  `CAMERAResult CAMERA_I2CEffectExAsync(CAMERASelect camera, CAMERAContext context, CAMERAEffect effect, CAMERACallback callback, void *arg);`

## 引数

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

## 返り値

設定に成功したらCAMERA_RESULT_SUCCESSを返します。

## 説明

カメラのエフェクトを変更します。
`CAMERA_I2CEffectEx()` は、コンテキストを指定して設定を変更する場合に使用します。
Exなしの関数は、コンテキストA/B両方の設定を変更します。
コンテキストについては、`CAMERAContext` を参照してください。
`CAMERA_I2CEffectAsync()` は `CAMERA_I2CEffect()` とは異なり、制御をすぐに戻し非同期で実行されます。
処理の完了を確認するにはcallbackを利用してください。
（注意）本関数でエフェクトを指定した場合、合わせて他の設定も変更することでエフェクトの効果が変化します。

1. CAMERA_EFFECT_NEGAFILM を設定した際は、WhiteBalance の色温度を上げる（CAMERA_WHITE_BALANCE_SHADE 側にする）ことで赤みを強調できます。
2. CAMERA_EFFECT_SEPIA を設定した際は、Sharpness も低く設定すると柔らかな印象を得ることができます。

注意：
`CAMERA_I2C*()` 系の関数でカメラ設定を変更した場合、変更内容が反映されるタイミングが 1 フレーム程度ずれる可能性があります。
そのため、キャプチャ中にカメラ設定を変更した場合、アプリが意図したタイミングで変更内容が反映された画像が取得できないことがある点に注意してください。
・キャプチャ画像がずれる現象について
キャプチャ中に本関数を呼び出すと、キャプチャ画像がずれる現象が発生する可能性があります。
本関数を呼び出す前に `CAMERA_StopCapture()` でキャプチャを停止させた後に 本関数を呼び出し、本関数の完了を確認した後に `CAMERA_StartCapture()` で キャプチャを再開するようにしてください。

## 参照

`CAMERASelect、CAMERAContext、CAMERAEffect、CAMERACallback、CAMERAResult`

## 履歴

2009/11/11 キャプチャ画像が稀にずれる現象についての説明追加
2009/03/25 キャプチャ動作中のカメラ設定の変更について追記
2008/10/30 CAMERA_SELECT_BOTHも指定できることを追記
2008/03/17 他の設定との組み合わせについての説明追加
2007/10/12 初版