Libmpo  Build #33
A WIP library to decode and encode MPO (multiple picture object) files
All Data Structures Files Functions Variables Enumerations Enumerator
mpo.h File Reference

Data structures and definitions related to mpo files. More...

#include <stdio.h>
#include <stdlib.h>
#include <jpeglib.h>
#include <stdint.h>
#include <stdbool.h>

Go to the source code of this file.

Data Structures

struct  MPFRational
 
struct  MPFSRational
 
struct  MPFbuffer
 
union  MPExt_IndividualImageAttr
 
struct  MPExt_MPEntryIndexFields
 
struct  MPExt_MPEntry
 
struct  MPExt_ImageAttr
 
struct  MPExt_Data
 
struct  mpo_compress_struct
 

Macros

#define mpo_printf(args...)   printf(args)
 
#define ATTR_IS_SPECIFIED(attr, tag)   ((attr).is_specified[(tag)-MPTag_IndividualNum])
 

Typedefs

typedef uint8_t MPFByte
 
typedef int8_t MPFSByte
 
typedef char * MPFAscii
 
typedef uint16_t MPFShort
 
typedef int16_t MPFSShort
 
typedef uint32_t MPFLong
 
typedef int32_t MPFSLong
 
typedef unsigned char MPFUndefined
 
typedef MPFbufferMPFbuffer_ptr
 

Enumerations

enum  MPFVal_types {
  MPF_BYTE = 1, MPF_ASCII = 2, MPF_SHORT = 3, MPF_LONG = 4,
  MPF_RATIONAL = 5, MPF_UNDEFINED = 7, MPF_SLONG = 9, MPF_SRATIONAL = 10
}
 
enum  MPExt_ByteOrder { MPF_LITTLE_ENDIAN = 0x49492A00, MPF_BIG_ENDIAN = 0x4D4D002A }
 
enum  MPExt_MPTags {
  MPTag_MPFVersion = 0xB000, MPTag_NumberOfImages = 0xB001, MPTag_MPEntry = 0xB002, MPTag_ImageUIDList = 0xB003,
  MPTag_TotalFrames = 0xB004, MPTag_IndividualNum = 0xb101, MPTag_PanOrientation = 0xb201, MPTag_PanOverlapH = 0xb202,
  MPTag_PanOverlapV = 0xb203, MPTag_BaseViewpointNum = 0xb204, MPTag_ConvergenceAngle = 0xb205, MPTag_BaselineLength = 0xb206,
  MPTag_VerticalDivergence = 0xb207, MPTag_AxisDistanceX = 0xb208, MPTag_AxisDistanceY = 0xb209, MPTag_AxisDistanceZ = 0xb20a,
  MPTag_YawAngle = 0xb20b, MPTag_PitchAngle = 0xb20c, MPTag_RollAngle = 0xb20d
}
 
enum  MPExt_MPType {
  MPType_LargeThumbnail_Mask =0x10000, MPType_LargeThumbnail_Class1 =0x10001, MPType_LargeThumbnail_Class2 =0x10002, MPType_MultiFrame_Mask =0x20000,
  MPType_MultiFrame_Panorama =0x20001, MPType_MultiFrame_Disparity =0x20002, MPType_MultiFrame_MultiAngle =0x20003, MPType_Baseline =0x30000
}
 

Functions

bool MPExtReadMPF (MPFbuffer_ptr b, MPExt_Data *data, int isFirstImage)
 
char isLittleEndian ()
 
void destroyMPF_Data (MPExt_Data *data)
 

Detailed Description

Data structures and definitions related to mpo files.

Author
Lectem

Enumeration Type Documentation

Byte order of the data

See the DC-007_E Specification. Section 5.2.2.1 Table 3, page 13

MP format tags

See the DC-007_E Specification. Section 5.2.2.3 Table 3, page 13

Enumerator
MPTag_MPFVersion 

Mandatory

MPTag_NumberOfImages 

Mandatory

MPTag_MPEntry 

Mandatory

MPTag_ImageUIDList 

Optional

MPTag_TotalFrames 

Optional

MPTag_IndividualNum 

Individual image tags (attributes)

See also
MPExt_ImageAttr.IndividualNum
MPTag_PanOrientation 
See also
MPExt_ImageAttr.PanOrientation
MPTag_PanOverlapH 
See also
MPExt_ImageAttr.PanOverlapH
MPTag_PanOverlapV 
See also
MPExt_ImageAttr.PanOverlapV
MPTag_BaseViewpointNum 
See also
MPExt_ImageAttr.BaseViewpointNum
MPTag_ConvergenceAngle 
See also
MPExt_ImageAttr.ConvergenceAngle
MPTag_BaselineLength 
See also
MPExt_ImageAttr.BaselineLength
MPTag_VerticalDivergence 
See also
MPExt_ImageAttr.VerticalDivergence
MPTag_AxisDistanceX 
See also
MPExt_ImageAttr.AxisDistanceX
MPTag_AxisDistanceY 
See also
MPExt_ImageAttr.AxisDistanceY
MPTag_AxisDistanceZ 
See also
MPExt_ImageAttr.AxisDistanceZ
MPTag_YawAngle 
See also
MPExt_ImageAttr.YawAngle
MPTag_PitchAngle 
See also
MPExt_ImageAttr.PitchAngle
MPTag_RollAngle 
See also
MPExt_ImageAttr.RollAngle

MP Format types

See the DC-007_E Specification. Section 5.2.3.3.1 Table 4, page 16.
Each type may have subtypes

Enumerator
MPType_LargeThumbnail_Mask 

Used to check if an image is of type Large Thumbnail

MPType_LargeThumbnail_Class1 

Large Thumbnail | Class 1 (VGA Equivalent)

MPType_LargeThumbnail_Class2 

Large Thumbnail | Class 2 (Full HD Equivalent)

MPType_MultiFrame_Mask 

Used to check if an image is of type Multi-Frame Image

MPType_MultiFrame_Panorama 

Multi-Frame Image | Panorama

MPType_MultiFrame_Disparity 

Multi-Frame Image | Disparity

MPType_MultiFrame_MultiAngle 

Multi-Frame Image | Multi-Angle

MPType_Baseline 

Baseline MP Primary Image

Those are Exif types

Enumerator
MPF_BYTE 

8-bit unsigned integer

MPF_ASCII 

8-bit byte containing one 7-bit ASCII code.The final byte is terminated with NULL.

MPF_SHORT 

16-bits unsigned integer

MPF_LONG 

32-bits integer

MPF_RATIONAL 

Two LONGs. The first LONG is the numerator and the second LONG expresses the denominator.

MPF_UNDEFINED 

Anything undefined by the EXIF standard

MPF_SLONG 

32-byte signed integer (2's complement notation).

MPF_SRATIONAL 

Two SLONGs. The first SLONG is the numerator and the second SLONG is the denominator.