219 lines
10 KiB
C
Executable File
219 lines
10 KiB
C
Executable File
/**
|
|
Definition of Exif SPEC.
|
|
|
|
@file ExifDef.h
|
|
@ingroup mIEXIF
|
|
@note Nothing (or anything need to be mentioned).
|
|
|
|
Copyright Novatek Microelectronics Corp. 2011. All rights reserved.
|
|
*/
|
|
|
|
#ifndef _EXIFDEF_H
|
|
#define _EXIFDEF_H
|
|
|
|
/**
|
|
@addtogroup mIEXIF
|
|
*/
|
|
//@{
|
|
|
|
/**
|
|
@name The basic definition of Exif SPEC
|
|
*/
|
|
//@{
|
|
#define JPEG_MARKER_SOI 0xD8FF
|
|
#define JPEG_MARKER_APP0 0xE0FF
|
|
#define JPEG_MARKER_APP1 0xE1FF
|
|
#define JPEG_MARKER_APP2 0xE2FF
|
|
|
|
#define BYTE_ORDER_LITTLE_ENDIAN 0x4949
|
|
#define BYTE_ORDER_BIG_ENDIAN 0x4D4D
|
|
|
|
#define TIFF_IDENTIFY 42
|
|
//@}
|
|
|
|
//-----------------------------------------
|
|
// TIFF IFD Tag ID
|
|
//-----------------------------------------
|
|
/**
|
|
@name Tags in 0th IFD
|
|
*/
|
|
//@{
|
|
//----- 0th IFD -----------------------
|
|
#define TAG_ID_IMAGE_WIDTH 0x0100 ///< ImageWidth
|
|
#define TAG_ID_IMAGE_LENGTH 0x0101 ///< ImageLength
|
|
#define TAG_ID_BITS_PER_SAMPLE 0x0102 ///< BitsPerSample
|
|
#define TAG_ID_COMPRESSION 0x0103 ///< Compression
|
|
#define TAG_ID_PHOTOMETRIC_INTERPRETATION 0x0106 ///< PhotometricInterpretation
|
|
#define TAG_ID_IMAGE_DESCRIPTION 0x010E ///< ImageDescription
|
|
#define TAG_ID_MAKE 0x010F ///< Make
|
|
#define TAG_ID_MODEL 0x0110 ///< Model
|
|
#define TAG_ID_STRIP_OFFSET 0x0111 ///< StripOffsets
|
|
#define TAG_ID_ORIENTATION 0x0112 ///< Orientation
|
|
#define TAG_ID_SAMPLES_PER_PIXEL 0x0115 ///< SamplesPerPixel
|
|
#define TAG_ID_ROWS_PER_STRIP 0x0116 ///< RowsPerStrip
|
|
#define TAG_ID_STRIP_BYTE_COUNTS 0x0117 ///< StripByteCounts
|
|
#define TAG_ID_X_RESOLUTION 0x011A ///< XResolution
|
|
#define TAG_ID_Y_RESOLUTION 0x011B ///< YResolution
|
|
#define TAG_ID_RESOLUTION_UNIT 0x0128 ///< ResolutionUnit
|
|
#define TAG_ID_SOFTWARE 0x0131 ///< Software
|
|
#define TAG_ID_DATE_TIME 0x0132 ///< DateTime
|
|
#define TAG_ID_Y_CB_CR_POSITIONING 0x0213 ///< YCbCrPositioning
|
|
#define TAG_ID_COPYRIGHT 0x8298 ///< Copyright
|
|
//@}
|
|
/**
|
|
@name Tags in Exif IFD
|
|
*/
|
|
//@{
|
|
//----- Exif IFD -----------------------
|
|
#define TAG_ID_EXPOSURE_TIME 0x829A ///< ExposureTime
|
|
#define TAG_ID_F_NUMBER 0x829D ///< FNumber
|
|
#define TAG_ID_EXPOSURE_PROGRAM 0x8822 ///< ExposurePogram
|
|
#define TAG_ID_ISO_SPEED_RATING 0x8827 ///< ISOSpeedRatings
|
|
#define TAG_ID_EXIF_VERSION 0x9000 ///< ExifVersion
|
|
#define TAG_ID_DATE_TIME_ORIGINAL 0x9003 ///< DateTimeOriginal
|
|
#define TAG_ID_DATA_TIME_DIGITIZED 0x9004 ///< DateTimeDigitized
|
|
#define TAG_ID_COMPONENT_CONFIGURATION 0x9101 ///< ComponentsConfiguration
|
|
#define TAG_ID_COMPRESSED_BITS_PER_PIXEL 0x9102 ///< CompressedBitsPerPixel
|
|
#define TAG_ID_SHUTTER_SPEED_VALUE 0x9201 ///< ShutterSpeedValue
|
|
#define TAG_ID_APERTURE_VALUE 0x9202 ///< ApertureValue
|
|
#define TAG_ID_BRIGHTNESS 0x9203 ///< BrightnessValue
|
|
#define TAG_ID_EXPOSURE_BIAS_VALUE 0x9204 ///< ExposureBiasValue
|
|
#define TAG_ID_MAX_APERTURE_RATIO_VALUE 0x9205 ///< MaxApertureValue
|
|
#define TAG_ID_METERING_MODE 0x9207 ///< MeteringMode
|
|
#define TAG_ID_LIGHT_SOURCE 0x9208 ///< LightSource
|
|
#define TAG_ID_FLASH 0x9209 ///< Flash
|
|
#define TAG_ID_FOCAL_LENGTH 0x920A ///< FocalLength
|
|
#define TAG_ID_MAKER_NOTE 0x927C ///< MakerNote
|
|
#define TAG_ID_USER_COMMENT 0x9286 ///< UserComment
|
|
#define TAG_ID_FLASH_PIX_VERSION 0xA000 ///< FlashpixVersion
|
|
#define TAG_ID_COLOR_SPACE 0xA001 ///< ColorSpace
|
|
#define TAG_ID_PIXEL_X_DIMENSION 0xA002 ///< PixelXDimension
|
|
#define TAG_ID_PIXEL_Y_DIMENSION 0xA003 ///< PixelYDimension
|
|
#define TAG_ID_RELATED_SOUND_FILE 0xA004 ///< RelatedSoundFile
|
|
#define TAG_ID_EXPOSURE_INDEX 0xA215 ///< ExposureIndex
|
|
#define TAG_ID_SENSING_METHOD 0xA217 ///< SensingMethod
|
|
#define TAG_ID_FILE_SOURCE 0xA300 ///< FileSource
|
|
#define TAG_ID_SCENE_TYPE 0xA301 ///< SceneType
|
|
#define TAG_ID_CUSTOM_RENDERD 0xA401 ///< CustomRendered
|
|
#define TAG_ID_EXPOSURE_MODE 0xA402 ///< ExposureMode
|
|
#define TAG_ID_WHITE_BALANCE 0xA403 ///< WhiteBalance
|
|
#define TAG_ID_DZOOM_RATIO 0xA404 ///< Digital zoom ratio
|
|
#define TAG_ID_SCENE_CAPTURE_TYPE 0xA406 ///< SceneCaptureType
|
|
#define TAG_ID_SHARPNESS 0xA40A ///< Sharpness
|
|
|
|
//@}
|
|
/**
|
|
@name Tags in GPS IFD
|
|
*/
|
|
//@{
|
|
//----- GPS IFD -----
|
|
#define TAG_ID_GPS_VERSIONID 0x0000 ///< GPSVersionID
|
|
#define TAG_ID_GPS_LATITUDEREF 0x0001 ///< GPSLatitudeRef
|
|
#define TAG_ID_GPS_LATITUDE 0x0002 ///< GPSLatitude
|
|
#define TAG_ID_GPS_LONGITUDEREF 0x0003 ///< GPSLongitudeRef
|
|
#define TAG_ID_GPS_LONGITUDE 0x0004 ///< GPSLongitude
|
|
#define TAG_ID_GPS_ALTITUDEREF 0x0005 ///< GPSAltitudeRef
|
|
#define TAG_ID_GPS_ALTITUDE 0x0006 ///< GPSAltitude
|
|
#define TAG_ID_GPS_TIMESTAMP 0x0007 ///< GPSTimeStamp
|
|
#define TAG_ID_GPS_SATELLITES 0x0008 ///< GPSSatellites
|
|
#define TAG_ID_GPS_STATUS 0x0009 ///< GPSStatus
|
|
#define TAG_ID_GPS_MEASUREMODE 0x000A ///< GPSMeasureMode
|
|
#define TAG_ID_GPS_DOP 0x000B ///< GPSDOP
|
|
#define TAG_ID_GPS_SPEEDREF 0x000C ///< GPSSpeedRef
|
|
#define TAG_ID_GPS_SPEED 0x000D ///< GPSSpeed
|
|
#define TAG_ID_GPS_TRACKREF 0x000E ///< GPSTrackRef
|
|
#define TAG_ID_GPS_TRACK 0x000F ///< GPSTrack
|
|
#define TAG_ID_GPS_IMGDIRECTIONREF 0x0010 ///< GPSImgDirectionRef
|
|
#define TAG_ID_GPS_IMGDIRECTION 0x0011 ///< GPSImgDirection
|
|
#define TAG_ID_GPS_MAPDATUM 0x0012 ///< GPSMapDatum
|
|
#define TAG_ID_GPS_DESTLATITUDEREF 0x0013 ///< GPSDestLatitudeRef
|
|
#define TAG_ID_GPS_DESTLATITUDE 0x0014 ///< GPSDestLatitude
|
|
#define TAG_ID_GPS_DESTLONGITUDEREF 0x0015 ///< GPSDestLongitudeRef
|
|
#define TAG_ID_GPS_DESTLONGITUDE 0x0016 ///< GPSDestLongitude
|
|
#define TAG_ID_GPS_DESTBEARINGREF 0x0017 ///< GPSDestBearingRef
|
|
#define TAG_ID_GPS_DESTBEARING 0x0018 ///< GPSDestBearing
|
|
#define TAG_ID_GPS_DESTDISTANCEREF 0x0019 ///< GPSDestDistanceRef
|
|
#define TAG_ID_GPS_DESTDISTANCE 0x001A ///< GPSDestDistance
|
|
#define TAG_ID_GPS_PROCESSINGMETHOD 0x001B ///< GPSProcessingMethod
|
|
#define TAG_ID_GPS_AREAINFORMATION 0x001C ///< GPSAreaInformation
|
|
#define TAG_ID_GPS_DATESTAMP 0x001D ///< GPSDateStamp
|
|
#define TAG_ID_GPS_DIFFERENTIAL 0x001E ///< GPSDifferential
|
|
|
|
//@}
|
|
/**
|
|
@name Tags in InterOperability IFD
|
|
*/
|
|
//@{
|
|
//----- InterOperability IFD ----------
|
|
#define TAG_ID_INTER_OPERABILITY_INDEX 0x0001 ///< InteroperabilityIndex
|
|
#define TAG_ID_EXIF_98_VERSION 0x0002 ///< Exif98Version
|
|
//@}
|
|
/**
|
|
@name Tags in 1st IFD
|
|
*/
|
|
//@{
|
|
//----- 1st IFD -------------------------------
|
|
#define TAG_ID_X_RESOLUTION 0x011A ///< XResolution
|
|
#define TAG_ID_Y_RESOLUTION 0x011B ///< YResolution
|
|
#define TAG_ID_RESOLUTION_UNIT 0x0128 ///< ResolutionUnit
|
|
#define TAG_ID_INTERCHANGE_FORMAT 0x0201 ///< JPEGInterchangeFormat
|
|
#define TAG_ID_INTERCHANGE_FORMAT_LENGTH 0x0202 ///< JPEGInterchangeFormatLength
|
|
|
|
|
|
/**
|
|
@name Tags in MP Index IFD
|
|
*/
|
|
//@{
|
|
//----- MP Index IFD----------------------------
|
|
#define TAG_ID_MPF_VERSION 0xB000 ///< MPFVersion
|
|
#define TAG_ID_NUMBER_OF_IMAGES 0xB001 ///< NumberOfImages
|
|
#define TAG_ID_MP_ENTRY 0xB002 ///< MPEntry
|
|
//@}
|
|
/**
|
|
@name Tags in MP Attribute IFD
|
|
*/
|
|
//@{
|
|
//----- MP Attribute IFD----------------------------
|
|
#define TAG_ID_MP_INDIVIDUAL_NUM 0xB101 ///< MPIndividualNum
|
|
#define TAG_ID_BASE_VIEWPOINT_NUM 0xB204 ///< BaseViewpointNum
|
|
#define TAG_ID_CONVERGENCE_ANGLE 0xB205 ///< ConvergenceAngle
|
|
#define TAG_ID_BASELINE_LENGTH 0xB206 ///< BaselineLength
|
|
//@}
|
|
|
|
/**
|
|
@name Tag Type
|
|
*/
|
|
//@{
|
|
//-----------------------------------------
|
|
// TIFF IFD Type
|
|
//-----------------------------------------
|
|
#define TAG_TYPE_BYTE 1 ///< An 8-bit unsigned integer.
|
|
#define TAG_TYPE_ASCII 2 ///< An 8-bit byte containing one 7-bit ASCII code.The final byte is terminated with NULL.
|
|
#define TAG_TYPE_SHORT 3 ///< A 16-bit (2-byte) unsigned integer.
|
|
#define TAG_TYPE_LONG 4 ///< A 32-bit (4-byte) unsigned integer.
|
|
#define TAG_TYPE_RATIONAL 5 ///< Two LONGs. The first LONG is the numerator and the second LONG expresses the denominator.
|
|
#define TAG_TYPE_SBYTE 6 ///< An 8-bit signed integer.
|
|
#define TAG_TYPE_UNDEFINED 7 ///< An 8-bit byte that may take any value depending on the field definition.
|
|
#define TAG_TYPE_SSHORT 8 ///< A 16-bit (2-byte) signed integer.
|
|
#define TAG_TYPE_SLONG 9 ///< A 32-bit (4-byte) signed integer (2's complement notation).
|
|
#define TAG_TYPE_SRATIONAL 10 ///< Two SLONGs. The first SLONG is the numerator and the second SLONG is the denominator.
|
|
//@}
|
|
|
|
|
|
/**
|
|
The value of Exif-Orientation Tag
|
|
*/
|
|
typedef enum _JPEG_EXIF_ORI {
|
|
JPEG_EXIF_ORI_DEFAULT = 1, ///<1, Default orientation
|
|
JPEG_EXIF_ORI_FLIP_HORIZONTAL = 2, ///<2, flip horizontal
|
|
JPEG_EXIF_ORI_ROTATE_180 = 3, ///<3, rotate 180 deg
|
|
JPEG_EXIF_ORI_FLIP_VERTICAL = 4, ///<4, flip vertical
|
|
JPEG_EXIF_ORI_TRANSPOSE = 5, ///<5, transpose
|
|
JPEG_EXIF_ORI_ROTATE_90 = 6, ///<6, rotate 90 deg
|
|
JPEG_EXIF_ORI_TRANSVERSE = 7, ///<7, transverse
|
|
JPEG_EXIF_ORI_ROTATE_270 = 8 ///<8, rotate 270 deg
|
|
} JPEG_EXIF_ORI;
|
|
|
|
//@}
|
|
#endif //_EXIFDEF_H
|