1 /* 2 NITENDO�Ќ���JPEG�w�b�_�t�@�C�� 3 */ 4 #ifdef __cplusplus 5 extern "C" { 6 #endif 7 8 /* 9 ���摜�Əo�̓T�C�Y����掿�t�@�N�^�[���擾/�G���R�[�h�p�� 10 <����> 11 void *pWorkArea [in] ���[�N�G���A�̐擪 12 void *pTex [in] �e�N�X�`���f�[�^�̐擪�A�h���X 13 u16 srcWidth [in] ���摜�̕� 14 u16 srcHeight [in] ���摜�̍��� 15 GXTexFmt texFormat [in] �e�N�X�`���t�H�[�}�b�g 16 u32 TargetSize [in] �v���o�̓T�C�Y 17 u32 *poutputSize [out] ���ۂ̏o�̓T�C�Y 18 u32 *pQFactor [out] �掿�t�@�N�^�[ 19 <�߂�l> 20 0�Ȃ琳��I���A���Ȃ�G���[�R�[�h 21 */ 22 s32 TMCCJPEGEncGetQFactor( 23 void *pWorkArea, 24 void *pTex, 25 u16 srcWidth, 26 u16 srcHeight, 27 GXTexFmt texFormat, 28 u32 TargetSize, 29 u32 *poutputSize, 30 u32 *pQFactor 31 ); 32 33 /* 34 ���摜�Ɖ掿�t�@�N�^�[����o�̓T�C�Y���擾/�G���R�[�h�p�� 35 <����> 36 void *pWorkArea [in] ���[�N�G���A�̐擪 37 void *pTex [in] �e�N�X�`���f�[�^�̐擪�A�h���X 38 u16 srcWidth [in] ���摜�̕� 39 u16 srcHeight [in] ���摜�̍��� 40 GXTexFmt texFormat [in] �e�N�X�`���t�H�[�}�b�g 41 u32 *poutputSize [out] ���ۂ̏o�̓T�C�Y 42 u32 QFactor [in] �掿�t�@�N�^�[ 43 <�߂�l> 44 0�Ȃ琳��I���A���Ȃ�G���[�R�[�h 45 */ 46 s32 TMCCJPEGEncGetOutputSize( 47 void *pWorkArea, 48 void *pTex, 49 u16 srcWidth, 50 u16 srcHeight, 51 GXTexFmt texFormat, 52 u32 *poutputSize, 53 u32 QFactor 54 ); 55 56 /* 57 �G���R�[�_/�G���R�[�h�p�� 58 <����> 59 void *pWorkArea [in] ���[�N�G���A�̐擪 60 void *pTex [in] �e�N�X�`���f�[�^�̐擪�A�h���X 61 u16 srcWidth [in] ���摜�̕� 62 u16 srcHeight [in] ���摜�̍��� 63 GXTexFmt texFormat [in] �e�N�X�`���t�H�[�}�b�g 64 u32 QFactor [in] �掿�t�@�N�^�[ 65 void *pJpegBuffer [out] �o�̓o�b�t�@ 66 u32 jpegBufferSize [in] �o�̓o�b�t�@�T�C�Y 67 u32 *poutputSize [out] ���ۂ̏o�̓T�C�Y 68 <�߂�l> 69 0�Ȃ琳��I���A���Ȃ�G���[�R�[�h 70 */ 71 s32 TMCCJPEGEncEncode( 72 void *pWorkArea, 73 void *pTex, 74 u16 srcWidth, 75 u16 srcHeight, 76 GXTexFmt texFormat, 77 u32 QFactor, 78 void *pJpegBuffer, 79 u32 jpegBufferSize, 80 u32 *poutputSize 81 ); 82 83 /* 84 EXIF�^�O1(���C���C���[�W�p)/�f�R�[�h�p�\���� 85 */ 86 typedef struct { 87 s8 *ImageDescription; /* �摜�^�C�g��(ASCII) */ 88 s8 *Make; /* �摜���͋@��̃��[�J�[��(ASCII) */ 89 s8 *Model; /* �摜���͋@��̃��f����(ASCII) */ 90 u16 Orientation; /* �摜����(�����Ȃ�16�r�b�g����) */ 91 u32 XResolution[2]; /* �摜�̕��̉x(�����Ȃ�32�r�b�g����,[0]/[1]) */ 92 u32 YResolution[2]; /* �摜�̍����̉x(�����Ȃ�32�r�b�g����,[0]/[1]) */ 93 u16 ResolutionUnit; /* �摜�̕��ƍ����̉x�̒P��(�����Ȃ�16�r�b�g����) */ 94 u16 TransferFunction[3][256]; /* �Đ��K���J�[�u����(�����Ȃ�16�r�b�g���� 3*256) */ 95 s8 DateTime[20]; /* �t�@�C���ύX����(ASCII"YYYY:MM:DD HH:MM:SS") */ 96 u16 YCbCrPositioning; /* YCC�̉�f�\��<Y��C�̈ʒu>(�����Ȃ�16�r�b�g����) */ 97 u32 ExifIFDPointer; /* Exif�^�O */ 98 s8 ExifVersion[4]; /* Exif�o�[�W����(ASCII,NULL�����Ȃ�) */ 99 u8 ComponentsConfiguration[4]; /* �e�R���|�[�l���g�̈Ӗ�(�����Ȃ�8�r�b�g����) */ 100 s8 FlashPixVersion[4]; /* �Ή��t���b�V���s�b�N�X�o�[�W����(ASCII,NULL�����Ȃ�) */ 101 u16 ColorSpace; /* �F��ԏ��(�����Ȃ�16�r�b�g����) */ 102 u32 PixelXDimension; /* �����摜��(�����Ȃ�32(16)�r�b�g����) */ 103 u32 PixelYDimension; /* �����摜����(�����Ȃ�32(16)�r�b�g����) */ 104 } TMCCJPEGExifIFD0Info; 105 106 /* 107 EXIF�^�O1(�T���l�C���C���[�W�p)/�f�R�[�h�p�\���� 108 */ 109 typedef struct{ 110 u16 Compression; /* ���k�̎��(�����Ȃ�16�r�b�g����) */ 111 u32 XResolution[2]; /* �摜�̕��̉x(�����Ȃ�32�r�b�g����,[0]/[1]) */ 112 u32 YResolution[2]; /* �摜�̍����̉x(�����Ȃ�32�r�b�g����,[0]/[1]) */ 113 u16 ResolutionUnit; /* �摜�̕��ƍ����̉x�̒P��(�����Ȃ�16�r�b�g����) */ 114 u32 JPEGInterchangeFormat; /* JPEG��SOI�ւ̃I�t�Z�b�g(�����Ȃ�32�r�b�g����) */ 115 u32 JPEGInterchangeFormatLength; /* JPEG�f�[�^�̃o�C�g��(�����Ȃ�32�r�b�g����) */ 116 } TMCCJPEGExifIFD1Info; 117 118 /* 119 EXIF�^�O�p�����[�^/�f�R�[�h�p�\���� 120 */ 121 typedef struct { 122 TMCCJPEGExifIFD0Info image; /*���C���C���[�W�pTAG�f�[�^*/ 123 TMCCJPEGExifIFD1Info thumb; /*�T���l�C���C���[�W�pTAG�f�[�^*/ 124 } TMCCJPEGExifInfo; 125 126 /* 127 EXIF�f�[�^�擾/�f�R�[�h�p�� 128 <����> 129 void *pWorkArea [in] ���[�N�G���A�̐擪�A�h���X 130 void *pJpegStream [in] JPEG�f�[�^�̐擪�A�h���X 131 u32 jpegStreamSize [in] JPEG�f�[�^�̃T�C�Y 132 TMCCJPEGExifInfo *exifInfo [out] Exif��� 133 <�߂�l> 134 0�Ȃ琳��I���A���Ȃ�G���[�R�[�h 135 */ 136 137 s32 TMCCJPEGDecGetExif( 138 void *pWorkArea, 139 void *pJpegStream, 140 u32 jpegStreamSize, 141 TMCCJPEGExifInfo *exifInfo 142 ); 143 144 145 /* 146 �����摜�T�C�Y���/�f�R�[�h�p�\���� 147 */ 148 typedef struct { 149 u16 width; /* �����摜�̕� */ 150 u16 height; /* �����摜�̍��� */ 151 u32 texBufferSize; /* �e�N�X�`���̏o�̓T�C�Y */ 152 } TMCCJPEGJpegSize; 153 154 /* 155 �摜�T�C�Y�擾/�f�R�[�h�p�� 156 <����> 157 void *pWorkArea [in] ���[�N�G���A�̐擪�A�h���X 158 void *pJpegStream [in] JPEG�f�[�^�̐擪�A�h���X 159 u32 jpegStreamSize [in] JPEG�f�[�^�̃T�C�Y 160 GXTexFmt texFormat [in] �e�N�X�`���t�H�[�}�b�g 161 s32 resolution [in] �x�k���p�����[�^ 162 u8 thumbnail [in] �T���l�C���f�[�^��L�����邩���Ȃ� 163 TMCCJPEGJpegSize *jpegSize [out] �摜�T�C�Y���\���̃|�C���^ 164 <�߂�l> 165 0�Ȃ琳��I���A���Ȃ�G���[�R�[�h 166 */ 167 s32 TMCCJPEGDecGetSize( 168 void *pWorkArea, 169 void *pJpegStream, 170 u32 jpegStreamSize, 171 GXTexFmt texFormat, 172 s32 resolution, 173 u8 thumbnail, 174 TMCCJPEGJpegSize *jpegSize 175 ); 176 177 /* 178 �摜�T�C�Y�擾/�f�R�[�h�p�� 179 <����> 180 void *pWorkArea [in] ���[�N�G���A�̐擪�A�h���X 181 void *pJpegStream [in] JPEG�f�[�^�̐擪�A�h���X 182 u32 jpegStreamSize [in] JPEG�f�[�^�̃T�C�Y 183 GXTexFmt texFormat [in] �e�N�X�`���t�H�[�}�b�g 184 s32 resolution [in] �x�k���p�����[�^ 185 u16 srcX, [in] �L���̈�̍���x���W 186 u16 srcY, [in] �L���̈�̍���y���W 187 u16 srcWidth, [in] �L���̈�̕� 188 u16 srcHeight [in] �L���̈�̍��� 189 TMCCJPEGJpegSize *jpegSize [out] �摜�T�C�Y���\���̃|�C���^ 190 <�߂�l> 191 0�Ȃ琳��I���A���Ȃ�G���[�R�[�h 192 */ 193 s32 TMCCJPEGDecGetSizeEx( 194 void *pWorkArea, 195 void *pJpegStream, 196 u32 jpegStreamSize, 197 GXTexFmt texFormat, 198 s32 resolution, 199 u16 srcX, 200 u16 srcY, 201 u16 srcWidth, 202 u16 srcHeight, 203 TMCCJPEGJpegSize *jpegSize 204 ); 205 206 /* 207 �f�R�[�_/�f�R�[�h�p�� 208 <����> 209 void *pWorkArea [in] ���[�N�G���A�̐擪�A�h���X 210 void *pJpegStream [in] JPEG�f�[�^�̐擪�A�h���X 211 u32 jpegStreamSize [in] JPEG�f�[�^�̃T�C�Y 212 void *pTexBuffer [out]�e�N�X�`���o�b�t�@�̐擪�A�h���X 213 u32 texBufferSize [in] �e�N�X�`���o�b�t�@�̃T�C�Y 214 GXTexFmt texFormat [in] �e�N�X�`���t�H�[�}�b�g 215 s32 resolution [in] �x�k���p�����[�^ 216 u8 thumbnail [in] �T���l�C����L�����邩���Ȃ� 217 <�߂�l> 218 0�Ȃ琳��I���A���Ȃ�G���[�R�[�h 219 */ 220 s32 TMCCJPEGDecDecode( 221 void *pWorkArea, 222 void *pJpegStream, 223 u32 jpegStreamSize, 224 void *pTexBuffer, 225 u32 texBufferSize, 226 GXTexFmt texFormat, 227 s32 resolution, 228 u8 thumbnail 229 ); 230 231 /* 232 �f�R�[�_/�f�R�[�h�p�� 233 <����> 234 void *pWorkArea [in] ���[�N�G���A�̐擪�A�h���X 235 void *pJpegStream [in] JPEG�f�[�^�̐擪�A�h���X 236 u32 jpegStreamSize [in] JPEG�f�[�^�̃T�C�Y 237 void *pTexBuffer [out]�e�N�X�`���o�b�t�@�̐擪�A�h���X 238 u32 texBufferSize [in] �e�N�X�`���o�b�t�@�̃T�C�Y 239 GXTexFmt texFormat [in] �e�N�X�`���t�H�[�}�b�g 240 s32 resolution [in] �x�k���p�����[�^ 241 u16 srcX, [in] �L���̈�̍���x���W 242 u16 srcY, [in] �L���̈�̍���y���W 243 u16 srcWidth, [in] �L���̈�̕� 244 u16 srcHeight [in] �L���̈�̍��� 245 <�߂�l> 246 0�Ȃ琳��I���A���Ȃ�G���[�R�[�h 247 */ 248 s32 TMCCJPEGDecDecodeEx( 249 void *pWorkArea, 250 void *pJpegStream, 251 u32 jpegStreamSize, 252 void *pTexBuffer, 253 u32 texBufferSize, 254 GXTexFmt texFormat, 255 s32 resolution, 256 u16 srcX, 257 u16 srcY, 258 u16 srcWidth, 259 u16 srcHeight 260 ); 261 262 /*! 263 �{���C�u�����̃o�[�W���������擾���� 264 <����> 265 �Ȃ� 266 <�߂�l> 267 �o�[�W������� 268 */ 269 u32 TMCCJPEGGetVer( void ); 270 271 /* 272 �G���[�R�[�h 273 */ 274 #define TMCC_JPEG_OK 0x00 /* ����I�� */ 275 #define TMCC_JPEG_OPT_ERR -0x01 /* ���[�U�[�I�v�V�����G���[ */ 276 #define TMCC_JPEG_NG -0x02 /* �ُ�I�� */ 277 #define TMCC_JPEG_ENC_BUF_OVER -0x03 /* Encoder���̏o�̓T�C�Y���� */ 278 #define TMCC_JPEG_TEXT_ERR -0x04 /* �e�N�X�`���[�t�H�[�}�b�g�G���[ */ 279 #define TMCC_JPEG_ERR_SOF -0x10 /* SOF �}�[�J�G���[ */ 280 #define TMCC_JPEG_ERR_SOI -0x20 /* SOI �}�[�J�G���[ */ 281 #define TMCC_JPEG_ERR_EOI -0x21 /* EOI �}�[�J�G���[ */ 282 #define TMCC_JPEG_ERR_SOS -0x22 /* SOS �}�[�J�G���[ */ 283 #define TMCC_JPEG_ERR_RSTm -0x23 /* RSTm�}�[�J�G���[ */ 284 #define TMCC_JPEG_ERR_NOMC -0x2f /* �Ή��s�}�[�J�o�� */ 285 #define TMCC_JPEG_ERR_DHT -0x40 /* DHT �G���[ */ 286 #define TMCC_JPEG_ERR_DQT -0x41 /* DQT �G���[ */ 287 #define TMCC_JPEG_ERR_DRI -0x42 /* DRI �G���[ */ 288 #define TMCC_JPEG_ERR_DNL -0x43 /* DNL �G���[ */ 289 #define TMCC_JPEG_ERR_COM -0x44 /* COM �G���[ */ 290 #define TMCC_JPEG_ERR_APPn -0x45 /* APP0�`F �G���[ */ 291 #define TMCC_JPEG_ERR_FHEADER -0x50 /* SOF �w�b�_�G���[ */ 292 #define TMCC_JPEG_ERR_SHEADER -0x51 /* SOS �w�b�_�G���[ */ 293 #define TMCC_JPEG_ERR_BITSTREAM -0x64 /* JPEG�X�g���[���G���[ */ 294 #define TMCC_JPEG_ERR_FORMAT -0x70 /* JPEG���Ή��t�H�[�}�b�g�G���[ */ 295 #define TMCC_JPEG_ERR_EXIF_BUFFER -0x91 /* EXIF�o�b�t�@�G���[ */ 296 #define TMCC_JPEG_ERR_BUFFER -0x90 /* JPEG�o�b�t�@�G���[ */ 297 #define TMCC_JPEG_ERR_NO_THUMBNAIL -0xA0 /* �X�g���[������Thumbnail�����݂��Ȃ� */ 298 #define TMCC_JPEG_ERR_EXIF_FORMAT -0xA1 /* EXIF�̍\���̌�� */ 299 #define TMCC_JPEG_RET_ERR_USRFUNC -0xF0 /* ���[�U��`���G���[ */ 300 #define TMCC_JPEG_ERR_JPEG_COPY_BUFFER -0xF1 /* �f�[�^�R�s�[���̃G���[ */ 301 302 /* 303 ���̑��}�N���萔 304 */ 305 #define TMCC_JPEG_WORKAREA_SIZE 0x1C00 /* 7k Byte */ 306 #define TMCC_JPEG_JPEGBUFFER_MINIMAM_SIZE 0x25F /* JPEG�w�b�_�{�}�[�J�̃T�C�Y */ 307 #define TMCC_JPEG_VERSION_NO 0x00010900 /* �o�[�W������� */ 308 309 #ifdef __cplusplus 310 } 311 #endif 312