TCL_EncodeAndWritePicture

# TCL_EncodeAndWritePicture(Ex)

## 定義

  `#include <twl/tcl.h>`

      TCLResult TCL_EncodeAndWritePicture( TCLAccessor* pAccessor ,
                                           const void* imageBuffer ,
                                           u8* jpegBuffer ,
                                           u32 jpegBufferSize ,
                                           u8* workBuffer ,
                                           u32 quality ,
                                           u32 option ,
                                           FSResult* pFSResult );

      TCLResult TCL_EncodeAndWritePictureEx( TCLAccessor* pAccessor ,
                                             const void* imageBuffer ,
                                             u8* jpegBuffer ,
                                             u32 jpegBufferSize ,
                                             u8* workBuffer ,
                                             u32 quality ,
                                             u32 option ,
                                             u8* makerNoteBuffer ,
                                             u16 makerNoteBufferSize ,
                                             FSResult* pFSResult );

## 引数

pAccessor | アクセサ
imageBuffer | 元画像バッファ
jpegBuffer | jpeg画像バッファ
jpegBufferSize | jpeg画像バッファサイズ
workBuffer | jpegエンコードワークバッファ
quality | jpegエンコードクオリティ
option | jpegエンコードオプション
makerNoteBuffer | ユーザメーカーノートバッファ
makerNoteBufferSize | ユーザメーカーノートバッファサイズ
pFSResult | 関数内部で各種FS関数にエラーが発生した場合の処理結果

## 返り値

処理結果

## 説明

元画像をjpegエンコードし、保存します。内部で `SSP_StartJpegEncoderFast` を呼び出します。

元画像はVGAサイズである必要があります。

ワークバッファは `TCL_GetJpegEncoderBufferSize` で求めたサイズ分確保する必要があります。

エンコードに成功後、jpeg画像の次回保存先パスへの保存と管理ファイルの上書き処理を行います。

この関数から `TCL_RESULT_ERROR_NO_NEXT_INDEX` が返って来た場合、パス上の制約によってこれ以上保存できません。これは `TCL_CalcNumEnableToTakePictures` が0より大きな値を示していても同様ですので注意が必要です。

アクセサは `TCL_LoadTable` や `TCL_CreateTable` などで初期化されている必要があります。

jpegBufferSize が小さい、quality が大きい等の理由でエンコード処理に失敗した場合、関数内部で自動的に quality を下げて エンコードが成功するまでリトライし続けます。
quality を限界まで下げても成功しなかった場合は TCL_RESULT_ERROR_OTHER を返します。

## 参照

`TCL_GetJpegEncoderBufferSize`

## 履歴

2009/06/29 内部で呼び出す SSP の関数変更
2009/04/30 内部で呼び出す SSP の関数変更
2009/04/16 内部のエンコードに失敗した場合の動作について追記
2008/12/05 初版