imagingmodules/jp2kcodec/Inc/JP2KMarker.h
changeset 0 469c91dae73b
equal deleted inserted replaced
-1:000000000000 0:469c91dae73b
       
     1 /*
       
     2 * Copyright (c) 2003, 2004 Nokia Corporation and/or its subsidiary(-ies).
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description:  Collection of structs used to gather the various
       
    15 *                marker related information in the JP2 image file.
       
    16 *                TxxxMarker must not exist on the stack, it must
       
    17 *                be the data member of the classes derived from CBase.
       
    18 *
       
    19 */
       
    20 
       
    21 
       
    22 #ifndef __JP2KMARKER_H__
       
    23 #define __JP2KMARKER_H__
       
    24 
       
    25 //  INCLUDES
       
    26 #include <e32base.h>
       
    27 
       
    28 // CONSTANTS
       
    29 
       
    30 // MACROS
       
    31 
       
    32 // DATA TYPES
       
    33 
       
    34 /**
       
    35  * struct TSizMarker
       
    36  * Image and tile size (SIZ)
       
    37  * @since 2.6
       
    38  */
       
    39 struct TSizMarker
       
    40     {
       
    41 
       
    42     /**
       
    43     * Constructor
       
    44     * @since 2.6
       
    45     */
       
    46     TSizMarker();
       
    47 
       
    48     /**
       
    49     * Destructor
       
    50     * @since 2.6
       
    51     */
       
    52     ~TSizMarker();
       
    53 
       
    54     TUint32 iXsiz;
       
    55     TUint32 iYsiz;
       
    56     TUint32 iXOsiz;
       
    57     TUint32 iYOsiz;
       
    58     TUint32 iXTsiz;
       
    59     TUint32 iYTsiz;
       
    60     TUint32 iXTOsiz;
       
    61     TUint32 iYTOsiz;
       
    62     TUint16 iRsiz;
       
    63     TUint16 iCsiz;
       
    64     RArray<TUint> iSsiz;
       
    65     RArray<TUint> iXRsiz;
       
    66     RArray<TUint> iYRsiz;
       
    67     };
       
    68 
       
    69 /**
       
    70  * struct TSotMarker
       
    71  * Start of tile-part (SOT)
       
    72  * @since 2.6
       
    73  */
       
    74 struct TSotMarker
       
    75     {
       
    76     TUint32 iPsot;
       
    77     TUint16 iIsot;
       
    78     TUint8  iTPsot;
       
    79     TUint8  iTNsot;
       
    80     };
       
    81 
       
    82 /**
       
    83  * struct TCODMarker
       
    84  * Coding style default (COD)
       
    85  * @since 2.6
       
    86  */
       
    87 struct TCODMarker
       
    88     {
       
    89     /**
       
    90     * Constructor
       
    91     * @since 2.6
       
    92     */
       
    93     TCODMarker();
       
    94 
       
    95     /**
       
    96     * Destructor
       
    97     * @since 2.6
       
    98     */
       
    99     ~TCODMarker();
       
   100 
       
   101     TUint8  iScod;
       
   102     TUint8  iProgressionOrder;
       
   103     TUint8  iColorTransformation;
       
   104     TUint8  iNumOfLevels;
       
   105     TUint8  iCodeBlockStyle;
       
   106     TUint8  iWaveletTransformation;
       
   107     TUint16 iNumOfLayers;
       
   108     TSize   iCodeBlockSiz;
       
   109     HBufC8 *iPrecinctSiz;
       
   110     };
       
   111 
       
   112 /**
       
   113  * struct TCOCMarker
       
   114  * Coding style component (COC)
       
   115  * @since 2.6
       
   116  */
       
   117 struct TCOCMarker
       
   118     {
       
   119 
       
   120     /**
       
   121     * Constructor
       
   122     * @since 2.6
       
   123     */
       
   124     TCOCMarker();
       
   125 
       
   126     /**
       
   127     * Destructor
       
   128     * @since 2.6
       
   129     */
       
   130     ~TCOCMarker();
       
   131 
       
   132     TUint16 iCcoc;
       
   133     TUint8  iScoc;
       
   134     TUint8  iNumOfLevels;
       
   135     TUint8  iCodeBlockStyle;
       
   136     TUint8  iWaveletTransformation;
       
   137     TSize   iCodeBlockSiz;
       
   138     HBufC8 *iPrecinctSiz;
       
   139     };
       
   140 
       
   141 /**
       
   142  * struct TQCDMarker
       
   143  * Quantization default (QCD)
       
   144  * @since 2.6
       
   145  */
       
   146 struct TQCDMarker
       
   147     {
       
   148 
       
   149     /**
       
   150     * Constructor
       
   151     * @since 2.6
       
   152     */
       
   153     TQCDMarker();
       
   154 
       
   155     /**
       
   156     * Destructor
       
   157     * @since 2.6
       
   158     */
       
   159     ~TQCDMarker();
       
   160 
       
   161     TUint8   iSqcd;
       
   162     HBufC8  *iExponent;
       
   163     HBufC16 *iMantissa;
       
   164     };
       
   165 
       
   166 /**
       
   167  * struct TQCCMarker
       
   168  * Quantization component (QCC)
       
   169  * @since 2.6
       
   170  */
       
   171 struct TQCCMarker
       
   172     {
       
   173 
       
   174     /**
       
   175     * Constructor
       
   176     * @since 2.6
       
   177     */
       
   178     TQCCMarker();
       
   179 
       
   180     /**
       
   181     * Destructor
       
   182     * @since 2.6
       
   183     */
       
   184     ~TQCCMarker();
       
   185 
       
   186     TUint16  iCqcc;
       
   187     TUint8   iSqcc;
       
   188     HBufC8  *iExponent;
       
   189     HBufC16 *iMantissa;
       
   190     };
       
   191 
       
   192 /**
       
   193  * struct TRGNMarker
       
   194  * Region of interest (RGN)
       
   195  * @since 2.6
       
   196  */
       
   197 struct TRGNMarker
       
   198     {
       
   199     TUint16 iCrgn;
       
   200     TUint8  iSrgn;
       
   201     TUint8  iSPrgn;
       
   202     };
       
   203 
       
   204 /**
       
   205  * struct TPOCMarker
       
   206  * Progression order change (POC)
       
   207  * @since 2.6
       
   208  */
       
   209 struct TPOCMarker
       
   210     {
       
   211 
       
   212     /**
       
   213     * Constructor
       
   214     * @since 2.6
       
   215     */
       
   216     TPOCMarker();
       
   217 
       
   218     /**
       
   219     * Destructor
       
   220     * @since 2.6
       
   221     */
       
   222     ~TPOCMarker();
       
   223 
       
   224     RArray<TUint> iRSpoc;
       
   225     RArray<TUint> iCSpoc;
       
   226     RArray<TUint> iLYEpoc;
       
   227     RArray<TUint> iREpoc;
       
   228     RArray<TUint> iCEpoc;
       
   229     RArray<TUint> iPpoc;
       
   230     };
       
   231 
       
   232 /**
       
   233  * struct TPPMMarker
       
   234  * Packed packet headers, main header (PPM)
       
   235  * @since 2.6
       
   236  */
       
   237 struct TPPMMarker
       
   238     {
       
   239 
       
   240     /**
       
   241     * Constructor
       
   242     * @since 2.6
       
   243     */
       
   244     TPPMMarker();
       
   245 
       
   246     /**
       
   247     * Destructor
       
   248     * @since 2.6
       
   249     */
       
   250     ~TPPMMarker();
       
   251 
       
   252     TUint8  iZppm;
       
   253     TUint32 iRemainder;
       
   254     TUint32 iNppm;
       
   255     HBufC8 *iIppm;
       
   256     };
       
   257 
       
   258 /**
       
   259  * struct TTLMMarker
       
   260  * Tile-part lengths (TLM)
       
   261  * @since 2.6
       
   262  */
       
   263 struct TTLMMarker
       
   264     {
       
   265 
       
   266     /**
       
   267     * Constructor
       
   268     * @since 2.6
       
   269     */
       
   270     TTLMMarker();
       
   271 
       
   272     /**
       
   273     * Destructor
       
   274     * @since 2.6
       
   275     */
       
   276     ~TTLMMarker();
       
   277 
       
   278     TUint8 iZtlm;
       
   279     TUint8 iStlm;
       
   280     RArray<TUint> iTtlm;
       
   281     RArray<TUint> iPtlm;
       
   282     };
       
   283 
       
   284 /**
       
   285  * struct TPLMMarker
       
   286  * Packet length, main header (PLM)
       
   287  * @since 2.6
       
   288  */
       
   289 struct TPLMMarker
       
   290     {
       
   291     /**
       
   292     * Constructor
       
   293     * @since 2.6
       
   294     */
       
   295     TPLMMarker();
       
   296 
       
   297     /**
       
   298     * Destructor
       
   299     * @since 2.6
       
   300     */
       
   301     ~TPLMMarker();
       
   302 
       
   303     TUint8  iZplm;
       
   304     TUint8  iNplm;
       
   305     HBufC8 *iIplm;
       
   306     };
       
   307 
       
   308 /**
       
   309  * struct TPPTMarker
       
   310  * Packed packet headers, tile-part header (PPT)
       
   311  * @since 2.6
       
   312  */
       
   313 struct TPPTMarker
       
   314     {
       
   315 
       
   316     /**
       
   317     * Constructor
       
   318     * @since 2.6
       
   319     */
       
   320     TPPTMarker();
       
   321 
       
   322     /**
       
   323     * Destructor
       
   324     * @since 2.6
       
   325     */
       
   326     ~TPPTMarker();
       
   327 
       
   328     TUint8  iZppt;
       
   329     HBufC8 *iIppt;
       
   330     };
       
   331 
       
   332 /**
       
   333  * struct TPLTMarker
       
   334  * Packet length, tile-part header (PLT)
       
   335  * @since 2.6
       
   336  */
       
   337 struct TPLTMarker
       
   338     {
       
   339 
       
   340     /**
       
   341     * Constructor
       
   342     * @since 2.6
       
   343     */
       
   344     TPLTMarker();
       
   345 
       
   346     /**
       
   347     * Destructor
       
   348     * @since 2.6
       
   349     */
       
   350    ~TPLTMarker();
       
   351 
       
   352     TUint8 iZplt;
       
   353     RArray<TUint> iIplt;
       
   354     };
       
   355 
       
   356 /**
       
   357  * struct TCRGMarker
       
   358  * Component registration (CRG)
       
   359  * @since 2.6
       
   360  */
       
   361 struct TCRGMarker
       
   362     {
       
   363 
       
   364     /**
       
   365     * Constructor
       
   366     * @since 2.6
       
   367     */
       
   368     TCRGMarker();
       
   369 
       
   370     /**
       
   371     * Destructor
       
   372     * @since 2.6
       
   373     */
       
   374     ~TCRGMarker();
       
   375 
       
   376     RArray<TPoint> iXYcrg;
       
   377     };
       
   378 
       
   379 /**
       
   380  * struct TCOMMarker
       
   381  * Comment (COM)
       
   382  * @since 2.6
       
   383  */
       
   384 struct TCOMMarker
       
   385     {
       
   386 
       
   387     /**
       
   388     * Constructor
       
   389     * @since 2.6
       
   390     */
       
   391     TCOMMarker();
       
   392     /**
       
   393     * Destructor
       
   394     * @since 2.6
       
   395     */
       
   396     ~TCOMMarker();
       
   397 
       
   398     TUint16 iRemainder;
       
   399     TUint16 iRcom;
       
   400     HBufC8 *iCcom;
       
   401     };
       
   402 
       
   403 /**
       
   404  * struct TMainMarker
       
   405  * Main header
       
   406  * @since 2.6
       
   407  */
       
   408 struct TMainMarker
       
   409     {
       
   410 
       
   411     /**
       
   412     * Constructor
       
   413     * @since 2.6
       
   414     */
       
   415     TMainMarker();
       
   416 
       
   417     /**
       
   418     * Destructor
       
   419     * @since 2.6
       
   420     */
       
   421     ~TMainMarker();
       
   422 
       
   423     TCODMarker iCod;
       
   424     TQCDMarker iQcd;
       
   425     RPointerArray<TCOCMarker> iCoc;
       
   426     RPointerArray<TQCCMarker> iQcc;
       
   427     RPointerArray<TRGNMarker> iRgn;
       
   428     TPOCMarker               *iPoc;
       
   429     RPointerArray<TPPMMarker> iPpm;
       
   430     RPointerArray<TTLMMarker> iTlm;
       
   431     RPointerArray<TPLMMarker> iPlm;
       
   432     TCRGMarker               *iCrg;
       
   433     RPointerArray<TCOMMarker> iCom;
       
   434     };
       
   435 
       
   436 /**
       
   437  * struct TTileMarker
       
   438  * Tile-part header
       
   439  * @since 2.6
       
   440  */
       
   441 struct TTileMarker
       
   442     {
       
   443     /**
       
   444     * Constructor
       
   445     * @since 2.6
       
   446     */
       
   447     TTileMarker();
       
   448 
       
   449     /**
       
   450     * Destructor
       
   451     * @since 2.6
       
   452     */
       
   453     ~TTileMarker();
       
   454 
       
   455     TCODMarker               *iCod;
       
   456     TQCDMarker               *iQcd;
       
   457     RPointerArray<TCOCMarker> iCoc;
       
   458     RPointerArray<TQCCMarker> iQcc;
       
   459     RPointerArray<TRGNMarker> iRgn;
       
   460     TPOCMarker               *iPoc;
       
   461     RPointerArray<TPPTMarker> iPpt;
       
   462     RPointerArray<TPLTMarker> iPlt;
       
   463     RPointerArray<TCOMMarker> iCom;
       
   464     };
       
   465 
       
   466 
       
   467 // FUNCTION PROTOTYPES
       
   468 
       
   469 // FORWARD DECLARATIONS
       
   470 
       
   471 // CLASS DECLARATION
       
   472 
       
   473 /**
       
   474  * MJ2kPacketHeaderReader defines the interface 
       
   475  * for reading the packet header from streams.
       
   476  * @since 2.6
       
   477  */
       
   478 class MJ2kPacketHeaderReader
       
   479     {
       
   480     public:  // Constructors and destructor
       
   481         
       
   482     public: // New functions
       
   483         
       
   484         /**
       
   485         * Try to consume the EPH marker if there is one
       
   486         * @since 2.6
       
   487         * @return TUint8: true if end of buffer.
       
   488         */
       
   489         virtual TUint8 ReadEPHMarker() = 0;
       
   490 
       
   491         /**
       
   492         * Read a bit from the packet header stream
       
   493         * @since 2.6
       
   494         * @param aBit: get a bit from the packet header bitstream.
       
   495         * @return TUint8: true if end of buffer.
       
   496         */
       
   497         virtual TUint8 ReadBit( TUint8& aBit ) = 0;
       
   498 
       
   499         /**
       
   500         * Read some bits from the packet header stream
       
   501         * @since 2.6
       
   502         * @param aBit: get some bits from the packet header bitstream.
       
   503         * @param aBitLen: how many bits to read.
       
   504         * @return TUint8: true if end of buffer.
       
   505         */
       
   506         virtual TUint8 ReadBits( TUint8& aBit, TUint8 aBitLen ) = 0;
       
   507 
       
   508         /**
       
   509         * Read some bits from the packet header stream
       
   510         * @since 2.6
       
   511         * @param aBit: get some bits from the packet header bitstream.
       
   512         * @param aBitLen: how many bits to read.
       
   513         * @return TUint8: true if end of buffer.
       
   514         */
       
   515         virtual TUint8 ReadBits( TUint32& aBit, TUint8 aBitLen ) = 0;
       
   516 
       
   517         /**
       
   518         * Start reading from packet header stream
       
   519         * @since 2.6
       
   520         * @return TUint8: true if end of buffer.
       
   521         */
       
   522         virtual TUint8 StartReadBit() = 0;
       
   523 
       
   524         /**
       
   525         * Align the stream to the next byte boundary if necessary
       
   526         * @since 2.6
       
   527         */
       
   528         virtual void   AlignReader() = 0;
       
   529 
       
   530     public: // Functions from base classes
       
   531        
       
   532     protected:  // New functions        
       
   533 
       
   534     protected:  // Functions from base classes
       
   535         
       
   536     private:
       
   537 
       
   538     public:     // Data
       
   539     
       
   540     protected:  // Data
       
   541 
       
   542     private:    // Data
       
   543 
       
   544     public:     // Friend classes
       
   545       
       
   546     protected:  // Friend classes
       
   547        
       
   548     private:    // Friend classes
       
   549       
       
   550     };
       
   551 
       
   552 #endif // __JP2KMARKER_H__