
#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 を返します。
2009/06/29 内部で呼び出す SSP の関数変更
2009/04/30 内部で呼び出す SSP の関数変更
2009/04/16 内部のエンコードに失敗した場合の動作について追記
2008/12/05 初版