MCPcopy Create free account
hub / github.com/ImpulseAdventure/JPEGsnoop / DecodeApp2Flashpix

Method DecodeApp2Flashpix

JfifDecode.cpp:3236–3389  ·  view source on GitHub ↗

Parser for APP2 FlashPix marker

Source from the content-addressed store, hash-verified

3234
3235// Parser for APP2 FlashPix marker
3236unsigned CjfifDecode::DecodeApp2Flashpix()
3237{
3238
3239 CString strTmp;
3240
3241 unsigned nFpxVer;
3242 unsigned nFpxSegType;
3243 unsigned nFpxInteropCnt;
3244 unsigned nFpxEntitySz;
3245 unsigned nFpxDefault;
3246
3247 bool bFpxStorage;
3248 CString strFpxStorageClsStr;
3249 unsigned nFpxStIndexCont;
3250 unsigned nFpxStOffset;
3251
3252 unsigned nFpxStWByteOrder;
3253 unsigned nFpxStWFormat;
3254 CString strFpxStClsidStr;
3255 unsigned nFpxStDwOsVer;
3256 unsigned nFpxStRsvd;
3257
3258 CString streamStr;
3259
3260 nFpxVer = Buf(m_nPos++);
3261 nFpxSegType = Buf(m_nPos++);
3262
3263 // FlashPix segments: Contents List or Stream Data
3264
3265 if (nFpxSegType == 1) {
3266 // Contents List
3267 strTmp.Format(_T(" Segment: CONTENTS LIST"));
3268 m_pLog->AddLine(strTmp);
3269
3270 nFpxInteropCnt = (Buf(m_nPos++)<<8) + Buf(m_nPos++);
3271 strTmp.Format(_T(" Interoperability Count = %u"),nFpxInteropCnt);
3272 m_pLog->AddLine(strTmp);
3273
3274 for (unsigned ind=0;ind<nFpxInteropCnt;ind++) {
3275 strTmp.Format(_T(" Entity Index #%u"),ind);
3276 m_pLog->AddLine(strTmp);
3277 nFpxEntitySz = (Buf(m_nPos++)<<24) + (Buf(m_nPos++)<<16) + (Buf(m_nPos++)<<8) + Buf(m_nPos++);
3278
3279 // If the "entity size" field is 0xFFFFFFFF, then it should be treated as
3280 // a "storage". It looks like we should probably be using this to determine
3281 // that we have a "storage"
3282 bFpxStorage = false;
3283 if (nFpxEntitySz == 0xFFFFFFFF) {
3284 bFpxStorage = true;
3285 }
3286
3287 if (!bFpxStorage) {
3288 strTmp.Format(_T(" Entity Size = %u"),nFpxEntitySz);
3289 m_pLog->AddLine(strTmp);
3290 } else {
3291 strTmp.Format(_T(" Entity is Storage"));
3292 m_pLog->AddLine(strTmp);
3293 }

Callers

nothing calls this directly

Calls 3

AddLineMethod · 0.80
BufReadUniStr2Method · 0.80
AddLineErrMethod · 0.80

Tested by

no test coverage detected