--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/imagingextensions/imageadaptationextensions/data/ImageAdaptationExtensions_stub.pkg Wed Sep 08 10:05:56 2010 +0530
@@ -0,0 +1,32 @@
+;
+; Copyright (c) 2009 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:
+;
+; Languages
+&EN
+
+; Header
+#{"Image Adaptation Extensions"}, (0x10204BF0), 1, 0, 0, TYPE=SA
+
+; Localised Vendor name
+%{"Nokia"}
+
+; Unique Vendor name
+:"Nokia"
+
+; Files
+; -----
+
+""-"z:\sys\bin\IclExtJpegApi.dll"
+
Binary file imagingextensions/imageadaptationextensions/data/ImageAdaptationExtensions_stub.sis has changed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/imagingextensions/imageadaptationextensions/data/bld.inf Wed Sep 08 10:05:56 2010 +0530
@@ -0,0 +1,27 @@
+/*
+* 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:
+*
+*/
+
+
+PRJ_PLATFORMS
+DEFAULT
+
+PRJ_EXPORTS
+ImageAdaptationExtensions_stub.sis /epoc32/data/z/system/install/ImageAdaptationExtensions_stub.sis
+
+
+// End of File
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/imagingextensions/imageadaptationextensions/group/bld.inf Wed Sep 08 10:05:56 2010 +0530
@@ -0,0 +1,31 @@
+/*
+* 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:
+*
+*/
+
+
+PRJ_PLATFORMS
+DEFAULT
+
+PRJ_EXPORTS
+../data/ImageAdaptationExtensions_stub.sis /epoc32/data/z/system/install/ImageAdaptationExtensions_stub.sis
+
+PRJ_MMPFILES
+#include "../iclextjpegapi/group/bld.inf"
+
+
+
+// End of File
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/imagingextensions/imageadaptationextensions/iclextjpegapi/BWINS/IclExtJpegApiU.DEF Wed Sep 08 10:05:56 2010 +0530
@@ -0,0 +1,68 @@
+EXPORTS
+ ??1CExtJpegDecoder@@UAE@XZ @ 1 NONAME ; CExtJpegDecoder::~CExtJpegDecoder(void)
+ ??1CExtJpegEncoder@@UAE@XZ @ 2 NONAME ; CExtJpegEncoder::~CExtJpegEncoder(void)
+ ??1CVisualFrame@@UAE@XZ @ 3 NONAME ; CVisualFrame::~CVisualFrame(void)
+ ?CapabilitiesL@CExtJpegDecoder@@QAEHXZ @ 4 NONAME ; int CExtJpegDecoder::CapabilitiesL(void)
+ ?CapabilitiesL@CExtJpegEncoder@@QAEHXZ @ 5 NONAME ; int CExtJpegEncoder::CapabilitiesL(void)
+ ?ContinueConvertL@CExtJpegDecoder@@QAEXPAVTRequestStatus@@PBVCVisualFrame@@AAHH@Z @ 6 NONAME ; void CExtJpegDecoder::ContinueConvertL(class TRequestStatus *, class CVisualFrame const *, int &, int)
+ ?ContinueConvertL@CExtJpegEncoder@@QAEXPAVTRequestStatus@@PBVCVisualFrame@@AAH@Z @ 7 NONAME ; void CExtJpegEncoder::ContinueConvertL(class TRequestStatus *, class CVisualFrame const *, int &)
+ ?ConvertL@CExtJpegDecoder@@QAEXPAVTRequestStatus@@PBVCVisualFrame@@AAHH@Z @ 8 NONAME ; void CExtJpegDecoder::ConvertL(class TRequestStatus *, class CVisualFrame const *, int &, int)
+ ?ConvertL@CExtJpegEncoder@@QAEXPAVTRequestStatus@@PBVCVisualFrame@@AAHPBVCFrameImageData@@@Z @ 9 NONAME ; void CExtJpegEncoder::ConvertL(class TRequestStatus *, class CVisualFrame const *, int &, class CFrameImageData const *)
+ ?DataChunkL@CVisualFrame@@QBEABVRChunk@@XZ @ 10 NONAME ; class RChunk const & CVisualFrame::DataChunkL(void) const
+ ?DataContainer@CVisualFrame@@QBE?AW4TDataContainer@1@XZ @ 11 NONAME ; enum CVisualFrame::TDataContainer CVisualFrame::DataContainer(void) const
+ ?DataNewL@CExtJpegDecoder@@SAPAV1@AAVRFs@@ABVTDesC8@@1W4TOptions@CImageDecoder@@@Z @ 12 NONAME ; class CExtJpegDecoder * CExtJpegDecoder::DataNewL(class RFs &, class TDesC8 const &, class TDesC8 const &, enum CImageDecoder::TOptions)
+ ?DataNewL@CExtJpegDecoder@@SAPAV1@AAVRFs@@ABVTDesC8@@W4TOptions@CImageDecoder@@VTUid@@33@Z @ 13 NONAME ; class CExtJpegDecoder * CExtJpegDecoder::DataNewL(class RFs &, class TDesC8 const &, enum CImageDecoder::TOptions, class TUid, class TUid, class TUid)
+ ?DataNewL@CExtJpegDecoder@@SAPAV1@AAVRFs@@PBVCVisualFrame@@ABVTDesC8@@W4TOptions@CImageDecoder@@@Z @ 14 NONAME ; class CExtJpegDecoder * CExtJpegDecoder::DataNewL(class RFs &, class CVisualFrame const *, class TDesC8 const &, enum CImageDecoder::TOptions)
+ ?DataNewL@CExtJpegDecoder@@SAPAV1@AAVRFs@@PBVCVisualFrame@@W4TOptions@CImageDecoder@@VTUid@@33@Z @ 15 NONAME ; class CExtJpegDecoder * CExtJpegDecoder::DataNewL(class RFs &, class CVisualFrame const *, enum CImageDecoder::TOptions, class TUid, class TUid, class TUid)
+ ?DataNewL@CExtJpegDecoder@@SAPAV1@W4TDecoderType@1@AAVRFs@@ABVTDesC8@@W4TOptions@CImageDecoder@@@Z @ 16 NONAME ; class CExtJpegDecoder * CExtJpegDecoder::DataNewL(enum CExtJpegDecoder::TDecoderType, class RFs &, class TDesC8 const &, enum CImageDecoder::TOptions)
+ ?DataNewL@CExtJpegDecoder@@SAPAV1@W4TDecoderType@1@AAVRFs@@PBVCVisualFrame@@W4TOptions@CImageDecoder@@@Z @ 17 NONAME ; class CExtJpegDecoder * CExtJpegDecoder::DataNewL(enum CExtJpegDecoder::TDecoderType, class RFs &, class CVisualFrame const *, enum CImageDecoder::TOptions)
+ ?DataNewL@CExtJpegEncoder@@SAPAV1@AAPAVHBufC8@@ABVTDesC8@@W4TOptions@CImageEncoder@@@Z @ 18 NONAME ; class CExtJpegEncoder * CExtJpegEncoder::DataNewL(class HBufC8 * &, class TDesC8 const &, enum CImageEncoder::TOptions)
+ ?DataNewL@CExtJpegEncoder@@SAPAV1@AAPAVHBufC8@@W4TOptions@CImageEncoder@@VTUid@@22@Z @ 19 NONAME ; class CExtJpegEncoder * CExtJpegEncoder::DataNewL(class HBufC8 * &, enum CImageEncoder::TOptions, class TUid, class TUid, class TUid)
+ ?DataNewL@CExtJpegEncoder@@SAPAV1@PBVCVisualFrame@@ABVTDesC8@@W4TOptions@CImageEncoder@@@Z @ 20 NONAME ; class CExtJpegEncoder * CExtJpegEncoder::DataNewL(class CVisualFrame const *, class TDesC8 const &, enum CImageEncoder::TOptions)
+ ?DataNewL@CExtJpegEncoder@@SAPAV1@PBVCVisualFrame@@W4TOptions@CImageEncoder@@VTUid@@22@Z @ 21 NONAME ; class CExtJpegEncoder * CExtJpegEncoder::DataNewL(class CVisualFrame const *, enum CImageEncoder::TOptions, class TUid, class TUid, class TUid)
+ ?DataNewL@CExtJpegEncoder@@SAPAV1@W4TEncoderType@1@AAPAVHBufC8@@W4TOptions@CImageEncoder@@@Z @ 22 NONAME ; class CExtJpegEncoder * CExtJpegEncoder::DataNewL(enum CExtJpegEncoder::TEncoderType, class HBufC8 * &, enum CImageEncoder::TOptions)
+ ?DataNewL@CExtJpegEncoder@@SAPAV1@W4TEncoderType@1@PBVCVisualFrame@@W4TOptions@CImageEncoder@@@Z @ 23 NONAME ; class CExtJpegEncoder * CExtJpegEncoder::DataNewL(enum CExtJpegEncoder::TEncoderType, class CVisualFrame const *, enum CImageEncoder::TOptions)
+ ?DataOffset@CVisualFrame@@QBEHXZ @ 24 NONAME ; int CVisualFrame::DataOffset(void) const
+ ?DataPtrL@CVisualFrame@@QBE?AVTPtr8@@XZ @ 25 NONAME ; class TPtr8 CVisualFrame::DataPtrL(void) const
+ ?Dimension@CVisualFrame@@QBE?AVTSize@@XZ @ 26 NONAME ; class TSize CVisualFrame::Dimension(void) const
+ ?FileNewL@CExtJpegDecoder@@SAPAV1@AAVRFs@@ABVTDesC16@@ABVTDesC8@@W4TOptions@CImageDecoder@@@Z @ 27 NONAME ; class CExtJpegDecoder * CExtJpegDecoder::FileNewL(class RFs &, class TDesC16 const &, class TDesC8 const &, enum CImageDecoder::TOptions)
+ ?FileNewL@CExtJpegDecoder@@SAPAV1@AAVRFs@@ABVTDesC16@@W4TOptions@CImageDecoder@@VTUid@@33@Z @ 28 NONAME ; class CExtJpegDecoder * CExtJpegDecoder::FileNewL(class RFs &, class TDesC16 const &, enum CImageDecoder::TOptions, class TUid, class TUid, class TUid)
+ ?FileNewL@CExtJpegDecoder@@SAPAV1@W4TDecoderType@1@AAVRFs@@ABVTDesC16@@W4TOptions@CImageDecoder@@@Z @ 29 NONAME ; class CExtJpegDecoder * CExtJpegDecoder::FileNewL(enum CExtJpegDecoder::TDecoderType, class RFs &, class TDesC16 const &, enum CImageDecoder::TOptions)
+ ?FileNewL@CExtJpegEncoder@@SAPAV1@AAVRFs@@ABVTDesC16@@ABVTDesC8@@W4TOptions@CImageEncoder@@@Z @ 30 NONAME ; class CExtJpegEncoder * CExtJpegEncoder::FileNewL(class RFs &, class TDesC16 const &, class TDesC8 const &, enum CImageEncoder::TOptions)
+ ?FileNewL@CExtJpegEncoder@@SAPAV1@AAVRFs@@ABVTDesC16@@W4TOptions@CImageEncoder@@VTUid@@33@Z @ 31 NONAME ; class CExtJpegEncoder * CExtJpegEncoder::FileNewL(class RFs &, class TDesC16 const &, enum CImageEncoder::TOptions, class TUid, class TUid, class TUid)
+ ?FileNewL@CExtJpegEncoder@@SAPAV1@W4TEncoderType@1@AAVRFs@@ABVTDesC16@@W4TOptions@CImageEncoder@@@Z @ 32 NONAME ; class CExtJpegEncoder * CExtJpegEncoder::FileNewL(enum CExtJpegEncoder::TEncoderType, class RFs &, class TDesC16 const &, enum CImageEncoder::TOptions)
+ ?FrameFormat@CVisualFrame@@QBEHXZ @ 33 NONAME ; int CVisualFrame::FrameFormat(void) const
+ ?FrameLayout@CVisualFrame@@QBEABVTFrameLayout@1@XZ @ 34 NONAME ; class CVisualFrame::TFrameLayout const & CVisualFrame::FrameLayout(void) const
+ ?GetDestinationDataSizeL@CExtJpegEncoder@@QAEHXZ @ 35 NONAME ; int CExtJpegEncoder::GetDestinationDataSizeL(void)
+ ?MaxSize@CVisualFrame@@QBEHXZ @ 36 NONAME ; int CVisualFrame::MaxSize(void) const
+ ?NewL@CExtJpegDecoder@@SAPAV1@XZ @ 37 NONAME ; class CExtJpegDecoder * CExtJpegDecoder::NewL(void)
+ ?NewL@CExtJpegEncoder@@SAPAV1@XZ @ 38 NONAME ; class CExtJpegEncoder * CExtJpegEncoder::NewL(void)
+ ?NewL@CVisualFrame@@SAPAV1@AAVRChunk@@HHABVTSize@@HABVTFrameLayout@1@@Z @ 39 NONAME ; class CVisualFrame * CVisualFrame::NewL(class RChunk &, int, int, class TSize const &, int, class CVisualFrame::TFrameLayout const &)
+ ?NewL@CVisualFrame@@SAPAV1@AAVRChunk@@HHHABVTSize@@H@Z @ 40 NONAME ; class CVisualFrame * CVisualFrame::NewL(class RChunk &, int, int, int, class TSize const &, int)
+ ?NewL@CVisualFrame@@SAPAV1@AAVTDes8@@ABVTSize@@H@Z @ 41 NONAME ; class CVisualFrame * CVisualFrame::NewL(class TDes8 &, class TSize const &, int)
+ ?NewL@CVisualFrame@@SAPAV1@AAVTDes8@@ABVTSize@@HABVTFrameLayout@1@@Z @ 42 NONAME ; class CVisualFrame * CVisualFrame::NewL(class TDes8 &, class TSize const &, int, class CVisualFrame::TFrameLayout const &)
+ ?ProvideNewDestDataL@CExtJpegEncoder@@QAEXPBVCVisualFrame@@@Z @ 43 NONAME ; void CExtJpegEncoder::ProvideNewDestDataL(class CVisualFrame const *)
+ ?SetBitmapOverlayL@CExtJpegEncoder@@QAEXABVCFbsBitmap@@IVTPoint@@@Z @ 44 NONAME ; void CExtJpegEncoder::SetBitmapOverlayL(class CFbsBitmap const &, unsigned int, class TPoint)
+ ?SetBitmapReplaceL@CExtJpegEncoder@@QAEXABVCFbsBitmap@@VTPoint@@@Z @ 45 NONAME ; void CExtJpegEncoder::SetBitmapReplaceL(class CFbsBitmap const &, class TPoint)
+ ?SetCroppingL@CExtJpegDecoder@@QAEXVTRect@@@Z @ 46 NONAME ; void CExtJpegDecoder::SetCroppingL(class TRect)
+ ?SetDctDecodingL@CExtJpegDecoder@@QAEXXZ @ 47 NONAME ; void CExtJpegDecoder::SetDctDecodingL(void)
+ ?SetDctEncodingL@CExtJpegEncoder@@QAEXXZ @ 48 NONAME ; void CExtJpegEncoder::SetDctEncodingL(void)
+ ?SetFlippingL@CExtJpegDecoder@@QAEXXZ @ 49 NONAME ; void CExtJpegDecoder::SetFlippingL(void)
+ ?SetImageReplaceL@CExtJpegEncoder@@QAEXPBVCVisualFrame@@VTPoint@@@Z @ 50 NONAME ; void CExtJpegEncoder::SetImageReplaceL(class CVisualFrame const *, class TPoint)
+ ?SetLosslessFlippingL@CExtJpegEncoder@@QAEXXZ @ 51 NONAME ; void CExtJpegEncoder::SetLosslessFlippingL(void)
+ ?SetLosslessMirroringL@CExtJpegEncoder@@QAEXXZ @ 52 NONAME ; void CExtJpegEncoder::SetLosslessMirroringL(void)
+ ?SetLosslessRotationL@CExtJpegEncoder@@QAEXH@Z @ 53 NONAME ; void CExtJpegEncoder::SetLosslessRotationL(int)
+ ?SetMirroringL@CExtJpegDecoder@@QAEXXZ @ 54 NONAME ; void CExtJpegDecoder::SetMirroringL(void)
+ ?SetRotationL@CExtJpegDecoder@@QAEXH@Z @ 55 NONAME ; void CExtJpegDecoder::SetRotationL(int)
+ ?SetSizeL@CVisualFrame@@QAEXH@Z @ 56 NONAME ; void CVisualFrame::SetSizeL(int)
+ ?SetStreamingL@CExtJpegDecoder@@QAEXAAVTSize@@@Z @ 57 NONAME ; void CExtJpegDecoder::SetStreamingL(class TSize &)
+ ?SetStreamingL@CExtJpegEncoder@@QAEXAAVTSize@@PBVCFrameImageData@@@Z @ 58 NONAME ; void CExtJpegEncoder::SetStreamingL(class TSize &, class CFrameImageData const *)
+ ?Size@CVisualFrame@@QBEHXZ @ 59 NONAME ; int CVisualFrame::Size(void) const
+ ?SupportedFormatsL@CExtJpegDecoder@@QAEHXZ @ 60 NONAME ; int CExtJpegDecoder::SupportedFormatsL(void)
+ ?SupportedFormatsL@CExtJpegEncoder@@QAEHXZ @ 61 NONAME ; int CExtJpegEncoder::SupportedFormatsL(void)
+ ?GetImageFrameL@CVisualFrame@@QAEPAVCImageFrame@@XZ @ 62 NONAME ; class CImageFrame * CVisualFrame::GetImageFrameL(void)
+ ?NewL@CVisualFrame@@SAPAV1@PBVCImageFrame@@@Z @ 63 NONAME ; class CVisualFrame * CVisualFrame::NewL(class CImageFrame const *)
+ ?ContinueConvert@CExtJpegDecoder@@UAEXPAVTRequestStatus@@@Z @ 64 NONAME ; void CExtJpegDecoder::ContinueConvert(class TRequestStatus *)
+ ?Convert@CExtJpegDecoder@@UAEXPAVTRequestStatus@@AAVCFbsBitmap@@1H@Z @ 65 NONAME ; void CExtJpegDecoder::Convert(class TRequestStatus *, class CFbsBitmap &, class CFbsBitmap &, int)
+ ?Convert@CExtJpegDecoder@@UAEXPAVTRequestStatus@@AAVCFbsBitmap@@H@Z @ 66 NONAME ; void CExtJpegDecoder::Convert(class TRequestStatus *, class CFbsBitmap &, int)
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/imagingextensions/imageadaptationextensions/iclextjpegapi/EABI/IclExtJpegApiU.DEF Wed Sep 08 10:05:56 2010 +0530
@@ -0,0 +1,82 @@
+EXPORTS
+ _ZN12CVisualFrame14GetImageFrameLEv @ 1 NONAME
+ _ZN12CVisualFrame4NewLEPK11CImageFrame @ 2 NONAME
+ _ZN12CVisualFrame4NewLER5TDes8RK5TSizei @ 3 NONAME
+ _ZN12CVisualFrame4NewLER5TDes8RK5TSizeiRKNS_12TFrameLayoutE @ 4 NONAME
+ _ZN12CVisualFrame4NewLER6RChunkiiRK5TSizeiRKNS_12TFrameLayoutE @ 5 NONAME
+ _ZN12CVisualFrame4NewLER6RChunkiiiRK5TSizei @ 6 NONAME
+ _ZN12CVisualFrame8SetSizeLEi @ 7 NONAME
+ _ZN12CVisualFrameD0Ev @ 8 NONAME
+ _ZN12CVisualFrameD1Ev @ 9 NONAME
+ _ZN12CVisualFrameD2Ev @ 10 NONAME
+ _ZN15CExtJpegDecoder12SetCroppingLE5TRect @ 11 NONAME
+ _ZN15CExtJpegDecoder12SetFlippingLEv @ 12 NONAME
+ _ZN15CExtJpegDecoder12SetRotationLEi @ 13 NONAME
+ _ZN15CExtJpegDecoder13CapabilitiesLEv @ 14 NONAME
+ _ZN15CExtJpegDecoder13SetMirroringLEv @ 15 NONAME
+ _ZN15CExtJpegDecoder13SetStreamingLER5TSize @ 16 NONAME
+ _ZN15CExtJpegDecoder15SetDctDecodingLEv @ 17 NONAME
+ _ZN15CExtJpegDecoder16ContinueConvertLEP14TRequestStatusPK12CVisualFrameRii @ 18 NONAME
+ _ZN15CExtJpegDecoder17SupportedFormatsLEv @ 19 NONAME
+ _ZN15CExtJpegDecoder4NewLEv @ 20 NONAME
+ _ZN15CExtJpegDecoder8ConvertLEP14TRequestStatusPK12CVisualFrameRii @ 21 NONAME
+ _ZN15CExtJpegDecoder8DataNewLENS_12TDecoderTypeER3RFsPK12CVisualFrameN13CImageDecoder8TOptionsE @ 22 NONAME
+ _ZN15CExtJpegDecoder8DataNewLENS_12TDecoderTypeER3RFsRK6TDesC8N13CImageDecoder8TOptionsE @ 23 NONAME
+ _ZN15CExtJpegDecoder8DataNewLER3RFsPK12CVisualFrameN13CImageDecoder8TOptionsE4TUidS7_S7_ @ 24 NONAME
+ _ZN15CExtJpegDecoder8DataNewLER3RFsPK12CVisualFrameRK6TDesC8N13CImageDecoder8TOptionsE @ 25 NONAME
+ _ZN15CExtJpegDecoder8DataNewLER3RFsRK6TDesC8N13CImageDecoder8TOptionsE4TUidS7_S7_ @ 26 NONAME
+ _ZN15CExtJpegDecoder8DataNewLER3RFsRK6TDesC8S4_N13CImageDecoder8TOptionsE @ 27 NONAME
+ _ZN15CExtJpegDecoder8FileNewLENS_12TDecoderTypeER3RFsRK7TDesC16N13CImageDecoder8TOptionsE @ 28 NONAME
+ _ZN15CExtJpegDecoder8FileNewLER3RFsRK7TDesC16N13CImageDecoder8TOptionsE4TUidS7_S7_ @ 29 NONAME
+ _ZN15CExtJpegDecoder8FileNewLER3RFsRK7TDesC16RK6TDesC8N13CImageDecoder8TOptionsE @ 30 NONAME
+ _ZN15CExtJpegDecoderD0Ev @ 31 NONAME
+ _ZN15CExtJpegDecoderD1Ev @ 32 NONAME
+ _ZN15CExtJpegDecoderD2Ev @ 33 NONAME
+ _ZN15CExtJpegEncoder13CapabilitiesLEv @ 34 NONAME
+ _ZN15CExtJpegEncoder13SetStreamingLER5TSizePK15CFrameImageData @ 35 NONAME
+ _ZN15CExtJpegEncoder15SetDctEncodingLEv @ 36 NONAME
+ _ZN15CExtJpegEncoder16ContinueConvertLEP14TRequestStatusPK12CVisualFrameRi @ 37 NONAME
+ _ZN15CExtJpegEncoder16SetImageReplaceLEPK12CVisualFrame6TPoint @ 38 NONAME
+ _ZN15CExtJpegEncoder17SetBitmapOverlayLERK10CFbsBitmapj6TPoint @ 39 NONAME
+ _ZN15CExtJpegEncoder17SetBitmapReplaceLERK10CFbsBitmap6TPoint @ 40 NONAME
+ _ZN15CExtJpegEncoder17SupportedFormatsLEv @ 41 NONAME
+ _ZN15CExtJpegEncoder19ProvideNewDestDataLEPK12CVisualFrame @ 42 NONAME
+ _ZN15CExtJpegEncoder20SetLosslessFlippingLEv @ 43 NONAME
+ _ZN15CExtJpegEncoder20SetLosslessRotationLEi @ 44 NONAME
+ _ZN15CExtJpegEncoder21SetLosslessMirroringLEv @ 45 NONAME
+ _ZN15CExtJpegEncoder23GetDestinationDataSizeLEv @ 46 NONAME
+ _ZN15CExtJpegEncoder4NewLEv @ 47 NONAME
+ _ZN15CExtJpegEncoder8ConvertLEP14TRequestStatusPK12CVisualFrameRiPK15CFrameImageData @ 48 NONAME
+ _ZN15CExtJpegEncoder8DataNewLENS_12TEncoderTypeEPK12CVisualFrameN13CImageEncoder8TOptionsE @ 49 NONAME
+ _ZN15CExtJpegEncoder8DataNewLENS_12TEncoderTypeERP6HBufC8N13CImageEncoder8TOptionsE @ 50 NONAME
+ _ZN15CExtJpegEncoder8DataNewLEPK12CVisualFrameN13CImageEncoder8TOptionsE4TUidS5_S5_ @ 51 NONAME
+ _ZN15CExtJpegEncoder8DataNewLEPK12CVisualFrameRK6TDesC8N13CImageEncoder8TOptionsE @ 52 NONAME
+ _ZN15CExtJpegEncoder8DataNewLERP6HBufC8N13CImageEncoder8TOptionsE4TUidS5_S5_ @ 53 NONAME
+ _ZN15CExtJpegEncoder8DataNewLERP6HBufC8RK6TDesC8N13CImageEncoder8TOptionsE @ 54 NONAME
+ _ZN15CExtJpegEncoder8FileNewLENS_12TEncoderTypeER3RFsRK7TDesC16N13CImageEncoder8TOptionsE @ 55 NONAME
+ _ZN15CExtJpegEncoder8FileNewLER3RFsRK7TDesC16N13CImageEncoder8TOptionsE4TUidS7_S7_ @ 56 NONAME
+ _ZN15CExtJpegEncoder8FileNewLER3RFsRK7TDesC16RK6TDesC8N13CImageEncoder8TOptionsE @ 57 NONAME
+ _ZN15CExtJpegEncoderD0Ev @ 58 NONAME
+ _ZN15CExtJpegEncoderD1Ev @ 59 NONAME
+ _ZN15CExtJpegEncoderD2Ev @ 60 NONAME
+ _ZNK12CVisualFrame10DataChunkLEv @ 61 NONAME
+ _ZNK12CVisualFrame10DataOffsetEv @ 62 NONAME
+ _ZNK12CVisualFrame11FrameFormatEv @ 63 NONAME
+ _ZNK12CVisualFrame11FrameLayoutEv @ 64 NONAME
+ _ZNK12CVisualFrame13DataContainerEv @ 65 NONAME
+ _ZNK12CVisualFrame4SizeEv @ 66 NONAME
+ _ZNK12CVisualFrame7MaxSizeEv @ 67 NONAME
+ _ZNK12CVisualFrame8DataPtrLEv @ 68 NONAME
+ _ZNK12CVisualFrame9DimensionEv @ 69 NONAME
+ _ZTI12CVisualFrame @ 70 NONAME ; #<TI>#
+ _ZTI15CExtJpegDecoder @ 71 NONAME ; #<TI>#
+ _ZTI15CExtJpegEncoder @ 72 NONAME ; #<TI>#
+ _ZTI16CVisualFrameImpl @ 73 NONAME ; #<TI>#
+ _ZTV12CVisualFrame @ 74 NONAME ; #<VT>#
+ _ZTV15CExtJpegDecoder @ 75 NONAME ; #<VT>#
+ _ZTV15CExtJpegEncoder @ 76 NONAME ; #<VT>#
+ _ZTV16CVisualFrameImpl @ 77 NONAME ; #<VT>#
+ _ZN15CExtJpegDecoder15ContinueConvertEP14TRequestStatus @ 78 NONAME
+ _ZN15CExtJpegDecoder7ConvertEP14TRequestStatusR10CFbsBitmapS3_i @ 79 NONAME
+ _ZN15CExtJpegDecoder7ConvertEP14TRequestStatusR10CFbsBitmapi @ 80 NONAME
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/imagingextensions/imageadaptationextensions/iclextjpegapi/extended_icl_jpeg_api.metaxml Wed Sep 08 10:05:56 2010 +0530
@@ -0,0 +1,19 @@
+<?xml version="1.0" ?>
+<api id="293063d490f04b693dfd8626cf320e26" dataversion="2.0">
+ <name>Extended ICL Jpeg API</name>
+ <description>Nokia specific extension to Symbian's JPEG, which provides certain memory efficient improvements(streaming) enocding/decoding and also some DCT domain based lossless(initial quality upkeeping) operations like overlaying, rotating, mirroring.
+</description>
+ <type>c++</type>
+ <collection>imagingextensions</collection>
+ <libs>
+ <lib name="IclExtJpegApi.lib" />
+ </libs>
+ <release category="platform"/>
+ <attributes>
+ <!-- This indicates wether the api provedes separate html documentation -->
+ <!-- or is the additional documentation generated from headers. -->
+ <!-- If you are unsuere then the value is "no" -->
+ <htmldocprovided>no</htmldocprovided>
+ <adaptation>no</adaptation>
+ </attributes>
+</api>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/imagingextensions/imageadaptationextensions/iclextjpegapi/group/IclExtJpegApi.mmp Wed Sep 08 10:05:56 2010 +0530
@@ -0,0 +1,42 @@
+/*
+* 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: Project specification file for IclExtJpegApi.
+*
+*/
+
+#include <icl/icl_uids.hrh>
+#include <platform_paths.hrh>
+
+TARGET IclExtJpegApi.dll
+CAPABILITY CAP_GENERAL_DLL
+targettype DLL
+
+UID 0x1000008D 0x10204BF0
+VENDORID VID_DEFAULT
+
+SOURCEPATH ../src
+SOURCE IclExtJpegApi.cpp
+SOURCE IclExtJpegApiFrameImplV2.cpp
+
+USERINCLUDE ../inc
+OS_LAYER_SYSTEMINCLUDE
+SYSTEMINCLUDE /epoc32/include/ecom
+SYSTEMINCLUDE /epoc32/include/icl
+
+LIBRARY euser.lib
+LIBRARY ImageConversion.lib
+LIBRARY ecom.lib
+LIBRARY Jpegimageframeplugin.lib
+
+// End of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/imagingextensions/imageadaptationextensions/iclextjpegapi/group/bld.inf Wed Sep 08 10:05:56 2010 +0530
@@ -0,0 +1,31 @@
+/*
+* Copyright (c) 2005-2010 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: Build information file for Extended ICL API.
+*
+*/
+
+#include <platform_paths.hrh>
+
+PRJ_PLATFORMS
+DEFAULT
+
+PRJ_EXPORTS
+../inc_plat/IclExtJpegApi.h OS_LAYER_PLATFORM_EXPORT_PATH(IclExtJpegApi.h)
+../rom/IclExtJpegApi.iby CORE_OS_LAYER_IBY_EXPORT_PATH(IclExtJpegApi.iby)
+
+PRJ_MMPFILES
+IclExtJpegApi.mmp
+
+// End of File
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/imagingextensions/imageadaptationextensions/iclextjpegapi/inc/IclExtJpegApiConst.h Wed Sep 08 10:05:56 2010 +0530
@@ -0,0 +1,45 @@
+/*
+* 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 constants for IclExtJpegApi
+*
+*/
+
+#ifndef _ICLEXTJPEGAPICONST_
+#define _ICLEXTJPEGAPICONST_
+
+//----------------------------------------------------------------------------
+// Common const definitions:
+//----------------------------------------------------------------------------
+_LIT8( KJpgMimeType,"image/jpeg" );
+_LIT( KJpgFileExt,".jpg" );
+
+const TInt KMinSwVersion = 64;
+const TInt KMinHwVersion = 0;
+const TInt KMaxSwVersion = 127;
+const TInt KMaxHwVersion = 63;
+
+//----------------------------------------------------------------------------
+// V2 specific variations:
+//----------------------------------------------------------------------------
+
+const TUid KUidExtIclImageFrameFormat = { 0x11111111 };
+
+//----------------------------------------------------------------------------
+// Initial version specific variations:
+//----------------------------------------------------------------------------
+
+#endif // _ICLEXTJPEGAPICONST_
+
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/imagingextensions/imageadaptationextensions/iclextjpegapi/inc/IclExtJpegApiFrameImpl.h Wed Sep 08 10:05:56 2010 +0530
@@ -0,0 +1,276 @@
+/*
+* 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 TFrameFormatExt and CVisualFrameImpl
+*
+*/
+
+#ifndef _ICLEXTJPEGAPIFRAMEIMPL_
+#define _ICLEXTJPEGAPIFRAMEIMPL_
+
+#include <icl/icl_propertyuids.h>
+#include "IclExtJpegApiConst.h"
+
+class CVisualFrame::TFrameLayout;
+
+#include "imageframe.h"
+
+/**
+* TFrameFormatExt
+* @lib IclExtJpegApi.lib
+* @since 3.2
+*/
+class TFrameFormatExt : public TFrameFormatBase
+ {
+ public:
+
+ /**
+ * C++ default constructor.
+ */
+ TFrameFormatExt( TInt aFormatCode ) :
+ TFrameFormatBase( KUidExtIclImageFrameFormat ),
+ iFormatCode( aFormatCode )
+ {
+ Constructor();
+ };
+
+ /**
+ * Duplicate
+ * @since 3.2
+ * @return TFrameFormatExt
+ */
+ TFrameFormatBase* DuplicateL() const
+ {
+ return new ( ELeave ) TFrameFormatExt( iFormatCode );
+ };
+
+ /**
+ * Colour space
+ * @since 3.2
+ * @return TUid
+ */
+ TUid ColourSpace() const;
+
+ /**
+ * Sampling
+ * @since 3.2
+ * @return TUid
+ */
+ TUid Sampling() const;
+
+ /**
+ * Format code
+ * @since 3.2
+ * @return TInt
+ */
+ TInt FormatCode() const;
+
+ /**
+ * Set colour space
+ * @since 3.2
+ * @param aColourSpace
+ * @return void
+ */
+ void SetColourSpace( TUid aColourSpace );
+
+
+ protected:
+
+ /**
+ * constructor.
+ */
+ void Constructor();
+
+ protected: // Data
+
+ // The image frame colour space
+ TUid iColourSpace;
+ // The frame sampling
+ TUid iSampling;
+ // The image frame format code which uniquely identifies all other parameters.
+ TInt iFormatCode;
+
+ };
+
+
+/**
+* CVisualFrameImpl
+* @lib IclExtJpegApi.lib
+* @since 3.2
+*/
+class CVisualFrameImpl : public CImageFrame
+ {
+ public:
+
+ /**
+ * 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.
+ */
+ static CVisualFrameImpl* NewL(
+ TDes8& aBuffer,
+ const TSize& aDimension,
+ TInt aFrameFormat );
+
+ /**
+ * Two-phased constructor.
+ * @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.
+ */
+ static CVisualFrameImpl* NewL(
+ RChunk& aChunk,
+ TInt aSize,
+ TInt aMaxSize,
+ TInt aDataOffset,
+ const TSize& aDimension,
+ TInt aFrameFormat );
+ /**
+ * Two-phased constructor.
+ * @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.
+ */
+ static CVisualFrameImpl* NewL(
+ TDes8& aBuffer,
+ const TSize& aDimension,
+ TInt aFrameFormat,
+ const CVisualFrame::TFrameLayout& aFrameLayout );
+
+ /**
+ * Two-phased constructor.
+ * @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
+ */
+ static CVisualFrameImpl* NewL(
+ RChunk& aChunk,
+ TInt aSize,
+ TInt aMaxSize,
+ const TSize& aDimension,
+ TInt aFrameFormat,
+ const CVisualFrame::TFrameLayout& aFrameLayout );
+
+ static CVisualFrameImpl* NewL( const CImageFrame* aImageFrame );
+
+ /**
+ * Get image frame
+ * @since 3.2
+ * @return CImageFrame
+ */
+ CImageFrame* GetImageFrameL();
+
+ /**
+ * Returns a constant reference to the chunk containing
+ * the image data, if exists.
+ * @since 3.2
+ * @return RChunk
+ */
+ const RChunk& DataChunkL() const;
+
+ /**
+ * Returns a descriptor pointer to the image data location, if exists
+ * @since 3.2
+ * @return TPtr8
+ */
+ TPtr8 DataPtrL() const;
+
+ /**
+ * Returns the dimensions of the image.
+ * @since 3.2
+ * @return TSize
+ */
+ TSize Dimension() const;
+
+ /**
+ * Return the image data format.
+ * @since 3.2
+ * @return TInt
+ */
+ TInt FrameFormat2() const;
+
+ /**
+ * Returns the offset of the image data for non-planar,
+ * single-component or compressed images.
+ * @since 3.2
+ * @return TInt
+ */
+ TInt DataOffset() const;
+
+ /**
+ * Returns the amount of stored image data in bytes.
+ * @since 3.2
+ * @return TInt
+ */
+ 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
+ * @param
+ * @return void
+ */
+ void SetSizeL( TInt aSize );
+
+ /**
+ * Returns the maximum size of the memory space reserved for image data
+ * @since 3.2
+ * @return TInt
+ */
+ TInt MaxSize() const;
+
+ /**
+ * Returns the storage type of the image data.
+ * @since 3.2
+ * @return TInt
+ */
+ TInt DataContainer() const;
+
+ /**
+ * Returns the layout of the image data for planar compressed images.
+ * @since 3.2
+ * @param
+ * @return CVisualFrame::TFrameLayout
+ */
+ const CVisualFrame::TFrameLayout& FrameLayout2() const;
+
+ /**
+ * Destructor.
+ */
+ virtual ~CVisualFrameImpl();
+
+ private: // Data
+
+ CVisualFrame::TFrameLayout iFrameLayout2;
+
+ TInt iSize;
+ };
+
+
+#endif // _ICLEXTJPEGAPIFRAMEIMPL_
+
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/imagingextensions/imageadaptationextensions/iclextjpegapi/inc_plat/IclExtJpegApi.h Wed Sep 08 10:05:56 2010 +0530
@@ -0,0 +1,1015 @@
+/*
+* 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
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/imagingextensions/imageadaptationextensions/iclextjpegapi/rom/IclExtJpegApi.iby Wed Sep 08 10:05:56 2010 +0530
@@ -0,0 +1,25 @@
+/*
+* Copyright (c) 2002-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: Image description file for project IclExtJpegApi
+*
+*/
+
+
+#ifndef __ICLEXTJPEGAPI_IBY
+#define __ICLEXTJPEGAPI_IBY
+
+//ExifLib
+file=ABI_DIR\BUILD_DIR\IclExtJpegApi.dll SHARED_LIB_DIR\IclExtJpegApi.dll
+
+#endif //__ICLEXTJPEGAPI_IBY
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/imagingextensions/imageadaptationextensions/iclextjpegapi/src/IclExtJpegApi.cpp Wed Sep 08 10:05:56 2010 +0530
@@ -0,0 +1,1296 @@
+/*
+* Copyright (c) 2006-2008 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: Implementation of CVisualFrame, CExtJpegDecoder and CExtJpegEncoder
+*
+*/
+
+// INCLUDE FILES
+#ifdef SYMBIAN_ENABLE_SPLIT_HEADERS
+#include <icl_uids_def.hrh>
+#endif
+#include "IclExtJpegApi.h"
+#include "IclExtJpegApiFrameImpl.h"
+
+
+/*****************************************************/
+/* Visual Frame Data Structure in Extended ICL API */
+/*****************************************************/
+
+// ---------------------------------------------------------
+// CVisualFrame* CVisualFrame::NewL
+// Two-phased constructor.
+// ---------------------------------------------------------
+//
+EXPORT_C CVisualFrame* CVisualFrame::NewL(
+ TDes8& aBuffer,
+ const TSize& aDimension,
+ TInt aFrameFormat )
+ {
+
+ CVisualFrame* self = new ( ELeave ) CVisualFrame();
+ CleanupStack::PushL( self );
+ self->iVisualFrameImpl = CVisualFrameImpl::NewL( aBuffer, aDimension, aFrameFormat );
+ CleanupStack::Pop( self );
+
+ return self;
+ }
+
+// ---------------------------------------------------------
+// CVisualFrame* CVisualFrame::NewL
+// Two-phased constructor.
+// ---------------------------------------------------------
+//
+EXPORT_C CVisualFrame* CVisualFrame::NewL(
+ RChunk& aChunk,
+ TInt aSize,
+ TInt aMaxSize,
+ TInt aDataOffset,
+ const TSize& aDimension,
+ TInt aFrameFormat )
+ {
+ CVisualFrame* self = new ( ELeave ) CVisualFrame();
+ CleanupStack::PushL( self );
+ self->iVisualFrameImpl = CVisualFrameImpl::NewL( aChunk, aSize, aMaxSize,
+ aDataOffset, aDimension, aFrameFormat );
+ CleanupStack::Pop( self );
+
+ return self;
+ }
+
+// ---------------------------------------------------------
+// CVisualFrame* CVisualFrame::NewL
+// Two-phased constructor.
+// ---------------------------------------------------------
+//
+EXPORT_C CVisualFrame* CVisualFrame::NewL(
+ TDes8& aBuffer,
+ const TSize& aDimension,
+ TInt aFrameFormat,
+ const TFrameLayout& aFrameLayout )
+ {
+ CVisualFrame* self = new ( ELeave ) CVisualFrame();
+ CleanupStack::PushL( self );
+ self->iVisualFrameImpl = CVisualFrameImpl::NewL( aBuffer, aDimension,
+ aFrameFormat, aFrameLayout );
+ CleanupStack::Pop( self );
+
+ return self;
+ }
+
+// ---------------------------------------------------------
+// CVisualFrame* CVisualFrame::NewL
+// Two-phased constructor.
+// ---------------------------------------------------------
+//
+EXPORT_C CVisualFrame* CVisualFrame::NewL(
+ RChunk& aChunk,
+ TInt aSize,
+ TInt aMaxSize,
+ const TSize& aDimension,
+ TInt aFrameFormat,
+ const TFrameLayout& aFrameLayout )
+ {
+ CVisualFrame* self = new ( ELeave ) CVisualFrame();
+ CleanupStack::PushL( self );
+ self->iVisualFrameImpl = CVisualFrameImpl::NewL( aChunk, aSize, aMaxSize,
+ aDimension, aFrameFormat,
+ aFrameLayout );
+ CleanupStack::Pop( self );
+
+ return self;
+ }
+
+// ----------------------------------------------------------
+// CVisualFrame::DataChunkL
+// ----------------------------------------------------------
+//
+EXPORT_C const RChunk& CVisualFrame::DataChunkL() const
+ {
+ return iVisualFrameImpl->DataChunkL();
+ }
+
+// ----------------------------------------------------------
+// CVisualFrame::DataPtrL
+// ----------------------------------------------------------
+//
+EXPORT_C TPtr8 CVisualFrame::DataPtrL() const
+ {
+ return iVisualFrameImpl->DataPtrL();
+ }
+
+// ----------------------------------------------------------
+// CVisualFrame::Dimension
+// ----------------------------------------------------------
+//
+EXPORT_C TSize CVisualFrame::Dimension() const
+ {
+ return iVisualFrameImpl->Dimension();
+ }
+
+// ----------------------------------------------------------
+// CVisualFrame::FrameFormat
+// ----------------------------------------------------------
+//
+EXPORT_C TInt CVisualFrame::FrameFormat() const
+ {
+ return iVisualFrameImpl->FrameFormat2();
+ }
+
+// ----------------------------------------------------------
+// CVisualFrame::DataOffset
+// ----------------------------------------------------------
+//
+EXPORT_C TInt CVisualFrame::DataOffset() const
+ {
+ return iVisualFrameImpl->DataOffset();
+ }
+
+// ----------------------------------------------------------
+// CVisualFrame::Size
+// ----------------------------------------------------------
+//
+EXPORT_C TInt CVisualFrame::Size() const
+ {
+ return iVisualFrameImpl->Size();
+ }
+
+// ----------------------------------------------------------
+// CVisualFrame::SetSizeL
+// ----------------------------------------------------------
+//
+EXPORT_C void CVisualFrame::SetSizeL( TInt aSize )
+ {
+ iVisualFrameImpl->SetSizeL( aSize );
+ }
+
+// ----------------------------------------------------------
+// CVisualFrame::MaxSize
+// ----------------------------------------------------------
+//
+EXPORT_C TInt CVisualFrame::MaxSize() const
+ {
+ return iVisualFrameImpl->MaxSize();
+ }
+
+// ----------------------------------------------------------
+// CVisualFrame::DataContainer
+// ----------------------------------------------------------
+//
+EXPORT_C CVisualFrame::TDataContainer CVisualFrame::DataContainer() const
+ {
+ return ( TDataContainer )iVisualFrameImpl->DataContainer();
+ }
+
+// ----------------------------------------------------------
+// CVisualFrame::FrameLayout
+// ----------------------------------------------------------
+//
+EXPORT_C const CVisualFrame::TFrameLayout& CVisualFrame::FrameLayout() const
+ {
+ return iVisualFrameImpl->FrameLayout2();
+ }
+
+// ----------------------------------------------------------
+// CVisualFrame::~CVisualFrame
+// Destructor
+// ----------------------------------------------------------
+//
+EXPORT_C CVisualFrame::~CVisualFrame()
+ {
+ delete iVisualFrameImpl;
+ }
+
+// ---------------------------------------------------------
+// CVisualFrame* CVisualFrame::NewL
+// Two-phased constructor.
+// ---------------------------------------------------------
+//
+EXPORT_C CVisualFrame* CVisualFrame::NewL( const CImageFrame* aImageFrame )
+ {
+ CVisualFrame* self = new ( ELeave ) CVisualFrame();
+ CleanupStack::PushL( self );
+ self->iVisualFrameImpl = CVisualFrameImpl::NewL( aImageFrame );
+ CleanupStack::Pop( self );
+
+ return self;
+ }
+
+// ----------------------------------------------------------
+// CVisualFrame::GetImageFrameL
+// ----------------------------------------------------------
+//
+EXPORT_C CImageFrame* CVisualFrame::GetImageFrameL()
+ {
+ return iVisualFrameImpl->GetImageFrameL();
+ }
+
+
+/*****************************************************/
+/* Extended ICL Jpeg Decoder API */
+/*****************************************************/
+
+// ---------------------------------------------------------
+// CExtJpegDecoder* CExtJpegDecoder::NewL
+// Two-phased constructor.
+// ---------------------------------------------------------
+//
+EXPORT_C CExtJpegDecoder* CExtJpegDecoder::NewL()
+ {
+ return new (ELeave) CExtJpegDecoder();
+ }
+
+// ---------------------------------------------------------
+// CExtJpegDecoder* CExtJpegDecoder::FileNewL
+// Creates, initializes and returns a pointer to an object of
+// class CExtJpegDecoder
+// ---------------------------------------------------------
+//
+EXPORT_C CExtJpegDecoder* CExtJpegDecoder::FileNewL(
+ RFs& aFs, const TDesC& aSourceFilename,
+ const TDesC8& aMIMEType,
+ const TOptions aOptions )
+ {
+ CExtJpegDecoder* dec = reinterpret_cast<CExtJpegDecoder*>(
+ CImageDecoder::FileNewL( aFs, aSourceFilename,
+ aMIMEType, aOptions ) );
+ CleanupStack::PushL( dec );
+ if ( dec->CapabilitiesL() < ECapNone )
+ {
+ User::Leave( KErrNotFound );
+ }
+ CleanupStack::Pop();
+ return dec;
+ }
+
+// ---------------------------------------------------------
+// CExtJpegDecoder* CExtJpegDecoder::FileNewL
+// Creates, initializes and returns a pointer to an object of
+// class CExtJpegDecoder
+// ---------------------------------------------------------
+//
+EXPORT_C CExtJpegDecoder* CExtJpegDecoder::FileNewL(
+ RFs& aFs,
+ const TDesC& aSourceFilename,
+ const TOptions aOptions,
+ const TUid aImageType,
+ const TUid aImageSubType,
+ const TUid aDecoderUid )
+ {
+ CExtJpegDecoder* dec = reinterpret_cast<CExtJpegDecoder*>(
+ CImageDecoder::FileNewL( aFs, aSourceFilename, aOptions,
+ aImageType, aImageSubType, aDecoderUid ) );
+ CleanupStack::PushL( dec );
+ if ( dec->CapabilitiesL() < ECapNone )
+ {
+ User::Leave( KErrNotFound );
+ }
+ CleanupStack::Pop();
+ return dec;
+ }
+
+// ---------------------------------------------------------
+// CExtJpegDecoder* CExtJpegDecoder::DataNewL
+// Creates, initializes and returns a pointer to an object of
+// class CExtJpegDecoder
+// ---------------------------------------------------------
+//
+EXPORT_C CExtJpegDecoder* CExtJpegDecoder::DataNewL(
+ RFs& aFs,
+ const TDesC8& aSourceData,
+ const TDesC8& aMIMEType,
+ const TOptions aOptions )
+ {
+ CExtJpegDecoder* dec = reinterpret_cast<CExtJpegDecoder*>(
+ CImageDecoder::DataNewL( aFs, aSourceData,
+ aMIMEType, aOptions ) );
+ CleanupStack::PushL( dec );
+ if ( dec->CapabilitiesL() < ECapNone )
+ {
+ User::Leave( KErrNotFound );
+ }
+ CleanupStack::Pop();
+ return dec;
+ }
+
+// ---------------------------------------------------------
+// CExtJpegDecoder* CExtJpegDecoder::DataNewL
+// Creates, initializes and returns a pointer to an object of
+// class CExtJpegDecoder
+// ---------------------------------------------------------
+//
+EXPORT_C CExtJpegDecoder* CExtJpegDecoder::DataNewL(
+ RFs& aFs,
+ const TDesC8& aSourceData,
+ const TOptions aOptions,
+ const TUid aImageType,
+ const TUid aImageSubType,
+ const TUid aDecoderUid )
+ {
+ CExtJpegDecoder* dec = reinterpret_cast<CExtJpegDecoder*>(
+ CImageDecoder::DataNewL( aFs, aSourceData, aOptions,
+ aImageType, aImageSubType, aDecoderUid ) );
+ CleanupStack::PushL( dec );
+ if ( dec->CapabilitiesL() < ECapNone )
+ {
+ User::Leave( KErrNotFound );
+ }
+ CleanupStack::Pop();
+ return dec;
+ }
+
+// ---------------------------------------------------------
+// CExtJpegDecoder* CExtJpegDecoder::DataNewL
+// Creates, initializes and returns a pointer to an object of
+// class CExtJpegDecoder
+// ---------------------------------------------------------
+//
+EXPORT_C CExtJpegDecoder* CExtJpegDecoder::DataNewL(
+ RFs& aFs,
+ const CVisualFrame* aSourceData,
+ const TDesC8& aMIMEType,
+ const TOptions aOptions )
+ {
+
+ TUint8* sourcePtr = NULL;
+ CVisualFrame* sourceDataFrame = const_cast<CVisualFrame*>( aSourceData );
+ if ( sourceDataFrame->DataContainer() == CVisualFrame::EInChunk )
+ {
+ sourcePtr = sourceDataFrame->DataChunkL().Base() + sourceDataFrame->DataOffset();
+ }
+ else if ( sourceDataFrame->DataContainer() == CVisualFrame::EInDescriptor )
+ {
+ sourcePtr = const_cast<TUint8*>( sourceDataFrame->DataPtrL().Ptr() )
+ + sourceDataFrame->DataOffset();
+ }
+ else
+ {
+ User::Leave( KErrArgument );
+ }
+ TPtrC8 sourceData( sourcePtr, sourceDataFrame->Size() );
+ CExtJpegDecoder* dec = reinterpret_cast<CExtJpegDecoder*>(
+ CImageDecoder::DataNewL( aFs, sourceData,
+ aMIMEType, aOptions ) );
+ CleanupStack::PushL( dec );
+ if ( dec->CapabilitiesL() < ECapNone )
+ {
+ User::Leave( KErrNotFound );
+ }
+ CleanupStack::Pop();
+ return dec;
+ }
+
+// ---------------------------------------------------------
+// CExtJpegDecoder* CExtJpegDecoder::DataNewL
+// Creates, initializes and returns a pointer to an object of
+// class CExtJpegDecoder
+// ---------------------------------------------------------
+//
+EXPORT_C CExtJpegDecoder* CExtJpegDecoder::DataNewL(
+ RFs& aFs,
+ const CVisualFrame* aSourceData,
+ const TOptions aOptions,
+ const TUid aImageType,
+ const TUid aImageSubType,
+ const TUid aDecoderUid )
+ {
+ TUint8* sourcePtr = NULL;
+ CVisualFrame* sourceDataFrame = const_cast<CVisualFrame*>( aSourceData );
+ if ( sourceDataFrame->DataContainer() == CVisualFrame::EInChunk )
+ {
+ sourcePtr = sourceDataFrame->DataChunkL().Base() + sourceDataFrame->DataOffset();
+ }
+ else if ( aSourceData->DataContainer() == CVisualFrame::EInDescriptor )
+ {
+ sourcePtr = const_cast<TUint8*>( sourceDataFrame->DataPtrL().Ptr() )
+ + sourceDataFrame->DataOffset();
+ }
+ else
+ {
+ User::Leave( KErrArgument );
+ }
+
+ TPtrC8 sourceData( sourcePtr, sourceDataFrame->Size() );
+ CExtJpegDecoder* dec = reinterpret_cast<CExtJpegDecoder*>(
+ CImageDecoder::DataNewL( aFs, sourceData, aOptions,
+ aImageType, aImageSubType, aDecoderUid ) );
+ CleanupStack::PushL( dec );
+ if ( dec->CapabilitiesL() < ECapNone )
+ {
+ User::Leave( KErrNotFound );
+ }
+ CleanupStack::Pop();
+ return dec;
+ }
+
+// ----------------------------------------------------------
+// CExtJpegDecoder::~CExtJpegDecoder
+// Destructor
+// ----------------------------------------------------------
+//
+EXPORT_C CExtJpegDecoder::~CExtJpegDecoder()
+ {
+ }
+
+// ----------------------------------------------------------
+// CExtJpegDecoder::SetCroppingL
+// ----------------------------------------------------------
+//
+EXPORT_C void CExtJpegDecoder::SetCroppingL( TRect aCropRect )
+ {
+ CustomSyncL( KExtensionUID );
+ CustomSyncL( ECapCropping );
+ CustomSyncL( reinterpret_cast<TInt>( &aCropRect ) );
+ CustomSyncL( EEnd );
+ }
+
+// ----------------------------------------------------------
+// CExtJpegDecoder::SetStreamingL
+// ----------------------------------------------------------
+//
+EXPORT_C void CExtJpegDecoder::SetStreamingL( TSize& aMacroBlockSize )
+ {
+ CustomSyncL( KExtensionUID );
+ CustomSyncL( ECapStreaming );
+ CustomSyncL( reinterpret_cast<TInt>( &aMacroBlockSize ) );
+ CustomSyncL( EEnd );
+ }
+
+// ----------------------------------------------------------
+// CExtJpegDecoder::SetRotationL
+// ----------------------------------------------------------
+//
+EXPORT_C void CExtJpegDecoder::SetRotationL( TInt aDegree )
+ {
+ CustomSyncL( KExtensionUID );
+ CustomSyncL( ECapRotation );
+ CustomSyncL( aDegree );
+ CustomSyncL( EEnd );
+ }
+
+// ----------------------------------------------------------
+// CExtJpegDecoder::SetFlippingL
+// ----------------------------------------------------------
+//
+EXPORT_C void CExtJpegDecoder::SetFlippingL()
+ {
+ CustomSyncL( KExtensionUID );
+ CustomSyncL( ECapFlipping );
+ CustomSyncL( EEnd );
+ }
+
+// ----------------------------------------------------------
+// CExtJpegDecoder::SetMirroringL
+// ----------------------------------------------------------
+//
+EXPORT_C void CExtJpegDecoder::SetMirroringL()
+ {
+ CustomSyncL( KExtensionUID );
+ CustomSyncL( ECapMirroring );
+ CustomSyncL( EEnd );
+ }
+
+// ----------------------------------------------------------
+// CExtJpegDecoder::SetDctDecodingL
+// ----------------------------------------------------------
+//
+EXPORT_C void CExtJpegDecoder::SetDctDecodingL()
+ {
+ CustomSyncL( KExtensionUID );
+ CustomSyncL( ECapDctDecoding );
+ CustomSyncL( EEnd );
+ }
+
+// ----------------------------------------------------------
+// CExtJpegDecoder::ConvertL
+// ----------------------------------------------------------
+//
+EXPORT_C void CExtJpegDecoder::ConvertL(
+ TRequestStatus* aRequestStatus,
+ const CVisualFrame* aDestinationFrame,
+ TInt& aNoOfDecodedMBlocks,
+ TInt aFrameNumber )
+ {
+ iIsExtConvert = ETrue;
+ CustomSyncL( KExtensionUID );
+ CustomSyncL( EConvert );
+ CustomSyncL( reinterpret_cast<TInt>( aDestinationFrame ) );
+ CustomSyncL( reinterpret_cast<TInt>( &aNoOfDecodedMBlocks ) );
+ CustomSyncL( aFrameNumber );
+ CustomSyncL( EReadyForAsync );
+ CustomAsync( aRequestStatus, 0 );
+ }
+
+// ----------------------------------------------------------
+// CExtJpegDecoder::ContinueConvertL
+// ----------------------------------------------------------
+//
+EXPORT_C void CExtJpegDecoder::ContinueConvertL(
+ TRequestStatus* aRequestStatus,
+ const CVisualFrame* aDestinationFrame,
+ TInt& aNoOfDecodedMBlocks,
+ TInt aFrameNumber )
+ {
+ iIsExtConvert = ETrue;
+ CustomSyncL( KExtensionUID );
+ CustomSyncL( EContinueConvert );
+ CustomSyncL( reinterpret_cast<TInt>( aDestinationFrame ) );
+ CustomSyncL( reinterpret_cast<TInt>( &aNoOfDecodedMBlocks ) );
+ CustomSyncL( aFrameNumber );
+ CustomSyncL( EReadyForAsync );
+ CustomAsync( aRequestStatus, 0 );
+ }
+
+// ----------------------------------------------------------
+// CExtJpegDecoder::SupportedFormatsL
+// ----------------------------------------------------------
+//
+EXPORT_C TInt CExtJpegDecoder::SupportedFormatsL()
+ {
+ CustomSyncL( KExtensionUID );
+ CustomSyncL( ESupportedFormats );
+ TInt retVal = KErrNotFound;
+ CustomSyncL( reinterpret_cast<TInt>( &retVal ) );
+ CustomSyncL( EEnd );
+ return retVal;
+ }
+
+// ----------------------------------------------------------
+// CExtJpegDecoder::CapabilitiesL
+// ----------------------------------------------------------
+//
+EXPORT_C TInt CExtJpegDecoder::CapabilitiesL()
+ {
+ CustomSyncL( KExtensionUID );
+ CustomSyncL( ECapabilities );
+ TInt retVal = KErrNotFound;
+ CustomSyncL( reinterpret_cast<TInt>( &retVal ) );
+ CustomSyncL( EEnd );
+ return retVal;
+ }
+
+// ----------------------------------------------------------
+// CExtJpegDecoder::CExtJpegDecoder
+// ----------------------------------------------------------
+//
+CExtJpegDecoder::CExtJpegDecoder() : CJPEGImageFrameDecoder()
+ {
+ }
+
+// ----------------------------------------------------------
+// CExtJpegDecoder::Convert
+// ----------------------------------------------------------
+//
+EXPORT_C void CExtJpegDecoder::Convert( TRequestStatus* aRequestStatus,
+ CFbsBitmap& aDestination, TInt aFrameNumber )
+ {
+ iIsExtConvert = EFalse;
+ CImageDecoder::Convert( aRequestStatus, aDestination, aFrameNumber );
+ }
+
+// ----------------------------------------------------------
+// CExtJpegDecoder::Convert
+// ----------------------------------------------------------
+//
+EXPORT_C void CExtJpegDecoder::Convert( TRequestStatus* aRequestStatus,
+ CFbsBitmap& aDestination,
+ CFbsBitmap& aDestinationMask, TInt aFrameNumber )
+ {
+ iIsExtConvert = EFalse;
+ CImageDecoder::Convert( aRequestStatus, aDestination, aDestinationMask, aFrameNumber );
+ }
+
+// ----------------------------------------------------------
+// CExtJpegDecoder::ContinueConvert
+// ----------------------------------------------------------
+//
+EXPORT_C void CExtJpegDecoder::ContinueConvert( TRequestStatus* aRequestStatus )
+ {
+ if( iIsExtConvert )
+ {
+ User::RequestComplete( aRequestStatus, KErrUnknown );
+ }
+ else
+ {
+ CImageDecoder::ContinueConvert( aRequestStatus );
+ }
+ }
+
+// ----------------------------------------------------------
+// CExtJpegDecoder* CExtJpegDecoder::FileNewL
+// Creates, initializes and returns a pointer to an object of
+// class CExtJpegDecoder
+// ----------------------------------------------------------
+//
+EXPORT_C CExtJpegDecoder* CExtJpegDecoder::FileNewL(
+ const TDecoderType aDecoderType,
+ RFs& aFs,
+ const TDesC& aSourceFileName,
+ const TOptions aOptions )
+ {
+ TInt versionMin = KMinSwVersion;
+ TInt versionMax = KMaxSwVersion;
+ if ( aDecoderType == EHwImplementation )
+ {
+ versionMin = KMinHwVersion;
+ versionMax = KMaxHwVersion;
+ }
+ TUid uId = GetUidByVersionRangeL( versionMin, versionMax );
+ if ( uId == KNullUid )
+ {
+ User::Leave( KErrNotFound );
+ }
+ return CExtJpegDecoder::FileNewL( aFs, aSourceFileName, aOptions,
+ KImageTypeJPGUid, KNullUid, uId );
+ }
+
+// ----------------------------------------------------------
+// CExtJpegDecoder* CExtJpegDecoder::DataNewL
+// Creates, initializes and returns a pointer to an object of
+// class CExtJpegDecoder
+// ----------------------------------------------------------
+//
+EXPORT_C CExtJpegDecoder* CExtJpegDecoder::DataNewL(
+ const TDecoderType aDecoderType,
+ RFs& aFs,
+ const TDesC8& aSourceData,
+ const TOptions aOptions )
+ {
+ TInt versionMin = KMinSwVersion;
+ TInt versionMax = KMaxSwVersion;
+ if ( aDecoderType == EHwImplementation )
+ {
+ versionMin = KMinHwVersion;
+ versionMax = KMaxHwVersion;
+ }
+ TUid uId = GetUidByVersionRangeL( versionMin, versionMax );
+ if ( uId == KNullUid )
+ {
+ User::Leave( KErrNotFound );
+ }
+ return CExtJpegDecoder::DataNewL( aFs, aSourceData, aOptions,
+ KImageTypeJPGUid, KNullUid, uId );
+
+ }
+
+// ----------------------------------------------------------
+// CExtJpegDecoder* CExtJpegDecoder::DataNewL
+// Creates, initializes and returns a pointer to an object of
+// class CExtJpegDecoder
+// ----------------------------------------------------------
+//
+EXPORT_C CExtJpegDecoder* CExtJpegDecoder::DataNewL(
+ const TDecoderType aDecoderType,
+ RFs& aFs,
+ const CVisualFrame* aSourceData,
+ const TOptions aOptions )
+ {
+ TInt versionMin = KMinSwVersion;
+ TInt versionMax = KMaxSwVersion;
+ if ( aDecoderType == EHwImplementation )
+ {
+ versionMin = KMinHwVersion;
+ versionMax = KMaxHwVersion;
+ }
+ TUid uId = GetUidByVersionRangeL( versionMin, versionMax );
+ if ( uId == KNullUid )
+ {
+ User::Leave( KErrNotFound );
+ }
+ return CExtJpegDecoder::DataNewL( aFs, aSourceData, aOptions,
+ KImageTypeJPGUid, KNullUid, uId );
+ }
+
+
+// ----------------------------------------------------------
+// CExtJpegDecoder::GetUidByVersionRangeL
+// ----------------------------------------------------------
+//
+TUid CExtJpegDecoder::GetUidByVersionRangeL( TInt aMinVersion, TInt aMaxVersion )
+ {
+ TUid uId = KNullUid;
+ TUid propertyUid = KUidSwCodec;
+
+ RUidDataArray implArray;
+ // based on the version decide what kind of codec to fetch
+ if( ( aMinVersion == KMinSwVersion ) && ( aMaxVersion == KMaxSwVersion ) )
+ {
+ propertyUid = KUidSwCodec;
+ }
+ else if( ( aMinVersion == KMinHwVersion ) && ( aMaxVersion == KMaxHwVersion ) )
+ {
+ propertyUid = KUidHwCodec;
+ }
+
+ // property array to be verified
+ const TUid properties[] = { propertyUid, KImageTypeJPGUid };
+
+ // Request existing plugins with the desired properties
+ TRAPD( getIntErr, CImageDecoder::GetInterfaceImplementationsL(
+ properties,
+ 2,
+ implArray ) );
+ CleanupClosePushL( implArray );
+ User::LeaveIfError( getIntErr );
+
+ TInt count = implArray.Count();
+ for( --count; uId == KNullUid && count >= 0; --count )
+ {
+ // Get the Jpeg decoder UID and find out whether it is requested
+ // type of decoder by version number.
+ TUid tempUid = implArray[ count ];
+ CImplementationInformationType* implInfo = NULL;
+ TRAPD( error, implInfo =
+ CImageDecoder::GetImplementationInformationL( tempUid ) );
+
+ User::LeaveIfError( error );
+
+ // check the opaque data and version no
+ TInt version = implInfo->Version();
+ if ( ( implInfo->OpaqueData().Find( KJpgMimeType ) != KErrNotFound )
+ && ( version <= aMaxVersion ) && ( version >= aMinVersion ) )
+ {
+ uId = tempUid;
+ }
+ delete implInfo;
+ } // for - count
+ CleanupStack::PopAndDestroy(&implArray);
+ return uId;
+
+ }
+
+
+
+/*****************************************************/
+/* Extended ICL Jpeg Encoder API */
+/*****************************************************/
+
+
+// ---------------------------------------------------------
+// CExtJpegEncoder* CExtJpegEncoder::NewL
+// Two-phased constructor.
+// ---------------------------------------------------------
+//
+EXPORT_C CExtJpegEncoder* CExtJpegEncoder::NewL()
+ {
+ return new (ELeave) CExtJpegEncoder();
+ }
+
+// ---------------------------------------------------------
+// CExtJpegEncoder* CExtJpegEncoder::FileNewL
+// Creates, initializes and returns a pointer to an object of
+// class CExtJpegEncoder
+// ---------------------------------------------------------
+//
+EXPORT_C CExtJpegEncoder* CExtJpegEncoder::FileNewL(
+ RFs& aFs,
+ const TDesC& aDestinationFilename,
+ const TDesC8& aMIMEType,
+ const TOptions aOptions )
+ {
+ CExtJpegEncoder* enc = reinterpret_cast<CExtJpegEncoder*>(
+ CImageEncoder::FileNewL( aFs, aDestinationFilename,
+ aMIMEType, aOptions ) );
+ CleanupStack::PushL( enc );
+ if ( enc->CapabilitiesL() < ECapNone )
+ {
+ User::Leave( KErrNotFound );
+ }
+ CleanupStack::Pop();
+ return enc;
+ }
+
+// ---------------------------------------------------------
+// CExtJpegEncoder* CExtJpegEncoder::FileNewL
+// Creates, initializes and returns a pointer to an object of
+// class CExtJpegEncoder
+// ---------------------------------------------------------
+//
+EXPORT_C CExtJpegEncoder* CExtJpegEncoder::FileNewL(
+ RFs& aFs,
+ const TDesC& aDestinationFilename,
+ const TOptions aOptions,
+ const TUid aImageType,
+ const TUid aImageSubType,
+ const TUid aEncoderUid )
+ {
+ CExtJpegEncoder* enc = reinterpret_cast<CExtJpegEncoder*>(
+ CImageEncoder::FileNewL( aFs, aDestinationFilename,
+ aOptions, aImageType, aImageSubType, aEncoderUid ) );
+ CleanupStack::PushL( enc );
+ if ( enc->CapabilitiesL() < ECapNone )
+ {
+ User::Leave( KErrNotFound );
+ }
+ CleanupStack::Pop();
+ return enc;
+ }
+
+// ---------------------------------------------------------
+// CExtJpegEncoder* CExtJpegEncoder::DataNewL
+// Creates, initializes and returns a pointer to an object of
+// class CExtJpegEncoder
+// ---------------------------------------------------------
+//
+EXPORT_C CExtJpegEncoder* CExtJpegEncoder::DataNewL(
+ HBufC8*& aDestinationData,
+ const TDesC8& aMIMEType,
+ const TOptions aOptions )
+ {
+ CExtJpegEncoder* enc = reinterpret_cast<CExtJpegEncoder*>(
+ CImageEncoder::DataNewL( aDestinationData,
+ aMIMEType, aOptions ) );
+ CleanupStack::PushL( enc );
+ if ( enc->CapabilitiesL() < ECapNone )
+ {
+ User::Leave( KErrNotFound );
+ }
+ CleanupStack::Pop();
+ return enc;
+ }
+
+// ---------------------------------------------------------
+// CExtJpegEncoder* CExtJpegEncoder::DataNewL
+// Creates, initializes and returns a pointer to an object of
+// class CExtJpegEncoder
+// ---------------------------------------------------------
+//
+EXPORT_C CExtJpegEncoder* CExtJpegEncoder::DataNewL(
+ HBufC8*& aDestinationData,
+ const TOptions aOptions,
+ const TUid aImageType,
+ const TUid aImageSubType,
+ const TUid aEncoderUid )
+ {
+ CExtJpegEncoder* enc = reinterpret_cast<CExtJpegEncoder*>(
+ CImageEncoder::DataNewL( aDestinationData,
+ aOptions, aImageType, aImageSubType, aEncoderUid ) );
+ CleanupStack::PushL( enc );
+ if ( enc->CapabilitiesL() < ECapNone )
+ {
+ User::Leave( KErrNotFound );
+ }
+ CleanupStack::Pop();
+ return enc;
+ }
+
+// ---------------------------------------------------------
+// CExtJpegEncoder* CExtJpegEncoder::DataNewL
+// Creates, initializes and returns a pointer to an object of
+// class CExtJpegEncoder
+// ---------------------------------------------------------
+//
+EXPORT_C CExtJpegEncoder* CExtJpegEncoder::DataNewL(
+ const CVisualFrame* aDestinationData,
+ const TDesC8& aMIMEType,
+ const TOptions aOptions )
+ {
+ HBufC8* tmp = NULL;
+ CExtJpegEncoder* enc = reinterpret_cast<CExtJpegEncoder*>(
+ CImageEncoder::DataNewL( tmp,
+ aMIMEType, aOptions ) );
+ CleanupStack::PushL( enc );
+ if ( enc->CapabilitiesL() < ECapNone )
+ {
+ User::Leave( KErrNotFound );
+ }
+ enc->CustomSyncL( KExtensionUID );
+ enc->CustomSyncL( EDestVisualFrame );
+ enc->CustomSyncL( reinterpret_cast<TInt>( aDestinationData ) );
+ enc->CustomSyncL( EEnd );
+ CleanupStack::Pop();
+ return enc;
+ }
+
+// ---------------------------------------------------------
+// CExtJpegEncoder* CExtJpegEncoder::DataNewL
+// Creates, initializes and returns a pointer to an object of
+// class CExtJpegEncoder
+// ---------------------------------------------------------
+//
+EXPORT_C CExtJpegEncoder* CExtJpegEncoder::DataNewL(
+ const CVisualFrame* aDestinationData,
+ const TOptions aOptions,
+ const TUid aImageType,
+ const TUid aImageSubType,
+ const TUid aEncoderUid )
+ {
+ HBufC8* tmp = NULL;
+ CExtJpegEncoder* enc = reinterpret_cast<CExtJpegEncoder*>(
+ CImageEncoder::DataNewL( tmp, aOptions,
+ aImageType, aImageSubType, aEncoderUid ) );
+ CleanupStack::PushL( enc );
+ if ( enc->CapabilitiesL() < ECapNone )
+ {
+ User::Leave( KErrNotFound );
+ }
+ enc->CustomSyncL( KExtensionUID );
+ enc->CustomSyncL( EDestVisualFrame );
+ enc->CustomSyncL( reinterpret_cast<TInt>( aDestinationData ) );
+ enc->CustomSyncL( EEnd );
+ CleanupStack::Pop();
+ return enc;
+ }
+
+// ---------------------------------------------------------
+// CExtJpegEncoder::~CExtJpegEncoder
+// Destructor.
+// ---------------------------------------------------------
+//
+EXPORT_C CExtJpegEncoder::~CExtJpegEncoder()
+ {
+ }
+
+// ---------------------------------------------------------
+// CExtJpegEncoder::SetStreamingL
+// ---------------------------------------------------------
+//
+EXPORT_C void CExtJpegEncoder::SetStreamingL( TSize& aMacroBlockSize,
+ const CFrameImageData* aFrameImageData )
+ {
+ CustomSyncL( KExtensionUID );
+ CustomSyncL( ECapStreaming );
+ CustomSyncL( reinterpret_cast<TInt>( &aMacroBlockSize ) );
+ CustomSyncL( reinterpret_cast<TInt>( aFrameImageData ) );
+ CustomSyncL( EEnd );
+ }
+
+// ---------------------------------------------------------
+// CExtJpegEncoder::SetImageReplaceL
+// ---------------------------------------------------------
+//
+EXPORT_C void CExtJpegEncoder::SetImageReplaceL( const CVisualFrame* aReplaceImage,
+ TPoint aReplacePoint )
+ {
+ CustomSyncL( KExtensionUID );
+ CustomSyncL( ECapImageReplacing );
+ CustomSyncL( reinterpret_cast<TInt>( aReplaceImage ) );
+ CustomSyncL( reinterpret_cast<TInt>( &aReplacePoint ) );
+ CustomSyncL( EEnd );
+ }
+
+// ---------------------------------------------------------
+// CExtJpegEncoder::SetBitmapReplaceL
+// ---------------------------------------------------------
+//
+EXPORT_C void CExtJpegEncoder::SetBitmapReplaceL( const CFbsBitmap& aReplaceBitmap,
+ TPoint aReplacePoint )
+ {
+ CustomSyncL( KExtensionUID );
+ CustomSyncL( ECapBitmapReplacing );
+ CustomSyncL( reinterpret_cast<TInt>( &aReplaceBitmap ) );
+ CustomSyncL( reinterpret_cast<TInt>( &aReplacePoint ) );
+ CustomSyncL( EEnd );
+ }
+
+// ---------------------------------------------------------
+// CExtJpegEncoder::SetBitmapOverlayL
+// ---------------------------------------------------------
+//
+EXPORT_C void CExtJpegEncoder::SetBitmapOverlayL( const CFbsBitmap& aOverlayBitmap,
+ TUint aAlphaValue, TPoint aOverlayPoint )
+ {
+ CustomSyncL( KExtensionUID );
+ CustomSyncL( ECapBitmapOverlay );
+ CustomSyncL( reinterpret_cast<TInt>( &aOverlayBitmap ) );
+ CustomSyncL( aAlphaValue );
+ CustomSyncL( reinterpret_cast<TInt>( &aOverlayPoint ) );
+ CustomSyncL( EEnd );
+ }
+
+// ---------------------------------------------------------
+// CExtJpegEncoder::SetLosslessRotationL
+// ---------------------------------------------------------
+//
+EXPORT_C void CExtJpegEncoder::SetLosslessRotationL( TInt aDegree )
+ {
+ CustomSyncL( KExtensionUID );
+ CustomSyncL( ECapLosslessRotation );
+ CustomSyncL( aDegree );
+ CustomSyncL( EEnd );
+ }
+
+// ---------------------------------------------------------
+// CExtJpegEncoder::SetLosslessFlippingL
+// ---------------------------------------------------------
+//
+EXPORT_C void CExtJpegEncoder::SetLosslessFlippingL()
+ {
+ CustomSyncL( KExtensionUID );
+ CustomSyncL( ECapLosslessFlipping );
+ CustomSyncL( EEnd );
+ }
+
+// ---------------------------------------------------------
+// CExtJpegEncoder::SetLosslessMirroringL
+// ---------------------------------------------------------
+//
+EXPORT_C void CExtJpegEncoder::SetLosslessMirroringL()
+ {
+ CustomSyncL( KExtensionUID );
+ CustomSyncL( ECapLosslessMirroring );
+ CustomSyncL( EEnd );
+ }
+
+// ---------------------------------------------------------
+// CExtJpegEncoder::SetDctEncodingL
+// ---------------------------------------------------------
+//
+EXPORT_C void CExtJpegEncoder::SetDctEncodingL()
+ {
+ CustomSyncL( KExtensionUID );
+ CustomSyncL( ECapDctEncoding );
+ CustomSyncL( EEnd );
+ }
+
+// ---------------------------------------------------------
+// CExtJpegEncoder::ProvideNewDestDataL
+// ---------------------------------------------------------
+//
+EXPORT_C void CExtJpegEncoder::ProvideNewDestDataL( const CVisualFrame* aDestinationData )
+ {
+ CustomSyncL( KExtensionUID );
+ CustomSyncL( ENewDestData );
+ CustomSyncL( reinterpret_cast<TInt>( aDestinationData ) );
+ CustomSyncL( EEnd );
+ }
+
+// ---------------------------------------------------------
+// CExtJpegEncoder::ConvertL
+// ---------------------------------------------------------
+//
+EXPORT_C void CExtJpegEncoder::ConvertL(
+ TRequestStatus* aRequestStatus,
+ const CVisualFrame* aSourceFrame,
+ TInt& aNoOfEncodedMBlocks,
+ const CFrameImageData* aFrameImageData )
+ {
+ CustomSyncL( KExtensionUID );
+ CustomSyncL( EConvert );
+ CustomSyncL( reinterpret_cast<TInt>( aSourceFrame ) );
+ CustomSyncL( reinterpret_cast<TInt>( &aNoOfEncodedMBlocks ) );
+ CustomSyncL( reinterpret_cast<TInt>( aFrameImageData ) );
+ CustomSyncL( EReadyForAsync );
+ CustomAsync( aRequestStatus, 0 );
+ }
+
+// ---------------------------------------------------------
+// CExtJpegEncoder::ContinueConvertL
+// ---------------------------------------------------------
+//
+EXPORT_C void CExtJpegEncoder::ContinueConvertL(
+ TRequestStatus* aRequestStatus,
+ const CVisualFrame* aSourceFrame,
+ TInt& aNoOfEncodedMBlocks )
+ {
+ CustomSyncL( KExtensionUID );
+ CustomSyncL( EContinueConvert );
+ CustomSyncL( reinterpret_cast<TInt>( aSourceFrame ) );
+ CustomSyncL( reinterpret_cast<TInt>( &aNoOfEncodedMBlocks ) );
+ CustomSyncL( EReadyForAsync );
+ CustomAsync( aRequestStatus, 0 );
+ }
+
+// ---------------------------------------------------------
+// CExtJpegEncoder::SupportedFormatsL
+// ---------------------------------------------------------
+//
+EXPORT_C TInt CExtJpegEncoder::SupportedFormatsL()
+ {
+ CustomSyncL( KExtensionUID );
+ CustomSyncL( ESupportedFormats );
+ TInt retVal = KErrNotFound;
+ CustomSyncL( reinterpret_cast<TInt>( &retVal ) );
+ CustomSyncL( EEnd );
+ return retVal;
+ }
+
+// ---------------------------------------------------------
+// CExtJpegEncoder::CapabilitiesL
+// ---------------------------------------------------------
+//
+EXPORT_C TInt CExtJpegEncoder::CapabilitiesL()
+ {
+ CustomSyncL( KExtensionUID );
+ CustomSyncL( ECapabilities );
+ TInt retVal = KErrNotFound;
+ CustomSyncL( reinterpret_cast<TInt>( &retVal ) );
+ CustomSyncL( EEnd );
+ return retVal;
+ }
+
+// ---------------------------------------------------------
+// CExtJpegEncoder::CExtJpegEncoder
+// ---------------------------------------------------------
+//
+CExtJpegEncoder::CExtJpegEncoder() : CJPEGImageFrameEncoder()
+ {
+ }
+
+// ---------------------------------------------------------
+// CExtJpegEncoder* CExtJpegEncoder::FileNewL
+// Creates, initializes and returns a pointer to an object of
+// class CExtJpegEncoder
+// ---------------------------------------------------------
+//
+EXPORT_C CExtJpegEncoder* CExtJpegEncoder::FileNewL(
+ const TEncoderType aEncoderType,
+ RFs& aFs,
+ const TDesC& aDestinationFilename,
+ const TOptions aOptions )
+ {
+ TInt versionMin = KMinSwVersion;
+ TInt versionMax = KMaxSwVersion;
+ if ( aEncoderType == EHwImplementation )
+ {
+ versionMin = KMinHwVersion;
+ versionMax = KMaxHwVersion;
+ }
+ TUid uId = GetUidByVersionRangeL( versionMin, versionMax );
+ if ( uId == KNullUid )
+ {
+ User::Leave( KErrNotFound );
+ }
+ return CExtJpegEncoder::FileNewL( aFs, aDestinationFilename, aOptions,
+ KImageTypeJPGUid, KNullUid, uId );
+ }
+
+// ---------------------------------------------------------
+// CExtJpegEncoder* CExtJpegEncoder::DataNewL
+// Creates, initializes and returns a pointer to an object of
+// class CExtJpegEncoder
+// ---------------------------------------------------------
+//
+EXPORT_C CExtJpegEncoder* CExtJpegEncoder::DataNewL(
+ const TEncoderType aEncoderType,
+ HBufC8*& aDestinationData,
+ const TOptions aOptions )
+ {
+ TInt versionMin = KMinSwVersion;
+ TInt versionMax = KMaxSwVersion;
+ if ( aEncoderType == EHwImplementation )
+ {
+ versionMin = KMinHwVersion;
+ versionMax = KMaxHwVersion;
+ }
+ TUid uId = GetUidByVersionRangeL( versionMin, versionMax );
+ if ( uId == KNullUid )
+ {
+ User::Leave( KErrNotFound );
+ }
+ return CExtJpegEncoder::DataNewL( aDestinationData, aOptions,
+ KImageTypeJPGUid, KNullUid, uId );
+
+ }
+
+// ---------------------------------------------------------
+// CExtJpegEncoder* CExtJpegEncoder::DataNewL
+// Creates, initializes and returns a pointer to an object of
+// class CExtJpegEncoder
+// ---------------------------------------------------------
+//
+EXPORT_C CExtJpegEncoder* CExtJpegEncoder::DataNewL(
+ const TEncoderType aEncoderType,
+ const CVisualFrame* aDestinationData,
+ const TOptions aOptions )
+ {
+ TInt versionMin = KMinSwVersion;
+ TInt versionMax = KMaxSwVersion;
+ if ( aEncoderType == EHwImplementation )
+ {
+ versionMin = KMinHwVersion;
+ versionMax = KMaxHwVersion;
+ }
+ TUid uId = GetUidByVersionRangeL( versionMin, versionMax );
+ if ( uId == KNullUid )
+ {
+ User::Leave( KErrNotFound );
+ }
+ return CExtJpegEncoder::DataNewL( aDestinationData, aOptions,
+ KImageTypeJPGUid, KNullUid, uId );
+ }
+
+// ---------------------------------------------------------
+// CExtJpegEncoder::GetDestinationDataSizeL
+// ---------------------------------------------------------
+//
+EXPORT_C TInt CExtJpegEncoder::GetDestinationDataSizeL()
+ {
+ CustomSyncL( KExtensionUID );
+ CustomSyncL( EDestDataSize );
+ TInt retVal = KErrNotFound;
+ CustomSyncL( reinterpret_cast<TInt>( &retVal ) );
+ CustomSyncL( EEnd );
+ return retVal;
+ }
+
+// ---------------------------------------------------------
+// CExtJpegEncoder::GetUidByVersionRangeL
+// ---------------------------------------------------------
+//
+TUid CExtJpegEncoder::GetUidByVersionRangeL( TInt aMinVersion, TInt aMaxVersion )
+ {
+ TUid uId = KNullUid;
+ TUid propertyUid = KUidSwCodec;
+
+ // based on the version decide what kind of codec to fetch
+ if( ( aMinVersion == KMinSwVersion ) && ( aMaxVersion == KMaxSwVersion ) )
+ {
+ propertyUid = KUidSwCodec;
+ }
+ else if( ( aMinVersion == KMinHwVersion ) && ( aMaxVersion == KMaxHwVersion ) )
+ {
+ propertyUid = KUidHwCodec;
+ }
+
+ // property array to be verified
+ const TUid properties[] = { propertyUid, KImageTypeJPGUid };
+
+ RUidDataArray implArray;
+ // Request existing plugins with the desired properties
+ TRAPD( getIntErr, CImageEncoder::GetInterfaceImplementationsL(
+ properties,
+ 2,
+ implArray ) );
+ CleanupClosePushL( implArray );
+ User::LeaveIfError( getIntErr );
+
+ TInt count = implArray.Count();
+ for( --count; uId == KNullUid && count >= 0; --count )
+ {
+ // Check all encoders and find the one having Jpeg mime type,
+ TUid tempUid = implArray[ count ];
+
+ // Get the same encoder UID and find out more info for testing
+ TUid uId2 = { KEncoderInterfaceUidValue };
+ RImplInfoPtrArray implInfo;
+ REComSession::ListImplementationsL( uId2, implInfo );
+ TInt count2 = implInfo.Count();
+ uId2 = tempUid;
+ for ( --count2; uId == KNullUid && count2 >= 0; --count2 )
+ {
+ CImplementationInformation& implInfoCur = *implInfo[count2];
+ if ( ( implInfoCur.ImplementationUid() == uId2 ) &&
+ ( implInfoCur.OpaqueData().Find( KJpgMimeType ) != KErrNotFound ) )
+ {
+ uId = uId2;
+ }
+ }
+ implInfo.ResetAndDestroy();
+ } // for - count
+
+ CleanupStack::PopAndDestroy( &implArray );
+ return uId;
+ }
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/imagingextensions/imageadaptationextensions/iclextjpegapi/src/IclExtJpegApiFrameImplV2.cpp Wed Sep 08 10:05:56 2010 +0530
@@ -0,0 +1,663 @@
+/*
+* 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: Implementation of CVisualFrameImpl
+*
+*/
+
+#include "IclExtJpegApi.h"
+#include "IclExtJpegApiFrameImpl.h"
+
+// ---------------------------------------------------------
+// TFrameFormatExt::Constructor
+// ---------------------------------------------------------
+//
+void TFrameFormatExt::Constructor()
+ {
+ switch ( iFormatCode )
+ {
+ case CVisualFrame::EFormatMonochrome:
+ {
+ iColourSpace = KUidColourSpaceYCbCr;
+ iSampling = KUidSamplingMonochrome;
+ break;
+ }
+ case CVisualFrame::EFormat16bitRGB444:
+ case CVisualFrame::EFormat16BitRGB565:
+ case CVisualFrame::EFormat32BitRGB888:
+ case CVisualFrame::EFormatFbsBitmapColor4K:
+ case CVisualFrame::EFormatFbsBitmapColor64K:
+ case CVisualFrame::EFormatFbsBitmapColor16M:
+ {
+ iColourSpace = KUidColourSpaceRGB;
+ iSampling = KUidSamplingColor444;
+ break;
+ }
+ case CVisualFrame::EFormatYUV420SemiPlanar:
+ case CVisualFrame::EFormatYUV420Interleaved:
+ case CVisualFrame::EFormatYUV420Planar:
+ {
+ iColourSpace = KUidColourSpaceYCbCr;
+ iSampling = KUidSamplingColor420;
+ break;
+ }
+ case CVisualFrame::EFormatYUV422:
+ case CVisualFrame::EFormatYUV422Reversed:
+ case CVisualFrame::EFormatExtYUV422Interleaved:
+ case CVisualFrame::EFormatExtYUV422Planar:
+ {
+ iColourSpace = KUidColourSpaceYCbCr;
+ iSampling = KUidSamplingColor422;
+ break;
+ }
+ case CVisualFrame::EFormatExtYUV444Planar:
+ case CVisualFrame::EFormatYUV444:
+ {
+ iColourSpace = KUidColourSpaceYCbCr;
+ iSampling = KUidSamplingColor444;
+ break;
+ }
+ case CVisualFrame::EFormatJpeg:
+ case CVisualFrame::EFormatExif:
+ case CVisualFrame::EFormatUserDefined:
+ case CVisualFrame::EFormatExtDctCoeff:
+ {
+ iColourSpace = KNullUid;
+ iSampling = KNullUid;
+ break;
+ }
+ default:
+ {
+ iFormatCode = KErrNotFound;
+ iColourSpace = KNullUid;
+ iSampling = KNullUid;
+ }
+ }
+ }
+
+// ----------------------------------------------------------
+// TFrameFormatExt::ColourSpace
+// ----------------------------------------------------------
+//
+TUid TFrameFormatExt::ColourSpace() const
+ {
+ return iColourSpace;
+ }
+
+// ----------------------------------------------------------
+// TFrameFormatExt::Sampling
+// ----------------------------------------------------------
+//
+TUid TFrameFormatExt::Sampling() const
+ {
+ return iSampling;
+ }
+
+// ----------------------------------------------------------
+// TFrameFormatExt::FormatCode
+// ----------------------------------------------------------
+//
+TInt TFrameFormatExt::FormatCode() const
+ {
+ return iFormatCode;
+ }
+
+// ----------------------------------------------------------
+// TFrameFormatExt::ColourSpace
+// ----------------------------------------------------------
+//
+void TFrameFormatExt::SetColourSpace( TUid aColourSpace )
+ {
+ iColourSpace = aColourSpace;
+ }
+
+
+
+/*****************************************************/
+/* Visual Frame Data Structure in Extended ICL API */
+/*****************************************************/
+
+
+// ----------------------------------------------------------
+// TFrameFormatBase* GetFrameFormatL
+// ----------------------------------------------------------
+//
+TFrameFormatBase* GetFrameFormatL( TInt aFrameFormatCode )
+ {
+ TUid formatUid = KNullUid;
+ switch ( aFrameFormatCode )
+ {
+ case CVisualFrame::EFormatMonochrome:
+ {
+ formatUid = KUidFormatYUVMonochrome;
+ break;
+ }
+ case CVisualFrame::EFormat16bitRGB444:
+ {
+ formatUid = KUidFormat16bitRGB444Interleaved;
+ break;
+ }
+ case CVisualFrame::EFormat16BitRGB565:
+ {
+ formatUid = KUidFormat16BitRGB565Interleaved;
+ break;
+ }
+ case CVisualFrame::EFormat32BitRGB888:
+ {
+ formatUid = KUidFormat32BitRGB888Interleaved;
+ break;
+ }
+ case CVisualFrame::EFormatYUV420Interleaved:
+ {
+ formatUid = KUidFormatYUV420Interleaved;
+ break;
+ }
+ case CVisualFrame::EFormatYUV420Planar:
+ {
+ formatUid = KUidFormatYUV420Planar;
+ break;
+ }
+ case CVisualFrame::EFormatYUV422:
+ {
+ formatUid = KUidFormatYUV422Interleaved;
+ break;
+ }
+ case CVisualFrame::EFormatYUV422Reversed:
+ {
+ formatUid = KUidFormatYUV422InterleavedReversed;
+ break;
+ }
+ case CVisualFrame::EFormatYUV444:
+ {
+ formatUid = KUidFormatYUV444Interleaved;
+ break;
+ }
+ case CVisualFrame::EFormatYUV420SemiPlanar:
+ {
+ formatUid = KUidFormatYUV420SemiPlanar;
+ break;
+ }
+ case CVisualFrame::EFormatExtYUV422Interleaved:
+ {
+ formatUid = KUidFormatYYUV422Interleaved;
+ break;
+ }
+ case CVisualFrame::EFormatExtYUV422Planar:
+ {
+ formatUid = KUidFormatYUV422Planar;
+ break;
+ }
+ case CVisualFrame::EFormatExtYUV444Planar:
+ {
+ formatUid = KUidFormatYUV444Planar;
+ break;
+ }
+ case CVisualFrame::EFormatJpeg:
+ case CVisualFrame::EFormatExif:
+ case CVisualFrame::EFormatFbsBitmapColor4K:
+ case CVisualFrame::EFormatFbsBitmapColor64K:
+ case CVisualFrame::EFormatFbsBitmapColor16M:
+ case CVisualFrame::EFormatUserDefined:
+ case CVisualFrame::EFormatExtDctCoeff:
+ {
+ break;
+ }
+ default:
+ {
+ User::Leave( KErrNotSupported );
+ }
+ }
+ TFrameFormatBase* frameFormatBase = NULL;
+ if ( formatUid == KNullUid )
+ {
+ frameFormatBase = new ( ELeave ) TFrameFormatExt( aFrameFormatCode );
+ }
+ else
+ {
+ frameFormatBase = new ( ELeave ) TFrameFormat( formatUid );
+ }
+ return frameFormatBase;
+ }
+
+// ----------------------------------------------------------
+// GetFrameFormat
+// ----------------------------------------------------------
+//
+TInt GetFrameFormat( const TFrameFormatBase& aFrameFormat )
+ {
+ TInt frameFormatCode = KErrNotFound;
+ if ( aFrameFormat.Type() == KUidIclImageFrameFormat )
+ {
+ const TFrameFormat& frameFormat = reinterpret_cast<const TFrameFormat&>( aFrameFormat );
+ switch ( frameFormat.FormatCode().iUid )
+ {
+ case KFormatYUVMonochromeUidValue:
+ {
+ frameFormatCode = CVisualFrame::EFormatMonochrome;
+ break;
+ }
+ case KFormat16bitRGB444InterleavedUidValue:
+ {
+ frameFormatCode = CVisualFrame::EFormat16bitRGB444;
+ break;
+ }
+ case KFormat16BitRGB565InterleavedUidValue:
+ {
+ frameFormatCode = CVisualFrame::EFormat16BitRGB565;
+ break;
+ }
+ case KFormat32BitRGB888InterleavedUidValue:
+ {
+ frameFormatCode = CVisualFrame::EFormat32BitRGB888;
+ break;
+ }
+ case KFormatYUV420InterleavedUidValue:
+ {
+ frameFormatCode = CVisualFrame::EFormatYUV420Interleaved;
+ break;
+ }
+ case KFormatYUV420PlanarUidValue:
+ {
+ frameFormatCode = CVisualFrame::EFormatYUV420Planar;
+ break;
+ }
+ case KFormatYUV422InterleavedUidValue:
+ {
+ frameFormatCode = CVisualFrame::EFormatYUV422;
+ break;
+ }
+ case KFormatYUV422InterleavedReversedUidValue:
+ {
+ frameFormatCode = CVisualFrame::EFormatYUV422Reversed;
+ break;
+ }
+ case KFormatYUV444InterleavedUidValue:
+ {
+ frameFormatCode = CVisualFrame::EFormatYUV444;
+ break;
+ }
+ case KFormatYUV420SemiPlanarUidValue:
+ {
+ frameFormatCode = CVisualFrame::EFormatYUV420SemiPlanar;
+ break;
+ }
+ case KFormatYYUV422InterleavedUidValue:
+ {
+ frameFormatCode = CVisualFrame::EFormatExtYUV422Interleaved;
+ break;
+ }
+ case KFormatYUV422PlanarUidValue:
+ {
+ frameFormatCode = CVisualFrame::EFormatExtYUV422Planar;
+ break;
+ }
+ case KFormatYUV444PlanarUidValue:
+ {
+ frameFormatCode = CVisualFrame::EFormatExtYUV444Planar;
+ break;
+ }
+ default:
+ {
+ }
+ }
+ }
+ else if ( aFrameFormat.Type() == KUidExtIclImageFrameFormat )
+ {
+ frameFormatCode = reinterpret_cast<const TFrameFormatExt&>( aFrameFormat ).FormatCode();
+ }
+ return frameFormatCode;
+ }
+
+
+
+// ---------------------------------------------------------
+// CVisualFrameImpl* CVisualFrameImpl::NewL
+// Two-phased constructor.
+// ---------------------------------------------------------
+//
+CVisualFrameImpl* CVisualFrameImpl::NewL(
+ TDes8& aBuffer,
+ const TSize& aDimension,
+ TInt aFrameFormat )
+ {
+
+ TFrameFormatBase* frameFormat = GetFrameFormatL( aFrameFormat );
+
+ CleanupStack::PushL( frameFormat );
+
+ TFrameLayout frameLayout = TFrameLayout( 1 );
+ frameLayout.SetStart( 0, 0 );
+ frameLayout.SetScanLength( 0, aBuffer.MaxLength() );
+ frameLayout.SetLength( 0, aBuffer.MaxLength() );
+ frameLayout.SetCurrentLength( 0, aBuffer.Length() );
+
+ CVisualFrameImpl* self = new ( ELeave ) CVisualFrameImpl();
+ CleanupStack::PushL( self );
+ self->ConstructL( aBuffer, aBuffer.MaxLength(), aDimension, *frameFormat, frameLayout );
+ CleanupStack::Pop( self );
+ CleanupStack::PopAndDestroy( frameFormat );
+
+ return self;
+ }
+
+// ---------------------------------------------------------
+// CVisualFrameImpl* CVisualFrameImpl::NewL
+// Two-phased constructor.
+// ---------------------------------------------------------
+//
+CVisualFrameImpl* CVisualFrameImpl::NewL(
+ RChunk& aChunk,
+ TInt aSize,
+ TInt aMaxSize,
+ TInt aDataOffset,
+ const TSize& aDimension,
+ TInt aFrameFormat )
+ {
+
+ TFrameFormatBase* frameFormat = GetFrameFormatL( aFrameFormat );
+ CleanupStack::PushL( frameFormat );
+
+ TFrameLayout frameLayout = TFrameLayout( 1 );
+
+ frameLayout.SetStart( 0, aDataOffset );
+ frameLayout.SetScanLength( 0, aMaxSize );
+ frameLayout.SetLength( 0, aMaxSize );
+ frameLayout.SetCurrentLength( 0, aSize );
+
+ CVisualFrameImpl* self = new ( ELeave ) CVisualFrameImpl();
+ CleanupStack::PushL( self );
+ self->ConstructL( &aChunk, aMaxSize, aDataOffset, aDimension, *frameFormat, frameLayout );
+ self->iSize = aSize;
+ CleanupStack::Pop( self );
+ CleanupStack::PopAndDestroy( frameFormat );
+
+ return self;
+ }
+
+// ---------------------------------------------------------
+// CVisualFrameImpl* CVisualFrameImpl::NewL
+// Two-phased constructor.
+// ---------------------------------------------------------
+//
+CVisualFrameImpl* CVisualFrameImpl::NewL(
+ TDes8& aBuffer,
+ const TSize& aDimension,
+ TInt aFrameFormat,
+ const CVisualFrame::TFrameLayout& aFrameLayout )
+ {
+ TFrameFormatBase* frameFormat = GetFrameFormatL( aFrameFormat );
+ CleanupStack::PushL( frameFormat );
+
+ TFrameLayout frameLayout = TFrameLayout( aFrameLayout.iNumberOfPlanes );
+
+ for ( TInt i = 0; i < aFrameLayout.iNumberOfPlanes; ++i )
+ {
+ frameLayout.SetStart( i, aFrameLayout.iOffset[i] );
+ frameLayout.SetScanLength( i, aFrameLayout.iScanLineLength[i] );
+ frameLayout.SetLength( i, aFrameLayout.iMaxLength[i] );
+ frameLayout.SetCurrentLength( i, aFrameLayout.iLength[i] );
+ }
+
+ CVisualFrameImpl* self = new ( ELeave ) CVisualFrameImpl();
+ CleanupStack::PushL( self );
+ self->ConstructL( aBuffer, aBuffer.MaxLength(), aDimension, *frameFormat, frameLayout );
+ CleanupStack::Pop( self );
+ CleanupStack::PopAndDestroy( frameFormat );
+
+ return self;
+ }
+
+// ---------------------------------------------------------
+// CVisualFrameImpl* CVisualFrameImpl::NewL
+// Two-phased constructor.
+// ---------------------------------------------------------
+//
+CVisualFrameImpl* CVisualFrameImpl::NewL(
+ RChunk& aChunk,
+ TInt aSize,
+ TInt aMaxSize,
+ const TSize& aDimension,
+ TInt aFrameFormat,
+ const CVisualFrame::TFrameLayout& aFrameLayout )
+ {
+ TFrameFormatBase* frameFormat = GetFrameFormatL( aFrameFormat );
+ CleanupStack::PushL( frameFormat );
+
+ TFrameLayout frameLayout = TFrameLayout( aFrameLayout.iNumberOfPlanes );
+
+ for ( TInt i = 0; i < aFrameLayout.iNumberOfPlanes; ++i )
+ {
+ frameLayout.SetStart( i, aFrameLayout.iOffset[i] );
+ frameLayout.SetScanLength( i, aFrameLayout.iScanLineLength[i] );
+ frameLayout.SetLength( i, aFrameLayout.iMaxLength[i] );
+ frameLayout.SetCurrentLength( i, aFrameLayout.iLength[i] );
+ }
+
+ CVisualFrameImpl* self = new ( ELeave ) CVisualFrameImpl();
+ CleanupStack::PushL( self );
+ self->ConstructL( &aChunk, aMaxSize, aFrameLayout.iOffset[0], aDimension, *frameFormat, frameLayout );
+ self->iSize = aSize;
+ CleanupStack::Pop( self );
+ CleanupStack::PopAndDestroy( frameFormat );
+
+ return self;
+ }
+
+// ---------------------------------------------------------
+// CVisualFrameImpl* CVisualFrameImpl::NewL
+// Two-phased constructor.
+// ---------------------------------------------------------
+//
+CVisualFrameImpl* CVisualFrameImpl::NewL( const CImageFrame* aImageFrame )
+ {
+ if ( ( aImageFrame->FrameFormat().Type() != KUidIclImageFrameFormat ) &&
+ ( aImageFrame->FrameFormat().Type() != KUidExtIclImageFrameFormat ) )
+ {
+ User::Leave( KErrNotSupported );
+ }
+ CVisualFrameImpl* self = new ( ELeave ) CVisualFrameImpl();
+ CleanupStack::PushL( self );
+ if ( aImageFrame->IsChunk() )
+ {
+ self->ConstructL(
+ &const_cast<CImageFrame*>( aImageFrame )->DataChunk(),
+ aImageFrame->MaxBufferSize(),
+ aImageFrame->DataOffset(),
+ aImageFrame->FrameSizeInPixels(),
+ aImageFrame->FrameFormat(),
+ aImageFrame->FrameLayout() );
+ const TFrameLayout& frameLayout = reinterpret_cast<const TFrameLayout&>( aImageFrame->FrameLayout() );
+ self->iSize = frameLayout.CurrentLength( frameLayout.Planes() - 1 ) + frameLayout.Start( frameLayout.Planes() - 1 ) - frameLayout.Start( 0 );
+ }
+ else
+ {
+ self->ConstructL(
+ const_cast<CImageFrame*>( aImageFrame )->Data(),
+ aImageFrame->MaxBufferSize(),
+ aImageFrame->FrameSizeInPixels(),
+ aImageFrame->FrameFormat(),
+ aImageFrame->FrameLayout() );
+ }
+
+ CleanupStack::Pop( self );
+
+ return self;
+ }
+
+// ---------------------------------------------------------
+// CVisualFrameImpl::GetImageFrameL
+// ---------------------------------------------------------
+//
+CImageFrame* CVisualFrameImpl::GetImageFrameL()
+ {
+ if ( FrameFormat().Type() != KUidIclImageFrameFormat )
+ {
+ User::Leave( KErrNotSupported );
+ }
+
+ if ( IsChunk() )
+ {
+ return CImageFrame::NewL(
+ &DataChunk(),
+ MaxBufferSize(),
+ DataOffset(),
+ FrameSizeInPixels(),
+ FrameFormat(),
+ FrameLayout() );
+ }
+ else
+ {
+ return CImageFrame::NewL(
+ Data(),
+ MaxBufferSize(),
+ FrameSizeInPixels(),
+ FrameFormat(),
+ FrameLayout() );
+ }
+ }
+
+// ---------------------------------------------------------
+// CVisualFrameImpl::DataChunkL
+// ---------------------------------------------------------
+//
+const RChunk& CVisualFrameImpl::DataChunkL() const
+ {
+ if ( !IsChunk() )
+ {
+ User::Leave( KErrNotFound );
+ }
+ return const_cast<CVisualFrameImpl*>( this )->DataChunk();
+ }
+
+// ---------------------------------------------------------
+// CVisualFrameImpl::DataPtrL
+// ---------------------------------------------------------
+//
+TPtr8 CVisualFrameImpl::DataPtrL() const
+ {
+ if ( IsChunk() )
+ {
+ User::Leave( KErrNotFound );
+ }
+ TDes8& des = const_cast<CVisualFrameImpl*>( this )->Data();
+ return TPtr8( const_cast<TUint8*>( des.Ptr() ), des.Length(), des.MaxLength() );
+ }
+
+// ---------------------------------------------------------
+// CVisualFrameImpl::Dimension
+// ---------------------------------------------------------
+//
+TSize CVisualFrameImpl::Dimension() const
+ {
+ return FrameSizeInPixels();
+ }
+
+// ---------------------------------------------------------
+// CVisualFrameImpl::FrameFormat2
+// ---------------------------------------------------------
+//
+TInt CVisualFrameImpl::FrameFormat2() const
+ {
+ return GetFrameFormat( FrameFormat() );
+ }
+
+// ---------------------------------------------------------
+// CVisualFrameImpl::DataOffset
+// ---------------------------------------------------------
+//
+TInt CVisualFrameImpl::DataOffset() const
+ {
+ return CImageFrame::DataOffset();
+ }
+
+// ---------------------------------------------------------
+// CVisualFrameImpl::Size
+// ---------------------------------------------------------
+//
+TInt CVisualFrameImpl::Size() const
+ {
+ if ( !IsChunk() )
+ {
+ return Data().Length();
+ }
+ return iSize;
+ }
+
+// ---------------------------------------------------------
+// CVisualFrameImpl::SetSizeL
+// ---------------------------------------------------------
+//
+void CVisualFrameImpl::SetSizeL( TInt aSize )
+ {
+ if ( ( aSize < 0 ) || ( aSize > MaxSize() ) )
+ {
+ User::Leave( KErrArgument );
+ }
+ if ( !IsChunk() )
+ {
+ Data().SetLength( aSize );
+ }
+ iSize = aSize;
+ }
+
+// ---------------------------------------------------------
+// CVisualFrameImpl::MaxSize
+// ---------------------------------------------------------
+//
+TInt CVisualFrameImpl::MaxSize() const
+ {
+ return MaxBufferSize();
+ }
+
+// ---------------------------------------------------------
+// CVisualFrameImpl::DataContainer
+// ---------------------------------------------------------
+//
+TInt CVisualFrameImpl::DataContainer() const
+ {
+ if ( IsChunk() )
+ {
+ return CVisualFrame::EInChunk;
+ }
+ return CVisualFrame::EInDescriptor;
+ }
+
+// ---------------------------------------------------------
+// CVisualFrameImpl::FrameLayout2
+// ---------------------------------------------------------
+//
+const CVisualFrame::TFrameLayout& CVisualFrameImpl::FrameLayout2() const
+ {
+ const TFrameLayout& frameLayout = reinterpret_cast<const TFrameLayout&>( FrameLayout() );
+ CVisualFrame::TFrameLayout& frameLayout2 = const_cast<CVisualFrameImpl*>( this )->iFrameLayout2;
+ frameLayout2.iNumberOfPlanes = frameLayout.Planes();
+ for (TInt i = 0; i < iFrameLayout2.iNumberOfPlanes; ++i )
+ {
+ frameLayout2.iOffset[i] = frameLayout.Start( i );
+ frameLayout2.iScanLineLength[i] = frameLayout.ScanLength( i );
+ frameLayout2.iLength[i] = frameLayout.CurrentLength( i );
+ frameLayout2.iMaxLength[i] = frameLayout.Length( i );
+ }
+ return iFrameLayout2;
+ }
+
+// ---------------------------------------------------------
+// CVisualFrameImpl::~CVisualFrameImpl
+// Destructor
+// ---------------------------------------------------------
+//
+CVisualFrameImpl::~CVisualFrameImpl()
+ {
+ }
+
+// End of File