-
- ftellRes=ftell(fp);
- fread(&ItemTagGr,2,1,fp); // Reading (fffe) : Item Tag Gr
- fread(&ItemTagEl,2,1,fp); // Reading (e000) : Item Tag El
- if(GetSwapCode()) {
- ItemTagGr=SwapShort(ItemTagGr);
- ItemTagEl=SwapShort(ItemTagEl);
- }
- printf ("at %x : ItemTag (should be fffe,e000 or e0dd): %04x,%04x\n",
- (unsigned)ftellRes,ItemTagGr,ItemTagEl );
-
- // while 'Sequence Delimiter Item' (fffe,e0dd) not found
- while ( ( ItemTagGr == 0xfffe) && (ItemTagEl != 0xe0dd) ) {
- // Parse fragments of the current Fragment (Frame)
- ftellRes=ftell(fp);
- fread(&fragmentLength,4,1,fp);
- if(GetSwapCode())
- fragmentLength=SwapLong(fragmentLength); // length
- printf(" at %x : 'fragment' length %d x(%08x)\n",
- (unsigned)ftellRes, (unsigned)fragmentLength,(unsigned)fragmentLength);
-
- //------------------ scanning (not reading) fragment pixels
-
- fread(&nbRleSegments,4,1,fp); // Reading : Number of RLE Segments
- if(GetSwapCode())
- nbRleSegments=SwapLong(nbRleSegments);
- printf(" Nb of RLE Segments : %d\n",nbRleSegments);
-
- for(int k=1; k<=15; k++) { // Reading RLE Segments Offset Table
- ftellRes=ftell(fp);
- fread(&RleSegmentOffsetTable[k],4,1,fp);
- if(GetSwapCode())
- RleSegmentOffsetTable[k]=SwapLong(RleSegmentOffsetTable[k]);
- printf(" at : %x Offset Segment %d : %d (%x)\n",
- (unsigned)ftellRes,k,RleSegmentOffsetTable[k],
- RleSegmentOffsetTable[k]);
- }
-
- if (nbRleSegments>1) { // skipping (not reading) RLE Segments
- for(unsigned int k=1; k<=nbRleSegments-1; k++) {
- RleSegmentLength[k]= RleSegmentOffsetTable[k+1]
- - RleSegmentOffsetTable[k];
- ftellRes=ftell(fp);
- printf (" Segment %d : Length = %d x(%x) Start at %x\n",
- k,(unsigned)RleSegmentLength[k],(unsigned)RleSegmentLength[k], (unsigned)ftellRes);
- fseek(fp,RleSegmentLength[k],SEEK_CUR);
- }
- }
- RleSegmentLength[nbRleSegments]= fragmentLength
- - RleSegmentOffsetTable[nbRleSegments];
- ftellRes=ftell(fp);
- printf (" Segment %d : Length = %d x(%x) Start at %x\n",
- nbRleSegments,(unsigned)RleSegmentLength[nbRleSegments],
- (unsigned)RleSegmentLength[nbRleSegments],(unsigned)ftellRes);
-
- fseek(fp,RleSegmentLength[nbRleSegments],SEEK_CUR);
-
- // ------------------ end of scanning fragment pixels
-
- ftellRes=ftell(fp);
- fread(&ItemTagGr,2,1,fp); // Reading (fffe) : Item Tag Gr
- fread(&ItemTagEl,2,1,fp); // Reading (e000) : Item Tag El
- if(GetSwapCode()) {
- ItemTagGr=SwapShort(ItemTagGr);
- ItemTagEl=SwapShort(ItemTagEl);
- }
- printf ("at %x : ItemTag (should be fffe,e000 or e0dd): %04x,%04x\n",
- (unsigned)ftellRes,ItemTagGr,ItemTagEl );
- }