imagingext_plat/extended_icl_jpeg_api/inc/IclExtJpegApi.h
changeset 25 3c4e2b88bdcd
parent 24 d8e463b04c5c
child 26 33125ea6abcb
--- a/imagingext_plat/extended_icl_jpeg_api/inc/IclExtJpegApi.h	Wed Aug 25 12:58:08 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1015 +0,0 @@
-/*
-* Copyright (c) 2006 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:  Definition of CVisualFrame, CExtJpegDecoder and CExtJpegEncoder
-*
-*/
-
-#ifndef _ICLEXTJPEGAPI_
-#define _ICLEXTJPEGAPI_
-
-#include "imageconversion.h"
-#include <icl/icl_uids.hrh>
-
-#include "iclexifimageframe.h"
-const TInt KMaxNumberOfPlanes = KMaxPlanesInFrame;
-const TUid KUidExtFormatJpeg = { 0 };
-const TUid KUidExtIclApiSupport = { 0 };
-const TInt KExtensionUID = 0x01010101;
-
-// FORWARD DECLARATIONS
-class CVisualFrameImpl;
-
-// CLASS DECLARATION
-
-/**
-* CVisualFrame
-* @lib IclExtJpegApi.lib
-* @since 3.2
-*/
-class CVisualFrame : public CBase
-    {
-    public:
-
-        // TFrameLayout contains the scan line lengths and offsets for each component in planar YUV case
-        class TFrameLayout
-            {
-            public:
-                TInt iNumberOfPlanes;
-                TInt iScanLineLength[KMaxNumberOfPlanes];
-                TInt iOffset[KMaxNumberOfPlanes];
-                TInt iLength[KMaxNumberOfPlanes];
-                TInt iMaxLength[KMaxNumberOfPlanes];                
-            };
-
-        enum TDataContainer
-            {
-            EInChunk,
-            EInDescriptor
-            };
-            
-        enum TDataFormat
-            {
-            /* Copied from CCamera::TFormat: */
-            
-            /** 8 bit greyscale values, 0=black, 255=white. */
-            EFormatMonochrome            = 0x0001,//+
-            /** Packed RGB triplets, 4 bits per pixel with red in the least significant bits
-            and the 4 most significant bits unused. */
-            EFormat16bitRGB444            = 0x0002,//+
-            /** Packed RGB triplets, 5 bits per pixel for red and blue and 6 bits for green,
-            with red in the least significant bits. */
-            EFormat16BitRGB565            = 0x0004,//+
-            /** Packed RGB triplets, 8 bits per pixel with red in the least significant bits
-            and the 8 most significant bits unused. */
-            EFormat32BitRGB888            = 0x0008,//+
-            /** JFIF JPEG. */
-            EFormatJpeg                    = 0x0010,
-            /** EXIF JPEG */
-            EFormatExif                    = 0x0020,
-            /** CFbsBitmap object with display mode EColor4K. */
-            EFormatFbsBitmapColor4K        = 0x0040,
-            /** CFbsBitmap object with display mode EColor64K. */
-            EFormatFbsBitmapColor64K    = 0x0080,
-            /** CFbsBitmap object with display mode EColor16M. */
-            EFormatFbsBitmapColor16M    = 0x0100,
-            /** Implementation dependent. */
-            EFormatUserDefined            = 0x0200,
-            /** 4:2:0 format, 8 bits per sample, Y00Y01Y10Y11UV. */
-            EFormatYUV420Interleaved    = 0x0400,//+
-            /** 4:2:0 format, 8 bits per sample, Y00Y01Y02Y03...U0...V0... */
-            EFormatYUV420Planar            = 0x0800,//+
-            /** 4:2:2 format, 8 bits per sample, UY0VY1. */
-            EFormatYUV422                = 0x1000,//+
-            /** 4:2:2 format, 8 bits per sample, Y1VY0U. */
-            EFormatYUV422Reversed        = 0x2000,//+
-            /** 4:4:4 format, 8 bits per sample, Y00U00V00 Y01U01V01... */
-            EFormatYUV444                = 0x4000,//+
-            /** 4:2:0 format, 8 bits per sample, Y00Y01Y02Y03...U0V0... */
-            EFormatYUV420SemiPlanar        = 0x8000,//+
-
-            /* Other formats: */
-            
-            /** 4:2:2 format, 8 bits per sample, Y0Y1UV. */
-            EFormatExtYUV422Interleaved = 0x00100000,
-            /** 4:2:2 format, 8 bits per sample, Y0Y1Y2...U0U1...V0V1. */
-            EFormatExtYUV422Planar      = 0x00200000,
-            /** 4:4:4 format, 8 bits per sample, Y0U0V0Y1U1V1. */
-            EFormatExtYUV444Planar = 0x00400000,
-            /** DCT coefficients */
-            EFormatExtDctCoeff = 0x00800000,            
-                        
-            };
-    
-    public: // New functions
-
-        /**
-        * Symbian C++ Two-phased constructor.
-        * @since 3.2
-        * @param aBuffer        A descriptor reference to buffer containing the image data.
-        * @param aDimension     The dimensions of the corresponding image data.
-        * @param aFrameFormat	The frame format of the corresponding image data.
-        * @return CVisualFrame* A pointer to frame object.
-        */
-        IMPORT_C static CVisualFrame* NewL( 
-                                    TDes8& aBuffer, 
-                                    const TSize& aDimension,
-                                    TInt aFrameFormat );
-
-        /**
-        * Symbian C++ Two-phased constructor.
-        * @since 3.2
-        * @param aChunk         An RChunk reference to buffer containing the image data.
-        * @param aSize          The amount of image data in bytes.
-        * @param amaxSize       The maximum size of the memory reserved in the chunk.
-        * @param aDataOffset    The offset value specifying the location of the image 
-        *                       data in the chunk.
-        * @param aDimension     The dimensions of the corresponding image data.
-        * @param aFrameFormat   The frame format of the corresponding image data.
-        * @return CVisualFrame* A pointer to frame object.
-        */
-        IMPORT_C static CVisualFrame* NewL( 
-                                    RChunk& aChunk, 
-                                    TInt aSize,
-                                    TInt aMaxSize, 
-                                    TInt aDataOffset,
-                                    const TSize& aDimension, 
-                                    TInt aFrameFormat );
-
-        /**
-        * Symbian C++ Two-phased constructor.
-        * @since 3.2
-        * @param aBuffer        A descriptor reference to buffer containing the image data.
-        * @param aDimension     The dimensions of the corresponding image data.
-        * @param aFrameLayout   The layout of the image color components.
-        * @return CVisualFrame* A pointer to frame object.
-        */
-        IMPORT_C static CVisualFrame* NewL( 
-                                    TDes8& aBuffer, 
-                                    const TSize& aDimension, 
-                                    TInt aFrameFormat, 
-                                    const TFrameLayout& aFrameLayout ); 
-
-        /**
-        * Symbian C++ Two-phased constructor.
-        * @since 3.2
-        * @param aChunk         An RChunk reference to buffer containing the image data.
-        * @param aSize          The amount of image data in bytes.
-        * @param aMaxSize       The maximum size of the memory reserved in the chunk for 
-        *                       the image data.
-        * @param aDimension     The dimensions of the corresponding image data.
-        * @param aFrameFormat   The frame format of the corresponding image data.
-        * @param aFrameLayout   The layout of the image color components. TFrameLayout 
-        * 						contains the scan line lengths and offsets for each component 
-        *						in planar YUV case
-        * @return CVisualFrame* A pointer to frame object.
-        */
-        IMPORT_C static CVisualFrame* NewL( 
-                                    RChunk& aChunk, 
-                                    TInt aSize, 
-                                    TInt aMaxSize,
-                                    const TSize& aDimension, 
-                                    TInt aFrameFormat, 
-                                    const TFrameLayout& aFrameLayout );        
-       
-       
-        /**
-        * Returns a constant reference to the chunk containing 
-        * the image data, if exists.
-        * @since 3.2
-        * @return RChunk
-        */
-        IMPORT_C const RChunk& DataChunkL() const;
-        
-        /**
-        * Returns a descriptor pointer to the image data location, if exists
-        * @since 3.2
-        * @return TPtr8
-        */        
-        IMPORT_C TPtr8 DataPtrL() const;
-
-        /**
-        * Returns the dimensions of the image.
-        * @since 3.2
-        * @return TSize
-        */        
-        IMPORT_C TSize Dimension() const;
-
-        /**
-        * Return the image data format.
-        * @since 3.2
-        * @return TInt
-        */        
-        IMPORT_C TInt FrameFormat() const;
-        
-        /**
-        * Returns the offset of the image data for non-planar, 
-        * single-component or compressed images. 
-        * @since 3.2
-        * @return TInt
-        */        
-        IMPORT_C TInt DataOffset() const;
-
-        /**
-        * Returns the amount of stored image data in bytes.
-        * @since 3.2
-        * @return TInt
-        */        
-        IMPORT_C TInt Size() const;
-
-        /**
-        * Sets the amount of image data to the given value. 
-        * Should be called when the image data amount is modified explicitly.
-        * @since 3.2
-        * @return void
-        */
-        IMPORT_C void SetSizeL( TInt aSize );
-
-        /**
-        * Returns the maximum size of the memory space reserved for image data
-        * @since 3.2
-        * @return TInt
-        */
-        IMPORT_C TInt MaxSize() const;
-
-        /**
-        * Returns the storage type of the image data.
-        * @since 3.2
-        * @return TDataContainer
-        */        
-        IMPORT_C TDataContainer DataContainer() const;
-
-        /**
-        * Returns the layout of the image data for planar compressed images.
-        * @since 3.2
-        * @return TFrameLayout
-        */        
-        IMPORT_C const TFrameLayout& FrameLayout() const;    
-
-        /**
-        * Destructor
-        */
-        IMPORT_C virtual ~CVisualFrame();
-
-        /**
-        * Symbian C++ Two-phased constructor.
-        */        
-        IMPORT_C static CVisualFrame* NewL( const CImageFrame* aImageFrame );
-
-        /**
-        * Get image frame
-        * @since 3.2
-        * @return CImageFrame
-        */
-        IMPORT_C CImageFrame* GetImageFrameL();
-       
-        
-    private:
-    
-        CVisualFrameImpl* iVisualFrameImpl;
-
-    };
-    
-
-// CLASS DECLARATION
-
-/**
-* CExtJpegDecoder
-* @lib IclExtJpegApi.lib
-* @since 3.2
-*/
-class CExtJpegDecoder : public CJPEGImageFrameDecoder
-    {
-    public:
-
-        enum TDecoderCapability
-            {
-            ECapNone = 0x0000,
-            ECapCropping = 0x0001,
-            ECapStreaming = 0x0002,
-            ECapRotation = 0x0004,
-            ECapFlipping = 0x0008,
-            ECapMirroring = 0x0010,
-            ECapDctDecoding = 0x0020,
-            ECapExifData = 0x0040
-            };
-            
-        enum TDecoderOperations
-            {
-            EEnd = 0x00010000,
-            ESupportedFormats = 0x00020000,
-            ECapabilities = 0x00040000,
-            EReadyForAsync = 0x00080000,
-            EConvert = 0x00100000,
-            EContinueConvert = 0x00200000
-            };            
-            
-        enum TDecoderType
-            {
-            ESwImplementation = 0,
-            EHwImplementation
-            };
-            
-    public:
-
-        /**
-        * Symbian C++ Two-phased constructor.
-        * @since 3.2
-        */
-        IMPORT_C static CExtJpegDecoder* NewL();
-
-        
-        /**
-        * Creates and initializes CExtJpegDecoder
-        * @since 3.2
-        * @param aFs                A reference to a file server session to use.
-        * @param aSourceFilename    The name of the Jpeg file to decode.
-        * @param aMIMEType          The Jpeg MIME type for matching the decoder plugin.
-        * @param aOptions           Decoder options defined in ICL.
-        * @return CExtJpegDecoder*  A pointer to decoder object.
-        */
-        IMPORT_C static CExtJpegDecoder* FileNewL( 
-                                    RFs& aFs, 
-                                    const TDesC& aSourceFilename, 
-                                    const TDesC8& aMIMEType, 
-                                    const TOptions aOptions = EOptionNone );
-
-        /**
-        * Creates and initializes CExtJpegDecoder
-        * @since 3.2
-        * @param aFs                A reference to a file server session to use.
-        * @param aSourceFilename    The name of the Jpeg file to decode.
-        * @param aOptions           Decoder options defined in ICL.
-        * @param aImageType         The Jpeg image type.    
-        * @param aImageSubType      The Jpeg image subtype (Null UID).  
-        * @param aDecoderUid        The decoder plugin UID.
-        * @return CExtJpegDecoder*  A pointer to decoder object.
-        */      
-        IMPORT_C static CExtJpegDecoder* FileNewL( 
-                                    RFs& aFs, 
-                                    const TDesC& aSourceFilename, 
-                                    const TOptions aOptions = EOptionNone, 
-                                    const TUid aImageType = KNullUid, 
-                                    const TUid aImageSubType = KNullUid, 
-                                    const TUid aDecoderUid = KNullUid );
-
-        /**
-        * Creates and initializes CExtJpegDecoder
-        * @since 3.2
-        * @param aFs                A reference to a file server session to use.
-        * @param aSourceData        The descriptor reference for the Jpeg image data to decode.
-        * @param aMIMEType          The Jpeg MIME type for matching the decoder plugin.
-        * @param aOptions           Decoder options defined in ICL.
-        * @return CExtJpegDecoder*  A pointer to decoder object.
-        */      
-        IMPORT_C static CExtJpegDecoder* DataNewL( 
-                                    RFs& aFs,
-                                    const TDesC8& aSourceData,
-                                    const TDesC8& aMIMEType,
-                                    const TOptions aOptions = EOptionNone );
-        /**
-        * Creates and initializes CExtJpegDecoder
-        * @since 3.2
-        * @param aFs                A reference to a file server session to use.
-        * @param aSourceData        The descriptor reference for the Jpeg image data to decode.
-        * @param aOptions           Decoder options defined in ICL.
-        * @param aImageType         The Jpeg image type.
-        * @param aImageSubType      The Jpeg image subtype (Null UID).
-        * @param aDecoderUid        The decoder plugin UID.
-        * @return CExtJpegDecoder*  A pointer to decoder object.
-        */        
-        IMPORT_C static CExtJpegDecoder* DataNewL( 
-                                    RFs& aFs, 
-                                    const TDesC8& aSourceData,
-                                    const TOptions aOptions = EOptionNone,
-                                    const TUid aImageType  = KNullUid,
-                                    const TUid aImageSubType = KNullUid,
-                                    const TUid aDecoderUid = KNullUid );
-
-        /**
-        * Creates and initializes CExtJpegDecoder
-        * @since 3.2
-        * @param aFs                A reference to a file server session to use.    
-        * @param aSourceData        Pointer to the visual frame structure keeping 
-        *                           the Jpeg image data to decode.
-        * @param aMIMEType          The Jpeg MIME type for matching the decoder plugin.
-        * @param aOptions           Decoder options defined in ICL.
-        * @return CExtJpegDecoder*  A pointer to decoder object.
-        */
-        IMPORT_C static CExtJpegDecoder* DataNewL( 
-                                    RFs& aFs, 
-                                    const CVisualFrame* aSourceData,
-                                    const TDesC8& aMIMEType,
-                                    const TOptions aOptions = EOptionNone );
-
-        /**
-        * Creates and initializes CExtJpegDecoder
-        * @since 3.2
-        * @param aFs                A reference to a file server session to use.    
-        * @param aSourceData        Pointer to the visual frame structure keeping 
-        *                           the Jpeg image data to decode.  
-        * @param aOptions           Decoder options defined in ICL.
-        * @param aImageType         The Jpeg image type.
-        * @param aImageSubType      The Jpeg image subtype (Null UID).
-        * @param aDecoderUid        The decoder plugin UID.
-        * @return CExtJpegDecoder*  A pointer to decoder object.
-        */        
-        IMPORT_C static CExtJpegDecoder* DataNewL( 
-                                    RFs& aFs,
-                                    const CVisualFrame* aSourceData,
-                                    const TOptions aOptions = EOptionNone,
-                                    const TUid aImageType  = KNullUid,
-                                    const TUid aImageSubType = KNullUid,
-                                    const TUid aDecoderUid = KNullUid );
-
-        /**
-        * Destructor.
-        */
-        IMPORT_C virtual ~CExtJpegDecoder();
-    
-        /**
-        * Enables the use of cropping feature and specifies the cropping region. 
-        * @since 3.2
-        * @param aCropRect  The rectangular cropping region that will be decoded.
-        * @return void
-        */
-        IMPORT_C void SetCroppingL( TRect aCropRect );
-
-        /**
-        * Enables the use of streaming feature and retrieves the macroblock 
-        * dimensions in the Jpeg data.
-        * @since 3.2
-        * @param aMacroBlockSize    The macroblock dimensions in the 
-        *                           Jpeg image that is set by the decoder
-        * @return void
-        */
-        IMPORT_C void SetStreamingL( TSize& aMacroBlockSize );
-
-        /**
-        * Enables the use of rotation feature and specifies the rotating degree. 
-        * @since 3.2
-        * @param aDegree    The rotation degree. Can take any values between 1 and 359.
-        * @return void
-        */
-        IMPORT_C void SetRotationL( TInt aDegree );
-
-        /**
-        * Enables the use of flipping feature.
-        * @since 3.2
-        * @return void
-        */
-        IMPORT_C void SetFlippingL();
-
-        /**
-        * Enables the use of mirroring feature.
-        * @since 3.2
-        * @return void
-        */
-        IMPORT_C void SetMirroringL();
-        
-        /**
-        * SEnables the use of DCT decoding feature.
-        * @since 3.2
-        * @return void
-        */        
-        IMPORT_C void SetDctDecodingL();
-
-        /**
-        * Asynchronous function for initiating the decoding
-        * @since 3.2
-        * @param aRequestStatus         The pointer to the status of the operation 
-        *                               that is set by the decoder after it is completed.
-        *                               After a complete successful operation, the status 
-        *                               is KErrNone.
-        * @param aDestinationFrame      Pointer to the visual frame structure that is keeping 
-        *                               the destination image data. The client should do the 
-        *                               proper allocation of the destination location.
-        * @param aNoOfDecodedMBlocks    Reference to the number of decoded macroblocks that is 
-        *                               set by the decoder after the decoding is completed.
-        * @param aFrameNumber           The frame index in the Jpeg image.
-        * @return void
-        */
-        IMPORT_C void ConvertL( 
-                        TRequestStatus* aRequestStatus, 
-                        const CVisualFrame* aDestinationFrame, 
-                        TInt& aNoOfDecodedMBlocks,
-                        TInt aFrameNumber = 0 );
-
-        /**
-        * Asynchronous function for initiating one of the iterations of streamed decoding.
-        * @since 3.2
-        * @param aRequestStatus         The pointer to the status of the operation 
-        *                               that is set by the decoder after it is completed.
-        *                               After a complete successful operation, the status 
-        *                               is KErrNone.
-        * @param aDestinationFrame      Pointer to the visual frame structure that is keeping 
-        *                               the destination image data. The client should do the 
-        *                               proper allocation of the destination location.
-        * @param aNoOfDecodedMBlocks    Reference to the number of decoded macroblocks that is 
-        *                               set by the decoder after the decoding is completed.
-        * @param aFrameNumber           The frame index in the Jpeg image.
-        * @return void
-        */
-        IMPORT_C void ContinueConvertL( 
-                        TRequestStatus* aRequestStatus, 
-                        const CVisualFrame* aDestinationFrame, 
-                        TInt& aNoOfDecodedMBlocks,
-                        TInt aFrameNumber = 0 );
-
-        /**
-        * Returns the destination (uncompressed) data formats that are supported by the decoder
-        * @since 3.2
-        * @return TInt  The supported destination (uncompressed) data formats. 
-        *               The value is a combination of the flags defined in 
-        *               CVisualFrame::TDataFormat.
-        */
-        IMPORT_C TInt SupportedFormatsL();
-
-        /**
-        * Returns the Extended API features (capabilities) that are supported by the decoder.
-        * @since 3.2
-        * @return TInt  The supported Extended API features. 
-        *               The value is a combination of the flags defined in TDecoderCapabilities.
-        */
-        IMPORT_C TInt CapabilitiesL();
-
-        /**
-        * Creates and initializes CExtJpegDecoder
-        * @since 3.2
-        * @param aDecoderType       Decoder implementation type: HW or SW.  
-        * @param aFs                A reference to a file server session to use.
-        * @param aSourceFilename    The name of the Jpeg file to decode.
-        * @param aOptions           Decoder options defined in ICL.
-        * @return CExtJpegDecoder*  A pointer to decoder object.
-        */        
-        IMPORT_C static CExtJpegDecoder* FileNewL( 
-                                    const TDecoderType aDecoderType,
-                                    RFs& aFs, 
-                                    const TDesC& aSourceFilename, 
-                                    const TOptions aOptions = EOptionNone );
-                  
-        /**
-        * Creates and initializes CExtJpegDecoder
-        * @since 3.2
-        * @param aDecoderType       Decoder implementation type: HW or SW.
-        * @param aFs                A reference to a file server session to use.
-        * @param aSourceData        The descriptor reference for the Jpeg image data to decode.
-        * @param aOptions           Decoder options defined in ICL.
-        * @return CExtJpegDecoder*  A pointer to decoder object.
-        */                                            
-        IMPORT_C static CExtJpegDecoder* DataNewL( 
-                                    const TDecoderType aDecoderType,
-                                    RFs& aFs, 
-                                    const TDesC8& aSourceData, 
-                                    const TOptions aOptions = EOptionNone );
-
-        /**
-        * Creates and initializes CExtJpegDecoder
-        * @since 3.2
-        * @param aDecoderType       Decoder implementation type: HW or SW.
-        * @param aFs                A reference to a file server session to use.
-        * @param aSourceData        Pointer to the visual frame structure keeping 
-        *                           the Jpeg image data to decode.
-        * @param aOptions           Decoder options defined in ICL.
-        * @return CExtJpegDecoder*  A pointer to decoder object.
-        */                                            
-        IMPORT_C static CExtJpegDecoder* DataNewL( 
-                                    const TDecoderType aDecoderType, 
-                                    RFs& aFs, 
-                                    const CVisualFrame* aSourceData, 
-                                    const TOptions aOptions = EOptionNone );
-                      
-        /**
-        * Convert
-        * @since 3.2
-        * @param aRequestStatus     The pointer to the status of the operation 
-        *                           that is set by the decoder after it is completed.
-        *                           After a complete successful operation, the status 
-        *                           is KErrNone.
-        * @param aDestination       
-        * @param aFrameNumber       The frame index in the Jpeg image.
-        * @return void
-        */                            
-        IMPORT_C void Convert(  TRequestStatus* aRequestStatus, 
-                                CFbsBitmap& aDestination, TInt aFrameNumber = 0);
-                                
-        /**
-        * Convert
-        * @since 3.2
-        * @param aRequestStatus     The pointer to the status of the operation 
-        *                           that is set by the decoder after it is completed.
-        *                           After a complete successful operation, the status 
-        *                           is KErrNone.
-        * @param aDestination       Bitmap destination
-        * @param aDestinationMask   Bitmap destination mask
-        * @param aFrameNumber       The frame index in the Jpeg image.
-        * @return void
-        */                              
-        IMPORT_C void Convert(  TRequestStatus* aRequestStatus, 
-                                CFbsBitmap& aDestination, 
-                                CFbsBitmap& aDestinationMask, 
-                                TInt aFrameNumber = 0 );
-                                
-        /**
-        * Continue convert
-        * @since 3.2
-        * @param aRequestStatus     The pointer to the status of the operation 
-        *                           that is set by the decoder after it is completed.
-        *                           After a complete successful operation, the status 
-        *                           is KErrNone.
-        * @return void
-        */
-        IMPORT_C void ContinueConvert( TRequestStatus* aRequestStatus );
-
-    private:
-
-        /**
-        * C++ default constructor.
-        */
-        CExtJpegDecoder();
-        
-        /**
-        * Get an uid by version range
-        * @since 3.2
-        * @param aMinVersion
-        * @param aMaxVersion
-        * @return TUid
-        */
-        static TUid GetUidByVersionRangeL( TInt aMinVersion, TInt aMaxVersion );
-        
-        TBool iIsExtConvert;
-
-    };
-
-
-// CLASS DECLARATION
-
-/**
-* CExtJpegEncoder
-* @lib IclExtJpegApi.lib
-* @since 3.2
-*/
-class CExtJpegEncoder : public CJPEGImageFrameEncoder
-    {
-    public:
-
-        enum TEncoderCapability
-            {
-            ECapNone = 0x0000,
-            ECapStreaming = 0x0001,
-            ECapBitmapOverlay = 0x0002,
-            ECapImageReplacing = 0x0004,
-            ECapBitmapReplacing = 0x0008,
-            ECapLosslessRotation = 0x0010,
-            ECapLosslessFlipping = 0x0020,
-            ECapLosslessMirroring = 0x0040,
-            ECapDctEncoding = 0x0080
-            };
-            
-        enum TEncoderOperations
-            {
-            EEnd = 0x00010000,
-            ESupportedFormats = 0x00020000,
-            ECapabilities = 0x00040000,
-            EReadyForAsync = 0x00080000,
-            EConvert = 0x00100000,
-            EContinueConvert = 0x00200000,
-            EDestVisualFrame = 0x00400000,
-            ENewDestData = 0x00800000,
-            EDestDataSize = 0x01000000
-            };
-                 
-        enum TEncoderType
-            {
-            ESwImplementation = 0,
-            EHwImplementation
-            };                   
-
-    public:
-    
-
-        /**
-        * Symbian C++ Two-phased constructor.
-        */      
-        IMPORT_C static CExtJpegEncoder* NewL();
-        
-        /**
-        * Creates and initializes CExtJpegEncoder
-        * @since 3.2
-        * @param aFs                    A reference to a file server session to use.
-        * @param aDestinationFilename   The name of the destination Jpeg file.
-        * @param aMIMEType              The Jpeg MIME type for matching the encoder plugin.
-        * @param aOptions               Encoder options defined in ICL.
-        * @return CExtJpegEncoder*      A pointer to encoder object.
-        */
-        IMPORT_C static CExtJpegEncoder* FileNewL( 
-                                    RFs& aFs, 
-                                    const TDesC& aDestinationFilename, 
-                                    const TDesC8& aMIMEType, 
-                                    const TOptions aOptions = EOptionNone );
-
-        /**
-        * Creates and initializes CExtJpegEncoder
-        * @param aFs                    A reference to a file server session to use.
-        * @param aDestinationFilename   The name of the destination Jpeg file.
-        * @param aOptions               Encoder options defined in ICL.
-        * @param aImageT                The Jpeg image type.
-        * @param aImageSubType          The Jpeg image subtype (Null UID).
-        * @param aEncoderUid            The encoder plugin UID.
-        * @return CExtJpegEncoder*      A pointer to encoder object.
-        */      
-        IMPORT_C static CExtJpegEncoder* FileNewL( 
-                                    RFs& aFs, 
-                                    const TDesC& aDestinationFilename, 
-                                    const TOptions aOptions = EOptionNone, 
-                                    const TUid aImageType = KNullUid, 
-                                    const TUid aImageSubType = KNullUid, 
-                                    const TUid aEncoderUid = KNullUid );
-
-        /**
-        * Creates and initializes CExtJpegEncoder
-        * @param aDestinationData   Pointer reference to the destination 
-        *                           Jpeg data location that will be allocated by the encoder.
-        * @param aMIMEType          The Jpeg MIME type for matching the encoder plugin.
-        * @param aOptions           Encoder options defined in ICL.
-        * @return CExtJpegEncoder*  A pointer to encoder object.
-        */  
-        IMPORT_C static CExtJpegEncoder* DataNewL( 
-                                    HBufC8*& aDestinationData,
-                                    const TDesC8& aMIMEType,
-                                    const TOptions aOptions = EOptionNone);
-        /**
-        * Creates and initializes CExtJpegEncoder
-        * @param aDestinationData   Pointer reference to the destination 
-        *                           Jpeg data location that will be allocated by the encoder.
-        * @param aOptions           Encoder options defined in ICL.
-        * @param aImageType         The Jpeg image type.
-        * @param aImageSubType      The Jpeg image subtype (Null UID).
-        * @param aEncoderUid        The encoder plugin UID.
-        * @return CExtJpegEncoder*  A pointer to encoder object.
-        */  
-        IMPORT_C static CExtJpegEncoder* DataNewL( 
-                                    HBufC8*& aDestinationData,
-                                    const TOptions aOptions = EOptionNone,
-                                    const TUid aImageType = KNullUid,
-                                    const TUid aImageSubType = KNullUid,
-                                    const TUid aEncoderUid = KNullUid);
-        /**
-        * Creates and initializes CExtJpegEncoder
-        * @param aDestinationData   Pointer to the visual frame structure keeping the destination 
-        *                           Jpeg data allocated with maximum size by the client.
-        * @param aMIMEType          The Jpeg MIME type for matching the encoder plugin.
-        * @param aOptions           Encoder options defined in ICL.
-        * @return CExtJpegEncoder*  A pointer to encoder object.
-        */  
-        IMPORT_C static CExtJpegEncoder* DataNewL( 
-                                    const CVisualFrame* aDestinationData,
-                                    const TDesC8& aMIMEType,
-                                    const TOptions aOptions = EOptionNone);
-        /**
-        * Creates and initializes CExtJpegEncoder
-        * @param aDestinationData   Pointer to the visual frame structure keeping the destination 
-        *                           Jpeg data allocated with maximum size by the client.
-        * @param aOptions           Encoder options defined in ICL.
-        * @param aImageType         The Jpeg image type.
-        * @param aImageSubType      The Jpeg image subtype (Null UID).
-        * @param aEncoderUid        The encoder plugin UID.
-        * @return CExtJpegEncoder*  A pointer to encoder object.
-        */  
-        IMPORT_C static CExtJpegEncoder* DataNewL( 
-                                    const CVisualFrame* aDestinationData,
-                                    const TOptions aOptions = EOptionNone,
-                                    const TUid aImageType = KNullUid,
-                                    const TUid aImageSubType = KNullUid,
-                                    const TUid aEncoderUid = KNullUid);
-
-        /**
-        * Destructor.
-        */
-        IMPORT_C virtual ~CExtJpegEncoder();
-
-        /**
-        * Enables the use of streaming feature and retrieves the
-        * macroblock dimensions in the Jpeg data. 
-        * @since 3.2
-        * @param aMacroBlockSize    The macroblock dimensions in the Jpeg 
-        *                           image that is set by the encoder.
-        * @param aFrameImageData    The pointer to the destination Jpeg image data structure.
-        * @return void
-        */
-        IMPORT_C void SetStreamingL( TSize& aMacroBlockSize, 
-                                     const CFrameImageData* aFrameImageData= NULL );
-
-        /**
-        * Enables the use of replacing feature, where the given image 
-        * is replaced starting from the specified up-left corner point.
-        * @since 3.2
-        * @param aReplaceImage      The image data that will be replaced.
-        * @param aReplacePoint      The up-left corner point of the replacing region.
-        * @return void
-        */
-        IMPORT_C void SetImageReplaceL( const CVisualFrame* aReplaceImage, TPoint aReplacePoint );
-
-        /**
-        * Enables the use of replacing feature, where the given bitmap 
-        * is replaced starting from the specified up-left corner point.
-        * @since 3.2
-        * @param aReplaceBitmap     The bitmap that will be replaced.
-        * @param aReplacePoint      The up-left corner point of the replacing region.
-        * @return void
-        */
-        IMPORT_C void SetBitmapReplaceL( const CFbsBitmap& aReplaceBitmap, TPoint aReplacePoint );
-
-        /**
-        * Enables the use of overlay feature, where the given bitmap
-        * is overlayed transparently based on the given alpha value
-        * starting from the specified up-left corner point.
-        * @since 3.2
-        * @param aOverlayBitmap     The bitmap that will be overlayed.
-        * @param aAlphaValue        The alpha value for the transparency of the overlayed bitmap.
-        * @param aOverlayPoint      The up-left corner point of the overlay region.
-        * @return void
-        */
-        IMPORT_C void SetBitmapOverlayL( const CFbsBitmap& aOverlayBitmap, 
-                                         TUint aAlphaValue, TPoint aOverlayPoint );
-
-        /**
-        * Enables the use of lossless rotation feature and specifies the rotating degree.
-        * @since 3.2
-        * @param aDegree    The rotation degree. Can take any values between 1 and 359.
-        * @return void
-        */
-        IMPORT_C void SetLosslessRotationL( TInt aDegree );
-
-        /**
-        * Enables the use of lossless flipping feature.
-        * @since 3.2
-        * @return void
-        */
-        IMPORT_C void SetLosslessFlippingL();
-
-        /**
-        * SEnables the use of lossless mirroring feature.
-        * @since 3.2
-        * @return void
-        */
-        IMPORT_C void SetLosslessMirroringL();
-
-        /**
-        * Enables the use of DCT encoding feature.
-        * @since 3.2
-        * @return void
-        */        
-        IMPORT_C void SetDctEncodingL();
-
-        /**
-        * Provides a new visual frame structure for the 
-        * destination data replacing any previously delivered ones.
-        * All the operations coming after this function call should
-        * use the provided structure.
-        * @since 3.2
-        * @param aDestinationData   The new visual frame structure for the destination data.
-        * @return void
-        */        
-        IMPORT_C void ProvideNewDestDataL( const CVisualFrame* aDestinationData );
-
-        /**
-        * Asynchronous function for initiating the encoding. 
-        * @since 3.2
-        * @param aRequestStatus         The pointer to the status of the operation 
-        *                               that is set by the encoder after it is completed.
-        *                               After a complete successful operation, the status 
-        *                               is KErrNone.
-        * @param aSourceFrame           Pointer to the visual frame structure that is keeping 
-        *                               the source image data. In streaming case, contains a 
-        *                               part of the uncompressed image data at the beginning.
-        * @param aNoOfEncodedMBlocks    Reference to the number of encoded macroblocks that is 
-        *                               set by the encoder after the encoding is completed.
-        * @param aFrameImageData        Pointer to optional frame image data structure defined in ICL.
-        * @return void
-        */
-        IMPORT_C void ConvertL( 
-                        TRequestStatus* aRequestStatus, 
-                        const CVisualFrame* aSourceFrame, 
-                        TInt& aNoOfEncodedMBlocks,
-                        const CFrameImageData* aFrameImageData = NULL );
-
-        /**
-        * Asynchronous function for initiating one of the iterations of streamed encoding.
-        * @since 3.2
-        * @param aRequestStatus         The pointer to the status of the operation 
-        *                               that is set by the encoder after it is completed.
-        *                               After a complete successful operation, the status 
-        *                               is KErrNone.
-        * @param aSourceFrame           Pointer to the visual frame structure that is keeping 
-        *                               the source image data. In streaming case, contains a 
-        *                               part of the uncompressed image data at the beginning.
-        * @param aNoOfEncodedMBlocks    Reference to the number of encoded macroblocks that is 
-        *                               set by the encoder after the encoding is completed.
-        * @return
-        */
-        IMPORT_C void ContinueConvertL( 
-                        TRequestStatus* aRequestStatus, 
-                        const CVisualFrame* aSourceFrame,
-                        TInt& aNoOfEncodedMBlocks );
-
-        /**
-        * Returns the source (uncompressed) data formats that are supported by the encoder.
-        * @since 3.2
-        * @return TInt  The supported source (uncompressed) data formats. 
-        *               The value is a combination of the flags defined
-        *               in CVisualFrame::TDataFormat.
-        */
-        IMPORT_C TInt SupportedFormatsL();
-
-        /**
-        * Returns the Extended API features (capabilities) that are supported by the encoder.
-        * @since 3.2
-        * @return TInt  The supported Extended API features. 
-        *               The value is a combination of the flags defined 
-        *               in TEncoderCapabilities.
-        */
-        IMPORT_C TInt CapabilitiesL();
-
-        /**
-        * Creates and initializes CExtJpegEncoder
-        * @since 3.2
-        * @param aEncoderType           Encoder implementation type: HW or SW.
-        * @param aFs                    A reference to a file server session to use.
-        * @param aDestinationFilename   The name of the destination Jpeg file.
-        * @param aOptions               Encoder options defined in ICL.
-        * @return CExtJpegEncoder*      A pointer to encoder object.
-        */        
-        IMPORT_C static CExtJpegEncoder* FileNewL( 
-                                    const TEncoderType aEncoderType,
-                                    RFs& aFs, 
-                                    const TDesC& aDestinationFilename, 
-                                    const TOptions aOptions = EOptionNone );
-                
-        /**
-        * Creates and initializes CExtJpegEncoder
-        * @since 3.2
-        * @param aEncoderType       Encoder implementation type: HW or SW.
-        * @param aDestinationData   Pointer reference to the destination Jpeg
-        *                           data location that will be allocated by the encoder.
-        * @param aOptions           Encoder options defined in ICL.
-        * @return CExtJpegEncoder*  A pointer to encoder object.
-        */                                    
-        IMPORT_C static CExtJpegEncoder* DataNewL( 
-                                    const TEncoderType aEncoderType,
-                                    HBufC8*& aDestinationData, 
-                                    const TOptions aOptions = EOptionNone );
-        /**
-        * Creates and initializes CExtJpegEncoder
-        * @since 3.2
-        * @param aEncoderType       Encoder implementation type: HW or SW.
-        * @param aDestinationData   Pointer to the visual frame structure keeping the 
-        *                           destination Jpeg data allocated with maximum size by the client.
-        * @param aOptions           Encoder options defined in ICL.
-        * @return CExtJpegEncoder*  A pointer to encoder object.
-        */                                    
-        IMPORT_C static CExtJpegEncoder* DataNewL( 
-                                    const TEncoderType aEncoderType, 
-                                    const CVisualFrame* aDestinationData, 
-                                    const TOptions aOptions = EOptionNone );        
-        
-        /**
-        * Returns the actual destination buffer size
-        * @since 3.2
-        * @return TInt  The actual destination buffer size required. 
-        *               -1 means the codec is not able to determine the required buffer size.
-        */                                    
-        IMPORT_C TInt GetDestinationDataSizeL();                                    
-
-
-    private:
-        
-        /**
-        * C++ default constructor.
-        */
-        CExtJpegEncoder();
-        
-        /**
-        * Get an uid by version range
-        * @since 3.2
-        * @param aMinVersion
-        * @param aMaxVersion
-        * @return TUid
-        */
-        static TUid GetUidByVersionRangeL( TInt aMinVersion, TInt aMaxVersion );
-    
-    };
-
-#endif  // _ICLEXTJPEGAPI_
-
-// End of File