113d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang/*
213d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang * Copyright Samsung Electronics Co.,LTD.
313d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang * Copyright (C) 2010 The Android Open Source Project
413d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang *
513d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang * Licensed under the Apache License, Version 2.0 (the "License");
613d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang * you may not use this file except in compliance with the License.
713d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang * You may obtain a copy of the License at
813d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang *
913d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang *     http://www.apache.org/licenses/LICENSE-2.0
1013d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang *
1113d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang * Unless required by applicable law or agreed to in writing, software
1213d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang * distributed under the License is distributed on an "AS IS" BASIS,
1313d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1413d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang * See the License for the specific language governing permissions and
1513d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang * limitations under the License.
1613d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang */
1713d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang#ifndef EXYNOS_EXIF_H_
1813d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang#define EXYNOS_EXIF_H_
1913d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang
2013d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang#include <math.h>
2113d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang
2213d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang#define EXIF_LOG2(x)                    (log((double)(x)) / log(2.0))
23e00f6591f64959131a8ddfbbcec7ff36c7eee94eSungjoong Kang#define APEX_FNUM_TO_APERTURE(x)        (((EXIF_LOG2((double)(x)) * 200) + 0.5)/100)
2413d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang#define APEX_EXPOSURE_TO_SHUTTER(x)     ((x) >= 1 ?                                 \
2513d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang                                        (int)(-(EXIF_LOG2((double)(x)) + 0.5)) :    \
2613d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang                                        (int)(-(EXIF_LOG2((double)(x)) - 0.5)))
2713d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang#define APEX_ISO_TO_FILMSENSITIVITY(x)  ((int)(EXIF_LOG2((x) / 3.125) + 0.5))
2813d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang
2913d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang#define NUM_SIZE                    2
3013d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang#define IFD_SIZE                    12
3113d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang#define OFFSET_SIZE                 4
3213d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang
3313d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang#define NUM_0TH_IFD_TIFF            10
3413d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang#define NUM_0TH_IFD_EXIF            22
3513d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang#define NUM_0TH_IFD_GPS             10
3613d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang#define NUM_1TH_IFD_TIFF            9
3713d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang
3813d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang/* Type */
3913d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang#define EXIF_TYPE_BYTE              1
4013d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang#define EXIF_TYPE_ASCII             2
4113d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang#define EXIF_TYPE_SHORT             3
4213d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang#define EXIF_TYPE_LONG              4
4313d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang#define EXIF_TYPE_RATIONAL          5
4413d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang#define EXIF_TYPE_UNDEFINED         7
4513d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang#define EXIF_TYPE_SLONG             9
4613d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang#define EXIF_TYPE_SRATIONAL         10
4713d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang
4813d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang#define EXIF_FILE_SIZE              28800
4913d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang
5013d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang/* 0th IFD TIFF Tags */
5113d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang#define EXIF_TAG_IMAGE_WIDTH                    0x0100
5213d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang#define EXIF_TAG_IMAGE_HEIGHT                   0x0101
5313d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang#define EXIF_TAG_MAKE                           0x010f
5413d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang#define EXIF_TAG_MODEL                          0x0110
5513d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang#define EXIF_TAG_ORIENTATION                    0x0112
5613d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang#define EXIF_TAG_SOFTWARE                       0x0131
5713d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang#define EXIF_TAG_DATE_TIME                      0x0132
5813d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang#define EXIF_TAG_YCBCR_POSITIONING              0x0213
5913d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang#define EXIF_TAG_EXIF_IFD_POINTER               0x8769
6013d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang#define EXIF_TAG_GPS_IFD_POINTER                0x8825
6113d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang
6213d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang/* 0th IFD Exif Private Tags */
6313d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang#define EXIF_TAG_EXPOSURE_TIME                  0x829A
6413d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang#define EXIF_TAG_FNUMBER                        0x829D
6513d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang#define EXIF_TAG_EXPOSURE_PROGRAM               0x8822
6613d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang#define EXIF_TAG_ISO_SPEED_RATING               0x8827
6713d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang#define EXIF_TAG_EXIF_VERSION                   0x9000
6813d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang#define EXIF_TAG_DATE_TIME_ORG                  0x9003
6913d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang#define EXIF_TAG_DATE_TIME_DIGITIZE             0x9004
7013d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang#define EXIF_TAG_SHUTTER_SPEED                  0x9201
7113d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang#define EXIF_TAG_APERTURE                       0x9202
7213d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang#define EXIF_TAG_BRIGHTNESS                     0x9203
7313d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang#define EXIF_TAG_EXPOSURE_BIAS                  0x9204
7413d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang#define EXIF_TAG_MAX_APERTURE                   0x9205
7513d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang#define EXIF_TAG_METERING_MODE                  0x9207
7613d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang#define EXIF_TAG_FLASH                          0x9209
7713d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang#define EXIF_TAG_FOCAL_LENGTH                   0x920A
7813d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang#define EXIF_TAG_USER_COMMENT                   0x9286
7913d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang#define EXIF_TAG_COLOR_SPACE                    0xA001
8013d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang#define EXIF_TAG_PIXEL_X_DIMENSION              0xA002
8113d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang#define EXIF_TAG_PIXEL_Y_DIMENSION              0xA003
8213d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang#define EXIF_TAG_EXPOSURE_MODE                  0xA402
8313d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang#define EXIF_TAG_WHITE_BALANCE                  0xA403
8413d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang#define EXIF_TAG_SCENCE_CAPTURE_TYPE            0xA406
8513d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang
8613d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang/* 0th IFD GPS Info Tags */
8713d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang#define EXIF_TAG_GPS_VERSION_ID                 0x0000
8813d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang#define EXIF_TAG_GPS_LATITUDE_REF               0x0001
8913d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang#define EXIF_TAG_GPS_LATITUDE                   0x0002
9013d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang#define EXIF_TAG_GPS_LONGITUDE_REF              0x0003
9113d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang#define EXIF_TAG_GPS_LONGITUDE                  0x0004
9213d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang#define EXIF_TAG_GPS_ALTITUDE_REF               0x0005
9313d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang#define EXIF_TAG_GPS_ALTITUDE                   0x0006
9413d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang#define EXIF_TAG_GPS_TIMESTAMP                  0x0007
9513d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang#define EXIF_TAG_GPS_PROCESSING_METHOD          0x001B
9613d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang#define EXIF_TAG_GPS_DATESTAMP                  0x001D
9713d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang
9813d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang/* 1th IFD TIFF Tags */
9913d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang#define EXIF_TAG_COMPRESSION_SCHEME             0x0103
10013d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang#define EXIF_TAG_X_RESOLUTION                   0x011A
10113d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang#define EXIF_TAG_Y_RESOLUTION                   0x011B
10213d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang#define EXIF_TAG_RESOLUTION_UNIT                0x0128
10313d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang#define EXIF_TAG_JPEG_INTERCHANGE_FORMAT        0x0201
10413d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang#define EXIF_TAG_JPEG_INTERCHANGE_FORMAT_LEN    0x0202
10513d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang
10613d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kangtypedef enum {
10713d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang    EXIF_ORIENTATION_UP     = 1,
10813d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang    EXIF_ORIENTATION_90     = 6,
10913d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang    EXIF_ORIENTATION_180    = 3,
11013d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang    EXIF_ORIENTATION_270    = 8,
11113d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang} ExifOrientationType;
11213d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang
11313d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kangtypedef enum {
11413d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang    EXIF_SCENE_STANDARD,
11513d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang    EXIF_SCENE_LANDSCAPE,
11613d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang    EXIF_SCENE_PORTRAIT,
11713d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang    EXIF_SCENE_NIGHT,
11813d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang} CamExifSceneCaptureType;
11913d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang
12013d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kangtypedef enum {
12113d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang    EXIF_METERING_UNKNOWN,
12213d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang    EXIF_METERING_AVERAGE,
12313d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang    EXIF_METERING_CENTER,
12413d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang    EXIF_METERING_SPOT,
12513d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang    EXIF_METERING_MULTISPOT,
12613d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang    EXIF_METERING_PATTERN,
12713d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang    EXIF_METERING_PARTIAL,
12813d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang    EXIF_METERING_OTHER     = 255,
12913d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang} CamExifMeteringModeType;
13013d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang
13113d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kangtypedef enum {
13213d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang    EXIF_EXPOSURE_AUTO,
13313d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang    EXIF_EXPOSURE_MANUAL,
13413d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang    EXIF_EXPOSURE_AUTO_BRACKET,
13513d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang} CamExifExposureModeType;
13613d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang
13713d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kangtypedef enum {
13813d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang    EXIF_WB_AUTO,
13913d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang    EXIF_WB_MANUAL,
14013d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang} CamExifWhiteBalanceType;
14113d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang
14213d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang/* Values */
14313d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang#define EXIF_DEF_MAKER          "SAMSUNG"
14413d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang#define EXIF_DEF_MODEL          "SAMSUNG"
14513d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang#define EXIF_DEF_SOFTWARE       "SAMSUNG"
14613d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang#define EXIF_DEF_EXIF_VERSION   "0220"
14713d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang#define EXIF_DEF_USERCOMMENTS   "User comments"
14813d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang
14913d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang#define EXIF_DEF_YCBCR_POSITIONING  1   /* centered */
15013d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang#define EXIF_DEF_FNUMBER_NUM        26  /* 2.6 */
15113d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang#define EXIF_DEF_FNUMBER_DEN        10
15213d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang#define EXIF_DEF_EXPOSURE_PROGRAM   3   /* aperture priority */
15313d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang#define EXIF_DEF_FOCAL_LEN_NUM      278 /* 2.78mm */
15413d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang#define EXIF_DEF_FOCAL_LEN_DEN      100
15513d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang#define EXIF_DEF_FLASH              0   /* O: off, 1: on*/
15613d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang#define EXIF_DEF_COLOR_SPACE        1
15713d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang#define EXIF_DEF_EXPOSURE_MODE      EXIF_EXPOSURE_AUTO
158e00f6591f64959131a8ddfbbcec7ff36c7eee94eSungjoong Kang#define EXIF_DEF_APEX_DEN           100
15913d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang
16013d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang#define EXIF_DEF_COMPRESSION        6
16113d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang#define EXIF_DEF_RESOLUTION_NUM     72
16213d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang#define EXIF_DEF_RESOLUTION_DEN     1
16313d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang#define EXIF_DEF_RESOLUTION_UNIT    2   /* inches */
16413d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang
16513d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kangtypedef struct {
16613d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang    uint32_t num;
16713d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang    uint32_t den;
16813d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang} rational_t;
16913d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang
17013d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kangtypedef struct {
17113d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang    int32_t num;
17213d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang    int32_t den;
17313d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang} srational_t;
17413d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang
17513d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kangtypedef struct {
17613d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang    bool enableGps;
17713d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang    bool enableThumb;
17813d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang
17913d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang    unsigned char maker[32];
18013d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang    unsigned char model[32];
18113d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang    unsigned char software[32];
18213d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang    unsigned char exif_version[4];
18313d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang    unsigned char date_time[20];
18413d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang    unsigned char user_comment[150];
18513d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang
18613d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang    uint32_t width;
18713d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang    uint32_t height;
18813d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang    uint32_t widthThumb;
18913d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang    uint32_t heightThumb;
19013d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang
19113d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang    uint16_t orientation;
19213d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang    uint16_t ycbcr_positioning;
19313d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang    uint16_t exposure_program;
19413d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang    uint16_t iso_speed_rating;
19513d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang    uint16_t metering_mode;
19613d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang    uint16_t flash;
19713d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang    uint16_t color_space;
19813d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang    uint16_t exposure_mode;
19913d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang    uint16_t white_balance;
20013d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang    uint16_t scene_capture_type;
20113d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang
20213d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang    rational_t exposure_time;
20313d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang    rational_t fnumber;
20413d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang    rational_t aperture;
20513d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang    rational_t max_aperture;
20613d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang    rational_t focal_length;
20713d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang
20813d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang    srational_t shutter_speed;
20913d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang    srational_t brightness;
21013d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang    srational_t exposure_bias;
21113d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang
21213d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang    unsigned char gps_latitude_ref[2];
21313d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang    unsigned char gps_longitude_ref[2];
21413d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang
21513d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang    uint8_t gps_version_id[4];
21613d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang    uint8_t gps_altitude_ref;
21713d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang
21813d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang    rational_t gps_latitude[3];
21913d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang    rational_t gps_longitude[3];
22013d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang    rational_t gps_altitude;
22113d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang    rational_t gps_timestamp[3];
22213d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang    unsigned char gps_datestamp[11];
22313d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang    unsigned char gps_processing_method[100];
22413d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang
22513d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang    rational_t x_resolution;
22613d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang    rational_t y_resolution;
22713d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang    uint16_t resolution_unit;
22813d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang    uint16_t compression_scheme;
22913d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang} exif_attribute_t;
23013d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang
23113d8c7b4650fb7897b4291ed9b3d57b19f7d1ccdSungjoong Kang#endif /* EXYNOS_EXIF_H_ */
232