--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/imagingmodules/jp2kcodec/Inc/JP2KMarker.h Thu Dec 17 09:22:31 2009 +0200
@@ -0,0 +1,552 @@
+/*
+* Copyright (c) 2003, 2004 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: Collection of structs used to gather the various
+* marker related information in the JP2 image file.
+* TxxxMarker must not exist on the stack, it must
+* be the data member of the classes derived from CBase.
+*
+*/
+
+
+#ifndef __JP2KMARKER_H__
+#define __JP2KMARKER_H__
+
+// INCLUDES
+#include <e32base.h>
+
+// CONSTANTS
+
+// MACROS
+
+// DATA TYPES
+
+/**
+ * struct TSizMarker
+ * Image and tile size (SIZ)
+ * @since 2.6
+ */
+struct TSizMarker
+ {
+
+ /**
+ * Constructor
+ * @since 2.6
+ */
+ TSizMarker();
+
+ /**
+ * Destructor
+ * @since 2.6
+ */
+ ~TSizMarker();
+
+ TUint32 iXsiz;
+ TUint32 iYsiz;
+ TUint32 iXOsiz;
+ TUint32 iYOsiz;
+ TUint32 iXTsiz;
+ TUint32 iYTsiz;
+ TUint32 iXTOsiz;
+ TUint32 iYTOsiz;
+ TUint16 iRsiz;
+ TUint16 iCsiz;
+ RArray<TUint> iSsiz;
+ RArray<TUint> iXRsiz;
+ RArray<TUint> iYRsiz;
+ };
+
+/**
+ * struct TSotMarker
+ * Start of tile-part (SOT)
+ * @since 2.6
+ */
+struct TSotMarker
+ {
+ TUint32 iPsot;
+ TUint16 iIsot;
+ TUint8 iTPsot;
+ TUint8 iTNsot;
+ };
+
+/**
+ * struct TCODMarker
+ * Coding style default (COD)
+ * @since 2.6
+ */
+struct TCODMarker
+ {
+ /**
+ * Constructor
+ * @since 2.6
+ */
+ TCODMarker();
+
+ /**
+ * Destructor
+ * @since 2.6
+ */
+ ~TCODMarker();
+
+ TUint8 iScod;
+ TUint8 iProgressionOrder;
+ TUint8 iColorTransformation;
+ TUint8 iNumOfLevels;
+ TUint8 iCodeBlockStyle;
+ TUint8 iWaveletTransformation;
+ TUint16 iNumOfLayers;
+ TSize iCodeBlockSiz;
+ HBufC8 *iPrecinctSiz;
+ };
+
+/**
+ * struct TCOCMarker
+ * Coding style component (COC)
+ * @since 2.6
+ */
+struct TCOCMarker
+ {
+
+ /**
+ * Constructor
+ * @since 2.6
+ */
+ TCOCMarker();
+
+ /**
+ * Destructor
+ * @since 2.6
+ */
+ ~TCOCMarker();
+
+ TUint16 iCcoc;
+ TUint8 iScoc;
+ TUint8 iNumOfLevels;
+ TUint8 iCodeBlockStyle;
+ TUint8 iWaveletTransformation;
+ TSize iCodeBlockSiz;
+ HBufC8 *iPrecinctSiz;
+ };
+
+/**
+ * struct TQCDMarker
+ * Quantization default (QCD)
+ * @since 2.6
+ */
+struct TQCDMarker
+ {
+
+ /**
+ * Constructor
+ * @since 2.6
+ */
+ TQCDMarker();
+
+ /**
+ * Destructor
+ * @since 2.6
+ */
+ ~TQCDMarker();
+
+ TUint8 iSqcd;
+ HBufC8 *iExponent;
+ HBufC16 *iMantissa;
+ };
+
+/**
+ * struct TQCCMarker
+ * Quantization component (QCC)
+ * @since 2.6
+ */
+struct TQCCMarker
+ {
+
+ /**
+ * Constructor
+ * @since 2.6
+ */
+ TQCCMarker();
+
+ /**
+ * Destructor
+ * @since 2.6
+ */
+ ~TQCCMarker();
+
+ TUint16 iCqcc;
+ TUint8 iSqcc;
+ HBufC8 *iExponent;
+ HBufC16 *iMantissa;
+ };
+
+/**
+ * struct TRGNMarker
+ * Region of interest (RGN)
+ * @since 2.6
+ */
+struct TRGNMarker
+ {
+ TUint16 iCrgn;
+ TUint8 iSrgn;
+ TUint8 iSPrgn;
+ };
+
+/**
+ * struct TPOCMarker
+ * Progression order change (POC)
+ * @since 2.6
+ */
+struct TPOCMarker
+ {
+
+ /**
+ * Constructor
+ * @since 2.6
+ */
+ TPOCMarker();
+
+ /**
+ * Destructor
+ * @since 2.6
+ */
+ ~TPOCMarker();
+
+ RArray<TUint> iRSpoc;
+ RArray<TUint> iCSpoc;
+ RArray<TUint> iLYEpoc;
+ RArray<TUint> iREpoc;
+ RArray<TUint> iCEpoc;
+ RArray<TUint> iPpoc;
+ };
+
+/**
+ * struct TPPMMarker
+ * Packed packet headers, main header (PPM)
+ * @since 2.6
+ */
+struct TPPMMarker
+ {
+
+ /**
+ * Constructor
+ * @since 2.6
+ */
+ TPPMMarker();
+
+ /**
+ * Destructor
+ * @since 2.6
+ */
+ ~TPPMMarker();
+
+ TUint8 iZppm;
+ TUint32 iRemainder;
+ TUint32 iNppm;
+ HBufC8 *iIppm;
+ };
+
+/**
+ * struct TTLMMarker
+ * Tile-part lengths (TLM)
+ * @since 2.6
+ */
+struct TTLMMarker
+ {
+
+ /**
+ * Constructor
+ * @since 2.6
+ */
+ TTLMMarker();
+
+ /**
+ * Destructor
+ * @since 2.6
+ */
+ ~TTLMMarker();
+
+ TUint8 iZtlm;
+ TUint8 iStlm;
+ RArray<TUint> iTtlm;
+ RArray<TUint> iPtlm;
+ };
+
+/**
+ * struct TPLMMarker
+ * Packet length, main header (PLM)
+ * @since 2.6
+ */
+struct TPLMMarker
+ {
+ /**
+ * Constructor
+ * @since 2.6
+ */
+ TPLMMarker();
+
+ /**
+ * Destructor
+ * @since 2.6
+ */
+ ~TPLMMarker();
+
+ TUint8 iZplm;
+ TUint8 iNplm;
+ HBufC8 *iIplm;
+ };
+
+/**
+ * struct TPPTMarker
+ * Packed packet headers, tile-part header (PPT)
+ * @since 2.6
+ */
+struct TPPTMarker
+ {
+
+ /**
+ * Constructor
+ * @since 2.6
+ */
+ TPPTMarker();
+
+ /**
+ * Destructor
+ * @since 2.6
+ */
+ ~TPPTMarker();
+
+ TUint8 iZppt;
+ HBufC8 *iIppt;
+ };
+
+/**
+ * struct TPLTMarker
+ * Packet length, tile-part header (PLT)
+ * @since 2.6
+ */
+struct TPLTMarker
+ {
+
+ /**
+ * Constructor
+ * @since 2.6
+ */
+ TPLTMarker();
+
+ /**
+ * Destructor
+ * @since 2.6
+ */
+ ~TPLTMarker();
+
+ TUint8 iZplt;
+ RArray<TUint> iIplt;
+ };
+
+/**
+ * struct TCRGMarker
+ * Component registration (CRG)
+ * @since 2.6
+ */
+struct TCRGMarker
+ {
+
+ /**
+ * Constructor
+ * @since 2.6
+ */
+ TCRGMarker();
+
+ /**
+ * Destructor
+ * @since 2.6
+ */
+ ~TCRGMarker();
+
+ RArray<TPoint> iXYcrg;
+ };
+
+/**
+ * struct TCOMMarker
+ * Comment (COM)
+ * @since 2.6
+ */
+struct TCOMMarker
+ {
+
+ /**
+ * Constructor
+ * @since 2.6
+ */
+ TCOMMarker();
+ /**
+ * Destructor
+ * @since 2.6
+ */
+ ~TCOMMarker();
+
+ TUint16 iRemainder;
+ TUint16 iRcom;
+ HBufC8 *iCcom;
+ };
+
+/**
+ * struct TMainMarker
+ * Main header
+ * @since 2.6
+ */
+struct TMainMarker
+ {
+
+ /**
+ * Constructor
+ * @since 2.6
+ */
+ TMainMarker();
+
+ /**
+ * Destructor
+ * @since 2.6
+ */
+ ~TMainMarker();
+
+ TCODMarker iCod;
+ TQCDMarker iQcd;
+ RPointerArray<TCOCMarker> iCoc;
+ RPointerArray<TQCCMarker> iQcc;
+ RPointerArray<TRGNMarker> iRgn;
+ TPOCMarker *iPoc;
+ RPointerArray<TPPMMarker> iPpm;
+ RPointerArray<TTLMMarker> iTlm;
+ RPointerArray<TPLMMarker> iPlm;
+ TCRGMarker *iCrg;
+ RPointerArray<TCOMMarker> iCom;
+ };
+
+/**
+ * struct TTileMarker
+ * Tile-part header
+ * @since 2.6
+ */
+struct TTileMarker
+ {
+ /**
+ * Constructor
+ * @since 2.6
+ */
+ TTileMarker();
+
+ /**
+ * Destructor
+ * @since 2.6
+ */
+ ~TTileMarker();
+
+ TCODMarker *iCod;
+ TQCDMarker *iQcd;
+ RPointerArray<TCOCMarker> iCoc;
+ RPointerArray<TQCCMarker> iQcc;
+ RPointerArray<TRGNMarker> iRgn;
+ TPOCMarker *iPoc;
+ RPointerArray<TPPTMarker> iPpt;
+ RPointerArray<TPLTMarker> iPlt;
+ RPointerArray<TCOMMarker> iCom;
+ };
+
+
+// FUNCTION PROTOTYPES
+
+// FORWARD DECLARATIONS
+
+// CLASS DECLARATION
+
+/**
+ * MJ2kPacketHeaderReader defines the interface
+ * for reading the packet header from streams.
+ * @since 2.6
+ */
+class MJ2kPacketHeaderReader
+ {
+ public: // Constructors and destructor
+
+ public: // New functions
+
+ /**
+ * Try to consume the EPH marker if there is one
+ * @since 2.6
+ * @return TUint8: true if end of buffer.
+ */
+ virtual TUint8 ReadEPHMarker() = 0;
+
+ /**
+ * Read a bit from the packet header stream
+ * @since 2.6
+ * @param aBit: get a bit from the packet header bitstream.
+ * @return TUint8: true if end of buffer.
+ */
+ virtual TUint8 ReadBit( TUint8& aBit ) = 0;
+
+ /**
+ * Read some bits from the packet header stream
+ * @since 2.6
+ * @param aBit: get some bits from the packet header bitstream.
+ * @param aBitLen: how many bits to read.
+ * @return TUint8: true if end of buffer.
+ */
+ virtual TUint8 ReadBits( TUint8& aBit, TUint8 aBitLen ) = 0;
+
+ /**
+ * Read some bits from the packet header stream
+ * @since 2.6
+ * @param aBit: get some bits from the packet header bitstream.
+ * @param aBitLen: how many bits to read.
+ * @return TUint8: true if end of buffer.
+ */
+ virtual TUint8 ReadBits( TUint32& aBit, TUint8 aBitLen ) = 0;
+
+ /**
+ * Start reading from packet header stream
+ * @since 2.6
+ * @return TUint8: true if end of buffer.
+ */
+ virtual TUint8 StartReadBit() = 0;
+
+ /**
+ * Align the stream to the next byte boundary if necessary
+ * @since 2.6
+ */
+ virtual void AlignReader() = 0;
+
+ public: // Functions from base classes
+
+ protected: // New functions
+
+ protected: // Functions from base classes
+
+ private:
+
+ public: // Data
+
+ protected: // Data
+
+ private: // Data
+
+ public: // Friend classes
+
+ protected: // Friend classes
+
+ private: // Friend classes
+
+ };
+
+#endif // __JP2KMARKER_H__