# SSP_StartJpegEncoder

## 構文

    u32 SSP_StartJpegEncoder(const void* src, u8 *dst, u32 limit, u8 *wrk, u32 width, u32 height, u32 quality, u32 sampling, u32 option);

## 引数

src | エンコードする画像データ (RGB555 もしくは YUV422)。4バイトアライメントでなければなりません。
dst | エンコード結果を格納するバッファ
limit | dstのサイズ このサイズを超えるとエンコードに失敗します。
wrk | 作業用バッファ。4バイトアライメントでなければなりません。 `SSP_GetJpegEncoderBufferSize()`で必要なサイズが計算できます。
width | エンコードする画像の横幅(pixel)
height | エンコードする画像の縦幅(pixel)
quality | エンコードのクオリティ 1〜100 まで指定可能であり、100 に近づくほど高画質になりサイズが大きくなります。
sampling | 主画像の出力形式 (SSP_JPEG_OUTPUT_YUV444 / SSP_JPEG_OUTPUT_YUV420 / SSP_JPEG_OUTPUT_YUV422)
option | エンコードオプション (SSP_JPEG_RGB555 / SSP_JPEG_YUV422 / SSP_JPEG_THUMBNAIL)

## 返り値

成功ならば、生成されたJPEGファイルのサイズが返ってくる。
失敗した場合は 0 が返る。

## 説明

画像データをJPEGファイルにエンコードします。
エンコードする画像データは RGB555、YUV422 が使用できます。YUV422 の画像データを `src` に指定した場合は、必ず `option` に `SSP_JPEG_YUV422` を指定するようにしてください。
サムネイル付きのエンコードを行いたい場合は、`SSP_JPEG_THUMBNAIL` を `option` に指定する必要があります。
そのため、YUV422 の画像をサムネイル付きでエンコードする場合は、`SSP_JPEG_YUV422|SSP_JPEG_THUMBNAIL` を `option` に指定します。
本関数でエンコードできる画像の縦横サイズは `sampling` の値によって変わります。
`SSP_JPEG_OUTPUT_YUV444` を指定した場合は、縦横サイズがそれぞれ8の倍数である必要があります。
`SSP_JPEG_OUTPUT_YUV420` を指定した場合は、縦横サイズがそれぞれ16の倍数である必要があります。
`SSP_JPEG_OUTPUT_YUV422` を指定した場合は、縦サイズが8の倍数、横サイズが16の倍数である必要があります。
注意：
本関数は完了後にエンコードの成功、失敗問わず、`SSP_SetJpegEncoderDateTime(),SSP_SetJpegEncoderDateTimeNow(),SSP_SetJpegEncoderMakerNote(),SSP_SetJpegEncoderMakerNoteEx()` で設定した値はクリアされます。
また、本関数は事前に `SSP_SetJpegEncoderDateTime()` もしくは `SSP_SetJpegEncoderDateTimeNow()` を呼び出していない場合、内部で `SSP_GetDateTime()` が呼ばれます。

## 参照

`SSP_SetJpegEncoderDateTime, SSP_SetJpegEncoderDateTimeNow, SSP_SetJpegEncoderMakerNote, SSP_SetJpegEncoderMakerNoteEx, SSP_GetDateTime, SSP_GetJpegEncoderBufferSize`

## 履歴

2009/07/16 関数の内部動作にあった説明に変更
2009/04/28 アライメントの制限について追記
2008/11/04 関数の完了後にクリアされる値について追記
2008/10/15 エンコードできる画像の縦横サイズの制限について追記
2008/10/09 RSFファイルの設定について追記
2008/09/15 初版