00001
00002
00003
00004 #ifndef _ASM_EXIF_H
00005 #define _ASM_EXIF_H
00006
00007
00008 #define X3X3_EXIF 125
00009
00010 #define X3X3_EXIF_EXIF 0 // read encoded Exif data (SEEK_END,
00011 #define X3X3_EXIF_META 1 // write metadata, concurently opened files. All writes atomic
00012
00013 #define X3X3_EXIF_TEMPLATE 2 // write Exif template
00014 #define X3X3_EXIF_METADIR 3 // write metadata to Exif header translation (dir_table[MAX_EXIF_FIELDS])
00015
00016 #define X3X3_EXIF_TIME 4 // write today/tomorrow date (YYYY:MM:DD) and number of seconds at today/tomorrow
00017
00018
00019
00020
00021
00022 #define EXIF_LSEEK_DISABLE 1 // disable Exif (storing of frame meta, generating Exif)
00023 #define EXIF_LSEEK_ENABLE 2 // enable Exif (build buffer if needed)
00024 #define EXIF_LSEEK_INVALIDATE 3 // invalidate (and disable)
00025 #define EXIF_LSEEK_REBUILD 4 // rebuild buffer
00026
00027 #define EXIF_LSEEK_TOMORROW_DATE 5 // file pointer to YYYY:MM:DD (tomorrow) string
00028 #define EXIF_LSEEK_TOMORROW_SEC 6 // file pointer to unsigned long (little endian) tomorrow seconds from epoch
00029 #define EXIF_LSEEK_TODAY_DATE 7 // file pointer to YYYY:MM:DD (today) string
00030 #define EXIF_LSEEK_TODAY_SEC 8 // file pointer to unsigned long (little endian) today seconds from epoch
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040 struct exif_dir_table_t {
00041 union {
00042 unsigned long ltag;
00043 struct {
00044 unsigned short tag_group;
00045 unsigned short tag;
00046 };
00047 };
00048 unsigned long len;
00049 unsigned long src;
00050 unsigned long dst;
00051 };
00052 #define MAX_EXIF_FIELDS 256 // number of Exif tags in the header
00053 #define MAX_EXIF_SIZE 4096 // Exif data size
00054
00055 #define MAX_EXIF_FRAMES 2048 // number of frames in the buffer
00056
00057
00058 #define Exif_Image_ImageDescription 0x0010e
00059 #define Exif_Image_Make 0x0010f
00060 #define Exif_Image_Model 0x00110
00061 #define Exif_Image_Software 0x00131
00062 #define Exif_Image_DateTime 0x00132
00063 #define Exif_Image_Artist 0x0013b
00064 #define Exif_Image_HostComputer 0x0013c
00065 #define Exif_Image_HostComputer 0x0013c
00066
00067 #define Exif_Image_IPTCNAA 0x083bb
00068 #define Exif_Image_FrameNumber 0x083bb
00069
00070 #define Exif_Image_ExifTag 0x08769
00071 #define Exif_Image_GPSTag 0x08825
00072
00073
00074 #define Exif_Photo_ExposureTime 0x1829a
00075 #define Exif_Photo_DateTimeOriginal 0x19003
00076 #define Exif_Photo_MakerNote 0x1927c
00077 #define Exif_Photo_SubSecTime 0x19290
00078 #define Exif_Photo_SubSecTimeOriginal 0x19291
00079
00080 #define Exif_GPSInfo_GPSLatitudeRef 0x20001
00081 #define Exif_GPSInfo_GPSLatitude 0x20002
00082 #define Exif_GPSInfo_GPSLongitudeRef 0x20003
00083 #define Exif_GPSInfo_GPSLongitude 0x20004
00084 #define Exif_GPSInfo_GPSAltitudeRef 0x20005
00085 #define Exif_GPSInfo_GPSAltitude 0x20006
00086 #define Exif_GPSInfo_GPSTimeStamp 0x20007
00087 #define Exif_GPSInfo_GPSMeasureMode 0x2000a
00088 #define Exif_GPSInfo_GPSDateStamp 0x2001D
00089
00091 #define Exif_GPSInfo_GPSImgDirectionRef 0x20010
00092 #define Exif_GPSInfo_GPSImgDirection 0x20011
00093 #define Exif_GPSInfo_GPSDestLatitudeRef 0x20013
00094 #define Exif_GPSInfo_GPSDestLatitude 0x20014
00095 #define Exif_GPSInfo_GPSDestLongitudeRef 0x20015
00096 #define Exif_GPSInfo_GPSDestLongitude 0x20016
00097
00098 #define Exif_GPSInfo_CompassDirectionRef 0x20010
00099 #define Exif_GPSInfo_CompassDirection 0x20011
00100 #define Exif_GPSInfo_CompassPitchRef 0x20013
00101 #define Exif_GPSInfo_CompassPitch 0x20014
00102 #define Exif_GPSInfo_CompassRollRef 0x20015
00103 #define Exif_GPSInfo_CompassRoll 0x20016
00104
00105
00106
00108 struct frame_exif_t {
00109 unsigned short meta_index;
00110 unsigned short signffff;
00111 unsigned long frame_length;
00112 };
00113
00114 struct meta_GPSInfo_t {
00115 unsigned char GPSLatitudeRef;
00116 unsigned long GPSLatitude_deg_nom;
00117 unsigned long GPSLatitude_deg_denom;
00118 unsigned long GPSLatitude_min_nom;
00119 unsigned long GPSLatitude_min_denom;
00120 unsigned char GPSLongitudeRef;
00121 unsigned long GPSLongitude_deg_nom;
00122 unsigned long GPSLongitude_deg_denom;
00123 unsigned long GPSLongitude_min_nom;
00124 unsigned long GPSLongitude_min_denom;
00125 unsigned char GPSAltitudeRef;
00126 unsigned long GPSAltitude_nom;
00127 unsigned long GPSAltitude_denom;
00128 unsigned long GPSTimeStamp_hrs_nom;
00129 unsigned long GPSTimeStamp_hrs_denom;
00130 unsigned long GPSTimeStamp_min_nom;
00131 unsigned long GPSTimeStamp_min_denom;
00132 unsigned long GPSTimeStamp_sec_nom;
00133 unsigned long GPSTimeStamp_sec_denom;
00134 unsigned char GPSDateStamp[11];
00135 unsigned char GPSMeasureMode;
00136 };
00137
00138 struct meta_CompassInfo_t {
00139
00140 unsigned long CompassDirection_nom;
00141 unsigned long CompassDirection_denom;
00142 unsigned char CompassPitchRef;
00143 unsigned long CompassPitch_nom;
00144 unsigned long CompassPitch_denom;
00145 unsigned char CompassRollRef;
00146 unsigned long CompassRoll_nom;
00147 unsigned long CompassRoll_denom;
00148 };
00149
00150
00151 #define EXIF_GPS_MIN_DENOM 10000
00152 #define EXIF_GPS_METERS_DENOM 10
00153 #define EXIF_GPS_TIMESEC_DENOM 1000
00154 #define EXIF_GPS_COMPASS_DENOM 10
00156 #define EXIF_COMPASS_PITCH_ASCII "NS" // use for pitch +/-
00157 #define EXIF_COMPASS_ROLL_ASCII "EW" // use for roll +/-
00158
00160 #define Exif_Image_ImageDescription_Index 0x00
00161 #define Exif_Photo_DateTimeOriginal_Index 0x01
00162 #define Exif_Photo_SubSecTimeOriginal_Index 0x02
00163 #define Exif_Photo_ExposureTime_Index 0x03
00164 #define Exif_GPSInfo_GPSLatitudeRef_Index 0x04
00165 #define Exif_GPSInfo_GPSLatitude_Index 0x05
00166 #define Exif_GPSInfo_GPSLongitudeRef_Index 0x06
00167 #define Exif_GPSInfo_GPSLongitude_Index 0x07
00168 #define Exif_GPSInfo_GPSAltitudeRef_Index 0x08
00169 #define Exif_GPSInfo_GPSAltitude_Index 0x09
00170 #define Exif_GPSInfo_GPSTimeStamp_Index 0x0a
00171 #define Exif_GPSInfo_GPSDateStamp_Index 0x0b
00172 #define Exif_GPSInfo_GPSMeasureMode_Index 0x0c
00173 #define Exif_GPSInfo_CompassDirectionRef_Index 0x0d
00174 #define Exif_GPSInfo_CompassDirection_Index 0x0e
00175 #define Exif_GPSInfo_CompassPitchRef_Index 0x0f
00176 #define Exif_GPSInfo_CompassPitch_Index 0x10
00177 #define Exif_GPSInfo_CompassRollRef_Index 0x11
00178 #define Exif_GPSInfo_CompassRoll_Index 0x12
00179 #define Exif_Image_FrameNumber_Index 0x13
00180 #define ExifKmlNumber 0x14
00181
00182
00183
00184 #define EXIF_DEV_NAME "/dev/exif_exif"
00185 #define EXIFDIR_DEV_NAME "/dev/exif_metadir"
00186 #define EXIFMETA_DEV_NAME "/dev/exif_meta"
00187
00188 #endif