/* NITENDO社向けJPEGヘッダファイル */ #ifdef __cplusplus extern "C" { #endif /* 元画像と出力サイズから画質ファクターを取得/エンコード用関数 <引数> void *pWorkArea [in] ワークエリアの先頭 void *pTex [in] テクスチャデータの先頭アドレス u16 srcWidth [in] 元画像の幅 u16 srcHeight [in] 元画像の高さ GXTexFmt texFormat [in] テクスチャフォーマット u32 TargetSize [in] 要求出力サイズ u32 *poutputSize [out] 実際の出力サイズ u32 *pQFactor [out] 画質ファクター <戻り値> 0なら正常終了、負ならエラーコード */ s32 TMCCJPEGEncGetQFactor( void *pWorkArea, void *pTex, u16 srcWidth, u16 srcHeight, GXTexFmt texFormat, u32 TargetSize, u32 *poutputSize, u32 *pQFactor ); /* 元画像と画質ファクターから出力サイズを取得/エンコード用関数 <引数> void *pWorkArea [in] ワークエリアの先頭 void *pTex [in] テクスチャデータの先頭アドレス u16 srcWidth [in] 元画像の幅 u16 srcHeight [in] 元画像の高さ GXTexFmt texFormat [in] テクスチャフォーマット u32 *poutputSize [out] 実際の出力サイズ u32 QFactor [in] 画質ファクター <戻り値> 0なら正常終了、負ならエラーコード */ s32 TMCCJPEGEncGetOutputSize( void *pWorkArea, void *pTex, u16 srcWidth, u16 srcHeight, GXTexFmt texFormat, u32 *poutputSize, u32 QFactor ); /* エンコーダ/エンコード用関数 <引数> void *pWorkArea [in] ワークエリアの先頭 void *pTex [in] テクスチャデータの先頭アドレス u16 srcWidth [in] 元画像の幅 u16 srcHeight [in] 元画像の高さ GXTexFmt texFormat [in] テクスチャフォーマット u32 QFactor [in] 画質ファクター void *pJpegBuffer [out] 出力バッファ u32 jpegBufferSize [in] 出力バッファサイズ u32 *poutputSize [out] 実際の出力サイズ <戻り値> 0なら正常終了、負ならエラーコード */ s32 TMCCJPEGEncEncode( void *pWorkArea, void *pTex, u16 srcWidth, u16 srcHeight, GXTexFmt texFormat, u32 QFactor, void *pJpegBuffer, u32 jpegBufferSize, u32 *poutputSize ); /* EXIFタグ1(メインイメージ用)/デコード用構造体 */ typedef struct { s8 *ImageDescription; /* 画像タイトル(ASCII) */ s8 *Make; /* 画像入力機器のメーカー名(ASCII) */ s8 *Model; /* 画像入力機器のモデル名(ASCII) */ u16 Orientation; /* 画像方向(符号なし16ビット整数) */ u32 XResolution[2]; /* 画像の幅の解像度(符号なし32ビット分数,[0]/[1]) */ u32 YResolution[2]; /* 画像の高さの解像度(符号なし32ビット分数,[0]/[1]) */ u16 ResolutionUnit; /* 画像の幅と高さの解像度の単位(符号なし16ビット整数) */ u16 TransferFunction[3][256]; /* 再生階調カーブ特性(符号なし16ビット整数 3*256) */ s8 DateTime[20]; /* ファイル変更日時(ASCII"YYYY:MM:DD HH:MM:SS") */ u16 YCbCrPositioning; /* YCCの画素構成(符号なし16ビット整数) */ u32 ExifIFDPointer; /* Exifタグ */ s8 ExifVersion[4]; /* Exifバージョン(ASCII,NULL文字なし) */ u8 ComponentsConfiguration[4]; /* 各コンポーネントの意味(符号なし8ビット整数) */ s8 FlashPixVersion[4]; /* 対応フラッシュピックスバージョン(ASCII,NULL文字なし) */ u16 ColorSpace; /* 色空間情報(符号なし16ビット整数) */ u32 PixelXDimension; /* 実効画像幅(符号なし32(16)ビット整数) */ u32 PixelYDimension; /* 実効画像高さ(符号なし32(16)ビット整数) */ } TMCCJPEGExifIFD0Info; /* EXIFタグ1(サムネイルイメージ用)/デコード用構造体 */ typedef struct{ u16 Compression; /* 圧縮の種類(符号なし16ビット整数) */ u32 XResolution[2]; /* 画像の幅の解像度(符号なし32ビット分数,[0]/[1]) */ u32 YResolution[2]; /* 画像の高さの解像度(符号なし32ビット分数,[0]/[1]) */ u16 ResolutionUnit; /* 画像の幅と高さの解像度の単位(符号なし16ビット整数) */ u32 JPEGInterchangeFormat; /* JPEGのSOIへのオフセット(符号なし32ビット整数) */ u32 JPEGInterchangeFormatLength; /* JPEGデータのバイト数(符号なし32ビット整数) */ } TMCCJPEGExifIFD1Info; /* EXIFタグパラメータ/デコード用構造体 */ typedef struct { TMCCJPEGExifIFD0Info image; /*メインイメージ用TAGデータ*/ TMCCJPEGExifIFD1Info thumb; /*サムネイルイメージ用TAGデータ*/ } TMCCJPEGExifInfo; /* EXIFデータ取得/デコード用関数 <引数> void *pWorkArea [in] ワークエリアの先頭アドレス void *pJpegStream [in] JPEGデータの先頭アドレス u32 jpegStreamSize [in] JPEGデータのサイズ TMCCJPEGExifInfo *exifInfo [out] Exif情報 <戻り値> 0なら正常終了、負ならエラーコード */ s32 TMCCJPEGDecGetExif( void *pWorkArea, void *pJpegStream, u32 jpegStreamSize, TMCCJPEGExifInfo *exifInfo ); /* 復元画像サイズ情報/デコード用構造体 */ typedef struct { u16 width; /* 復元画像の幅 */ u16 height; /* 復元画像の高さ */ u32 texBufferSize; /* テクスチャの出力サイズ */ } TMCCJPEGJpegSize; /* 画像サイズ取得/デコード用関数 <引数> void *pWorkArea [in] ワークエリアの先頭アドレス void *pJpegStream [in] JPEGデータの先頭アドレス u32 jpegStreamSize [in] JPEGデータのサイズ GXTexFmt texFormat [in] テクスチャフォーマット s32 resolution [in] 解像度縮小パラメータ u8 thumbnail [in] サムネイルデータを伸張するかいなか TMCCJPEGJpegSize *jpegSize [out] 画像サイズ情報構造体ポインタ <戻り値> 0なら正常終了、負ならエラーコード */ s32 TMCCJPEGDecGetSize( void *pWorkArea, void *pJpegStream, u32 jpegStreamSize, GXTexFmt texFormat, s32 resolution, u8 thumbnail, TMCCJPEGJpegSize *jpegSize ); /* 画像サイズ取得/デコード用関数 <引数> void *pWorkArea [in] ワークエリアの先頭アドレス void *pJpegStream [in] JPEGデータの先頭アドレス u32 jpegStreamSize [in] JPEGデータのサイズ GXTexFmt texFormat [in] テクスチャフォーマット s32 resolution [in] 解像度縮小パラメータ u16 srcX, [in] 伸張領域の左上x座標 u16 srcY, [in] 伸張領域の左上y座標 u16 srcWidth, [in] 伸張領域の幅 u16 srcHeight [in] 伸張領域の高さ TMCCJPEGJpegSize *jpegSize [out] 画像サイズ情報構造体ポインタ <戻り値> 0なら正常終了、負ならエラーコード */ s32 TMCCJPEGDecGetSizeEx( void *pWorkArea, void *pJpegStream, u32 jpegStreamSize, GXTexFmt texFormat, s32 resolution, u16 srcX, u16 srcY, u16 srcWidth, u16 srcHeight, TMCCJPEGJpegSize *jpegSize ); /* デコーダ/デコード用関数 <引数> void *pWorkArea [in] ワークエリアの先頭アドレス void *pJpegStream [in] JPEGデータの先頭アドレス u32 jpegStreamSize [in] JPEGデータのサイズ void *pTexBuffer [out]テクスチャバッファの先頭アドレス u32 texBufferSize [in] テクスチャバッファのサイズ GXTexFmt texFormat [in] テクスチャフォーマット s32 resolution [in] 解像度縮小パラメータ u8 thumbnail [in] サムネイルを伸張するかいなか <戻り値> 0なら正常終了、負ならエラーコード */ s32 TMCCJPEGDecDecode( void *pWorkArea, void *pJpegStream, u32 jpegStreamSize, void *pTexBuffer, u32 texBufferSize, GXTexFmt texFormat, s32 resolution, u8 thumbnail ); /* デコーダ/デコード用関数 <引数> void *pWorkArea [in] ワークエリアの先頭アドレス void *pJpegStream [in] JPEGデータの先頭アドレス u32 jpegStreamSize [in] JPEGデータのサイズ void *pTexBuffer [out]テクスチャバッファの先頭アドレス u32 texBufferSize [in] テクスチャバッファのサイズ GXTexFmt texFormat [in] テクスチャフォーマット s32 resolution [in] 解像度縮小パラメータ u16 srcX, [in] 伸張領域の左上x座標 u16 srcY, [in] 伸張領域の左上y座標 u16 srcWidth, [in] 伸張領域の幅 u16 srcHeight [in] 伸張領域の高さ <戻り値> 0なら正常終了、負ならエラーコード */ s32 TMCCJPEGDecDecodeEx( void *pWorkArea, void *pJpegStream, u32 jpegStreamSize, void *pTexBuffer, u32 texBufferSize, GXTexFmt texFormat, s32 resolution, u16 srcX, u16 srcY, u16 srcWidth, u16 srcHeight ); /*! 本ライブラリのバージョン情報を取得する <引数> なし <戻り値> バージョン情報 */ u32 TMCCJPEGGetVer( void ); /* エラーコード */ #define TMCC_JPEG_OK 0x00 /* 正常終了 */ #define TMCC_JPEG_OPT_ERR -0x01 /* ユーザーオプションエラー */ #define TMCC_JPEG_NG -0x02 /* 異常終了 */ #define TMCC_JPEG_ENC_BUF_OVER -0x03 /* Encoder時の出力サイズ制限 */ #define TMCC_JPEG_TEXT_ERR -0x04 /* テクスチャーフォーマットエラー */ #define TMCC_JPEG_ERR_SOF -0x10 /* SOF マーカエラー */ #define TMCC_JPEG_ERR_SOI -0x20 /* SOI マーカエラー */ #define TMCC_JPEG_ERR_EOI -0x21 /* EOI マーカエラー */ #define TMCC_JPEG_ERR_SOS -0x22 /* SOS マーカエラー */ #define TMCC_JPEG_ERR_RSTm -0x23 /* RSTmマーカエラー */ #define TMCC_JPEG_ERR_NOMC -0x2f /* 対応不可マーカ出現 */ #define TMCC_JPEG_ERR_DHT -0x40 /* DHT エラー */ #define TMCC_JPEG_ERR_DQT -0x41 /* DQT エラー */ #define TMCC_JPEG_ERR_DRI -0x42 /* DRI エラー */ #define TMCC_JPEG_ERR_DNL -0x43 /* DNL エラー */ #define TMCC_JPEG_ERR_COM -0x44 /* COM エラー */ #define TMCC_JPEG_ERR_APPn -0x45 /* APP0〜F エラー */ #define TMCC_JPEG_ERR_FHEADER -0x50 /* SOF ヘッダエラー */ #define TMCC_JPEG_ERR_SHEADER -0x51 /* SOS ヘッダエラー */ #define TMCC_JPEG_ERR_BITSTREAM -0x64 /* JPEGストリームエラー */ #define TMCC_JPEG_ERR_FORMAT -0x70 /* JPEG未対応フォーマットエラー */ #define TMCC_JPEG_ERR_EXIF_BUFFER -0x91 /* EXIFバッファエラー */ #define TMCC_JPEG_ERR_BUFFER -0x90 /* JPEGバッファエラー */ #define TMCC_JPEG_ERR_NO_THUMBNAIL -0xA0 /* ストリーム内にThumbnailが存在しない */ #define TMCC_JPEG_ERR_EXIF_FORMAT -0xA1 /* EXIFの構成の誤り */ #define TMCC_JPEG_RET_ERR_USRFUNC -0xF0 /* ユーザ定義関数エラー */ #define TMCC_JPEG_ERR_JPEG_COPY_BUFFER -0xF1 /* データコピー中のエラー */ /* その他マクロ定数 */ #define TMCC_JPEG_WORKAREA_SIZE 0x1C00 /* 7k Byte */ #define TMCC_JPEG_JPEGBUFFER_MINIMAM_SIZE 0x25F /* JPEGヘッダ+マーカのサイズ */ #define TMCC_JPEG_VERSION_NO 0x00010900 /* バージョン情報 */ #ifdef __cplusplus } #endif