# CAMERA_I2CEffect*

## Syntax

  `#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);`

## Arguments

camera | Camera to configure (`CAMERA_SELECT_IN`, `CAMERA_SELECT_OUT`, or `CAMERA_SELECT_BOTH`).
context | Context to change.
effect | Effect to set.
callback | Function that is called when asynchronous processing has completed.
arg | Arguments when the callback function is invoked.

## Return Values

Returns `CAMERA_RESULT_SUCCESS` if configuration was successful.

## Description

Changes the camera effects.
The `CAMERA_I2CEffectEx` function is used to change the setting with the context specified. The non-Ex functions change the setting for both context A and B. See `CAMERAContext` for information on contexts.
Unlike `CAMERA_I2CEffect`, the `CAMERA_I2CEffectAsync` function returns control immediately and runs asynchronously. Use callback to confirm that processing has completed.
Note: When specifying an effect with this function, you can vary the result of the effect by changing another setting at the same time.

1. When `CAMERA_EFFECT_NEGAFILM` is specified, you can emphasize red tones by raising the color temperature of the white balance (`CAMERA_WHITE_BALANCE_SHADE`).
2. When `CAMERA_EFFECT_SEPIA` is set, a soft impression can be obtained by lowering the sharpness setting.

Note:
If camera settings are changed using any of the `CAMERA_I2C*` functions, the changes may be delayed for approximately one frame before they are applied. If camera settings are changed during image capture, therefore, an application's timing may make it impossible to get an image with the changes applied.
Occasional Shifting of Captured Images
The captured image may shift if this function is called during image capture.
Before calling this function, first stop the image capture with `CAMERA_StopCapture`. Then call this function. After this function completes execution, restart the image capture with `CAMERA_StartCapture`.

## See Also

`CAMERASelect`
`CAMERAContext`
`CAMERAEffect`
`CAMERACallback`
`CAMERAResult`

## Revision History

2009/11/11 Explained occasional shifting of captured images.
2009/03/25 Added information about changing camera settings during capture operations.
2008/10/30 Added that `CAMERA_SELECT_BOTH` can also be specified.
2008/03/17 Added a description of combinations with other settings.
2007/10/12 Initial version.

CONFIDENTIAL