1*fd1fabb7SAndroid Build Coastguard Worker /*****************************************************************************/ 2*fd1fabb7SAndroid Build Coastguard Worker // Copyright 2006-2011 Adobe Systems Incorporated 3*fd1fabb7SAndroid Build Coastguard Worker // All Rights Reserved. 4*fd1fabb7SAndroid Build Coastguard Worker // 5*fd1fabb7SAndroid Build Coastguard Worker // NOTICE: Adobe permits you to use, modify, and distribute this file in 6*fd1fabb7SAndroid Build Coastguard Worker // accordance with the terms of the Adobe license agreement accompanying it. 7*fd1fabb7SAndroid Build Coastguard Worker /*****************************************************************************/ 8*fd1fabb7SAndroid Build Coastguard Worker 9*fd1fabb7SAndroid Build Coastguard Worker /* $Id: //mondo/dng_sdk_1_4/dng_sdk/source/dng_info.h#1 $ */ 10*fd1fabb7SAndroid Build Coastguard Worker /* $DateTime: 2012/05/30 13:28:51 $ */ 11*fd1fabb7SAndroid Build Coastguard Worker /* $Change: 832332 $ */ 12*fd1fabb7SAndroid Build Coastguard Worker /* $Author: tknoll $ */ 13*fd1fabb7SAndroid Build Coastguard Worker 14*fd1fabb7SAndroid Build Coastguard Worker /** \file 15*fd1fabb7SAndroid Build Coastguard Worker * Class for holding top-level information about a DNG image. 16*fd1fabb7SAndroid Build Coastguard Worker */ 17*fd1fabb7SAndroid Build Coastguard Worker 18*fd1fabb7SAndroid Build Coastguard Worker /*****************************************************************************/ 19*fd1fabb7SAndroid Build Coastguard Worker 20*fd1fabb7SAndroid Build Coastguard Worker #ifndef __dng_info__ 21*fd1fabb7SAndroid Build Coastguard Worker #define __dng_info__ 22*fd1fabb7SAndroid Build Coastguard Worker 23*fd1fabb7SAndroid Build Coastguard Worker /*****************************************************************************/ 24*fd1fabb7SAndroid Build Coastguard Worker 25*fd1fabb7SAndroid Build Coastguard Worker #include "dng_classes.h" 26*fd1fabb7SAndroid Build Coastguard Worker #include "dng_ifd.h" 27*fd1fabb7SAndroid Build Coastguard Worker #include "dng_exif.h" 28*fd1fabb7SAndroid Build Coastguard Worker #include "dng_shared.h" 29*fd1fabb7SAndroid Build Coastguard Worker #include "dng_errors.h" 30*fd1fabb7SAndroid Build Coastguard Worker #include "dng_sdk_limits.h" 31*fd1fabb7SAndroid Build Coastguard Worker #include "dng_auto_ptr.h" 32*fd1fabb7SAndroid Build Coastguard Worker 33*fd1fabb7SAndroid Build Coastguard Worker /*****************************************************************************/ 34*fd1fabb7SAndroid Build Coastguard Worker 35*fd1fabb7SAndroid Build Coastguard Worker /// \brief Top-level structure of DNG file with access to metadata. 36*fd1fabb7SAndroid Build Coastguard Worker /// 37*fd1fabb7SAndroid Build Coastguard Worker /// See \ref spec_dng "DNG 1.1.0 specification" for information on member fields of this class. 38*fd1fabb7SAndroid Build Coastguard Worker 39*fd1fabb7SAndroid Build Coastguard Worker class dng_info 40*fd1fabb7SAndroid Build Coastguard Worker { 41*fd1fabb7SAndroid Build Coastguard Worker 42*fd1fabb7SAndroid Build Coastguard Worker public: 43*fd1fabb7SAndroid Build Coastguard Worker 44*fd1fabb7SAndroid Build Coastguard Worker uint64 fTIFFBlockOffset; 45*fd1fabb7SAndroid Build Coastguard Worker 46*fd1fabb7SAndroid Build Coastguard Worker uint64 fTIFFBlockOriginalOffset; 47*fd1fabb7SAndroid Build Coastguard Worker 48*fd1fabb7SAndroid Build Coastguard Worker bool fBigEndian; 49*fd1fabb7SAndroid Build Coastguard Worker 50*fd1fabb7SAndroid Build Coastguard Worker uint32 fMagic; 51*fd1fabb7SAndroid Build Coastguard Worker 52*fd1fabb7SAndroid Build Coastguard Worker AutoPtr<dng_exif> fExif; 53*fd1fabb7SAndroid Build Coastguard Worker 54*fd1fabb7SAndroid Build Coastguard Worker AutoPtr<dng_shared> fShared; 55*fd1fabb7SAndroid Build Coastguard Worker 56*fd1fabb7SAndroid Build Coastguard Worker int32 fMainIndex; 57*fd1fabb7SAndroid Build Coastguard Worker 58*fd1fabb7SAndroid Build Coastguard Worker int32 fMaskIndex; 59*fd1fabb7SAndroid Build Coastguard Worker 60*fd1fabb7SAndroid Build Coastguard Worker uint32 fIFDCount; 61*fd1fabb7SAndroid Build Coastguard Worker 62*fd1fabb7SAndroid Build Coastguard Worker AutoPtr<dng_ifd> fIFD [kMaxSubIFDs + 1]; 63*fd1fabb7SAndroid Build Coastguard Worker 64*fd1fabb7SAndroid Build Coastguard Worker uint32 fChainedIFDCount; 65*fd1fabb7SAndroid Build Coastguard Worker 66*fd1fabb7SAndroid Build Coastguard Worker AutoPtr<dng_ifd> fChainedIFD [kMaxChainedIFDs]; 67*fd1fabb7SAndroid Build Coastguard Worker 68*fd1fabb7SAndroid Build Coastguard Worker protected: 69*fd1fabb7SAndroid Build Coastguard Worker 70*fd1fabb7SAndroid Build Coastguard Worker uint32 fMakerNoteNextIFD; 71*fd1fabb7SAndroid Build Coastguard Worker 72*fd1fabb7SAndroid Build Coastguard Worker public: 73*fd1fabb7SAndroid Build Coastguard Worker 74*fd1fabb7SAndroid Build Coastguard Worker dng_info (); 75*fd1fabb7SAndroid Build Coastguard Worker 76*fd1fabb7SAndroid Build Coastguard Worker virtual ~dng_info (); 77*fd1fabb7SAndroid Build Coastguard Worker 78*fd1fabb7SAndroid Build Coastguard Worker /// Read dng_info from a dng_stream 79*fd1fabb7SAndroid Build Coastguard Worker /// \param host DNG host used for progress updating, abort testing, buffer allocation, etc. 80*fd1fabb7SAndroid Build Coastguard Worker /// \param stream Stream to read DNG data from. 81*fd1fabb7SAndroid Build Coastguard Worker 82*fd1fabb7SAndroid Build Coastguard Worker virtual void Parse (dng_host &host, 83*fd1fabb7SAndroid Build Coastguard Worker dng_stream &stream); 84*fd1fabb7SAndroid Build Coastguard Worker 85*fd1fabb7SAndroid Build Coastguard Worker /// Must be called immediately after a successful Parse operation. 86*fd1fabb7SAndroid Build Coastguard Worker 87*fd1fabb7SAndroid Build Coastguard Worker virtual void PostParse (dng_host &host); 88*fd1fabb7SAndroid Build Coastguard Worker 89*fd1fabb7SAndroid Build Coastguard Worker /// Test validity of DNG data. 90*fd1fabb7SAndroid Build Coastguard Worker /// \retval true if stream provided a valid DNG. 91*fd1fabb7SAndroid Build Coastguard Worker 92*fd1fabb7SAndroid Build Coastguard Worker virtual bool IsValidDNG (); 93*fd1fabb7SAndroid Build Coastguard Worker 94*fd1fabb7SAndroid Build Coastguard Worker protected: 95*fd1fabb7SAndroid Build Coastguard Worker 96*fd1fabb7SAndroid Build Coastguard Worker virtual void ValidateMagic (); 97*fd1fabb7SAndroid Build Coastguard Worker 98*fd1fabb7SAndroid Build Coastguard Worker virtual void ParseTag (dng_host &host, 99*fd1fabb7SAndroid Build Coastguard Worker dng_stream &stream, 100*fd1fabb7SAndroid Build Coastguard Worker dng_exif *exif, 101*fd1fabb7SAndroid Build Coastguard Worker dng_shared *shared, 102*fd1fabb7SAndroid Build Coastguard Worker dng_ifd *ifd, 103*fd1fabb7SAndroid Build Coastguard Worker uint32 parentCode, 104*fd1fabb7SAndroid Build Coastguard Worker uint32 tagCode, 105*fd1fabb7SAndroid Build Coastguard Worker uint32 tagType, 106*fd1fabb7SAndroid Build Coastguard Worker uint32 tagCount, 107*fd1fabb7SAndroid Build Coastguard Worker uint64 tagOffset, 108*fd1fabb7SAndroid Build Coastguard Worker int64 offsetDelta); 109*fd1fabb7SAndroid Build Coastguard Worker 110*fd1fabb7SAndroid Build Coastguard Worker virtual bool ValidateIFD (dng_stream &stream, 111*fd1fabb7SAndroid Build Coastguard Worker uint64 ifdOffset, 112*fd1fabb7SAndroid Build Coastguard Worker int64 offsetDelta); 113*fd1fabb7SAndroid Build Coastguard Worker 114*fd1fabb7SAndroid Build Coastguard Worker virtual void ParseIFD (dng_host &host, 115*fd1fabb7SAndroid Build Coastguard Worker dng_stream &stream, 116*fd1fabb7SAndroid Build Coastguard Worker dng_exif *exif, 117*fd1fabb7SAndroid Build Coastguard Worker dng_shared *shared, 118*fd1fabb7SAndroid Build Coastguard Worker dng_ifd *ifd, 119*fd1fabb7SAndroid Build Coastguard Worker uint64 ifdOffset, 120*fd1fabb7SAndroid Build Coastguard Worker int64 offsetDelta, 121*fd1fabb7SAndroid Build Coastguard Worker uint32 parentCode); 122*fd1fabb7SAndroid Build Coastguard Worker 123*fd1fabb7SAndroid Build Coastguard Worker virtual bool ParseMakerNoteIFD (dng_host &host, 124*fd1fabb7SAndroid Build Coastguard Worker dng_stream &stream, 125*fd1fabb7SAndroid Build Coastguard Worker uint64 ifdSize, 126*fd1fabb7SAndroid Build Coastguard Worker uint64 ifdOffset, 127*fd1fabb7SAndroid Build Coastguard Worker int64 offsetDelta, 128*fd1fabb7SAndroid Build Coastguard Worker uint64 minOffset, 129*fd1fabb7SAndroid Build Coastguard Worker uint64 maxOffset, 130*fd1fabb7SAndroid Build Coastguard Worker uint32 parentCode); 131*fd1fabb7SAndroid Build Coastguard Worker 132*fd1fabb7SAndroid Build Coastguard Worker virtual void ParseMakerNote (dng_host &host, 133*fd1fabb7SAndroid Build Coastguard Worker dng_stream &stream, 134*fd1fabb7SAndroid Build Coastguard Worker uint32 makerNoteCount, 135*fd1fabb7SAndroid Build Coastguard Worker uint64 makerNoteOffset, 136*fd1fabb7SAndroid Build Coastguard Worker int64 offsetDelta, 137*fd1fabb7SAndroid Build Coastguard Worker uint64 minOffset, 138*fd1fabb7SAndroid Build Coastguard Worker uint64 maxOffset); 139*fd1fabb7SAndroid Build Coastguard Worker 140*fd1fabb7SAndroid Build Coastguard Worker virtual void ParseSonyPrivateData (dng_host &host, 141*fd1fabb7SAndroid Build Coastguard Worker dng_stream &stream, 142*fd1fabb7SAndroid Build Coastguard Worker uint64 count, 143*fd1fabb7SAndroid Build Coastguard Worker uint64 oldOffset, 144*fd1fabb7SAndroid Build Coastguard Worker uint64 newOffset); 145*fd1fabb7SAndroid Build Coastguard Worker 146*fd1fabb7SAndroid Build Coastguard Worker virtual void ParseDNGPrivateData (dng_host &host, 147*fd1fabb7SAndroid Build Coastguard Worker dng_stream &stream); 148*fd1fabb7SAndroid Build Coastguard Worker 149*fd1fabb7SAndroid Build Coastguard Worker private: 150*fd1fabb7SAndroid Build Coastguard Worker 151*fd1fabb7SAndroid Build Coastguard Worker // Hidden copy constructor and assignment operator. 152*fd1fabb7SAndroid Build Coastguard Worker 153*fd1fabb7SAndroid Build Coastguard Worker dng_info (const dng_info &info); 154*fd1fabb7SAndroid Build Coastguard Worker 155*fd1fabb7SAndroid Build Coastguard Worker dng_info & operator= (const dng_info &info); 156*fd1fabb7SAndroid Build Coastguard Worker 157*fd1fabb7SAndroid Build Coastguard Worker }; 158*fd1fabb7SAndroid Build Coastguard Worker 159*fd1fabb7SAndroid Build Coastguard Worker /*****************************************************************************/ 160*fd1fabb7SAndroid Build Coastguard Worker 161*fd1fabb7SAndroid Build Coastguard Worker #endif 162*fd1fabb7SAndroid Build Coastguard Worker 163*fd1fabb7SAndroid Build Coastguard Worker /*****************************************************************************/ 164