
.16byte

file header.
'PackedImages01\0\0'

.496byte

state save area.
fill zero.

.values

u32 files count.
u32 offset to body[files count]

.body area

typedef TFileInfoStr={
  UCS2 UnicodeFilename + '\0'
  u8 Dummy;
  u8 (EFileInfoExt)FileInfoExt;
  if(FileInfoExt==EFIE_Exif){
    char Description + '\0'; (Max 256chars)
    char DateTime + '\0'; (Max 20chars)
    char '\0\0';
  }
}

typedef TInsideThumbnail={
  u32 width
  u32 height
  u32 ratio (fixed fraction 16.16)
  u32 decomp size
  u32 comp size
  u8 compdata[comp size];
}

u32 FileInfoStrSize=sizeof(TFileInfoStr);
TFileInfoStr FileInfoStr;
TInsideThumbnail InsideThumbnail48x64pixel
TInsideThumbnail InsideThumbnail64x48pixel
TInsideThumbnail InsideThumbnail192x256pixel
TInsideThumbnail InsideThumbnail256x192pixel
{ record of full image
  u32 width
  u32 height
  u16 MCUXCount
  u16 Dummy
  u16 MCUYCount
  u16 (EIPKBodyFormat)IPKBodyFormat
  if((IPKBodyFormat==EIPKBF_CustomJpegYUV111)||(IPKBodyFormat==EIPKBF_CustomJpegYUV411)){
    s16 QuantizeTable[64];
  }
  (
    u16 comp size
    u16 decomp size
    u8 compdata[comp size];
  ) * (MCUXCount * MCUYCount)
}

