📄 exifhdr.h
字号:
/*++
Copyright (c) 2001 Sunplus Technology Co., Ltd.
Module Name:
exifhdr.h
Abstract:
Header file related to exif header
Environment:
Keil C51 Compiler
Revision History:
02/22/2002 Leeada created
--*/
//------------------------------------------------------------------------------
//Type and Constant Definition
//------------------------------------------------------------------------------
//structure IFD
#define K_IFD_SIZE ((ULONG)0x0000000c)
struct IFD
{
USHORT tag;
USHORT type;
ULONG count;
ULONG valueoffset;
};
//structure EXIF header 0,SOI,thumb SOI,thumb EOI
#define K_HDR0_SIZE ((ULONG)0x00000002)
struct HDR0
{
UCHAR Marker[2];
};
//structure EXIF Header1,APP1
#define K_HDR1_SIZE ((ULONG)0x000002c9)
struct HDR1
{
UCHAR Marker[2];
USHORT Length;
UCHAR ExifString[5];
UCHAR Pad;
USHORT Tiff_ByteOrder;
USHORT Tiff_ID;
ULONG Tiff_IFD0Offset;
USHORT IFD0_NumberOfInteroperability;
struct IFD IFD0_ImageDescriptionTag;
struct IFD IFD0_MakeTag;
struct IFD IFD0_ModelTag;
struct IFD IFD0_OrientationTag;
struct IFD IFD0_XResolutionTag;
struct IFD IFD0_YResolutionTag;
struct IFD IFD0_ResolutionUnitTag;
struct IFD IFD0_DateTimeTag;
struct IFD IFD0_YCbCrPositionTag;
struct IFD IFD0_ExifIFDPointerTag;
ULONG IFD0_NextIFDOffset;
UCHAR IFD0_ImageDescriptionValue[9];
UCHAR IFD0_MakeValue[9];
UCHAR IFD0_ModelValue[9];
ULONG IFD0_XResolutionValue[2];
ULONG IFD0_YResolutionValue[2];
UCHAR IFD0_DateTimeValue[20];
USHORT Exif_IFDNumber;
struct IFD Exif_ExposureTimeTag;
struct IFD Exif_FNumberTag;
struct IFD Exif_ExposureProgramTag;
struct IFD Exif_ISOSpeedRatingsTag;
struct IFD Exif_ExifVersionTag;
struct IFD Exif_DateTimeOriginalTag;
struct IFD Exif_DateTimeDigitilizedTag;
struct IFD Exif_ComponentsConfigurationTag;
struct IFD Exif_CompressedBitsPerPixelTag;
struct IFD Exif_ExposureBiasTag;
struct IFD Exif_MaxApertureTag;
struct IFD Exif_MeteringModeTag;
struct IFD Exif_LightSourceTag;
struct IFD Exif_FlashTag;
struct IFD Exif_FocalLengthTag;
struct IFD Exif_FlashPixVersiontTag;
struct IFD Exif_ColorSpaceTag;
struct IFD Exif_PixelXDimensionTag;
struct IFD Exif_PixelYDimensionTag;
struct IFD Exif_InteroperabilityIFDPointerTag;
struct IFD Exif_FileSourceTag;
struct IFD Exif_SceneTypeTag;
ULONG Exif_NextIFDOffset;
ULONG Exif_ExposureTimeValue[2];
ULONG Exif_FNumberValue[2];
UCHAR Exif_DateTimeOriginalValue[20];
UCHAR Exif_DateTimeDigitilizedValue[20];
ULONG Exif_CompressedBitsPerPixelValue[2];
ULONG Exif_ExposureBiasValue[2];
ULONG Exif_MaxApertureValue[2];
ULONG Exif_FocalLengthValue[2];
USHORT NumberOfInteroperability;
struct IFD InteroperabilityIndexTag;
struct IFD InteroperabilityVersionTag;
ULONG NextInteroperabilityIFDOffset;
USHORT IFD1_NumberOfInteroperability;
struct IFD IFD1_CompressionTag;
struct IFD IFD1_OrientationTag;
struct IFD IFD1_XResolutionTag;
struct IFD IFD1_YResolutionTag;
struct IFD IFD1_ResolutionUnitTag;
struct IFD IFD1_JPEGInterChangeFormatTag;
struct IFD IFD1_JPEGInterChangeFormatLengthTag;
struct IFD IFD1_YCbCrPositioningTag;
ULONG IFD1_NextIFDOffset;
ULONG IFD1_XResolutionValue[2];
ULONG IFD1_YResolutionValue[2];
};
//structure EXIF Header2 for COM(Thumbnail odd) & SOF
#define K_HDR2_SIZE ((ULONG)0x00000013)
struct HDR2
{
UCHAR Marker[2];
USHORT Length;
UCHAR Content[15];
};
//structure EXIF Header3 for DQT
#define K_HDR3_SIZE ((ULONG)0x00000086)
struct HDR3
{
UCHAR Marker[2];
USHORT Length;
UCHAR PqTq0;
UCHAR Content0[64]; //Y
UCHAR PqTq1;
UCHAR Content1[64]; //UV
};
//structure EXIF Header4 for DHT(DC)
#define K_HDR4_SIZE ((ULONG)0x000001a4)
struct HDR4
{
UCHAR Marker[2];
USHORT Length;
//Y
UCHAR TcTh0;
UCHAR Content0[28]; //DC
UCHAR TcTh1;
UCHAR Content1[178]; //AC
//UV
UCHAR TcTh2;
UCHAR Content2[28]; //DC
UCHAR TcTh3;
UCHAR Content3[178]; //AC
};
//structure EXIF Header5 for SOS
#define K_HDR5_SIZE ((ULONG)0x0000000e)
struct HDR5
{
UCHAR Marker[2];
USHORT Length;
UCHAR Content[10];
};
//structure EXIF Header6 for COM(Thumbnail even)
#define K_HDR6_SIZE ((ULONG)0x00000014)
struct HDR6
{
UCHAR Marker[2];
USHORT Length;
UCHAR Content[16];
};
#define K_EXIF_STRUCTURE0_SIZE ((ULONG) ((K_HDR0_SIZE * 2) + K_HDR1_SIZE + K_HDR2_SIZE + K_HDR3_SIZE + K_HDR4_SIZE + K_HDR5_SIZE))
struct Exif_Header0
{
//----- K_STRUCTURE0_SIZE -----
struct HDR0 SOI;
struct HDR1 APP1;
struct HDR0 THUMB_SOI;
struct HDR3 THUMB_DQT;
struct HDR4 THUMB_DHT;
struct HDR2 THUMB_SOF;
struct HDR5 THUMB_SOS;
};
#define K_EXIF_STRUCTURE1_SIZE ((ULONG)K_HDR6_SIZE) //thumbnail even size
struct Exif_Header1
{
//----- K_STRUCTURE1_SIZE -----
struct HDR6 ODD_COM;
};
#define K_EXIF_STRUCTURE2_SIZE ((ULONG)K_HDR2_SIZE) //thumbnail odd size
struct Exif_Header2
{
//----- K_STRUCTURE2_SIZE -----
struct HDR2 EVEN_COM;
};
#define K_EXIF_STRUCTURE3_SIZE ((ULONG) (K_HDR2_SIZE + K_HDR3_SIZE + K_HDR4_SIZE + K_HDR5_SIZE)) //thumbnail even size
struct Exif_Header3
{
//----- K_STRUCTURE3_SIZE -----
struct HDR3 DQT;
struct HDR4 DHT;
struct HDR2 SOF;
struct HDR5 SOS;
};
#define K_TOTAL_EXIF_STRUCTURE_SIZE ((ULONG) (K_EXIF_STRUCTURE0_SIZE + K_EXIF_STRUCTURE1_SIZE + K_EXIF_STRUCTURE2_SIZE + K_EXIF_STRUCTURE3_SIZE))
#define K_THUMBNAIL_STRUCTURE_SIZE ((ULONG) (0x02 + 0x02 + 0x84 + 0x02 + 0x01a2 + 0x02 + 0x11 + 0x02 + 0x0c + 0x02))
// SOI DQT DHT SOF SOS EOI
struct Exif_Decompress_Parameter
{
ULONG Addr;
USHORT Height;
USHORT Width;
ULONG Size;
UCHAR DataType;
};
//ada@0509 for EXIF
//#define K_JFIF_IMAGE_FORMAT (UCHAR)1
//#define K_EXIF_IMAGE_FORMAT (UCHAR)2
#define K_JFIF_IMAGE_FORMAT (UCHAR)6
#define K_EXIF_IMAGE_FORMAT (UCHAR)4
//patch3.2@ada@0401 For EXIF
#define K_BIG_ENDIAN (USHORT)0x4d4d
#define K_LITTLE_ENDIAN (USHORT)0x4949
#define K_SOI_MARKER (UCHAR)0xd8
#define K_APP0_MARKER (UCHAR)0xe0
#define K_APP1_MARKER (UCHAR)0xe1
#define K_APP2_MARKER (UCHAR)0xe2
#define K_APP3_MARKER (UCHAR)0xe3
#define K_APP4_MARKER (UCHAR)0xe4
#define K_APP5_MARKER (UCHAR)0xe5
#define K_APP6_MARKER (UCHAR)0xe6
#define K_APP7_MARKER (UCHAR)0xe7
#define K_APP8_MARKER (UCHAR)0xe8
#define K_APP9_MARKER (UCHAR)0xe9
#define K_APP10_MARKER (UCHAR)0xea
#define K_APP11_MARKER (UCHAR)0xeb
#define K_APP12_MARKER (UCHAR)0xec
#define K_APP13_MARKER (UCHAR)0xed
#define K_APP14_MARKER (UCHAR)0xee
#define K_APP15_MARKER (UCHAR)0xef
#define K_DQT_MARKER (UCHAR)0xdb
#define K_DHT_MARKER (UCHAR)0xc4
#define K_SOF_MARKER (UCHAR)0xc0
#define K_SOS_MARKER (UCHAR)0xda
#define K_EOI_MARKER (UCHAR)0xd9
#define K_COM_MARKER (UCHAR)0xfe
#define K_DRI_MARKER (UCHAR)0xdd
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -