Obtain an image of Webcamera from QEMU and add the Bitmap change display function. RCL_3
authorShimizu Satoshi <s_shimizu@isb.co.jp>
Tue, 19 Oct 2010 11:48:59 +0900
branchRCL_3
changeset 64 92a82bc706f7
parent 9 9ae0fe04e757
Obtain an image of Webcamera from QEMU and add the Bitmap change display function.
mmplugins/cameraplugins/group/BLD.INF
mmplugins/cameraplugins/group/multimedia_ecam_plugins.mrp
mmplugins/cameraplugins/inc/ecam_stubplugin.iby
mmplugins/cameraplugins/inc/ecam_test.iby
mmplugins/cameraplugins/inc/ecam_webcameraplugin.iby
mmplugins/cameraplugins/mmpfiles/ECamStubPlugin.mmp
mmplugins/cameraplugins/mmpfiles/TestCamera.mmp
mmplugins/cameraplugins/mmpfiles/ecamwebcameraplugin.mmp
mmplugins/cameraplugins/source/stub/10207081.rss
mmplugins/cameraplugins/source/stub/ECamStubPlugin.cpp
mmplugins/cameraplugins/source/stub/ECamStubPlugin.h
mmplugins/cameraplugins/source/testcamera/102070CC.RSS
mmplugins/cameraplugins/source/testcamera/TestCamera.cpp
mmplugins/cameraplugins/source/testcamera/TestCamera.h
mmplugins/cameraplugins/source/testcamera/TestCameraUids.hrh
mmplugins/cameraplugins/source/testcamera/test_advanced_settings.cpp
mmplugins/cameraplugins/source/testcamera/test_advanced_settings.h
mmplugins/cameraplugins/source/testcamera/test_image_processing.cpp
mmplugins/cameraplugins/source/testcamera/test_image_processing.h
mmplugins/cameraplugins/source/testcamera/test_snapshot.cpp
mmplugins/cameraplugins/source/testcamera/test_snapshot.h
mmplugins/cameraplugins/source/webcamera/01000001.rss
mmplugins/cameraplugins/source/webcamera/ecamwebcameraactive.cpp
mmplugins/cameraplugins/source/webcamera/ecamwebcameraactive.h
mmplugins/cameraplugins/source/webcamera/ecamwebcameraadvset.cpp
mmplugins/cameraplugins/source/webcamera/ecamwebcameraadvset.h
mmplugins/cameraplugins/source/webcamera/ecamwebcamerabuffer.cpp
mmplugins/cameraplugins/source/webcamera/ecamwebcamerabuffer.h
mmplugins/cameraplugins/source/webcamera/ecamwebcameraplugin.cpp
mmplugins/cameraplugins/source/webcamera/ecamwebcameraplugin.h
mmplugins/cameraplugins/source/webcamera/ecamwebcamerapluginuids.hrh
mmplugins/cameraplugins/source/webcamera/ecamwebcameravfactive.cpp
mmplugins/cameraplugins/source/webcamera/ecamwebcameravfactive.h
mmplugins/cameraplugins/testapp/testcameraapps60/group/BLD.INF
mmplugins/cameraplugins/testapp/testcameraapps60/group/TestCameraApp.iby
mmplugins/cameraplugins/testapp/testcameraapps60/group/TestCameraAppS60.mmp
mmplugins/cameraplugins/testapp/testcameraapps60/inc/TestCameraApp.h
mmplugins/cameraplugins/testapp/testcameraapps60/inc/TestCameraApp.hrh
mmplugins/cameraplugins/testapp/testcameraapps60/src/AIF.RSS
mmplugins/cameraplugins/testapp/testcameraapps60/src/TestCameraApp.cpp
mmplugins/cameraplugins/testapp/testcameraapps60/src/TestCameraApp.rss
mmplugins/cameraplugins/testapp/testcameraapps60/src/TestCameraApp_loc.RSS
mmplugins/cameraplugins/testapp/testcameraapps60/src/TestCameraApp_reg.rss
mmplugins/cameraplugins/testapp/testcameraapps60/src/webcamapi.dll
--- a/mmplugins/cameraplugins/group/BLD.INF	Thu Mar 25 11:21:36 2010 +0900
+++ b/mmplugins/cameraplugins/group/BLD.INF	Tue Oct 19 11:48:59 2010 +0900
@@ -1,40 +1,36 @@
-// Copyright (c) 2007-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:
-// On board camera API
-// 
-//
-
-/**
- @file
-*/
-
-#ifdef SYMBIAN_MULTIMEDIA_THREEPLANEARCH
-//Include the mmcameraclientplugin
-#include "../source/mmcameraclientplugin/group/bld.inf"
-#endif //SYMBIAN_MULTIMEDIA_THREEPLANEARCH
-
-PRJ_EXPORTS
-// ROM  buildsupport
-../inc/ecam_stubplugin.iby  /epoc32/rom/include/ecam_stubplugin.iby
-../inc/ecam_webcameraplugin.iby  /epoc32/rom/include/ecam_webcameraplugin.iby
-
-PRJ_MMPFILES
-../mmpfiles/ECamStubPlugin.mmp
-../mmpfiles/ecamwebcameraplugin.mmp
-
-PRJ_TESTMMPFILES
-../mmpfiles/TestCamera.mmp
-
-PRJ_TESTEXPORTS
-../inc/ecam_test.iby	/epoc32/rom/include/ecam_test.iby
+// Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of the License "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// On board camera API
+// 
+//
+
+
+
+/**
+ @file
+*/
+PRJ_EXPORTS
+// ROM  buildsupport
+../inc/ecam_stubplugin.iby  /epoc32/rom/include/ecam_stubplugin.iby
+../inc/ecam_webcameraplugin.iby  /epoc32/rom/include/ecam_webcameraplugin.iby
+
+PRJ_MMPFILES
+../mmpfiles/ECamStubPlugin.mmp
+../mmpfiles/ecamwebcameraplugin.mmp
+
+PRJ_TESTMMPFILES
+../mmpfiles/TestCamera.mmp
+
+PRJ_TESTEXPORTS
+../inc/ecam_test.iby	/epoc32/rom/include/ecam_test.iby
--- a/mmplugins/cameraplugins/group/multimedia_ecam_plugins.mrp	Thu Mar 25 11:21:36 2010 +0900
+++ b/mmplugins/cameraplugins/group/multimedia_ecam_plugins.mrp	Tue Oct 19 11:48:59 2010 +0900
@@ -1,30 +1,18 @@
-#multimedia_ecam_plugins.mrp
-#
-# Copyright (c) 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:
-#
-
-component	multimedia_ecam_plugins
-
-source	\sf\os\mm\mmplugins\cameraplugins
-	
-binary	\sf\os\mm\mmplugins\cameraplugins\group	all
-
-exports	\sf\os\mm\mmplugins\cameraplugins\group
-
-notes_source	\component_defs\release.src
-
-ipr E 
-ipr T \sf\os\mm\mmplugins\cameraplugins\source\testcamera
-
+#multimedia_ecam_plugins.mrp
+#
+#Copyright (c) Symbian Software Ltd 2008.  All rights reserved.
+#
+
+component	multimedia_ecam_plugins
+
+source	\sf\os\mm\mmplugins\cameraplugins
+	
+binary	\sf\os\mm\mmplugins\cameraplugins\group	all
+
+exports	\sf\os\mm\mmplugins\cameraplugins\group
+
+notes_source	\component_defs\release.src
+
+ipr E 
+ipr T \sf\os\mm\mmplugins\cameraplugins\source\testcamera
+
--- a/mmplugins/cameraplugins/inc/ecam_stubplugin.iby	Thu Mar 25 11:21:36 2010 +0900
+++ b/mmplugins/cameraplugins/inc/ecam_stubplugin.iby	Tue Oct 19 11:48:59 2010 +0900
@@ -1,24 +1,23 @@
-// Copyright (c) 2007-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:
-//
-
-#ifndef ECAM_STUBPLUGIN_IBY
-#define ECAM_STUBPLUGIN_IBY
-
-#ifndef SYMBIAN_EXCLUDE_ECAM_STUBPLUGIN
-ECOM_PLUGIN(ECamStubPlugin.dll,10207081.rsc)
-#endif 
-
-#endif //ECAM_STUBPLUGIN_IBY
-
+// Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of the License "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+#ifndef ECAM_STUBPLUGIN_IBY
+#define ECAM_STUBPLUGIN_IBY
+
+#ifndef SYMBIAN_EXCLUDE_ECAM_STUBPLUGIN
+ECOM_PLUGIN(ECamStubPlugin.dll,10207081.rsc)
+#endif 
+
+#endif //ECAM_STUBPLUGIN_IBY
--- a/mmplugins/cameraplugins/inc/ecam_test.iby	Thu Mar 25 11:21:36 2010 +0900
+++ b/mmplugins/cameraplugins/inc/ecam_test.iby	Tue Oct 19 11:48:59 2010 +0900
@@ -1,22 +1,21 @@
-// Copyright (c) 2006-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:
-//
-
-#ifndef ECAM_TEST_IBY
-#define ECAM_TEST_IBY
-
-ECOM_PLUGIN(ECamTestPlugin.dll,102070CC.rss)
-
-#endif // ECAM_TEST_IBY
-
+// Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of the License "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+#ifndef ECAM_TEST_IBY
+#define ECAM_TEST_IBY
+
+ECOM_PLUGIN(ECamTestPlugin.dll,102070CC.rss)
+
+#endif // ECAM_TEST_IBY
--- a/mmplugins/cameraplugins/inc/ecam_webcameraplugin.iby	Thu Mar 25 11:21:36 2010 +0900
+++ b/mmplugins/cameraplugins/inc/ecam_webcameraplugin.iby	Tue Oct 19 11:48:59 2010 +0900
@@ -1,23 +1,23 @@
-/*
-* Copyright (c) 2010 ISB.
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of the "Symbian Foundation License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
-*
-* Initial Contributors:
-* ISB - Initial contribution
-*
-* Contributors:
-*
-* Description:
-*
-*/
-
-#ifndef ECAM_WEBCAMERA_IBY
-#define ECAM_WEBCAMERA_IBY
-
-ECOM_PLUGIN(ecamwebcameraplugin.dll,01000001.rss)
-
-#endif // ECAM_TEST_IBY
+/*
+* Copyright (c) 2010 ISB.
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the "Symbian Foundation License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+*
+* Initial Contributors:
+* ISB - Initial contribution
+*
+* Contributors:
+*
+* Description:
+*
+*/
+
+#ifndef ECAM_WEBCAMERA_IBY
+#define ECAM_WEBCAMERA_IBY
+
+ECOM_PLUGIN(ecamwebcameraplugin.dll,01000001.rss)
+
+#endif // ECAM_TEST_IBY
--- a/mmplugins/cameraplugins/mmpfiles/ECamStubPlugin.mmp	Thu Mar 25 11:21:36 2010 +0900
+++ b/mmplugins/cameraplugins/mmpfiles/ECamStubPlugin.mmp	Tue Oct 19 11:48:59 2010 +0900
@@ -1,47 +1,45 @@
-// Copyright (c) 2004-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:
-// ECamStubPlugin.dll Camera stub plugin implementation
-// 
-//
-
-/**
- @file
-*/
-
-
-
-#include "../../../imagingandcamerafws/camerafw/Include/ECamUids.hrh"
-
-TARGET 		ecamstubplugin.dll
-TARGETTYPE 	PLUGIN
-CAPABILITY	ALL -TCB
-
-// MAGIC Dll recognition UID followed by the unique UID for this dll
-UID 		0x10009D8D KUidOnboardCameraStubDll
-VENDORID 0x70000001
-
-SOURCEPATH	../source/stub
-SOURCE		ECamStubPlugin.cpp 
-
-USERINCLUDE	../source/stub
-OS_LAYER_SYSTEMINCLUDE_SYMBIAN
-
-START RESOURCE 	10207081.rss
-TARGET ecamstubplugin.rsc
-END
-
-LIBRARY 	euser.lib
-LIBRARY		ecampluginsupport.lib
-
-SMPSAFE
+// Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of the License "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// ECamStubPlugin.dll Camera stub plugin implementation
+// 
+//
+
+
+
+/**
+ @file
+*/
+
+#include "../../../imagingandcamerafws/camerafw/Include/ECamUids.hrh"
+
+TARGET 		ecamstubplugin.dll
+TARGETTYPE 	PLUGIN
+CAPABILITY	ALL -TCB
+
+// MAGIC Dll recognition UID followed by the unique UID for this dll
+UID 		0x10009D8D KUidOnboardCameraStubDll
+VENDORID 0x70000001
+
+SOURCEPATH	../source/stub
+SOURCE		ECamStubPlugin.cpp 
+
+USERINCLUDE	../source/stub
+SYSTEMINCLUDE 	/epoc32/include
+
+START RESOURCE 	10207081.rss
+TARGET ecamstubplugin.rsc
+END
+
+LIBRARY 	euser.lib
+LIBRARY		ecampluginsupport.lib
--- a/mmplugins/cameraplugins/mmpfiles/TestCamera.mmp	Thu Mar 25 11:21:36 2010 +0900
+++ b/mmplugins/cameraplugins/mmpfiles/TestCamera.mmp	Tue Oct 19 11:48:59 2010 +0900
@@ -1,62 +1,54 @@
-// Copyright (c) 2002-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:
-// ECamTestPlugin.dll Test plugin implementation
-// 
-//
-
-/**
- @file
-*/
-
-#include "../../../imagingandcamerafws/camerafw/Include/ECamUids.hrh"
-#include "../source/testcamera/TestCameraUids.hrh"
-
-TARGET 		ecamtestplugin.dll
-TARGETTYPE 	PLUGIN
-CAPABILITY	ALL -TCB
-
-// MAGIC Dll recognition UID followed by the unique UID for this dll
-UID 		0x10009D8D KUidOnboardCameraTestDll
-VENDORID    0x70000001
-
-SOURCEPATH	../source/testcamera
-SOURCE		TestCamera.cpp 
-SOURCE 		test_advanced_settings.cpp
-SOURCE      test_snapshot.cpp
-SOURCE      test_image_processing.cpp
-
-USERINCLUDE	../source/testcamera
-USERINCLUDE     ../../../imagingandcamerafws/camerafw/Include
-OS_LAYER_SYSTEMINCLUDE_SYMBIAN
-
-START RESOURCE 	102070CC.RSS
-TARGET ecamtestplugin.rsc
-END
-
-LIBRARY     euser.lib
-LIBRARY	    ecampluginsupport.lib
-LIBRARY     ecam.lib
-LIBRARY     fbscli.lib
-LIBRARY     bitgdi.lib
-LIBRARY     ws32.lib
-LIBRARY     efsrv.lib 
-
-
-
-
-
-
-
-
-SMPSAFE
+// Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of the License "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// ECamTestPlugin.dll Test plugin implementation
+// 
+//
+
+
+
+/**
+ @file
+*/
+
+#include "../../../imagingandcamerafws/camerafw/Include/ECamUids.hrh"
+#include "../source/testcamera/TestCameraUids.hrh"
+
+TARGET 		ecamtestplugin.dll
+TARGETTYPE 	PLUGIN
+CAPABILITY	ALL -TCB
+
+// MAGIC Dll recognition UID followed by the unique UID for this dll
+UID 		0x10009D8D KUidOnboardCameraTestDll
+VENDORID    0x70000001
+
+SOURCEPATH	../source/testcamera
+SOURCE		TestCamera.cpp 
+SOURCE 		test_advanced_settings.cpp
+SOURCE      test_snapshot.cpp
+SOURCE      test_image_processing.cpp
+
+USERINCLUDE	../source/testcamera
+SYSTEMINCLUDE 	/epoc32/include
+
+START RESOURCE 	102070CC.RSS
+TARGET ecamtestplugin.rsc
+END
+
+LIBRARY     euser.lib
+LIBRARY	    ecampluginsupport.lib
+LIBRARY     ecam.lib
+LIBRARY     fbscli.lib
+LIBRARY     bitgdi.lib
+LIBRARY     ws32.lib
+LIBRARY     efsrv.lib 
--- a/mmplugins/cameraplugins/mmpfiles/ecamwebcameraplugin.mmp	Thu Mar 25 11:21:36 2010 +0900
+++ b/mmplugins/cameraplugins/mmpfiles/ecamwebcameraplugin.mmp	Tue Oct 19 11:48:59 2010 +0900
@@ -1,56 +1,55 @@
-/*
-* Copyright (c) 2010 ISB.
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of the "Symbian Foundation License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
-*
-* Initial Contributors:
-* ISB - Initial contribution
-*
-* Contributors:
-*
-* Description:
-*
-*/
-
-
-
-/**
- @file
-*/
-
-#include "../source/webcamera/ecamwebcamerapluginuids.hrh"
-
-TARGET 		ecamwebcameraplugin.dll
-TARGETTYPE 	PLUGIN
-CAPABILITY	ALL -TCB
-
-// MAGIC Dll recognition UID followed by the unique UID for this dll
-UID 		0x10009D8D KUidOnboardWebCameraDll
-VENDORID	0x70000001
-
-SOURCEPATH	../source/webcamera
-SOURCE		ecamwebcameraplugin.cpp 
-SOURCE		ecamwebcameraadvset.cpp
-SOURCE		ecamwebcameraactive.cpp
-SOURCE		ecamwebcameravfactive.cpp
-SOURCE		ecamwebcamerabuffer.cpp
-
-USERINCLUDE		../source/webcamera
-SYSTEMINCLUDE 	/epoc32/include
-SYSTEMINCLUDE 	/epoc32/include/platform
-SYSTEMINCLUDE 	/epoc32/include/syborg
-
-START RESOURCE 	01000001.rss
-TARGET	ecamwebcameraplugin.rsc
-END
-
-LIBRARY		euser.lib
-LIBRARY		ecampluginsupport.lib
-LIBRARY		ecam.lib
-LIBRARY		fbscli.lib
-LIBRARY		efsrv.lib 
-LIBRARY		ws32.lib
-LIBRARY		bitgdi.lib
+/*
+* Copyright (c) 2010 ISB.
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the "Symbian Foundation License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+*
+* Initial Contributors:
+* ISB - Initial contribution
+*
+* Contributors:
+*
+* Description:
+*
+*/
+
+
+
+/**
+ @file
+*/
+
+#include "../source/webcamera/ecamwebcamerapluginuids.hrh"
+
+TARGET 		ecamwebcameraplugin.dll
+TARGETTYPE 	PLUGIN
+CAPABILITY	ALL -TCB
+
+// MAGIC Dll recognition UID followed by the unique UID for this dll
+UID 		0x10009D8D KUidOnboardWebCameraDll
+VENDORID	0x70000001
+
+SOURCEPATH	../source/webcamera
+SOURCE		ecamwebcameraplugin.cpp 
+SOURCE		ecamwebcameraadvset.cpp
+SOURCE		ecamwebcameraactive.cpp
+SOURCE		ecamwebcameravfactive.cpp
+SOURCE		ecamwebcamerabuffer.cpp
+
+USERINCLUDE		../source/webcamera
+SYSTEMINCLUDE 	/epoc32/include
+SYSTEMINCLUDE 	/epoc32/include/syborg
+
+START RESOURCE 	01000001.rss
+TARGET	ecamwebcameraplugin.rsc
+END
+
+LIBRARY		euser.lib
+LIBRARY		ecampluginsupport.lib
+LIBRARY		ecam.lib
+LIBRARY		fbscli.lib
+LIBRARY		efsrv.lib 
+LIBRARY		ws32.lib
+LIBRARY		bitgdi.lib
--- a/mmplugins/cameraplugins/source/stub/10207081.rss	Thu Mar 25 11:21:36 2010 +0900
+++ b/mmplugins/cameraplugins/source/stub/10207081.rss	Tue Oct 19 11:48:59 2010 +0900
@@ -1,56 +1,55 @@
-// Copyright (c) 2004-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:
-//
-
-#include "ecom/registryinfo.rh"
-#include "ecamuids.hrh"
-
-RESOURCE REGISTRY_INFO theInfo
-	{
-	dll_uid = KUidOnboardCameraStubDll;
-	interfaces = 
-		{
-		INTERFACE_INFO
-			{
-			interface_uid = KUidOnboardCameraPlugin;
-			implementations = 
-				{
-				IMPLEMENTATION_INFO
-					{
-					implementation_uid = KUidOnboardCameraStubPlugin;
-					version_no = 1;
-					display_name = "Stub ECam Plugin";
-					opaque_data = "0;";
-					default_data="*";
-					}
-				};
-			},
-		INTERFACE_INFO
-			{
-			interface_uid = KUidOnboardCameraInfoPlugin;
-			implementations = 
-				{
-				IMPLEMENTATION_INFO
-					{
-					implementation_uid = KUidOnboardCameraStubInfo;
-					version_no = 1;
-					display_name = "Stub ECam InfoPlugin";
-					opaque_data = "0;";
-					default_data="*";
-					}
-				};
-			}
-		};
-	}
-
+// Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of the License "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+#include "ecom/registryinfo.rh"
+#include "ecamuids.hrh"
+
+RESOURCE REGISTRY_INFO theInfo
+	{
+	dll_uid = KUidOnboardCameraStubDll;
+	interfaces = 
+		{
+		INTERFACE_INFO
+			{
+			interface_uid = KUidOnboardCameraPlugin;
+			implementations = 
+				{
+				IMPLEMENTATION_INFO
+					{
+					implementation_uid = KUidOnboardCameraStubPlugin;
+					version_no = 1;
+					display_name = "Stub ECam Plugin";
+					opaque_data = "0;";
+					default_data="*";
+					}
+				};
+			},
+		INTERFACE_INFO
+			{
+			interface_uid = KUidOnboardCameraInfoPlugin;
+			implementations = 
+				{
+				IMPLEMENTATION_INFO
+					{
+					implementation_uid = KUidOnboardCameraStubInfo;
+					version_no = 1;
+					display_name = "Stub ECam InfoPlugin";
+					opaque_data = "0;";
+					default_data="*";
+					}
+				};
+			}
+		};
+	}
--- a/mmplugins/cameraplugins/source/stub/ECamStubPlugin.cpp	Thu Mar 25 11:21:36 2010 +0900
+++ b/mmplugins/cameraplugins/source/stub/ECamStubPlugin.cpp	Tue Oct 19 11:48:59 2010 +0900
@@ -1,395 +1,394 @@
-// Copyright (c) 2004-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:
-//
-
-#include "ECamStubPlugin.h"
-
-#include <ecom/ecom.h>
-#include <ecom/implementationproxy.h>
-#include <ecamuids.hrh>
-
-//
-// Main stuff
-//
-
-static void Panic(TInt aReason)
-	{
-	_LIT(KDllName, "ECam Stub Plugin");
-	User::Panic(KDllName, aReason);
-	}
-
-//
-// CCameraStub
-//
-
-CCameraStub::CCameraStub()
-	{
-	}
-	
-CCameraStub::~CCameraStub()
-	{
-	}
-	
-CCameraStub* CCameraStub::NewL()
-	{
-	return new (ELeave) CCameraStub;
-	}
-	
-// 
-// 2nd stage ConstructL calls called by framework
-//
-
-void CCameraStub::Construct2L(MCameraObserver& aObserver,TInt aCameraIndex)
-	{
-	iObserver = &aObserver;
-	iCameraIndex = aCameraIndex;
-	User::Leave(KErrNotSupported);
-	}
-	
-void CCameraStub::Construct2DupL(MCameraObserver& aObserver,TInt aCameraHandle)
-	{
-	iObserver = &aObserver;
-	iCameraHandle = aCameraHandle;
-	User::Leave(KErrNotSupported);
-	}
-
-
-void CCameraStub::Construct2L(MCameraObserver2& aObserver,TInt aCameraIndex,TInt aPriority)
-	{
-	iObserver2 = &aObserver;
-	iCameraIndex = aCameraIndex;
-	iPriority = aPriority;
-	User::Leave(KErrNotSupported);
-	}
-	
-void CCameraStub::Construct2DupL(MCameraObserver2& aObserver,TInt aCameraHandle)
-	{
-	iObserver2 = &aObserver;
-	iCameraHandle = aCameraHandle;
-	User::Leave(KErrNotSupported);
-	}
-
-
-	
-//
-// Dummy versions of virtual functions
-//
-
-void CCameraStub::CameraInfo(TCameraInfo& /*aInfo*/) const
-	{
-	Panic(EPanicUnimplemented);
-	}
-
-void CCameraStub::Reserve()
-	{
-	Panic(EPanicUnimplemented);
-	}
-
-
-void CCameraStub::Release()
-	{
-	Panic(EPanicUnimplemented);
-	}
-
-void CCameraStub::PowerOn()
-	{
-	Panic(EPanicUnimplemented);
-	}
-
-void CCameraStub::PowerOff()
-	{
-	Panic(EPanicUnimplemented);
-	}
-
-TInt CCameraStub::Handle()
-	{
-	Panic(EPanicUnimplemented);
-	return 0;
-	}
-
-void CCameraStub::SetZoomFactorL(TInt /*aZoomFactor = 0*/)
-	{
-	Panic(EPanicUnimplemented);
-	}
-
-TInt CCameraStub::ZoomFactor() const
-	{
-	Panic(EPanicUnimplemented);
-	return 0;
-	}
-
-void CCameraStub::SetDigitalZoomFactorL(TInt /*aDigitalZoomFactor = 0*/)
-	{
-	Panic(EPanicUnimplemented);
-	}
-
-TInt CCameraStub::DigitalZoomFactor() const
-	{
-	Panic(EPanicUnimplemented);
-	return 0;
-	}
-
-void CCameraStub::SetContrastL(TInt /*aContrast*/)
-	{
-	Panic(EPanicUnimplemented);
-	}
-
-TInt CCameraStub::Contrast() const
-	{
-	Panic(EPanicUnimplemented);
-	return 0;
-	}
-
-void CCameraStub::SetBrightnessL(TInt /*aBrightness*/)
-	{
-	Panic(EPanicUnimplemented);
-	}
-
-TInt CCameraStub::Brightness() const
-	{
-	Panic(EPanicUnimplemented);
-	return 0;
-	}
-
-
-void CCameraStub::SetFlashL(TFlash /*aFlash = EFlashNone*/)
-	{
-	Panic(EPanicUnimplemented);
-	}
-
-CCamera::TFlash CCameraStub::Flash() const
-	{
-	Panic(EPanicUnimplemented);
-	return EFlashNone;
-	}
-
-void CCameraStub::SetExposureL(TExposure /*aExposure = EExposureAuto*/)
-	{
-	Panic(EPanicUnimplemented);
-	}
-
-CCamera::TExposure CCameraStub::Exposure() const
-	{
-	Panic(EPanicUnimplemented);
-	return EExposureAuto;
-	}
-
-void CCameraStub::SetWhiteBalanceL(TWhiteBalance /*aWhiteBalance = EWBAuto*/)
-	{
-	Panic(EPanicUnimplemented);
-	}
-
-
-CCamera::TWhiteBalance CCameraStub::WhiteBalance() const
-	{
-	Panic(EPanicUnimplemented);
-	return EWBAuto;
-	}
-
-void CCameraStub::StartViewFinderDirectL(RWsSession& /*aWs*/,CWsScreenDevice& /*aScreenDevice*/,RWindowBase& /*aWindow*/,TRect& /*aScreenRect*/)
-	{
-	Panic(EPanicUnimplemented);
-	}
-
-void CCameraStub::StartViewFinderDirectL(RWsSession& /*aWs*/,CWsScreenDevice& /*aScreenDevice*/,RWindowBase& /*aWindow*/,TRect& /*aScreenRect*/,TRect& /*aClipRect*/)
-	{
-	Panic(EPanicUnimplemented);
-	}
-
-void CCameraStub::StartViewFinderBitmapsL(TSize& /*aSize*/)
-	{
-	Panic(EPanicUnimplemented);
-	}
-	
-void CCameraStub::StartViewFinderBitmapsL(TSize& /*aSize*/,TRect& /*aClipRect*/)
-	{
-	Panic(EPanicUnimplemented);
-	}
-
-
-void CCameraStub::StartViewFinderL(TFormat /*aImageFormat*/,TSize& /*aSize*/)
-	{
-	Panic(EPanicUnimplemented);
-	}
-
-void CCameraStub::StartViewFinderL(TFormat /*aImageFormat*/,TSize& /*aSize*/,TRect& /*aClipRect*/)
-	{
-	Panic(EPanicUnimplemented);
-	}
-
-
-void CCameraStub::StopViewFinder()
-	{
-	Panic(EPanicUnimplemented);
-	}
-
-TBool CCameraStub::ViewFinderActive() const
-	{
-	Panic(EPanicUnimplemented);
-	return EFalse;
-	}
-
-void CCameraStub::SetViewFinderMirrorL(TBool /*aMirror*/)
-	{
-	Panic(EPanicUnimplemented);
-	}
-
-TBool CCameraStub::ViewFinderMirror() const
-	{
-	Panic(EPanicUnimplemented);
-	return EFalse;
-	}
-
-void CCameraStub::PrepareImageCaptureL(TFormat /*aImageFormat*/,TInt /*aSizeIndex*/)
-	{
-	Panic(EPanicUnimplemented);
-	}
-
-void CCameraStub::PrepareImageCaptureL(TFormat /*aImageFormat*/,TInt /*aSizeIndex*/,const TRect& /*aClipRect*/)
-	{
-	Panic(EPanicUnimplemented);
-	}
-
-
-void CCameraStub::CaptureImage()
-	{
-	Panic(EPanicUnimplemented);
-	}
-
-void CCameraStub::CancelCaptureImage()
-	{
-	Panic(EPanicUnimplemented);
-	}
-
-void CCameraStub::EnumerateCaptureSizes(TSize& /*aSize*/,TInt /*aSizeIndex*/,TFormat /*aFormat*/) const
-	{
-	Panic(EPanicUnimplemented);
-	}
-
-void CCameraStub::PrepareVideoCaptureL(TFormat /*aFormat*/,TInt /*aSizeIndex*/,TInt /*aRateIndex*/,TInt /*aBuffersToUse*/,TInt /*aFramesPerBuffer*/)
-	{
-	Panic(EPanicUnimplemented);
-	}
-
-void CCameraStub::PrepareVideoCaptureL(TFormat /*aFormat*/,TInt /*aSizeIndex*/,TInt /*aRateIndex*/,TInt /*aBuffersToUse*/,TInt /*aFramesPerBuffer*/,const TRect& /*aClipRect*/)
-	{
-	Panic(EPanicUnimplemented);
-	}
-
-void CCameraStub::StartVideoCapture()
-	{
-	Panic(EPanicUnimplemented);
-	}
-
-void CCameraStub::StopVideoCapture()
-	{
-	Panic(EPanicUnimplemented);
-	}
-
-TBool CCameraStub::VideoCaptureActive() const
-	{
-	Panic(EPanicUnimplemented);
-	return EFalse;
-	}
-
-void CCameraStub::EnumerateVideoFrameSizes(TSize& /*aSize*/,TInt /*aSizeIndex*/,TFormat /*aFormat*/) const
-	{
-	Panic(EPanicUnimplemented);
-	}
-
-void CCameraStub::EnumerateVideoFrameRates(TReal32& /*aRate*/,TInt /*aRateIndex*/,TFormat /*aFormat*/,TInt /*aSizeIndex*/,TExposure /*aExposure = EExposureAuto*/) const
-	{
-	Panic(EPanicUnimplemented);
-	}
-
-void CCameraStub::GetFrameSize(TSize& /*aSize*/) const
-	{
-	Panic(EPanicUnimplemented);
-	}
-
-TReal32 CCameraStub::FrameRate() const
-	{
-	Panic(EPanicUnimplemented);
-	return 0.0;
-	}
-
-TInt CCameraStub::BuffersInUse() const
-	{
-	Panic(EPanicUnimplemented);
-	return 0;
-	}
-
-TInt CCameraStub::FramesPerBuffer() const
-	{
-	Panic(EPanicUnimplemented);
-	return 0;
-	}
-
-void CCameraStub::SetJpegQuality(TInt /*aQuality*/)
-	{
-	Panic(EPanicUnimplemented);
-	}
-
-TInt CCameraStub::JpegQuality() const
-	{
-	Panic(EPanicUnimplemented);
-	return 0;
-	}
-
-TAny* CCameraStub::CustomInterface(TUid /*aInterface*/)
-	{
-	Panic(EPanicUnimplemented);
-	return NULL;
-	}
-
-
-//
-// CCameraStubInfo
-//
-
-CCameraStubInfo::CCameraStubInfo()
-	{
-	}
-	
-CCameraStubInfo::~CCameraStubInfo()
-	{
-	}
-	
-CCameraStubInfo* CCameraStubInfo::NewL()
-	{
-	return new (ELeave) CCameraStubInfo;
-	}
-	
-TInt CCameraStubInfo::CamerasAvailable()
-	{
-	return 0;
-	}
-
-
-// __________________________________________________________________________
-// Exported proxy for instantiation method resolution
-// Define the interface UIDs
-const TImplementationProxy ImplementationTable[] = 
-	{
-		IMPLEMENTATION_PROXY_ENTRY(KUidOnboardCameraStubPlugin,	CCameraStub::NewL),
-		IMPLEMENTATION_PROXY_ENTRY(KUidOnboardCameraStubInfo,	CCameraStubInfo::NewL)
-	};
-
-EXPORT_C const TImplementationProxy* ImplementationGroupProxy(TInt& aTableCount)
-	{
-	aTableCount = sizeof(ImplementationTable) / sizeof(TImplementationProxy);
-
-	return ImplementationTable;
-	}
-
+// Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of the License "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+#include "ECamStubPlugin.h"
+
+#include <ecom/ecom.h>
+#include <ecom/implementationproxy.h>
+#include <ecamuids.hrh>
+
+//
+// Main stuff
+//
+
+static void Panic(TInt aReason)
+	{
+	_LIT(KDllName, "ECam Stub Plugin");
+	User::Panic(KDllName, aReason);
+	}
+
+//
+// CCameraStub
+//
+
+CCameraStub::CCameraStub()
+	{
+	}
+	
+CCameraStub::~CCameraStub()
+	{
+	}
+	
+CCameraStub* CCameraStub::NewL()
+	{
+	return new (ELeave) CCameraStub;
+	}
+	
+// 
+// 2nd stage ConstructL calls called by framework
+//
+
+void CCameraStub::Construct2L(MCameraObserver& aObserver,TInt aCameraIndex)
+	{
+	iObserver = &aObserver;
+	iCameraIndex = aCameraIndex;
+	User::Leave(KErrNotSupported);
+	}
+	
+void CCameraStub::Construct2DupL(MCameraObserver& aObserver,TInt aCameraHandle)
+	{
+	iObserver = &aObserver;
+	iCameraHandle = aCameraHandle;
+	User::Leave(KErrNotSupported);
+	}
+
+
+void CCameraStub::Construct2L(MCameraObserver2& aObserver,TInt aCameraIndex,TInt aPriority)
+	{
+	iObserver2 = &aObserver;
+	iCameraIndex = aCameraIndex;
+	iPriority = aPriority;
+	User::Leave(KErrNotSupported);
+	}
+	
+void CCameraStub::Construct2DupL(MCameraObserver2& aObserver,TInt aCameraHandle)
+	{
+	iObserver2 = &aObserver;
+	iCameraHandle = aCameraHandle;
+	User::Leave(KErrNotSupported);
+	}
+
+
+	
+//
+// Dummy versions of virtual functions
+//
+
+void CCameraStub::CameraInfo(TCameraInfo& /*aInfo*/) const
+	{
+	Panic(EPanicUnimplemented);
+	}
+
+void CCameraStub::Reserve()
+	{
+	Panic(EPanicUnimplemented);
+	}
+
+
+void CCameraStub::Release()
+	{
+	Panic(EPanicUnimplemented);
+	}
+
+void CCameraStub::PowerOn()
+	{
+	Panic(EPanicUnimplemented);
+	}
+
+void CCameraStub::PowerOff()
+	{
+	Panic(EPanicUnimplemented);
+	}
+
+TInt CCameraStub::Handle()
+	{
+	Panic(EPanicUnimplemented);
+	return 0;
+	}
+
+void CCameraStub::SetZoomFactorL(TInt /*aZoomFactor = 0*/)
+	{
+	Panic(EPanicUnimplemented);
+	}
+
+TInt CCameraStub::ZoomFactor() const
+	{
+	Panic(EPanicUnimplemented);
+	return 0;
+	}
+
+void CCameraStub::SetDigitalZoomFactorL(TInt /*aDigitalZoomFactor = 0*/)
+	{
+	Panic(EPanicUnimplemented);
+	}
+
+TInt CCameraStub::DigitalZoomFactor() const
+	{
+	Panic(EPanicUnimplemented);
+	return 0;
+	}
+
+void CCameraStub::SetContrastL(TInt /*aContrast*/)
+	{
+	Panic(EPanicUnimplemented);
+	}
+
+TInt CCameraStub::Contrast() const
+	{
+	Panic(EPanicUnimplemented);
+	return 0;
+	}
+
+void CCameraStub::SetBrightnessL(TInt /*aBrightness*/)
+	{
+	Panic(EPanicUnimplemented);
+	}
+
+TInt CCameraStub::Brightness() const
+	{
+	Panic(EPanicUnimplemented);
+	return 0;
+	}
+
+
+void CCameraStub::SetFlashL(TFlash /*aFlash = EFlashNone*/)
+	{
+	Panic(EPanicUnimplemented);
+	}
+
+CCamera::TFlash CCameraStub::Flash() const
+	{
+	Panic(EPanicUnimplemented);
+	return EFlashNone;
+	}
+
+void CCameraStub::SetExposureL(TExposure /*aExposure = EExposureAuto*/)
+	{
+	Panic(EPanicUnimplemented);
+	}
+
+CCamera::TExposure CCameraStub::Exposure() const
+	{
+	Panic(EPanicUnimplemented);
+	return EExposureAuto;
+	}
+
+void CCameraStub::SetWhiteBalanceL(TWhiteBalance /*aWhiteBalance = EWBAuto*/)
+	{
+	Panic(EPanicUnimplemented);
+	}
+
+
+CCamera::TWhiteBalance CCameraStub::WhiteBalance() const
+	{
+	Panic(EPanicUnimplemented);
+	return EWBAuto;
+	}
+
+void CCameraStub::StartViewFinderDirectL(RWsSession& /*aWs*/,CWsScreenDevice& /*aScreenDevice*/,RWindowBase& /*aWindow*/,TRect& /*aScreenRect*/)
+	{
+	Panic(EPanicUnimplemented);
+	}
+
+void CCameraStub::StartViewFinderDirectL(RWsSession& /*aWs*/,CWsScreenDevice& /*aScreenDevice*/,RWindowBase& /*aWindow*/,TRect& /*aScreenRect*/,TRect& /*aClipRect*/)
+	{
+	Panic(EPanicUnimplemented);
+	}
+
+void CCameraStub::StartViewFinderBitmapsL(TSize& /*aSize*/)
+	{
+	Panic(EPanicUnimplemented);
+	}
+	
+void CCameraStub::StartViewFinderBitmapsL(TSize& /*aSize*/,TRect& /*aClipRect*/)
+	{
+	Panic(EPanicUnimplemented);
+	}
+
+
+void CCameraStub::StartViewFinderL(TFormat /*aImageFormat*/,TSize& /*aSize*/)
+	{
+	Panic(EPanicUnimplemented);
+	}
+
+void CCameraStub::StartViewFinderL(TFormat /*aImageFormat*/,TSize& /*aSize*/,TRect& /*aClipRect*/)
+	{
+	Panic(EPanicUnimplemented);
+	}
+
+
+void CCameraStub::StopViewFinder()
+	{
+	Panic(EPanicUnimplemented);
+	}
+
+TBool CCameraStub::ViewFinderActive() const
+	{
+	Panic(EPanicUnimplemented);
+	return EFalse;
+	}
+
+void CCameraStub::SetViewFinderMirrorL(TBool /*aMirror*/)
+	{
+	Panic(EPanicUnimplemented);
+	}
+
+TBool CCameraStub::ViewFinderMirror() const
+	{
+	Panic(EPanicUnimplemented);
+	return EFalse;
+	}
+
+void CCameraStub::PrepareImageCaptureL(TFormat /*aImageFormat*/,TInt /*aSizeIndex*/)
+	{
+	Panic(EPanicUnimplemented);
+	}
+
+void CCameraStub::PrepareImageCaptureL(TFormat /*aImageFormat*/,TInt /*aSizeIndex*/,const TRect& /*aClipRect*/)
+	{
+	Panic(EPanicUnimplemented);
+	}
+
+
+void CCameraStub::CaptureImage()
+	{
+	Panic(EPanicUnimplemented);
+	}
+
+void CCameraStub::CancelCaptureImage()
+	{
+	Panic(EPanicUnimplemented);
+	}
+
+void CCameraStub::EnumerateCaptureSizes(TSize& /*aSize*/,TInt /*aSizeIndex*/,TFormat /*aFormat*/) const
+	{
+	Panic(EPanicUnimplemented);
+	}
+
+void CCameraStub::PrepareVideoCaptureL(TFormat /*aFormat*/,TInt /*aSizeIndex*/,TInt /*aRateIndex*/,TInt /*aBuffersToUse*/,TInt /*aFramesPerBuffer*/)
+	{
+	Panic(EPanicUnimplemented);
+	}
+
+void CCameraStub::PrepareVideoCaptureL(TFormat /*aFormat*/,TInt /*aSizeIndex*/,TInt /*aRateIndex*/,TInt /*aBuffersToUse*/,TInt /*aFramesPerBuffer*/,const TRect& /*aClipRect*/)
+	{
+	Panic(EPanicUnimplemented);
+	}
+
+void CCameraStub::StartVideoCapture()
+	{
+	Panic(EPanicUnimplemented);
+	}
+
+void CCameraStub::StopVideoCapture()
+	{
+	Panic(EPanicUnimplemented);
+	}
+
+TBool CCameraStub::VideoCaptureActive() const
+	{
+	Panic(EPanicUnimplemented);
+	return EFalse;
+	}
+
+void CCameraStub::EnumerateVideoFrameSizes(TSize& /*aSize*/,TInt /*aSizeIndex*/,TFormat /*aFormat*/) const
+	{
+	Panic(EPanicUnimplemented);
+	}
+
+void CCameraStub::EnumerateVideoFrameRates(TReal32& /*aRate*/,TInt /*aRateIndex*/,TFormat /*aFormat*/,TInt /*aSizeIndex*/,TExposure /*aExposure = EExposureAuto*/) const
+	{
+	Panic(EPanicUnimplemented);
+	}
+
+void CCameraStub::GetFrameSize(TSize& /*aSize*/) const
+	{
+	Panic(EPanicUnimplemented);
+	}
+
+TReal32 CCameraStub::FrameRate() const
+	{
+	Panic(EPanicUnimplemented);
+	return 0.0;
+	}
+
+TInt CCameraStub::BuffersInUse() const
+	{
+	Panic(EPanicUnimplemented);
+	return 0;
+	}
+
+TInt CCameraStub::FramesPerBuffer() const
+	{
+	Panic(EPanicUnimplemented);
+	return 0;
+	}
+
+void CCameraStub::SetJpegQuality(TInt /*aQuality*/)
+	{
+	Panic(EPanicUnimplemented);
+	}
+
+TInt CCameraStub::JpegQuality() const
+	{
+	Panic(EPanicUnimplemented);
+	return 0;
+	}
+
+TAny* CCameraStub::CustomInterface(TUid /*aInterface*/)
+	{
+	Panic(EPanicUnimplemented);
+	return NULL;
+	}
+
+
+//
+// CCameraStubInfo
+//
+
+CCameraStubInfo::CCameraStubInfo()
+	{
+	}
+	
+CCameraStubInfo::~CCameraStubInfo()
+	{
+	}
+	
+CCameraStubInfo* CCameraStubInfo::NewL()
+	{
+	return new (ELeave) CCameraStubInfo;
+	}
+	
+TInt CCameraStubInfo::CamerasAvailable()
+	{
+	return 0;
+	}
+
+
+// __________________________________________________________________________
+// Exported proxy for instantiation method resolution
+// Define the interface UIDs
+const TImplementationProxy ImplementationTable[] = 
+	{
+		IMPLEMENTATION_PROXY_ENTRY(KUidOnboardCameraStubPlugin,	CCameraStub::NewL),
+		IMPLEMENTATION_PROXY_ENTRY(KUidOnboardCameraStubInfo,	CCameraStubInfo::NewL)
+	};
+
+EXPORT_C const TImplementationProxy* ImplementationGroupProxy(TInt& aTableCount)
+	{
+	aTableCount = sizeof(ImplementationTable) / sizeof(TImplementationProxy);
+
+	return ImplementationTable;
+	}
--- a/mmplugins/cameraplugins/source/stub/ECamStubPlugin.h	Thu Mar 25 11:21:36 2010 +0900
+++ b/mmplugins/cameraplugins/source/stub/ECamStubPlugin.h	Tue Oct 19 11:48:59 2010 +0900
@@ -1,117 +1,117 @@
-// Copyright (c) 2004-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:
-//
-
-#ifndef ECAMSTUBPLUGIN_H
-#define ECAMSTUBPLUGIN_H
-
-#include <ecam/ecamplugin.h>
-#include <ecam/ecaminfoplugin.h>
-
-// Implementations of the ECam plugin classes
-
-class CCameraStub : public CCameraPlugin
-	{
-public:
-	static CCameraStub* NewL();
-	~CCameraStub();
-	
-protected:
-	// from CCameraPlugin
-	void Construct2L(MCameraObserver& aObserver,TInt aCameraIndex);
-	void Construct2DupL(MCameraObserver& aObserver,TInt aCameraHandle);
-	
-	void Construct2L(MCameraObserver2& aObserver,TInt aCameraIndex,TInt aPriority);
-	void Construct2DupL(MCameraObserver2& aObserver,TInt aCameraHandle);
-
-	// from CCamera itself
-	void CameraInfo(TCameraInfo& aInfo) const;
-	void Reserve();
-	void Release();
-	void PowerOn();
-	void PowerOff();
-	TInt Handle();
-	void SetZoomFactorL(TInt aZoomFactor = 0);
-	TInt ZoomFactor() const;
-	void SetDigitalZoomFactorL(TInt aDigitalZoomFactor = 0);
-	TInt DigitalZoomFactor() const;
-	void SetContrastL(TInt aContrast);
-	TInt Contrast() const;
-	void SetBrightnessL(TInt aBrightness);
-	TInt Brightness() const;
-	void SetFlashL(TFlash aFlash = EFlashNone);
-	TFlash Flash() const;
-	void SetExposureL(TExposure aExposure = EExposureAuto);
-	TExposure Exposure() const;
-	void SetWhiteBalanceL(TWhiteBalance aWhiteBalance = EWBAuto);
-	TWhiteBalance WhiteBalance() const;
-	void StartViewFinderDirectL(RWsSession& aWs,CWsScreenDevice& aScreenDevice,RWindowBase& aWindow,TRect& aScreenRect);
-	void StartViewFinderDirectL(RWsSession& aWs,CWsScreenDevice& aScreenDevice,RWindowBase& aWindow,TRect& aScreenRect,TRect& aClipRect);
-	void StartViewFinderBitmapsL(TSize& aSize);	
-	void StartViewFinderBitmapsL(TSize& aSize,TRect& aClipRect);
-	void StartViewFinderL(TFormat aImageFormat,TSize& aSize);
-	void StartViewFinderL(TFormat aImageFormat,TSize& aSize,TRect& aClipRect);
-	void StopViewFinder();
-	TBool ViewFinderActive() const;
-	void SetViewFinderMirrorL(TBool aMirror);
-	TBool ViewFinderMirror() const;
-	void PrepareImageCaptureL(TFormat aImageFormat,TInt aSizeIndex);
-	void PrepareImageCaptureL(TFormat aImageFormat,TInt aSizeIndex,const TRect& aClipRect);
-	void CaptureImage();
-	void CancelCaptureImage();
-	void EnumerateCaptureSizes(TSize& aSize,TInt aSizeIndex,TFormat aFormat) const;
-	void PrepareVideoCaptureL(TFormat aFormat,TInt aSizeIndex,TInt aRateIndex,TInt aBuffersToUse,TInt aFramesPerBuffer);
-	void PrepareVideoCaptureL(TFormat aFormat,TInt aSizeIndex,TInt aRateIndex,TInt aBuffersToUse,TInt aFramesPerBuffer,const TRect& aClipRect);
-	void StartVideoCapture();
-	void StopVideoCapture();
-	TBool VideoCaptureActive() const;
-	void EnumerateVideoFrameSizes(TSize& aSize,TInt aSizeIndex,TFormat aFormat) const;
-	void EnumerateVideoFrameRates(TReal32& aRate,TInt aRateIndex,TFormat aFormat,TInt aSizeIndex,TExposure aExposure = EExposureAuto) const;
-	void GetFrameSize(TSize& aSize) const;
-	TReal32 FrameRate() const;
-	TInt BuffersInUse() const;
-	TInt FramesPerBuffer() const;
-	void SetJpegQuality(TInt aQuality);
-	TInt JpegQuality() const;
-	TAny* CustomInterface(TUid aInterface);
-
-private:
-	CCameraStub();
-private:
-	MCameraObserver* iObserver; // not owned
-	MCameraObserver2* iObserver2; // not owned
-	TInt iCameraIndex;
-	TInt iCameraHandle;
-	TInt iPriority;
-	};
-	
-class CCameraStubInfo : public CCameraInfoPlugin
-	{
-public:
-	static CCameraStubInfo* NewL();
-	
-	~CCameraStubInfo();
-	
-	// from CCameraInfoPlugin
-	TInt CamerasAvailable();
-private:
-	CCameraStubInfo();	
-	};
-	
-enum TStubPanicReasons
-	{
-	EPanicUnimplemented=1
-	};
-	
-#endif // ECAMSTUBPLUGIN_H
+// Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of the License "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+#ifndef ECAMSTUBPLUGIN_H
+#define ECAMSTUBPLUGIN_H
+
+#include <ecam/ecamplugin.h>
+#include <ecam/ecaminfoplugin.h>
+
+// Implementations of the ECam plugin classes
+
+class CCameraStub : public CCameraPlugin
+	{
+public:
+	static CCameraStub* NewL();
+	~CCameraStub();
+	
+protected:
+	// from CCameraPlugin
+	void Construct2L(MCameraObserver& aObserver,TInt aCameraIndex);
+	void Construct2DupL(MCameraObserver& aObserver,TInt aCameraHandle);
+	
+	void Construct2L(MCameraObserver2& aObserver,TInt aCameraIndex,TInt aPriority);
+	void Construct2DupL(MCameraObserver2& aObserver,TInt aCameraHandle);
+
+	// from CCamera itself
+	void CameraInfo(TCameraInfo& aInfo) const;
+	void Reserve();
+	void Release();
+	void PowerOn();
+	void PowerOff();
+	TInt Handle();
+	void SetZoomFactorL(TInt aZoomFactor = 0);
+	TInt ZoomFactor() const;
+	void SetDigitalZoomFactorL(TInt aDigitalZoomFactor = 0);
+	TInt DigitalZoomFactor() const;
+	void SetContrastL(TInt aContrast);
+	TInt Contrast() const;
+	void SetBrightnessL(TInt aBrightness);
+	TInt Brightness() const;
+	void SetFlashL(TFlash aFlash = EFlashNone);
+	TFlash Flash() const;
+	void SetExposureL(TExposure aExposure = EExposureAuto);
+	TExposure Exposure() const;
+	void SetWhiteBalanceL(TWhiteBalance aWhiteBalance = EWBAuto);
+	TWhiteBalance WhiteBalance() const;
+	void StartViewFinderDirectL(RWsSession& aWs,CWsScreenDevice& aScreenDevice,RWindowBase& aWindow,TRect& aScreenRect);
+	void StartViewFinderDirectL(RWsSession& aWs,CWsScreenDevice& aScreenDevice,RWindowBase& aWindow,TRect& aScreenRect,TRect& aClipRect);
+	void StartViewFinderBitmapsL(TSize& aSize);	
+	void StartViewFinderBitmapsL(TSize& aSize,TRect& aClipRect);
+	void StartViewFinderL(TFormat aImageFormat,TSize& aSize);
+	void StartViewFinderL(TFormat aImageFormat,TSize& aSize,TRect& aClipRect);
+	void StopViewFinder();
+	TBool ViewFinderActive() const;
+	void SetViewFinderMirrorL(TBool aMirror);
+	TBool ViewFinderMirror() const;
+	void PrepareImageCaptureL(TFormat aImageFormat,TInt aSizeIndex);
+	void PrepareImageCaptureL(TFormat aImageFormat,TInt aSizeIndex,const TRect& aClipRect);
+	void CaptureImage();
+	void CancelCaptureImage();
+	void EnumerateCaptureSizes(TSize& aSize,TInt aSizeIndex,TFormat aFormat) const;
+	void PrepareVideoCaptureL(TFormat aFormat,TInt aSizeIndex,TInt aRateIndex,TInt aBuffersToUse,TInt aFramesPerBuffer);
+	void PrepareVideoCaptureL(TFormat aFormat,TInt aSizeIndex,TInt aRateIndex,TInt aBuffersToUse,TInt aFramesPerBuffer,const TRect& aClipRect);
+	void StartVideoCapture();
+	void StopVideoCapture();
+	TBool VideoCaptureActive() const;
+	void EnumerateVideoFrameSizes(TSize& aSize,TInt aSizeIndex,TFormat aFormat) const;
+	void EnumerateVideoFrameRates(TReal32& aRate,TInt aRateIndex,TFormat aFormat,TInt aSizeIndex,TExposure aExposure = EExposureAuto) const;
+	void GetFrameSize(TSize& aSize) const;
+	TReal32 FrameRate() const;
+	TInt BuffersInUse() const;
+	TInt FramesPerBuffer() const;
+	void SetJpegQuality(TInt aQuality);
+	TInt JpegQuality() const;
+	TAny* CustomInterface(TUid aInterface);
+
+private:
+	CCameraStub();
+private:
+	MCameraObserver* iObserver; // not owned
+	MCameraObserver2* iObserver2; // not owned
+	TInt iCameraIndex;
+	TInt iCameraHandle;
+	TInt iPriority;
+	};
+	
+class CCameraStubInfo : public CCameraInfoPlugin
+	{
+public:
+	static CCameraStubInfo* NewL();
+	
+	~CCameraStubInfo();
+	
+	// from CCameraInfoPlugin
+	TInt CamerasAvailable();
+private:
+	CCameraStubInfo();	
+	};
+	
+enum TStubPanicReasons
+	{
+	EPanicUnimplemented=1
+	};
+	
+#endif // ECAMSTUBPLUGIN_H
--- a/mmplugins/cameraplugins/source/testcamera/102070CC.RSS	Thu Mar 25 11:21:36 2010 +0900
+++ b/mmplugins/cameraplugins/source/testcamera/102070CC.RSS	Tue Oct 19 11:48:59 2010 +0900
@@ -1,57 +1,56 @@
-// Copyright (c) 2005-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:
-//
-
-#include <ecom/registryinfo.rh>
-#include <ecamuids.hrh>
-#include "TestCameraUids.hrh"
-
-RESOURCE REGISTRY_INFO theInfo
-	{
-	dll_uid = KUidOnboardCameraTestDll;
-	interfaces = 
-		{
-		INTERFACE_INFO
-			{
-			interface_uid = KUidOnboardCameraPlugin;
-			implementations = 
-				{
-				IMPLEMENTATION_INFO
-					{
-					implementation_uid = KUidOnboardCameraTestPlugin;
-					version_no = 3;
-					display_name ="ECam Test Plugin";
-					opaque_data = "0;";
-					default_data="*";
-					}
-				};
-			},
-		INTERFACE_INFO
-			{
-			interface_uid = KUidOnboardCameraInfoPlugin;
-			implementations = 
-				{
-				IMPLEMENTATION_INFO
-					{
-					implementation_uid = KUidOnboardCameraTestInfo;
-					version_no = 3;
-					display_name = "ECam Test InfoPlugin";
-					opaque_data = "0;";
-					default_data="*";
-					}
-				};
-			}
-		};
-	}
-
+// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of the License "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+#include <ecom/registryinfo.rh>
+#include <ecamuids.hrh>
+#include "TestCameraUids.hrh"
+
+RESOURCE REGISTRY_INFO theInfo
+	{
+	dll_uid = KUidOnboardCameraTestDll;
+	interfaces = 
+		{
+		INTERFACE_INFO
+			{
+			interface_uid = KUidOnboardCameraPlugin;
+			implementations = 
+				{
+				IMPLEMENTATION_INFO
+					{
+					implementation_uid = KUidOnboardCameraTestPlugin;
+					version_no = 3;
+					display_name ="ECam Test Plugin";
+					opaque_data = "0;";
+					default_data="*";
+					}
+				};
+			},
+		INTERFACE_INFO
+			{
+			interface_uid = KUidOnboardCameraInfoPlugin;
+			implementations = 
+				{
+				IMPLEMENTATION_INFO
+					{
+					implementation_uid = KUidOnboardCameraTestInfo;
+					version_no = 3;
+					display_name = "ECam Test InfoPlugin";
+					opaque_data = "0;";
+					default_data="*";
+					}
+				};
+			}
+		};
+	}
--- a/mmplugins/cameraplugins/source/testcamera/TestCamera.cpp	Thu Mar 25 11:21:36 2010 +0900
+++ b/mmplugins/cameraplugins/source/testcamera/TestCamera.cpp	Tue Oct 19 11:48:59 2010 +0900
@@ -1,1564 +1,1555 @@
-// Copyright (c) 2002-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:
-//
-
-#include <w32std.h>
-#include <ecom/ecom.h>
-#include <ecom/implementationproxy.h>
-#include <f32file.h> 
-#include "TestCamera.h"
-#include "test_advanced_settings.h"
-#include "test_snapshot.h"
-#include "test_image_processing.h"
-#include "TestCameraUids.hrh"
-#include <ecam.h>
-
-//
-// Main stuff
-//
-// 
-// 2nd stage ConstructL calls called by framework
-//
-CTestCamera* CTestCamera::NewL()
-	{
-	FileDependencyUtil::CheckFileDependencyL();
-   	CTestCamera* self = new(ELeave) CTestCamera;
-	CleanupStack::PushL(self);
-	self->ConstructL();
-	CleanupStack::Pop(self);
-	return self;
-	}
-
-void CTestCamera::Construct2L(MCameraObserver& aObserver,TInt aCameraIndex)
-	{
-	iObserver = &aObserver;
-	iCameraIndex = aCameraIndex;
-	}
-	
-void CTestCamera::Construct2DupL(MCameraObserver& aObserver,TInt aCameraHandle)
-	{
-	iObserver = &aObserver;
-	iCameraHandle = aCameraHandle;
-	}
-
-void CTestCamera::ConstructL()	
-	{
-	
-	TInt err;
-	TRAP(err, iScreenDev = CFbsScreenDevice::NewL(_L(""),EColor16MA));
-	if (err == KErrNotSupported)
-		{
-		TRAP(err, iScreenDev = CFbsScreenDevice::NewL(_L(""),EColor16M));
-		}
-	if (err == KErrNotSupported)
-		{
-		TRAP(err, iScreenDev = CFbsScreenDevice::NewL(_L(""),EColor64K));
-		}
-	if (err == KErrNotSupported)
-		{
-		TRAP(err, iScreenDev = CFbsScreenDevice::NewL(_L(""),EColor4K));
-		}
-	if (err == KErrNotSupported)
-		{
-		TRAP(err, iScreenDev = CFbsScreenDevice::NewL(_L(""),EColor256));
-		}
-	if (err == KErrNotSupported)
-		{
-		iScreenDev = CFbsScreenDevice::NewL(_L(""),EColor16MAP);
-		}		
-	else
-		{
-		User::LeaveIfError(err);		
-		}
-
-	User::LeaveIfError(iScreenDev->CreateContext(iScreenGc));
-	User::LeaveIfError(iImageSizes.Append( TSize(640, 480) )); // VGA
-	User::LeaveIfError(iImageSizes.Append( TSize(160, 120) )); // QQVGA
-	iInfo.iNumImageSizesSupported = iImageSizes.Count();
-	iStillImageSize = iImageSizes[1]; // Defaults to QQVGA
-
-	User::LeaveIfError(iVideoFrameSizes.Append( TSize(176, 144) )); // QCIF
-	User::LeaveIfError(iVideoFrameSizes.Append( TSize(128, 96) ));  // subQCIF
-	iInfo.iNumVideoFrameSizesSupported = iVideoFrameSizes.Count();
-	User::LeaveIfError(iVideoFrameRates.Append( 10.00 ));
-	User::LeaveIfError(iVideoFrameRates.Append(  5.00 ));
-	User::LeaveIfError(iVideoFrameRates.Append(  1.00 ));
-	iInfo.iNumVideoFrameRatesSupported = iVideoFrameRates.Count();
-	iVideoFrameRate = iVideoFrameRates[0];
-	// Still image used as view finder source if not defined otherwise
-	iStillImage = new(ELeave) CFbsBitmap;
-	User::LeaveIfError(iStillImage->Create(iStillImageSize, KViewFinderDisplayMode));
-	iStillImageDev = CFbsBitmapDevice::NewL(iStillImage);
-	User::LeaveIfError(iStillImageDev->CreateContext(iStillImageGc));
-	iStillImageGc->SetPenColor(KRgbBlack);
-	iStillImageGc->SetPenSize(TSize(KFrameFeatureBorderThickness, KFrameFeatureBorderThickness));
-	iStillImageGc->SetBrushColor(KRgbWhite);
-	iStillImageGc->SetFaded(ETrue);
-	iVideoPreparedLast = EFalse;
-	iTimer = CPeriodic::NewL(CActive::EPriorityHigh);
-	}
-
-
-void CTestCamera::Construct2L(MCameraObserver2& aObserver,TInt aCameraIndex,TInt aPriority)
-	{
-	iObserver2 = &aObserver;
-	iCameraIndex = aCameraIndex;
-	iPriority = aPriority;
-	}
-	
-void CTestCamera::Construct2DupL(MCameraObserver2& aObserver,TInt aCameraHandle)
-	{
-	iObserver2 = &aObserver;
-	iCameraHandle = aCameraHandle;
-	}
-	
-
-CTestCamera::CTestCamera():
-	iStillImageFormat(KInitialViewFinderFormat),
-	iReserveAsync(CActive::EPriorityStandard),
-	iPowerOnAsync(CActive::EPriorityStandard),
-	iImageCaptureAsync(CActive::EPriorityStandard),
-	iVideoCaptureAsync(CActive::EPriorityStandard),
-	iHandleEventAsync(CActive::EPriorityStandard),
-	iHandleEvent2Async(CActive::EPriorityStandard),	
-	iFrameBuffer1(iVideoFrame1),
-	iFrameBuffer2(iVideoFrame2),
-	iFrameCameraBuffer1(iVideoFrame1),
-	iFrameCameraBuffer2(iVideoFrame2),
-	iContrast(0),
-	iBrightness(0),
-	iImgProcBrightness(0),
-	iImgProcContrast(0),
-	iVideoCaptureActive(EFalse),
-	iImageCaptureActive(EFalse),
-	iVideoPreparedLast(EFalse),
-	iVideoCapturePrepared(EFalse),
-	iImageCapturePrepared(EFalse),
-	iECamEvent(KNullUid, KErrNone),
-	iECamEvent2(KNullUid, KErrNone, 0),
-	iAdvSettingsImpl(NULL),
-	iSnapshotImpl(NULL),
-	iImgProcImpl(NULL),
-	iDriveMode(KDefaultDriveMode),
-	iBurstImages(KBurstImages)
-	{
-	TCallBack reserveCallBack(ReserveCallBack,this);
-	iReserveAsync.Set(reserveCallBack);
-	TCallBack powerOnCallBack(PowerOnCallBack,this);
-	iPowerOnAsync.Set(powerOnCallBack);
-	TCallBack imageCaptureCallBack(ImageCaptureCallBack,this);
-	iImageCaptureAsync.Set(imageCaptureCallBack);
-	TCallBack videoCaptureCallBack(VideoCaptureCallBack,this);
-	iVideoCaptureAsync.Set(videoCaptureCallBack);
-	TCallBack handleEventCallBack(HandleEventCallBack,this);
-	iHandleEventAsync.Set(handleEventCallBack);
-	TCallBack handleEvent2CallBack(HandleEvent2CallBack,this);
-	iHandleEvent2Async.Set(handleEvent2CallBack);
-
-	iInfo.iHardwareVersion.iMajor = 0;
-	iInfo.iHardwareVersion.iMinor = 0;
-	iInfo.iHardwareVersion.iBuild = 0;
-	iInfo.iSoftwareVersion.iMajor = 0;
-	iInfo.iSoftwareVersion.iMinor = 0;
-	iInfo.iSoftwareVersion.iBuild = 0;
-	iInfo.iOrientation = TCameraInfo::EOrientationOutwards;
-
-	iInfo.iOptionsSupported = 0;
-	iInfo.iOptionsSupported |= TCameraInfo::EViewFinderDirectSupported;
-	iInfo.iOptionsSupported |= TCameraInfo::EViewFinderBitmapsSupported;
-	iInfo.iOptionsSupported |= TCameraInfo::EImageCaptureSupported;
-	iInfo.iOptionsSupported |= TCameraInfo::EVideoCaptureSupported;
-	iInfo.iOptionsSupported |= TCameraInfo::EContrastSupported;
-	iInfo.iOptionsSupported |= TCameraInfo::EBrightnessSupported;
-	iInfo.iOptionsSupported |= TCameraInfo::EViewFinderClippingSupported;
-
-	iInfo.iFlashModesSupported = 0; // Bitfield of TFlash values
-	iInfo.iExposureModesSupported = 0; // Bitfield of TExposure values
-	iInfo.iWhiteBalanceModesSupported = 0; // Bitfield of TWhiteBalance values
-
-	iInfo.iMinZoom = KMinTestCameraZoom;
-	// KMinTestCameraZoom is zero or negative
-	// note the algorithm for creating of zoom factor
-	iInfo.iMinZoomFactor = TReal32(1)/TReal32(1 << -KMinTestCameraZoom);
-	iInfo.iMaxZoom = KMaxTestCameraZoom;
-	iInfo.iMaxZoomFactor = 1 << KMaxTestCameraZoom;
-
-	iInfo.iMaxDigitalZoom = KMaxTestCameraDigitalZoom;
-	iInfo.iMaxDigitalZoomFactor = KMaxTestCameraDigitalZoomFactor;
-
-	iInfo.iImageFormatsSupported = 0;
-	iInfo.iImageFormatsSupported |= EFormatFbsBitmapColor4K;
-	iInfo.iImageFormatsSupported |= EFormatFbsBitmapColor64K;
-	iInfo.iImageFormatsSupported |= EFormatFbsBitmapColor16M;
-
-	iInfo.iVideoFrameFormatsSupported = 0;
-	iInfo.iVideoFrameFormatsSupported |= EFormatFbsBitmapColor4K;
-	iInfo.iVideoFrameFormatsSupported |= EFormatFbsBitmapColor64K;
-	iInfo.iVideoFrameFormatsSupported |= EFormatFbsBitmapColor16M;
-	iInfo.iMaxFramesPerBufferSupported = 1;
-	iInfo.iMaxBuffersSupported = 2;
-	
-	iScreenRect = TRect(TPoint(0,0), TPoint(0,0));
-	
-	iEventError = KErrNone;
-	}
-	
-CTestCamera::~CTestCamera()
-	{
-	delete iTimer;
-	delete iStillImage;
-	delete iStillImageGc;
-	delete iStillImageDev;
-	delete iVideoFrame1;
-	delete iVideoFrameGc1;
-	delete iVideoFrameDev1;
-	delete iVideoFrame2;
-	delete iVideoFrameGc2;
-	delete iVideoFrameDev2;
-	delete iViewFinderBitmapGc;
-	delete iViewFinderBitmapDev;
-	delete iViewFinderBitmap;
-	delete iDSA;
-	delete iScreenGc;
-	delete iScreenDev;
-	delete iGc;
-	delete iDev;
-	delete iImage;
-	delete iAdvSettingsImpl;
-	delete iSnapshotImpl;
-	delete iImgProcImpl;
-	iImageSizes.Reset();
-	iVideoFrameSizes.Reset();
-	iVideoFrameRates.Reset();
-	}
-
-void CTestCamera::CameraInfo(TCameraInfo& aInfo) const
-	{
-	aInfo = iInfo;
-	}
-
-void CTestCamera::Reserve()
-	{
-	iReserved = ETrue;
-	iReserveAsync.CallBack();
-	}
-
-void CTestCamera::Release()
-	{
-	iReserved = EFalse;
-	iTimer->Cancel();
-	}
-
-void CTestCamera::PowerOn()
-	{
-	if (!iReserved || iPowerOn)
-		{
-		iPowerOnAsync.CallBack();
-		return;
-		}
-
-	iPowerOn = ETrue;
-	TCallBack callback(TimerCallBack,this);
-	iTimer->Start(0,TInt(TReal32(1000000) / iVideoFrameRate), callback);
-	iPowerOnAsync.CallBack();
-	}
-
-void CTestCamera::PowerOff()
-	{
-	iPowerOn = EFalse;
-	iTimer->Cancel();
-	}
-
-TInt CTestCamera::Handle()
-	{
-	return 0;
-	}
-
-void CTestCamera::SetZoomFactorL(TInt aZoomFactor)
-	{
-	// it is equivalent to comparing with iInfo members as they are initialised with the same constants
-	// if (aZoomFactor < iInfo.iMinZoom || aZoomFactor > iInfo.iMaxZoom)
-	if (aZoomFactor < KMinTestCameraZoom || aZoomFactor > KMaxTestCameraZoom)
-		{
-		User::Leave(KErrNotSupported);	
-		}
-
-	iZoom = aZoomFactor;
-	}
-
-TInt CTestCamera::ZoomFactor() const
-	{
-	// default value is 0
-	return iZoom;
-	}
-
-void CTestCamera::SetDigitalZoomFactorL(TInt aDigitalZoomFactor)
-	{
-	CheckReserveAndPowerL();
-	// it is equivalent to comparing with iInfo member as it is initialised with the same constant
-	// if (aDigitalZoomFactor < 0 || aDigitalZoomFactor > iInfo.iMaxDigitalZoom)
-	if (aDigitalZoomFactor < 0 || aDigitalZoomFactor > KMaxTestCameraDigitalZoom)
-		{
-		User::Leave(KErrNotSupported);	
-		}
-
-	iDigitalZoom = aDigitalZoomFactor;
-	}
-
-TInt CTestCamera::DigitalZoomFactor() const
-	{
-	// default value is 0
-	return iDigitalZoom;
-	}
-
-void CTestCamera::SetContrastL(TInt aContrast)
-	{
-	CheckReserveAndPowerL();
-
-	iContrast = Min(Max(aContrast,-100),100);
-	}
-
-TInt CTestCamera::Contrast() const
-	{
-	return iContrast;
-	}
-
-void CTestCamera::SetBrightnessL(TInt aBrightness)
-	{
-	CheckReserveAndPowerL();
-
-	iBrightness = Min(Max(aBrightness,-100),100);
-	}
-
-TInt CTestCamera::Brightness() const
-	{
-	return iBrightness;
-	}
-
-void CTestCamera::SetFlashL(TFlash aFlash)
-	{
-	CheckReserveAndPowerL();
-
-	if (aFlash != EFlashNone)
-		{
-		User::Leave(KErrNotSupported);	
-		}
-	}
-
-CCamera::TFlash CTestCamera::Flash() const
-	{
-	return EFlashNone;
-	}
-
-void CTestCamera::SetExposureL(TExposure aExposure)
-	{
-	CheckReserveAndPowerL();
-
-	if (aExposure != EExposureAuto)
-		{
-		User::Leave(KErrNotSupported);
-		}
-	}
-
-CCamera::TExposure CTestCamera::Exposure() const
-	{
-	return EExposureAuto;
-	}
-
-void CTestCamera::SetWhiteBalanceL(TWhiteBalance aWhiteBalance)
-	{
-	CheckReserveAndPowerL();
-
-	if (aWhiteBalance != EWBAuto)
-		{
-		User::Leave(KErrNotSupported);
-		}
-	}
-
-CCamera::TWhiteBalance CTestCamera::WhiteBalance() const
-	{
-	return EWBAuto;
-	}
-
-void CTestCamera::StartViewFinderDirectL(RWsSession& aWs,CWsScreenDevice& aScreenDevice,RWindowBase& aWindow,TRect& aScreenRect)
-	{
-	TRect emptyRect;
-	StartViewFinderDirectL(aWs,aScreenDevice,aWindow,aScreenRect,emptyRect);
-	}
-
-void CTestCamera::StartViewFinderDirectL(RWsSession& aWs,CWsScreenDevice& aScreenDevice,RWindowBase& aWindow,TRect& aScreenRect,TRect& aClipRect)
-	{
-	if (!iReserved)
-		{
-		User::Leave(KErrInUse);		
-		}
-		
-	if (!iPowerOn || iViewFinderActive)
-		{
-		User::Leave(KErrNotReady);	
-		}
-
-	iScreenRect = aScreenRect;
-	iClipRect = aClipRect;
-
-	delete iDSA;
-	iDSA = NULL;
-	iViewFinderActive = EFalse;
-	iDSA = CDirectScreenAccess::NewL(aWs,aScreenDevice,aWindow,*this);
-	iDSA->StartL();
-	iViewFinderActive = ETrue;
-	iDSA->Gc()->SetOrigin(); // Set Origin to top left of screen (0,0)
-
-	if (!iClipRect.IsEmpty())
-		{
-		iDSA->Gc()->SetClippingRect(iClipRect);	
-		}
-	}
-
-void CTestCamera::StartViewFinderBitmapsL(TSize& aSize)
-	{
-	TRect emptyRect;
-	StartViewFinderBitmapsL(aSize,emptyRect);
-	}
-
-void CTestCamera::StartViewFinderBitmapsL(TSize& aSize, TRect& aClipRect)
-	{
-	if (!iReserved)
-		{
-		User::Leave(KErrInUse);
-		}
-	if (!iPowerOn || iViewFinderActive)
-		{
-		User::Leave(KErrNotReady);
-		}
-
-	iViewFinderActive = ETrue;
-	iScreenRect = TRect(TPoint(0,0), aSize);
-	iClipRect = aClipRect;
-	iClipRect.Intersection(iScreenRect);
-
-	delete iViewFinderBitmapGc;
-	iViewFinderBitmapGc = NULL;
-	delete iViewFinderBitmapDev;
-	iViewFinderBitmapDev = NULL;
-	delete iViewFinderBitmap;
-	iViewFinderBitmap = NULL;
-
-	iViewFinderBitmap = new(ELeave) CFbsBitmap;
-	if (!iClipRect.IsEmpty())
-		{
-		User::LeaveIfError(iViewFinderBitmap->Create(iClipRect.Size(), KViewFinderDisplayMode));		
-		}
-	else
-		{
-		User::LeaveIfError(iViewFinderBitmap->Create(aSize, KViewFinderDisplayMode));		
-		}
-	iViewFinderBitmapDev = CFbsBitmapDevice::NewL(iViewFinderBitmap);
-	User::LeaveIfError(iViewFinderBitmapDev->CreateContext(iViewFinderBitmapGc));
-	}
-	
-void CTestCamera::StartViewFinderL(TFormat aImageFormat,TSize& aSize)
-       {
-       TRect emptyRect;
-       StartViewFinderL(aImageFormat,aSize,emptyRect);
-       }
-	
-void CTestCamera::StartViewFinderL(TFormat aImageFormat,TSize& /*aSize*/,TRect& aClipRect)	
-       {
-     	if(!iReserved)
-     		{
-     		User::Leave(KErrInUse);
-     		}
-		if(!iPowerOn || iViewFinderActive)
-			{
-			User::Leave(KErrNotReady);
-			}
-		
-		iViewFinderActive = ETrue;
-		iClipRect = aClipRect;
-		if(!(aImageFormat & iInfo.iImageFormatsSupported))
-			{
-			 User::Leave(KErrNotSupported);
-			}
-       }
-       
-
-void CTestCamera::StopViewFinder()
-	{
-	iViewFinderActive = EFalse;
-	delete iDSA;
-	iDSA = NULL;
-
-	delete iViewFinderBitmapGc;
-	iViewFinderBitmapGc = NULL;
-	delete iViewFinderBitmapDev;
-	iViewFinderBitmapDev = NULL;
-	delete iViewFinderBitmap;
-	iViewFinderBitmap = NULL;
-	}
-
-TBool CTestCamera::ViewFinderActive() const
-	{
-	return iViewFinderActive;
-	}
-
-void CTestCamera::SetViewFinderMirrorL(TBool aMirror)
-	{
-	if (aMirror)
-		{
-		User::Leave(KErrNotSupported);	
-		}
-	}
-
-TBool CTestCamera::ViewFinderMirror() const
-	{
-	return EFalse;
-	}
-
-void CTestCamera::PrepareImageCaptureL(TFormat aImageFormat,TInt aSizeIndex)
-	{
-	if (!iReserved)
-		{
-		User::Leave(KErrInUse);
-		}
-		
-	if (!iPowerOn || iVideoCaptureActive || iImageCaptureActive)
-		{
-		User::Leave(KErrNotReady);
-		}
-		
-
-	if (!(aImageFormat & iInfo.iImageFormatsSupported) || aSizeIndex < 0
-		|| aSizeIndex >= iInfo.iNumImageSizesSupported)
-		{
-		User::Leave(KErrNotSupported);
-		}
-
-	iVideoPreparedLast = EFalse;
-
-	if (iImageCapturePrepared
-		&& iStillImageSize == iImageSizes[aSizeIndex]
-		&& iStillImageFormat == aImageFormat)
-		{
-		return;
-		}
-
-	iStillImageSize = iImageSizes[aSizeIndex];
-	iStillImageFormat = aImageFormat;
-
-	TDisplayMode displayMode = ENone;
-	switch (iStillImageFormat)
-		{
-		case EFormatFbsBitmapColor4K :
-			displayMode = EColor4K;
-			break;
-		case EFormatFbsBitmapColor64K :
-			displayMode = EColor64K;
-			break;
-		case EFormatFbsBitmapColor16M :
-			displayMode = EColor16M;
-			break;
-		default :
-			User::Leave(KErrNotSupported);
-			break;
-		}
-
-	delete iStillImageGc;
-	iStillImageGc = NULL;
-	delete iStillImageDev;
-	iStillImageDev = NULL;
-	delete iStillImage;
-	iStillImage = NULL;
-
-	iStillImage = new(ELeave) CFbsBitmap;
-	User::LeaveIfError(iStillImage->Create(iStillImageSize, displayMode));
-	iStillImageDev = CFbsBitmapDevice::NewL(iStillImage);
-	User::LeaveIfError(iStillImageDev->CreateContext(iStillImageGc));
-	iStillImageGc->SetPenColor(KRgbBlack);
-	iStillImageGc->SetPenSize(TSize(KFrameFeatureBorderThickness, KFrameFeatureBorderThickness));
-	iStillImageGc->SetBrushColor(KRgbWhite);
-	iStillImageGc->SetFaded(ETrue);
-	iImageCapturePrepared = ETrue;
-	}
-
-void CTestCamera::PrepareImageCaptureL(TFormat /*aImageFormat*/,TInt /*aSizeIndex*/,const TRect& /*aClipRect*/)
-	{
-	User::Leave(KErrNotSupported);
-	}
-
-void CTestCamera::CaptureImage()
-	{
-	if (!iReserved)
-		{
-		iStillCaptureErr = KErrInUse;
-		}
-		
-	if (!iPowerOn || iImageCaptureActive || iVideoCaptureActive || !iImageCapturePrepared)
-		{
-		iStillCaptureErr = KErrNotReady;
-		}
-
-	if (iStillCaptureErr == KErrNone)
-		{
-		TRAP(iStillCaptureErr,DoCaptureImageL());
-		}
-
-	if (iStillCaptureErr == KErrNone)
-		{
-		iImageCaptureActive = ETrue;
-		}
-	else
-		{
-		iImageCaptureAsync.CallBack();
-		}
-	}
-
-void CTestCamera::DoCaptureImageL()
-	{
-	delete iGc;
-	iGc = NULL;
-	delete iDev;
-	iDev = NULL;
-	delete iImage;
-	iImage = NULL;
-
-	CFbsBitmap* image = new(ELeave) CFbsBitmap;
-	CleanupStack::PushL(image);
-	User::LeaveIfError(image->Create(iStillImageSize, iStillImage->DisplayMode()));
-	CFbsBitmapDevice* dev = CFbsBitmapDevice::NewL(image);
-	CleanupStack::PushL(dev);
-	CFbsBitGc* gc = NULL;
-	User::LeaveIfError(dev->CreateContext(gc));
-	CleanupStack::Pop(dev);
-	CleanupStack::Pop(image);
-
-	iImage = image;
-	iDev = dev;
-	iGc = gc;
-	}
-
-void CTestCamera::CancelCaptureImage()
-	{
-	iImageCaptureActive = EFalse;
-	}
-
-void CTestCamera::EnumerateCaptureSizes(TSize& aSize,TInt aSizeIndex,TFormat aFormat) const
-	{
-	if (aSizeIndex < 0 || aSizeIndex >= iInfo.iNumImageSizesSupported ||
-		!(aFormat & iInfo.iImageFormatsSupported) )
-		{
-		aSize = TSize(0,0);
-		}
-	else
-		{
-		aSize = iImageSizes[aSizeIndex];
-		}
-	}
-
-void CTestCamera::PrepareVideoCaptureL(TFormat aFormat,TInt aSizeIndex,TInt aRateIndex,TInt aBuffersToUse,TInt aFramesPerBuffer)
-	{
-	if (!iReserved)
-		{
-		User::Leave(KErrInUse);
-		}
-		
-	if (!iPowerOn || iVideoCaptureActive || iImageCaptureActive)
-		{
-		User::Leave(KErrNotReady);
-		}
-
-	if (!(aFormat & iInfo.iVideoFrameFormatsSupported) 
-		|| aSizeIndex < 0 || aSizeIndex >= iInfo.iNumVideoFrameSizesSupported
-		|| aRateIndex < 0 || aRateIndex >= iInfo.iNumVideoFrameRatesSupported
-		|| aBuffersToUse != 2 || aFramesPerBuffer != 1)
-		{
-		User::Leave(KErrNotSupported);
-		}
-
-	iVideoPreparedLast = ETrue;
-
-	if (iVideoCapturePrepared 
-		&& iVideoFrameSize == iVideoFrameSizes[aSizeIndex]
-		&& iVideoFrameFormat == aFormat)
-		{
-		return;
-		}
-
-	TDisplayMode displayMode = ENone;
-	switch (aFormat)
-		{
-		case EFormatFbsBitmapColor4K :
-			displayMode = EColor4K;
-			break;
-		case EFormatFbsBitmapColor64K :
-			displayMode = EColor64K;
-			break;
-		case EFormatFbsBitmapColor16M :
-			displayMode = EColor16M;
-			break;
-		default :
-			User::Leave(KErrNotSupported);
-			break;
-		}
-
-	iVideoFrameSize = iVideoFrameSizes[aSizeIndex];
-	iVideoFrameRate = iVideoFrameRates[aRateIndex];
-	iVideoFrameFormat = aFormat;
-	iBuffersInUse = aBuffersToUse;
-
-	delete iVideoFrameGc1;
-	iVideoFrameGc1 = NULL;
-	delete iVideoFrameDev1;
-	iVideoFrameDev1 = NULL;
-	delete iVideoFrame1;
-	iVideoFrame1 = NULL;
-
-	delete iVideoFrameGc2;
-	iVideoFrameGc2 = NULL;
-	delete iVideoFrameDev2;
-	iVideoFrameDev2 = NULL;
-	delete iVideoFrame2;
-	iVideoFrame2 = NULL;
-
-	iVideoFrame1 = new(ELeave) CFbsBitmap;
-	User::LeaveIfError(iVideoFrame1->Create(iVideoFrameSize, displayMode));
-	iVideoFrameDev1 = CFbsBitmapDevice::NewL(iVideoFrame1);
-	User::LeaveIfError(iVideoFrameDev1->CreateContext(iVideoFrameGc1));
-	iVideoFrameGc1->SetPenColor(KRgbBlack);
-	iVideoFrameGc1->SetPenSize(TSize(KFrameFeatureBorderThickness, KFrameFeatureBorderThickness));
-	iVideoFrameGc1->SetBrushColor(KRgbWhite);
-	iVideoFrameGc1->SetFaded(ETrue);
-
-	if (iBuffersInUse == 2)
-		{
-		iVideoFrame2 = new(ELeave) CFbsBitmap;
-		User::LeaveIfError(iVideoFrame2->Create(iVideoFrameSize, displayMode));
-		iVideoFrameDev2 = CFbsBitmapDevice::NewL(iVideoFrame2);
-		User::LeaveIfError(iVideoFrameDev1->CreateContext(iVideoFrameGc2));
-		iVideoFrameGc2->SetPenColor(KRgbBlack);
-		iVideoFrameGc2->SetPenSize(TSize(KFrameFeatureBorderThickness, KFrameFeatureBorderThickness));
-		iVideoFrameGc2->SetBrushColor(KRgbWhite);
-		iVideoFrameGc2->SetFaded(ETrue);		
-		}
-
-	iVideoCapturePrepared = ETrue;
-	}
-
-void CTestCamera::PrepareVideoCaptureL(TFormat /*aFormat*/,TInt /*aSizeIndex*/,TInt /*aRateIndex*/,TInt /*aBuffersToUse*/,TInt /*aFramesPerBuffer*/,const TRect& /*aClipRect*/)
-	{
-	User::Leave(KErrNotSupported);
-	}
-
-void CTestCamera::StartVideoCapture()
-	{
-	if (!iReserved)
-		{
-		iVideoCaptureErr = KErrInUse;
-		}
-		
-	if (!iPowerOn || iImageCaptureActive || iVideoCaptureActive || !iVideoCapturePrepared)
-		{
-		iVideoCaptureErr = KErrNotReady;
-		}
-		
-	if (iVideoCaptureErr == KErrNone)
-		{
-		iVideoCaptureActive = ETrue;
-		}
-		
-	else
-		{
-		iVideoCaptureAsync.CallBack();
-		}
-	}
-
-void CTestCamera::StopVideoCapture()
-	{
-	iVideoCaptureActive = EFalse;
-	iFrameIndex = 0;
-	iElapsedTime = 0;
-	}
-
-TBool CTestCamera::VideoCaptureActive() const
-	{
-	return iVideoCaptureActive;
-	}
-
-void CTestCamera::EnumerateVideoFrameSizes(TSize& aSize,TInt aSizeIndex,TFormat aFormat) const
-	{
-	if (aSizeIndex < 0 || aSizeIndex >= iInfo.iNumVideoFrameSizesSupported ||
-		!(aFormat & iInfo.iVideoFrameFormatsSupported))
-		{
-		aSize = TSize(0,0);
-		}
-	else
-		{
-		aSize = iVideoFrameSizes[aSizeIndex];
-		}
-	}
-
-void CTestCamera::EnumerateVideoFrameRates(TReal32& aRate,TInt aRateIndex,TFormat aFormat,TInt aSizeIndex,TExposure aExposure) const
-	{
-	if (aRateIndex < 0 || aRateIndex >= iInfo.iNumVideoFrameRatesSupported ||
-		aSizeIndex < 0 || aSizeIndex >= iInfo.iNumVideoFrameSizesSupported ||
-		!(aFormat & iInfo.iVideoFrameFormatsSupported) ||
-		(!(aExposure & iInfo.iExposureModesSupported) && aExposure != CCamera::EExposureAuto))
-		{
-		aRate = 0.0;
-		}
-	else
-		{
-		aRate = iVideoFrameRates[aRateIndex];
-		}
-	}
-
-void CTestCamera::GetFrameSize(TSize& aSize) const
-	{
-	aSize = iVideoFrameSize;
-	}
-
-TReal32 CTestCamera::FrameRate() const
-	{
-	return iVideoFrameRate;
-	}
-
-TInt CTestCamera::BuffersInUse() const
-	{
-	return iBuffersInUse;
-	}
-
-TInt CTestCamera::FramesPerBuffer() const
-	{
-	return 1;
-	}
-
-void CTestCamera::SetJpegQuality(TInt /*aQuality*/)
-	{
-	}
-
-TInt CTestCamera::JpegQuality() const
-	{
-	return 0;
-	}
-
-TAny* CTestCamera::CustomInterface(TUid aInterface)
-	{
-	TAny* ptrIface = NULL;
-	TRAPD(error,CustomInterfaceL(ptrIface, aInterface));
-	
-	if(error == KErrNone)
-		{
-		switch(aInterface.iUid)
-			{
-			// advanced settings interface pointers
-			case KECamMCameraAdvancedSettingsUidValue:
-				{
-				return static_cast<MCameraAdvancedSettings*>(ptrIface);
-				}
-			case KECamMCameraAdvancedSettings2UidValue:
-				{
-				return static_cast<MCameraAdvancedSettings2*>(ptrIface);			
-				}
-			case KECamMCameraAdvancedSettings3UidValue:
-				{
-				return static_cast<MCameraAdvancedSettings3*>(ptrIface);
-				}
-			
-			// snapshot interface pointers	
-			case KECamMCameraSnapshotUidValue:
-				{
-				return static_cast<MCameraSnapshot*>(ptrIface);
-				}
-				
-			// preset interface pointers	
-			case KECamMCameraPresetsUidValue:
-				return static_cast<MCameraPresets*>(ptrIface);
-				
-			// image processing interface pointers
-			case KECamMCameraImageProcessingUidValue:
-				{
-				return static_cast<MCameraImageProcessing*>(ptrIface);
-				}
-				
-			case KECamMCameraImageProcessing2UidValue:
-				{
-				return static_cast<MCameraImageProcessing2*>(ptrIface);
-				}
-				
-			default:
-				return NULL;
-			}
-		}
-	else
-		{
-		return NULL;		
-		}
-	}
-
-void CTestCamera::CustomInterfaceL(TAny*& aIface, TUid aInterface)
-	{
-	switch(aInterface.iUid)
-		{
-		// advanced settings interface pointers
-		case KECamMCameraAdvancedSettingsUidValue:
-			{
-			iAdvSettingsImpl = CTestCamAdvSet::NewL(*this);
-			aIface = static_cast<MCameraAdvancedSettings*>(iAdvSettingsImpl);
-			break;
-			}
-		case KECamMCameraAdvancedSettings2UidValue:
-			{
-			iAdvSettingsImpl = CTestCamAdvSet::NewL(*this);
-			aIface = static_cast<MCameraAdvancedSettings2*>(iAdvSettingsImpl);			
-			break;
-			}
-		case KECamMCameraAdvancedSettings3UidValue:
-			{
-			iAdvSettingsImpl = CTestCamAdvSet::NewL(*this);
-			aIface = static_cast<MCameraAdvancedSettings3*>(iAdvSettingsImpl);
-			break;
-			}
-		
-		// snapshot interface pointers	
-		case KECamMCameraSnapshotUidValue:
-			{
-			iSnapshotImpl = CTestCamSnapshot::NewL(*this);
-			aIface = static_cast<MCameraSnapshot*>(iSnapshotImpl);
-			break;
-			}
-		// preset interface pointers	
-		case KECamMCameraPresetsUidValue:
-			{
-			aIface = static_cast<MCameraPresets*>(CTestCamPresets::NewL(*this));
-			break;
-			}
-			
-		// image processing interface pointers
-		case KECamMCameraImageProcessingUidValue:
-			{
-			iImgProcImpl = CTestCamImgProc::NewL(*this);	
-			aIface = static_cast<MCameraImageProcessing*>(iImgProcImpl);
-			break;
-			}
-			
-		case KECamMCameraImageProcessing2UidValue:
-			{
-			iImgProcImpl = CTestCamImgProc::NewL(*this);	
-			aIface = static_cast<MCameraImageProcessing2*>(iImgProcImpl);
-			break;
-			}
-			
-		default:
-			aIface = NULL;
-		}
-	}
-
-void CTestCamera::AbortNow(RDirectScreenAccess::TTerminationReasons /*aReason*/)
-	{
-	iViewFinderActive = EFalse;
-	}
-
-void CTestCamera::Restart(RDirectScreenAccess::TTerminationReasons /*aReason*/)
-	{
-	TRAPD(error,iDSA->StartL());
-	if (error != KErrNone)
-		{
-		return;
-		}
-	iDSA->Gc()->SetOrigin(); // Set Origin to top left of screen (0,0)
-
-	if (!iClipRect.IsEmpty())
-		{
-		iDSA->Gc()->SetClippingRect(iClipRect);
-		}
-	else
-		{
-		iDSA->Gc()->CancelClippingRect();
-		}
-
-	iViewFinderActive = ETrue;
-	}
-
-TInt CTestCamera::TimerCallBack(TAny* aThis)
-	{
-	static_cast<CTestCamera*>(aThis)->FrameReady();
-	return KErrNone;
-	}
-
-void CTestCamera::FrameReady()
-	{
-	if (iVideoPreparedLast)
-		{
-		iVideoFramePos.iX += KFramePosIncrement;
-		iVideoFramePos.iY += KFramePosIncrement;
-
-		if (iVideoFramePos.iX >= iVideoFrameSize.iWidth)
-			{
-			iVideoFramePos.iX = 0;
-			}
-			
-		if (iVideoFramePos.iY >= iVideoFrameSize.iHeight)
-			{
-			iVideoFramePos.iY = 0;
-			}
-		}
-	else
-		{
-		iStillImagePos.iX += KFramePosIncrement;
-		iStillImagePos.iY += KFramePosIncrement;
-
-		if (iStillImagePos.iX >= iStillImageSize.iWidth)
-			{
-			iStillImagePos.iX = 0;
-			}
-			
-		if (iStillImagePos.iY >= iStillImageSize.iHeight)
-			{
-			iStillImagePos.iY = 0;
-			}
-		}
-
-	if (iImageCaptureActive)
-		{
-		if (!iImageCapturePrepared)
-			{
-			iImageCaptureActive = EFalse;
-			if (iObserver2)
-				{
-				iObserver2->ImageBufferReady(iFrameCameraBuffer1,KErrNotReady);
-				}
-			else
-				{
-				iObserver->ImageReady(NULL,NULL,KErrNotReady);
-				}
-			}
-		else
-			{
-			if(iDriveMode == CCamera::CCameraAdvancedSettings::EDriveModeBurst)
-				{
-				for (TInt index =0; index < iBurstImages -1; index++)
-					{
-					if(iSnapshotImpl != NULL)
-						{
-						if(iSnapshotImpl->iSnapshotActive)
-							{
-							GetFrame(*(iSnapshotImpl->iSnapshotImageGc), iStillImagePos);
-							iSnapshotImpl->ServiceBurstImageSnapshot(*(iSnapshotImpl->iSnapshotImageGc));
-							}
-						}
-					
-					GetImgProcessedFrame(*iStillImageGc, iStillImagePos);
-					ServiceBurstImageCapture(*iStillImageGc);
-					}
-				}
-				
-			// normal case, single shot and last image from burst mode
-			if(iSnapshotImpl != NULL)
-				{
-				if(iSnapshotImpl->iSnapshotActive)
-					{
-					GetFrame(*iSnapshotImpl->iSnapshotImageGc, iStillImagePos);
-					iSnapshotImpl->ServiceSnapshot(*(iSnapshotImpl->iSnapshotImageGc));
-					}
-				}
-				
-			GetImgProcessedFrame(*iStillImageGc, iStillImagePos);
-			ServiceImageCapture(*iStillImageGc);	
-							
-			if (iVideoPreparedLast)
-				{
-				GetFrame(*iVideoFrameGc1, iVideoFramePos);
-				if (iViewFinderActive)
-					{
-					ServiceViewFinder(iVideoFrame1);
-					}	
-				}
-			else
-				{
-				if (iViewFinderActive)
-					{
-					ServiceViewFinder(iStillImage);
-					}
-				}
-			}
-		}
-
-	else if (iVideoCaptureActive)
-		{
-		if (!iVideoCapturePrepared)
-			{
-			iVideoCaptureActive = EFalse;
-			if (iObserver2)
-				{
-				iObserver2->VideoBufferReady(iFrameCameraBuffer1,KErrNotReady);
-				}
-			else
-				{
-				iObserver->FrameBufferReady(NULL,KErrNotReady);
-				}
-			}
-		else
-			{
-			if (iObserver2)
-				{
-				if (iFrameCameraBuffer1.iAvailable)
-					{
-					GetFrame(*iVideoFrameGc1, iVideoFramePos);
-					ServiceVideo(1);
-					if (iViewFinderActive)
-						{
-						ServiceViewFinder(iVideoFrame1);
-						}
-					}
-				else if (iFrameCameraBuffer2.iAvailable && iBuffersInUse == 2)
-					{
-					GetFrame(*iVideoFrameGc2, iVideoFramePos);
-					ServiceVideo(2);
-					if (iViewFinderActive)
-						{
-						ServiceViewFinder(iVideoFrame2);
-						}
-					}
-				}
-			else
-				{
-				if (iFrameBuffer1.iAvailable)
-					{
-					GetFrame(*iVideoFrameGc1, iVideoFramePos);
-					ServiceVideo(1);
-					if (iViewFinderActive)
-						{
-						ServiceViewFinder(iVideoFrame1);
-						}
-					}
-				else if (iFrameBuffer2.iAvailable && iBuffersInUse == 2)
-					{
-					GetFrame(*iVideoFrameGc2, iVideoFramePos);
-					ServiceVideo(2);
-					if (iViewFinderActive)
-						{
-						ServiceViewFinder(iVideoFrame2);
-						}
-					}
-				}
-			}
-	}
-
-	else if (iViewFinderActive)
-		{
-		if (iVideoPreparedLast)
-			{
-			GetFrame(*iVideoFrameGc1, iVideoFramePos);
-			ServiceViewFinder(iVideoFrame1);
-			}
-			else
-			{
-			GetFrame(*iStillImageGc, iStillImagePos);
-			ServiceViewFinder(iStillImage);
-			}
-		}
-	}
-
-void CTestCamera::GetFrame(CFbsBitGc& aGc, TPoint& aPos) const
-	{
-	TInt black = (100 - iContrast) * 127 / 200;
-	TInt white = ((100 + iContrast) * 128 / 200) + 127;
-
-	const TInt brightAdjust = iBrightness * 255 / 100;
-	black += brightAdjust;
-	white += brightAdjust;
-
-	black = Min(Max(black,0),255);
-	white = Min(Max(white,0),255);
-
-	aGc.SetFadingParameters(TUint8(black),TUint8(white));
-	aGc.Clear();
-	aGc.DrawRect(TRect(aPos,TSize(KFrameFeatureSize,KFrameFeatureSize)));
-	}
-	
-void CTestCamera::GetImgProcessedFrame(CFbsBitGc& aGc, TPoint& aPos) const
-	{
-	TInt contrast = iContrast;
-	TInt brightness = iBrightness;
-	
-	if(iImgProcImpl != NULL)
-		{
-		for(TInt index=0; index<iImgProcImpl->iActiveTransformations.Count(); index++)
-			{
-			switch(iImgProcImpl->iActiveTransformations[index].iUid)
-				{
-				case KUidECamEventImageProcessingAdjustBrightnessUidValue:
-					{
-					brightness = iImgProcBrightness;
-					break;
-					}
-				case KUidECamEventImageProcessingAdjustContrastUidValue:
-					{
-					contrast = iImgProcContrast;
-					break;
-					}
-				default:
-					{
-					break;
-					}
-				}
-			}
-		}
-	
-	TInt black = (100 - contrast) * 127 / 200;
-	TInt white = ((100 + contrast) * 128 / 200) + 127;
-
-	const TInt brightAdjust = brightness * 255 / 100;
-	black += brightAdjust;
-	white += brightAdjust;
-
-	black = Min(Max(black,0),255);
-	white = Min(Max(white,0),255);
-
-	aGc.SetFadingParameters(TUint8(black),TUint8(white));
-	aGc.Clear();
-	aGc.DrawRect(TRect(aPos,TSize(KFrameFeatureSize,KFrameFeatureSize)));
-	}
-	
-void CTestCamera::ServiceVideo(TInt aBufferNum)
-	{
-	iFrameIndex++;
-	iElapsedTime = iElapsedTime.Int64() + (TInt64(1000000) / TInt64(iVideoFrameRate));
-
-	if (aBufferNum == 1)
-		{
-		if (iObserver2)
-			{
-			iFrameCameraBuffer1.iIndexOfFirstFrameInBuffer = iFrameIndex;
-			iFrameCameraBuffer1.iElapsedTime = iElapsedTime;
-			iFrameCameraBuffer1.iAvailable = EFalse;
-			}
-		else
-			{
-			iFrameBuffer1.iIndexOfFirstFrameInBuffer = iFrameIndex;
-			iFrameBuffer1.iElapsedTime = iElapsedTime;
-			iFrameBuffer1.iAvailable = EFalse;
-			}
-			
-		if (iObserver2)
-			{
-			iObserver2->VideoBufferReady(iFrameCameraBuffer1,KErrNone);
-			}
-		else
-			{
-			iObserver->FrameBufferReady(&iFrameBuffer1,KErrNone);
-			}
-		}
-	else if (aBufferNum == 2)
-		{
-		if (iObserver2)
-			{
-			iFrameCameraBuffer2.iIndexOfFirstFrameInBuffer = iFrameIndex;
-			iFrameCameraBuffer2.iElapsedTime = iElapsedTime;
-			iFrameCameraBuffer2.iAvailable = EFalse;
-			}
-		else
-			{
-			iFrameBuffer2.iIndexOfFirstFrameInBuffer = iFrameIndex;
-			iFrameBuffer2.iElapsedTime = iElapsedTime;
-			iFrameBuffer2.iAvailable = EFalse;
-			}
-			
-		if (iObserver2)
-			{
-			iObserver2->VideoBufferReady(iFrameCameraBuffer2,KErrNone);
-			}
-		else
-			{
-			iObserver->FrameBufferReady(&iFrameBuffer2,KErrNone);
-			}
-		}
-	}
-
-void CTestCamera::ServiceViewFinder(CFbsBitmap* aSourceFrame)
-	{
-	if (iDSA)
-		{
-		iDSA->Gc()->DrawBitmap(iScreenRect,aSourceFrame);
-		iDSA->ScreenDevice()->Update();
-		}
-	else if (iViewFinderBitmap)
-		{
-		if (iViewFinderBitmapGc)
-			{
-			if (!iClipRect.IsEmpty())
-				{
-				TReal32 xRatio = static_cast<TReal32>(aSourceFrame->SizeInPixels().iWidth) / 
-								 static_cast<TReal32>(iClipRect.Size().iWidth);
-
-				TReal32 yRatio = static_cast<TReal32>(aSourceFrame->SizeInPixels().iHeight) / 
-								 static_cast<TReal32>(iClipRect.Size().iHeight);
-
-				TRect sourceRect(TPoint(static_cast<TInt>(xRatio*iClipRect.iTl.iX),
-										static_cast<TInt>(yRatio*iClipRect.iTl.iY)),
-								 TPoint(static_cast<TInt>(xRatio*iClipRect.iBr.iX),
-										static_cast<TInt>(yRatio*iClipRect.iBr.iY)));
-
-				TRect destRect(TPoint(0,0), iClipRect.Size());
-
-				iViewFinderBitmapGc->DrawBitmap(destRect,
-												aSourceFrame,
-												sourceRect);
-				}
-			else
-				{
-				TRect destRect(TPoint(0,0), iViewFinderBitmap->SizeInPixels());
-				iViewFinderBitmapGc->DrawBitmap(destRect, aSourceFrame);
-				}
-				
-			if (iObserver2)
-				{
-				iObserver2->ViewFinderReady(iFrameCameraBuffer1,KErrNone);
-				}
-			else
-				{
-				iObserver->ViewFinderFrameReady(*iViewFinderBitmap);
-				}
-		
-			}
-		}
-	else
-		{
-		iScreenGc->DrawBitmap(iClipRect,aSourceFrame);
-		iScreenDev->Update();
-		}
-	}
-
-void CTestCamera::ServiceImageCapture(const CFbsBitGc& aSourceBitmapGc)
-	{
-	iImageCaptureActive = EFalse;
-	iGc->BitBlt(TPoint(0,0), aSourceBitmapGc);
-	CFbsBitmap* image = iImage;
-	RTestCameraFrameBuffer frameBuffer(image);
-	delete iGc;
-	iGc = NULL;
-	delete iDev;
-	iDev = NULL;
-	if (iObserver2 != NULL)
-		{
-		iObserver2->ImageBufferReady(frameBuffer,KErrNone);
-		}
-	else
-		{
-		iImage = NULL;
-		iObserver->ImageReady(image,NULL,KErrNone);
-		}
-	}
-	
-void CTestCamera::ServiceBurstImageCapture(const CFbsBitGc& aSourceBitmapGc)
-	{
-	iGc->BitBlt(TPoint(0,0), aSourceBitmapGc);
-	if (iObserver2 != NULL)
-		{
-		CFbsBitmap* image = iImage;
-		RTestCameraFrameBuffer frameBuffer(image);
-		iObserver2->ImageBufferReady(frameBuffer,KErrNone);
-		}
-	else//not for MCameraObserver
-		{
-		return;
-		}
-	
-	if(iSnapshotImpl)
-		{
-		if(iSnapshotImpl->iSnapshotActive)
-			{
-			return;
-			}
-		}
-	User::After(500000);
-	iStillImagePos.iX += KFramePosIncrement;
-	iStillImagePos.iY += KFramePosIncrement;
-
-	if (iStillImagePos.iX >= iStillImageSize.iWidth)
-		{
-		iStillImagePos.iX = 0;
-		}
-			
-	if (iStillImagePos.iY >= iStillImageSize.iHeight)
-		{
-		iStillImagePos.iY = 0;
-		}
-	}
-
-void CTestCamera::CheckReserveAndPowerL()
-	{
-	if (!iReserved)
-		{
-		User::Leave(KErrInUse);
-		}
-		
-	if (!iPowerOn)
-		{
-		User::Leave(KErrNotReady);
-		}	
-	}
-
-TInt CTestCamera::CheckReserveAndPower() const
-	{
-	if (!iReserved)
-		{
-		return KErrInUse;
-		}
-		
-	if (!iPowerOn)
-		{
-		return KErrNotReady;
-		}	
-	
-	return KErrNone;
-	}
-
-TInt CTestCamera::ReserveCallBack(TAny* aThis)
-	{
-	const TECAMEvent event(KUidECamEventReserveComplete,KErrNone);
-	CTestCamera* testCamera = static_cast<CTestCamera*>(aThis);
-	if (testCamera->iObserver2)
-		{
-		testCamera->iObserver2->HandleEvent(event);
-		}
-	else
-		{
-		testCamera->iObserver->ReserveComplete(KErrNone);
-		}
-	return KErrNone;
-	}
-
-TInt CTestCamera::PowerOnCallBack(TAny* aThis)
-	{
-	TECAMEvent event(KUidECamEventPowerOnComplete,KErrNone);
-	CTestCamera* testCamera = static_cast<CTestCamera*>(aThis);
-	if (testCamera->iObserver2)
-		{
-		testCamera->iObserver2->HandleEvent(event);
-		}
-	else
-		{
-		testCamera->iObserver->PowerOnComplete(testCamera->iPowerOn ? KErrNone : KErrInUse);
-		}
-	return KErrNone;
-	}
-
-TInt CTestCamera::ImageCaptureCallBack(TAny* aThis)
-	{
-	CTestCamera* testCamera = static_cast<CTestCamera*>(aThis);
-	if (testCamera->iObserver2)
-		{
-		testCamera->iObserver2->ImageBufferReady((static_cast<CTestCamera*>(aThis))->iFrameCameraBuffer1,testCamera->iStillCaptureErr);
-		}
-	else
-		{
-		testCamera->iObserver->ImageReady(NULL,NULL,testCamera->iStillCaptureErr);
-		}
-	testCamera->iStillCaptureErr = KErrNone;
-	return KErrNone;
-	}
-
-TInt CTestCamera::VideoCaptureCallBack(TAny* aThis)
-	{
-	CTestCamera* testCamera = static_cast<CTestCamera*>(aThis);
-	if (testCamera->iObserver2)
-		{
-		testCamera->iObserver2->VideoBufferReady((static_cast<CTestCamera*>(aThis))->iFrameCameraBuffer1,testCamera->iVideoCaptureErr);
-		}
-	else
-		{
-		testCamera->iObserver->FrameBufferReady(NULL,testCamera->iVideoCaptureErr);
-		}
-	testCamera->iVideoCaptureErr = KErrNone;
-	return KErrNone;
-	}
-	
-TInt CTestCamera::HandleEventCallBack(TAny* aThis)
-	{
-	CTestCamera* testCamera = static_cast<CTestCamera*>(aThis);
-	if (testCamera->iObserver2)
-		{
-		testCamera->iObserver2->HandleEvent(testCamera->iECamEvent);
-		}
-	
-	return KErrNone;
-	}
-
-TInt CTestCamera::HandleEvent2CallBack(TAny* aThis)
-	{
-	CTestCamera* testCamera = static_cast<CTestCamera*>(aThis);
-	if (testCamera->iObserver2)
-		{
-		testCamera->iObserver2->HandleEvent(testCamera->iECamEvent2);
-		}
-	
-	return KErrNone;
-	}
-
-//
-// CTestCameraInfo
-//
-
-CTestCameraInfo::CTestCameraInfo()
-	{
-	}
-	
-CTestCameraInfo::~CTestCameraInfo()
-	{
-	}
-	
-CTestCameraInfo* CTestCameraInfo::NewL()
-	{
-	FileDependencyUtil::CheckFileDependencyL();
-	return new (ELeave) CTestCameraInfo;
-	}
-	
-TInt CTestCameraInfo::CamerasAvailable()
-	{
-	return 1;
-	}
-
-//void CTestCamera::CheckFileDependencyL()
-void FileDependencyUtil::CheckFileDependencyL()
-	{	
-	RFs fsSession;
-  	RFile file;
-    CleanupClosePushL(fsSession);
-  	User::LeaveIfError(fsSession.Connect());
-    TInt err = file.Open(fsSession, KTestCameraPluginName, EFileRead);
-  	file.Close();
-  	if(err != KErrNone)
-  		{
-	    User::LeaveIfError(KErrNotSupported);
-  		}
-  	CleanupStack::PopAndDestroy(); //fsSession 
-	}
-
-// __________________________________________________________________________
-// Exported proxy for instantiation method resolution
-// Define the interface UIDs
-const TImplementationProxy ImplementationTable[] = 
-	{
-	IMPLEMENTATION_PROXY_ENTRY(KUidOnboardCameraTestPlugin,	CTestCamera::NewL),
-	IMPLEMENTATION_PROXY_ENTRY(KUidOnboardCameraTestInfo,	CTestCameraInfo::NewL)
-	};
-
-EXPORT_C const TImplementationProxy* ImplementationGroupProxy(TInt& aTableCount)
-	{
-	aTableCount = sizeof(ImplementationTable) / sizeof(TImplementationProxy);
-
-	return ImplementationTable;
-	}
-
+// Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of the License "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+#include <w32std.h>
+#include <ecom/ecom.h>
+#include <ecom/implementationproxy.h>
+#include <f32file.h> 
+#include "TestCamera.h"
+#include "test_advanced_settings.h"
+#include "test_snapshot.h"
+#include "test_image_processing.h"
+#include "TestCameraUids.hrh"
+#include <ecam.h>
+
+//
+// Main stuff
+//
+// 
+// 2nd stage ConstructL calls called by framework
+//
+CTestCamera* CTestCamera::NewL()
+	{
+	FileDependencyUtil::CheckFileDependencyL();
+   	CTestCamera* self = new(ELeave) CTestCamera;
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	CleanupStack::Pop(self);
+	return self;
+	}
+
+void CTestCamera::Construct2L(MCameraObserver& aObserver,TInt aCameraIndex)
+	{
+	iObserver = &aObserver;
+	iCameraIndex = aCameraIndex;
+	}
+	
+void CTestCamera::Construct2DupL(MCameraObserver& aObserver,TInt aCameraHandle)
+	{
+	iObserver = &aObserver;
+	iCameraHandle = aCameraHandle;
+	}
+
+void CTestCamera::ConstructL()	
+	{
+	
+	TInt err;
+	TRAP(err, iScreenDev = CFbsScreenDevice::NewL(_L(""),EColor16M));
+	if (err == KErrNotSupported)
+		{
+		TRAP(err, iScreenDev = CFbsScreenDevice::NewL(_L(""),EColor64K));
+		}
+	if (err == KErrNotSupported)
+		{
+		TRAP(err, iScreenDev = CFbsScreenDevice::NewL(_L(""),EColor4K));
+		}
+	if (err == KErrNotSupported)
+		{
+		iScreenDev = CFbsScreenDevice::NewL(_L(""),EColor256);
+		}
+	else
+		{
+		User::LeaveIfError(err);		
+		}
+
+	User::LeaveIfError(iScreenDev->CreateContext(iScreenGc));
+	User::LeaveIfError(iImageSizes.Append( TSize(640, 480) )); // VGA
+	User::LeaveIfError(iImageSizes.Append( TSize(160, 120) )); // QQVGA
+	iInfo.iNumImageSizesSupported = iImageSizes.Count();
+	iStillImageSize = iImageSizes[1]; // Defaults to QQVGA
+
+	User::LeaveIfError(iVideoFrameSizes.Append( TSize(176, 144) )); // QCIF
+	User::LeaveIfError(iVideoFrameSizes.Append( TSize(128, 96) ));  // subQCIF
+	iInfo.iNumVideoFrameSizesSupported = iVideoFrameSizes.Count();
+	User::LeaveIfError(iVideoFrameRates.Append( 10.00 ));
+	User::LeaveIfError(iVideoFrameRates.Append(  5.00 ));
+	User::LeaveIfError(iVideoFrameRates.Append(  1.00 ));
+	iInfo.iNumVideoFrameRatesSupported = iVideoFrameRates.Count();
+	iVideoFrameRate = iVideoFrameRates[0];
+	// Still image used as view finder source if not defined otherwise
+	iStillImage = new(ELeave) CFbsBitmap;
+	User::LeaveIfError(iStillImage->Create(iStillImageSize, KViewFinderDisplayMode));
+	iStillImageDev = CFbsBitmapDevice::NewL(iStillImage);
+	User::LeaveIfError(iStillImageDev->CreateContext(iStillImageGc));
+	iStillImageGc->SetPenColor(KRgbBlack);
+	iStillImageGc->SetPenSize(TSize(KFrameFeatureBorderThickness, KFrameFeatureBorderThickness));
+	iStillImageGc->SetBrushColor(KRgbWhite);
+	iStillImageGc->SetFaded(ETrue);
+	iVideoPreparedLast = EFalse;
+	iTimer = CPeriodic::NewL(CActive::EPriorityHigh);
+	}
+
+
+void CTestCamera::Construct2L(MCameraObserver2& aObserver,TInt aCameraIndex,TInt aPriority)
+	{
+	iObserver2 = &aObserver;
+	iCameraIndex = aCameraIndex;
+	iPriority = aPriority;
+	}
+	
+void CTestCamera::Construct2DupL(MCameraObserver2& aObserver,TInt aCameraHandle)
+	{
+	iObserver2 = &aObserver;
+	iCameraHandle = aCameraHandle;
+	}
+	
+
+CTestCamera::CTestCamera():
+	iStillImageFormat(KInitialViewFinderFormat),
+	iReserveAsync(CActive::EPriorityStandard),
+	iPowerOnAsync(CActive::EPriorityStandard),
+	iImageCaptureAsync(CActive::EPriorityStandard),
+	iVideoCaptureAsync(CActive::EPriorityStandard),
+	iHandleEventAsync(CActive::EPriorityStandard),
+	iHandleEvent2Async(CActive::EPriorityStandard),	
+	iFrameBuffer1(iVideoFrame1),
+	iFrameBuffer2(iVideoFrame2),
+	iFrameCameraBuffer1(iVideoFrame1),
+	iFrameCameraBuffer2(iVideoFrame2),
+	iContrast(0),
+	iBrightness(0),
+	iImgProcBrightness(0),
+	iImgProcContrast(0),
+	iVideoCaptureActive(EFalse),
+	iImageCaptureActive(EFalse),
+	iVideoPreparedLast(EFalse),
+	iVideoCapturePrepared(EFalse),
+	iImageCapturePrepared(EFalse),
+	iECamEvent(KNullUid, KErrNone),
+	iECamEvent2(KNullUid, KErrNone, 0),
+	iAdvSettingsImpl(NULL),
+	iSnapshotImpl(NULL),
+	iImgProcImpl(NULL),
+	iDriveMode(KDefaultDriveMode),
+	iBurstImages(KBurstImages)
+	{
+	TCallBack reserveCallBack(ReserveCallBack,this);
+	iReserveAsync.Set(reserveCallBack);
+	TCallBack powerOnCallBack(PowerOnCallBack,this);
+	iPowerOnAsync.Set(powerOnCallBack);
+	TCallBack imageCaptureCallBack(ImageCaptureCallBack,this);
+	iImageCaptureAsync.Set(imageCaptureCallBack);
+	TCallBack videoCaptureCallBack(VideoCaptureCallBack,this);
+	iVideoCaptureAsync.Set(videoCaptureCallBack);
+	TCallBack handleEventCallBack(HandleEventCallBack,this);
+	iHandleEventAsync.Set(handleEventCallBack);
+	TCallBack handleEvent2CallBack(HandleEvent2CallBack,this);
+	iHandleEvent2Async.Set(handleEvent2CallBack);
+
+	iInfo.iHardwareVersion.iMajor = 0;
+	iInfo.iHardwareVersion.iMinor = 0;
+	iInfo.iHardwareVersion.iBuild = 0;
+	iInfo.iSoftwareVersion.iMajor = 0;
+	iInfo.iSoftwareVersion.iMinor = 0;
+	iInfo.iSoftwareVersion.iBuild = 0;
+	iInfo.iOrientation = TCameraInfo::EOrientationOutwards;
+
+	iInfo.iOptionsSupported = 0;
+	iInfo.iOptionsSupported |= TCameraInfo::EViewFinderDirectSupported;
+	iInfo.iOptionsSupported |= TCameraInfo::EViewFinderBitmapsSupported;
+	iInfo.iOptionsSupported |= TCameraInfo::EImageCaptureSupported;
+	iInfo.iOptionsSupported |= TCameraInfo::EVideoCaptureSupported;
+	iInfo.iOptionsSupported |= TCameraInfo::EContrastSupported;
+	iInfo.iOptionsSupported |= TCameraInfo::EBrightnessSupported;
+	iInfo.iOptionsSupported |= TCameraInfo::EViewFinderClippingSupported;
+
+	iInfo.iFlashModesSupported = 0; // Bitfield of TFlash values
+	iInfo.iExposureModesSupported = 0; // Bitfield of TExposure values
+	iInfo.iWhiteBalanceModesSupported = 0; // Bitfield of TWhiteBalance values
+
+	iInfo.iMinZoom = KMinTestCameraZoom;
+	// KMinTestCameraZoom is zero or negative
+	// note the algorithm for creating of zoom factor
+	iInfo.iMinZoomFactor = TReal32(1)/TReal32(1 << -KMinTestCameraZoom);
+	iInfo.iMaxZoom = KMaxTestCameraZoom;
+	iInfo.iMaxZoomFactor = 1 << KMaxTestCameraZoom;
+
+	iInfo.iMaxDigitalZoom = KMaxTestCameraDigitalZoom;
+	iInfo.iMaxDigitalZoomFactor = KMaxTestCameraDigitalZoomFactor;
+
+	iInfo.iImageFormatsSupported = 0;
+	iInfo.iImageFormatsSupported |= EFormatFbsBitmapColor4K;
+	iInfo.iImageFormatsSupported |= EFormatFbsBitmapColor64K;
+	iInfo.iImageFormatsSupported |= EFormatFbsBitmapColor16M;
+
+	iInfo.iVideoFrameFormatsSupported = 0;
+	iInfo.iVideoFrameFormatsSupported |= EFormatFbsBitmapColor4K;
+	iInfo.iVideoFrameFormatsSupported |= EFormatFbsBitmapColor64K;
+	iInfo.iVideoFrameFormatsSupported |= EFormatFbsBitmapColor16M;
+	iInfo.iMaxFramesPerBufferSupported = 1;
+	iInfo.iMaxBuffersSupported = 2;
+	
+	iScreenRect = TRect(TPoint(0,0), TPoint(0,0));
+	
+	iEventError = KErrNone;
+	}
+	
+CTestCamera::~CTestCamera()
+	{
+	delete iTimer;
+	delete iStillImage;
+	delete iStillImageGc;
+	delete iStillImageDev;
+	delete iVideoFrame1;
+	delete iVideoFrameGc1;
+	delete iVideoFrameDev1;
+	delete iVideoFrame2;
+	delete iVideoFrameGc2;
+	delete iVideoFrameDev2;
+	delete iViewFinderBitmapGc;
+	delete iViewFinderBitmapDev;
+	delete iViewFinderBitmap;
+	delete iDSA;
+	delete iScreenGc;
+	delete iScreenDev;
+	delete iGc;
+	delete iDev;
+	delete iImage;
+	delete iAdvSettingsImpl;
+	delete iSnapshotImpl;
+	delete iImgProcImpl;
+	iImageSizes.Reset();
+	iVideoFrameSizes.Reset();
+	iVideoFrameRates.Reset();
+	}
+
+void CTestCamera::CameraInfo(TCameraInfo& aInfo) const
+	{
+	aInfo = iInfo;
+	}
+
+void CTestCamera::Reserve()
+	{
+	iReserved = ETrue;
+	iReserveAsync.CallBack();
+	}
+
+void CTestCamera::Release()
+	{
+	iReserved = EFalse;
+	iTimer->Cancel();
+	}
+
+void CTestCamera::PowerOn()
+	{
+	if (!iReserved || iPowerOn)
+		{
+		iPowerOnAsync.CallBack();
+		return;
+		}
+
+	iPowerOn = ETrue;
+	TCallBack callback(TimerCallBack,this);
+	iTimer->Start(0,TInt(TReal32(1000000) / iVideoFrameRate), callback);
+	iPowerOnAsync.CallBack();
+	}
+
+void CTestCamera::PowerOff()
+	{
+	iPowerOn = EFalse;
+	iTimer->Cancel();
+	}
+
+TInt CTestCamera::Handle()
+	{
+	return 0;
+	}
+
+void CTestCamera::SetZoomFactorL(TInt aZoomFactor)
+	{
+	// it is equivalent to comparing with iInfo members as they are initialised with the same constants
+	// if (aZoomFactor < iInfo.iMinZoom || aZoomFactor > iInfo.iMaxZoom)
+	if (aZoomFactor < KMinTestCameraZoom || aZoomFactor > KMaxTestCameraZoom)
+		{
+		User::Leave(KErrNotSupported);	
+		}
+
+	iZoom = aZoomFactor;
+	}
+
+TInt CTestCamera::ZoomFactor() const
+	{
+	// default value is 0
+	return iZoom;
+	}
+
+void CTestCamera::SetDigitalZoomFactorL(TInt aDigitalZoomFactor)
+	{
+	CheckReserveAndPowerL();
+	// it is equivalent to comparing with iInfo member as it is initialised with the same constant
+	// if (aDigitalZoomFactor < 0 || aDigitalZoomFactor > iInfo.iMaxDigitalZoom)
+	if (aDigitalZoomFactor < 0 || aDigitalZoomFactor > KMaxTestCameraDigitalZoom)
+		{
+		User::Leave(KErrNotSupported);	
+		}
+
+	iDigitalZoom = aDigitalZoomFactor;
+	}
+
+TInt CTestCamera::DigitalZoomFactor() const
+	{
+	// default value is 0
+	return iDigitalZoom;
+	}
+
+void CTestCamera::SetContrastL(TInt aContrast)
+	{
+	CheckReserveAndPowerL();
+
+	iContrast = Min(Max(aContrast,-100),100);
+	}
+
+TInt CTestCamera::Contrast() const
+	{
+	return iContrast;
+	}
+
+void CTestCamera::SetBrightnessL(TInt aBrightness)
+	{
+	CheckReserveAndPowerL();
+
+	iBrightness = Min(Max(aBrightness,-100),100);
+	}
+
+TInt CTestCamera::Brightness() const
+	{
+	return iBrightness;
+	}
+
+void CTestCamera::SetFlashL(TFlash aFlash)
+	{
+	CheckReserveAndPowerL();
+
+	if (aFlash != EFlashNone)
+		{
+		User::Leave(KErrNotSupported);	
+		}
+	}
+
+CCamera::TFlash CTestCamera::Flash() const
+	{
+	return EFlashNone;
+	}
+
+void CTestCamera::SetExposureL(TExposure aExposure)
+	{
+	CheckReserveAndPowerL();
+
+	if (aExposure != EExposureAuto)
+		{
+		User::Leave(KErrNotSupported);
+		}
+	}
+
+CCamera::TExposure CTestCamera::Exposure() const
+	{
+	return EExposureAuto;
+	}
+
+void CTestCamera::SetWhiteBalanceL(TWhiteBalance aWhiteBalance)
+	{
+	CheckReserveAndPowerL();
+
+	if (aWhiteBalance != EWBAuto)
+		{
+		User::Leave(KErrNotSupported);
+		}
+	}
+
+CCamera::TWhiteBalance CTestCamera::WhiteBalance() const
+	{
+	return EWBAuto;
+	}
+
+void CTestCamera::StartViewFinderDirectL(RWsSession& aWs,CWsScreenDevice& aScreenDevice,RWindowBase& aWindow,TRect& aScreenRect)
+	{
+	TRect emptyRect;
+	StartViewFinderDirectL(aWs,aScreenDevice,aWindow,aScreenRect,emptyRect);
+	}
+
+void CTestCamera::StartViewFinderDirectL(RWsSession& aWs,CWsScreenDevice& aScreenDevice,RWindowBase& aWindow,TRect& aScreenRect,TRect& aClipRect)
+	{
+	if (!iReserved)
+		{
+		User::Leave(KErrInUse);		
+		}
+		
+	if (!iPowerOn || iViewFinderActive)
+		{
+		User::Leave(KErrNotReady);	
+		}
+
+	iScreenRect = aScreenRect;
+	iClipRect = aClipRect;
+
+	delete iDSA;
+	iDSA = NULL;
+	iViewFinderActive = EFalse;
+	iDSA = CDirectScreenAccess::NewL(aWs,aScreenDevice,aWindow,*this);
+	iDSA->StartL();
+	iViewFinderActive = ETrue;
+	iDSA->Gc()->SetOrigin(); // Set Origin to top left of screen (0,0)
+
+	if (!iClipRect.IsEmpty())
+		{
+		iDSA->Gc()->SetClippingRect(iClipRect);	
+		}
+	}
+
+void CTestCamera::StartViewFinderBitmapsL(TSize& aSize)
+	{
+	TRect emptyRect;
+	StartViewFinderBitmapsL(aSize,emptyRect);
+	}
+
+void CTestCamera::StartViewFinderBitmapsL(TSize& aSize, TRect& aClipRect)
+	{
+	if (!iReserved)
+		{
+		User::Leave(KErrInUse);
+		}
+	if (!iPowerOn || iViewFinderActive)
+		{
+		User::Leave(KErrNotReady);
+		}
+
+	iViewFinderActive = ETrue;
+	iScreenRect = TRect(TPoint(0,0), aSize);
+	iClipRect = aClipRect;
+	iClipRect.Intersection(iScreenRect);
+
+	delete iViewFinderBitmapGc;
+	iViewFinderBitmapGc = NULL;
+	delete iViewFinderBitmapDev;
+	iViewFinderBitmapDev = NULL;
+	delete iViewFinderBitmap;
+	iViewFinderBitmap = NULL;
+
+	iViewFinderBitmap = new(ELeave) CFbsBitmap;
+	if (!iClipRect.IsEmpty())
+		{
+		User::LeaveIfError(iViewFinderBitmap->Create(iClipRect.Size(), KViewFinderDisplayMode));		
+		}
+	else
+		{
+		User::LeaveIfError(iViewFinderBitmap->Create(aSize, KViewFinderDisplayMode));		
+		}
+	iViewFinderBitmapDev = CFbsBitmapDevice::NewL(iViewFinderBitmap);
+	User::LeaveIfError(iViewFinderBitmapDev->CreateContext(iViewFinderBitmapGc));
+	}
+	
+void CTestCamera::StartViewFinderL(TFormat aImageFormat,TSize& aSize)
+       {
+       TRect emptyRect;
+       StartViewFinderL(aImageFormat,aSize,emptyRect);
+       }
+	
+void CTestCamera::StartViewFinderL(TFormat aImageFormat,TSize& /*aSize*/,TRect& aClipRect)	
+       {
+     	if(!iReserved)
+     		{
+     		User::Leave(KErrInUse);
+     		}
+		if(!iPowerOn || iViewFinderActive)
+			{
+			User::Leave(KErrNotReady);
+			}
+		
+		iViewFinderActive = ETrue;
+		iClipRect = aClipRect;
+		if(!(aImageFormat & iInfo.iImageFormatsSupported))
+			{
+			 User::Leave(KErrNotSupported);
+			}
+       }
+       
+
+void CTestCamera::StopViewFinder()
+	{
+	iViewFinderActive = EFalse;
+	delete iDSA;
+	iDSA = NULL;
+
+	delete iViewFinderBitmapGc;
+	iViewFinderBitmapGc = NULL;
+	delete iViewFinderBitmapDev;
+	iViewFinderBitmapDev = NULL;
+	delete iViewFinderBitmap;
+	iViewFinderBitmap = NULL;
+	}
+
+TBool CTestCamera::ViewFinderActive() const
+	{
+	return iViewFinderActive;
+	}
+
+void CTestCamera::SetViewFinderMirrorL(TBool aMirror)
+	{
+	if (aMirror)
+		{
+		User::Leave(KErrNotSupported);	
+		}
+	}
+
+TBool CTestCamera::ViewFinderMirror() const
+	{
+	return EFalse;
+	}
+
+void CTestCamera::PrepareImageCaptureL(TFormat aImageFormat,TInt aSizeIndex)
+	{
+	if (!iReserved)
+		{
+		User::Leave(KErrInUse);
+		}
+		
+	if (!iPowerOn || iVideoCaptureActive || iImageCaptureActive)
+		{
+		User::Leave(KErrNotReady);
+		}
+		
+
+	if (!(aImageFormat & iInfo.iImageFormatsSupported) || aSizeIndex < 0
+		|| aSizeIndex >= iInfo.iNumImageSizesSupported)
+		{
+		User::Leave(KErrNotSupported);
+		}
+
+	iVideoPreparedLast = EFalse;
+
+	if (iImageCapturePrepared
+		&& iStillImageSize == iImageSizes[aSizeIndex]
+		&& iStillImageFormat == aImageFormat)
+		{
+		return;
+		}
+
+	iStillImageSize = iImageSizes[aSizeIndex];
+	iStillImageFormat = aImageFormat;
+
+	TDisplayMode displayMode = ENone;
+	switch (iStillImageFormat)
+		{
+		case EFormatFbsBitmapColor4K :
+			displayMode = EColor4K;
+			break;
+		case EFormatFbsBitmapColor64K :
+			displayMode = EColor64K;
+			break;
+		case EFormatFbsBitmapColor16M :
+			displayMode = EColor16M;
+			break;
+		default :
+			User::Leave(KErrNotSupported);
+			break;
+		}
+
+	delete iStillImageGc;
+	iStillImageGc = NULL;
+	delete iStillImageDev;
+	iStillImageDev = NULL;
+	delete iStillImage;
+	iStillImage = NULL;
+
+	iStillImage = new(ELeave) CFbsBitmap;
+	User::LeaveIfError(iStillImage->Create(iStillImageSize, displayMode));
+	iStillImageDev = CFbsBitmapDevice::NewL(iStillImage);
+	User::LeaveIfError(iStillImageDev->CreateContext(iStillImageGc));
+	iStillImageGc->SetPenColor(KRgbBlack);
+	iStillImageGc->SetPenSize(TSize(KFrameFeatureBorderThickness, KFrameFeatureBorderThickness));
+	iStillImageGc->SetBrushColor(KRgbWhite);
+	iStillImageGc->SetFaded(ETrue);
+	iImageCapturePrepared = ETrue;
+	}
+
+void CTestCamera::PrepareImageCaptureL(TFormat /*aImageFormat*/,TInt /*aSizeIndex*/,const TRect& /*aClipRect*/)
+	{
+	User::Leave(KErrNotSupported);
+	}
+
+void CTestCamera::CaptureImage()
+	{
+	if (!iReserved)
+		{
+		iStillCaptureErr = KErrInUse;
+		}
+		
+	if (!iPowerOn || iImageCaptureActive || iVideoCaptureActive || !iImageCapturePrepared)
+		{
+		iStillCaptureErr = KErrNotReady;
+		}
+
+	if (iStillCaptureErr == KErrNone)
+		{
+		TRAP(iStillCaptureErr,DoCaptureImageL());
+		}
+
+	if (iStillCaptureErr == KErrNone)
+		{
+		iImageCaptureActive = ETrue;
+		}
+	else
+		{
+		iImageCaptureAsync.CallBack();
+		}
+	}
+
+void CTestCamera::DoCaptureImageL()
+	{
+	delete iGc;
+	iGc = NULL;
+	delete iDev;
+	iDev = NULL;
+	delete iImage;
+	iImage = NULL;
+
+	CFbsBitmap* image = new(ELeave) CFbsBitmap;
+	CleanupStack::PushL(image);
+	User::LeaveIfError(image->Create(iStillImageSize, iStillImage->DisplayMode()));
+	CFbsBitmapDevice* dev = CFbsBitmapDevice::NewL(image);
+	CleanupStack::PushL(dev);
+	CFbsBitGc* gc = NULL;
+	User::LeaveIfError(dev->CreateContext(gc));
+	CleanupStack::Pop(dev);
+	CleanupStack::Pop(image);
+
+	iImage = image;
+	iDev = dev;
+	iGc = gc;
+	}
+
+void CTestCamera::CancelCaptureImage()
+	{
+	iImageCaptureActive = EFalse;
+	}
+
+void CTestCamera::EnumerateCaptureSizes(TSize& aSize,TInt aSizeIndex,TFormat aFormat) const
+	{
+	if (aSizeIndex < 0 || aSizeIndex >= iInfo.iNumImageSizesSupported ||
+		!(aFormat & iInfo.iImageFormatsSupported) )
+		{
+		aSize = TSize(0,0);
+		}
+	else
+		{
+		aSize = iImageSizes[aSizeIndex];
+		}
+	}
+
+void CTestCamera::PrepareVideoCaptureL(TFormat aFormat,TInt aSizeIndex,TInt aRateIndex,TInt aBuffersToUse,TInt aFramesPerBuffer)
+	{
+	if (!iReserved)
+		{
+		User::Leave(KErrInUse);
+		}
+		
+	if (!iPowerOn || iVideoCaptureActive || iImageCaptureActive)
+		{
+		User::Leave(KErrNotReady);
+		}
+
+	if (!(aFormat & iInfo.iVideoFrameFormatsSupported) 
+		|| aSizeIndex < 0 || aSizeIndex >= iInfo.iNumVideoFrameSizesSupported
+		|| aRateIndex < 0 || aRateIndex >= iInfo.iNumVideoFrameRatesSupported
+		|| aBuffersToUse != 2 || aFramesPerBuffer != 1)
+		{
+		User::Leave(KErrNotSupported);
+		}
+
+	iVideoPreparedLast = ETrue;
+
+	if (iVideoCapturePrepared 
+		&& iVideoFrameSize == iVideoFrameSizes[aSizeIndex]
+		&& iVideoFrameFormat == aFormat)
+		{
+		return;
+		}
+
+	TDisplayMode displayMode = ENone;
+	switch (aFormat)
+		{
+		case EFormatFbsBitmapColor4K :
+			displayMode = EColor4K;
+			break;
+		case EFormatFbsBitmapColor64K :
+			displayMode = EColor64K;
+			break;
+		case EFormatFbsBitmapColor16M :
+			displayMode = EColor16M;
+			break;
+		default :
+			User::Leave(KErrNotSupported);
+			break;
+		}
+
+	iVideoFrameSize = iVideoFrameSizes[aSizeIndex];
+	iVideoFrameRate = iVideoFrameRates[aRateIndex];
+	iVideoFrameFormat = aFormat;
+	iBuffersInUse = aBuffersToUse;
+
+	delete iVideoFrameGc1;
+	iVideoFrameGc1 = NULL;
+	delete iVideoFrameDev1;
+	iVideoFrameDev1 = NULL;
+	delete iVideoFrame1;
+	iVideoFrame1 = NULL;
+
+	delete iVideoFrameGc2;
+	iVideoFrameGc2 = NULL;
+	delete iVideoFrameDev2;
+	iVideoFrameDev2 = NULL;
+	delete iVideoFrame2;
+	iVideoFrame2 = NULL;
+
+	iVideoFrame1 = new(ELeave) CFbsBitmap;
+	User::LeaveIfError(iVideoFrame1->Create(iVideoFrameSize, displayMode));
+	iVideoFrameDev1 = CFbsBitmapDevice::NewL(iVideoFrame1);
+	User::LeaveIfError(iVideoFrameDev1->CreateContext(iVideoFrameGc1));
+	iVideoFrameGc1->SetPenColor(KRgbBlack);
+	iVideoFrameGc1->SetPenSize(TSize(KFrameFeatureBorderThickness, KFrameFeatureBorderThickness));
+	iVideoFrameGc1->SetBrushColor(KRgbWhite);
+	iVideoFrameGc1->SetFaded(ETrue);
+
+	if (iBuffersInUse == 2)
+		{
+		iVideoFrame2 = new(ELeave) CFbsBitmap;
+		User::LeaveIfError(iVideoFrame2->Create(iVideoFrameSize, displayMode));
+		iVideoFrameDev2 = CFbsBitmapDevice::NewL(iVideoFrame2);
+		User::LeaveIfError(iVideoFrameDev1->CreateContext(iVideoFrameGc2));
+		iVideoFrameGc2->SetPenColor(KRgbBlack);
+		iVideoFrameGc2->SetPenSize(TSize(KFrameFeatureBorderThickness, KFrameFeatureBorderThickness));
+		iVideoFrameGc2->SetBrushColor(KRgbWhite);
+		iVideoFrameGc2->SetFaded(ETrue);		
+		}
+
+	iVideoCapturePrepared = ETrue;
+	}
+
+void CTestCamera::PrepareVideoCaptureL(TFormat /*aFormat*/,TInt /*aSizeIndex*/,TInt /*aRateIndex*/,TInt /*aBuffersToUse*/,TInt /*aFramesPerBuffer*/,const TRect& /*aClipRect*/)
+	{
+	User::Leave(KErrNotSupported);
+	}
+
+void CTestCamera::StartVideoCapture()
+	{
+	if (!iReserved)
+		{
+		iVideoCaptureErr = KErrInUse;
+		}
+		
+	if (!iPowerOn || iImageCaptureActive || iVideoCaptureActive || !iVideoCapturePrepared)
+		{
+		iVideoCaptureErr = KErrNotReady;
+		}
+		
+	if (iVideoCaptureErr == KErrNone)
+		{
+		iVideoCaptureActive = ETrue;
+		}
+		
+	else
+		{
+		iVideoCaptureAsync.CallBack();
+		}
+	}
+
+void CTestCamera::StopVideoCapture()
+	{
+	iVideoCaptureActive = EFalse;
+	iFrameIndex = 0;
+	iElapsedTime = 0;
+	}
+
+TBool CTestCamera::VideoCaptureActive() const
+	{
+	return iVideoCaptureActive;
+	}
+
+void CTestCamera::EnumerateVideoFrameSizes(TSize& aSize,TInt aSizeIndex,TFormat aFormat) const
+	{
+	if (aSizeIndex < 0 || aSizeIndex >= iInfo.iNumVideoFrameSizesSupported ||
+		!(aFormat & iInfo.iVideoFrameFormatsSupported))
+		{
+		aSize = TSize(0,0);
+		}
+	else
+		{
+		aSize = iVideoFrameSizes[aSizeIndex];
+		}
+	}
+
+void CTestCamera::EnumerateVideoFrameRates(TReal32& aRate,TInt aRateIndex,TFormat aFormat,TInt aSizeIndex,TExposure aExposure) const
+	{
+	if (aRateIndex < 0 || aRateIndex >= iInfo.iNumVideoFrameRatesSupported ||
+		aSizeIndex < 0 || aSizeIndex >= iInfo.iNumVideoFrameSizesSupported ||
+		!(aFormat & iInfo.iVideoFrameFormatsSupported) ||
+		(!(aExposure & iInfo.iExposureModesSupported) && aExposure != CCamera::EExposureAuto))
+		{
+		aRate = 0.0;
+		}
+	else
+		{
+		aRate = iVideoFrameRates[aRateIndex];
+		}
+	}
+
+void CTestCamera::GetFrameSize(TSize& aSize) const
+	{
+	aSize = iVideoFrameSize;
+	}
+
+TReal32 CTestCamera::FrameRate() const
+	{
+	return iVideoFrameRate;
+	}
+
+TInt CTestCamera::BuffersInUse() const
+	{
+	return iBuffersInUse;
+	}
+
+TInt CTestCamera::FramesPerBuffer() const
+	{
+	return 1;
+	}
+
+void CTestCamera::SetJpegQuality(TInt /*aQuality*/)
+	{
+	}
+
+TInt CTestCamera::JpegQuality() const
+	{
+	return 0;
+	}
+
+TAny* CTestCamera::CustomInterface(TUid aInterface)
+	{
+	TAny* ptrIface = NULL;
+	TRAPD(error,CustomInterfaceL(ptrIface, aInterface));
+	
+	if(error == KErrNone)
+		{
+		switch(aInterface.iUid)
+			{
+			// advanced settings interface pointers
+			case KECamMCameraAdvancedSettingsUidValue:
+				{
+				return static_cast<MCameraAdvancedSettings*>(ptrIface);
+				}
+			case KECamMCameraAdvancedSettings2UidValue:
+				{
+				return static_cast<MCameraAdvancedSettings2*>(ptrIface);			
+				}
+			case KECamMCameraAdvancedSettings3UidValue:
+				{
+				return static_cast<MCameraAdvancedSettings3*>(ptrIface);
+				}
+			
+			// snapshot interface pointers	
+			case KECamMCameraSnapshotUidValue:
+				{
+				return static_cast<MCameraSnapshot*>(ptrIface);
+				}
+				
+			// preset interface pointers	
+			case KECamMCameraPresetsUidValue:
+				return static_cast<MCameraPresets*>(ptrIface);
+				
+			// image processing interface pointers
+			case KECamMCameraImageProcessingUidValue:
+				{
+				return static_cast<MCameraImageProcessing*>(ptrIface);
+				}
+				
+			case KECamMCameraImageProcessing2UidValue:
+				{
+				return static_cast<MCameraImageProcessing2*>(ptrIface);
+				}
+				
+			default:
+				return NULL;
+			}
+		}
+	else
+		{
+		return NULL;		
+		}
+	}
+
+void CTestCamera::CustomInterfaceL(TAny*& aIface, TUid aInterface)
+	{
+	switch(aInterface.iUid)
+		{
+		// advanced settings interface pointers
+		case KECamMCameraAdvancedSettingsUidValue:
+			{
+			iAdvSettingsImpl = CTestCamAdvSet::NewL(*this);
+			aIface = static_cast<MCameraAdvancedSettings*>(iAdvSettingsImpl);
+			break;
+			}
+		case KECamMCameraAdvancedSettings2UidValue:
+			{
+			iAdvSettingsImpl = CTestCamAdvSet::NewL(*this);
+			aIface = static_cast<MCameraAdvancedSettings2*>(iAdvSettingsImpl);			
+			break;
+			}
+		case KECamMCameraAdvancedSettings3UidValue:
+			{
+			iAdvSettingsImpl = CTestCamAdvSet::NewL(*this);
+			aIface = static_cast<MCameraAdvancedSettings3*>(iAdvSettingsImpl);
+			break;
+			}
+		
+		// snapshot interface pointers	
+		case KECamMCameraSnapshotUidValue:
+			{
+			iSnapshotImpl = CTestCamSnapshot::NewL(*this);
+			aIface = static_cast<MCameraSnapshot*>(iSnapshotImpl);
+			break;
+			}
+		// preset interface pointers	
+		case KECamMCameraPresetsUidValue:
+			{
+			aIface = static_cast<MCameraPresets*>(CTestCamPresets::NewL(*this));
+			break;
+			}
+			
+		// image processing interface pointers
+		case KECamMCameraImageProcessingUidValue:
+			{
+			iImgProcImpl = CTestCamImgProc::NewL(*this);	
+			aIface = static_cast<MCameraImageProcessing*>(iImgProcImpl);
+			break;
+			}
+			
+		case KECamMCameraImageProcessing2UidValue:
+			{
+			iImgProcImpl = CTestCamImgProc::NewL(*this);	
+			aIface = static_cast<MCameraImageProcessing2*>(iImgProcImpl);
+			break;
+			}
+			
+		default:
+			aIface = NULL;
+		}
+	}
+
+void CTestCamera::AbortNow(RDirectScreenAccess::TTerminationReasons /*aReason*/)
+	{
+	iViewFinderActive = EFalse;
+	}
+
+void CTestCamera::Restart(RDirectScreenAccess::TTerminationReasons /*aReason*/)
+	{
+	TRAPD(error,iDSA->StartL());
+	if (error != KErrNone)
+		{
+		return;
+		}
+	iDSA->Gc()->SetOrigin(); // Set Origin to top left of screen (0,0)
+
+	if (!iClipRect.IsEmpty())
+		{
+		iDSA->Gc()->SetClippingRect(iClipRect);
+		}
+	else
+		{
+		iDSA->Gc()->CancelClippingRect();
+		}
+
+	iViewFinderActive = ETrue;
+	}
+
+TInt CTestCamera::TimerCallBack(TAny* aThis)
+	{
+	static_cast<CTestCamera*>(aThis)->FrameReady();
+	return KErrNone;
+	}
+
+void CTestCamera::FrameReady()
+	{
+	if (iVideoPreparedLast)
+		{
+		iVideoFramePos.iX += KFramePosIncrement;
+		iVideoFramePos.iY += KFramePosIncrement;
+
+		if (iVideoFramePos.iX >= iVideoFrameSize.iWidth)
+			{
+			iVideoFramePos.iX = 0;
+			}
+			
+		if (iVideoFramePos.iY >= iVideoFrameSize.iHeight)
+			{
+			iVideoFramePos.iY = 0;
+			}
+		}
+	else
+		{
+		iStillImagePos.iX += KFramePosIncrement;
+		iStillImagePos.iY += KFramePosIncrement;
+
+		if (iStillImagePos.iX >= iStillImageSize.iWidth)
+			{
+			iStillImagePos.iX = 0;
+			}
+			
+		if (iStillImagePos.iY >= iStillImageSize.iHeight)
+			{
+			iStillImagePos.iY = 0;
+			}
+		}
+
+	if (iImageCaptureActive)
+		{
+		if (!iImageCapturePrepared)
+			{
+			iImageCaptureActive = EFalse;
+			if (iObserver2)
+				{
+				iObserver2->ImageBufferReady(iFrameCameraBuffer1,KErrNotReady);
+				}
+			else
+				{
+				iObserver->ImageReady(NULL,NULL,KErrNotReady);
+				}
+			}
+		else
+			{
+			if(iDriveMode == CCamera::CCameraAdvancedSettings::EDriveModeBurst)
+				{
+				for (TInt index =0; index < iBurstImages -1; index++)
+					{
+					if(iSnapshotImpl != NULL)
+						{
+						if(iSnapshotImpl->iSnapshotActive)
+							{
+							GetFrame(*(iSnapshotImpl->iSnapshotImageGc), iStillImagePos);
+							iSnapshotImpl->ServiceBurstImageSnapshot(*(iSnapshotImpl->iSnapshotImageGc));
+							}
+						}
+					
+					GetImgProcessedFrame(*iStillImageGc, iStillImagePos);
+					ServiceBurstImageCapture(*iStillImageGc);
+					}
+				}
+				
+			// normal case, single shot and last image from burst mode
+			if(iSnapshotImpl != NULL)
+				{
+				if(iSnapshotImpl->iSnapshotActive)
+					{
+					GetFrame(*iSnapshotImpl->iSnapshotImageGc, iStillImagePos);
+					iSnapshotImpl->ServiceSnapshot(*(iSnapshotImpl->iSnapshotImageGc));
+					}
+				}
+				
+			GetImgProcessedFrame(*iStillImageGc, iStillImagePos);
+			ServiceImageCapture(*iStillImageGc);	
+							
+			if (iVideoPreparedLast)
+				{
+				GetFrame(*iVideoFrameGc1, iVideoFramePos);
+				if (iViewFinderActive)
+					{
+					ServiceViewFinder(iVideoFrame1);
+					}	
+				}
+			else
+				{
+				if (iViewFinderActive)
+					{
+					ServiceViewFinder(iStillImage);
+					}
+				}
+			}
+		}
+
+	else if (iVideoCaptureActive)
+		{
+		if (!iVideoCapturePrepared)
+			{
+			iVideoCaptureActive = EFalse;
+			if (iObserver2)
+				{
+				iObserver2->VideoBufferReady(iFrameCameraBuffer1,KErrNotReady);
+				}
+			else
+				{
+				iObserver->FrameBufferReady(NULL,KErrNotReady);
+				}
+			}
+		else
+			{
+			if (iObserver2)
+				{
+				if (iFrameCameraBuffer1.iAvailable)
+					{
+					GetFrame(*iVideoFrameGc1, iVideoFramePos);
+					ServiceVideo(1);
+					if (iViewFinderActive)
+						{
+						ServiceViewFinder(iVideoFrame1);
+						}
+					}
+				else if (iFrameCameraBuffer2.iAvailable && iBuffersInUse == 2)
+					{
+					GetFrame(*iVideoFrameGc2, iVideoFramePos);
+					ServiceVideo(2);
+					if (iViewFinderActive)
+						{
+						ServiceViewFinder(iVideoFrame2);
+						}
+					}
+				}
+			else
+				{
+				if (iFrameBuffer1.iAvailable)
+					{
+					GetFrame(*iVideoFrameGc1, iVideoFramePos);
+					ServiceVideo(1);
+					if (iViewFinderActive)
+						{
+						ServiceViewFinder(iVideoFrame1);
+						}
+					}
+				else if (iFrameBuffer2.iAvailable && iBuffersInUse == 2)
+					{
+					GetFrame(*iVideoFrameGc2, iVideoFramePos);
+					ServiceVideo(2);
+					if (iViewFinderActive)
+						{
+						ServiceViewFinder(iVideoFrame2);
+						}
+					}
+				}
+			}
+	}
+
+	else if (iViewFinderActive)
+		{
+		if (iVideoPreparedLast)
+			{
+			GetFrame(*iVideoFrameGc1, iVideoFramePos);
+			ServiceViewFinder(iVideoFrame1);
+			}
+			else
+			{
+			GetFrame(*iStillImageGc, iStillImagePos);
+			ServiceViewFinder(iStillImage);
+			}
+		}
+	}
+
+void CTestCamera::GetFrame(CFbsBitGc& aGc, TPoint& aPos) const
+	{
+	TInt black = (100 - iContrast) * 127 / 200;
+	TInt white = ((100 + iContrast) * 128 / 200) + 127;
+
+	const TInt brightAdjust = iBrightness * 255 / 100;
+	black += brightAdjust;
+	white += brightAdjust;
+
+	black = Min(Max(black,0),255);
+	white = Min(Max(white,0),255);
+
+	aGc.SetFadingParameters(TUint8(black),TUint8(white));
+	aGc.Clear();
+	aGc.DrawRect(TRect(aPos,TSize(KFrameFeatureSize,KFrameFeatureSize)));
+	}
+	
+void CTestCamera::GetImgProcessedFrame(CFbsBitGc& aGc, TPoint& aPos) const
+	{
+	TInt contrast = iContrast;
+	TInt brightness = iBrightness;
+	
+	if(iImgProcImpl != NULL)
+		{
+		for(TInt index=0; index<iImgProcImpl->iActiveTransformations.Count(); index++)
+			{
+			switch(iImgProcImpl->iActiveTransformations[index].iUid)
+				{
+				case KUidECamEventImageProcessingAdjustBrightnessUidValue:
+					{
+					brightness = iImgProcBrightness;
+					break;
+					}
+				case KUidECamEventImageProcessingAdjustContrastUidValue:
+					{
+					contrast = iImgProcContrast;
+					break;
+					}
+				default:
+					{
+					break;
+					}
+				}
+			}
+		}
+	
+	TInt black = (100 - contrast) * 127 / 200;
+	TInt white = ((100 + contrast) * 128 / 200) + 127;
+
+	const TInt brightAdjust = brightness * 255 / 100;
+	black += brightAdjust;
+	white += brightAdjust;
+
+	black = Min(Max(black,0),255);
+	white = Min(Max(white,0),255);
+
+	aGc.SetFadingParameters(TUint8(black),TUint8(white));
+	aGc.Clear();
+	aGc.DrawRect(TRect(aPos,TSize(KFrameFeatureSize,KFrameFeatureSize)));
+	}
+	
+void CTestCamera::ServiceVideo(TInt aBufferNum)
+	{
+	iFrameIndex++;
+	iElapsedTime = iElapsedTime.Int64() + (TInt64(1000000) / TInt64(iVideoFrameRate));
+
+	if (aBufferNum == 1)
+		{
+		if (iObserver2)
+			{
+			iFrameCameraBuffer1.iIndexOfFirstFrameInBuffer = iFrameIndex;
+			iFrameCameraBuffer1.iElapsedTime = iElapsedTime;
+			iFrameCameraBuffer1.iAvailable = EFalse;
+			}
+		else
+			{
+			iFrameBuffer1.iIndexOfFirstFrameInBuffer = iFrameIndex;
+			iFrameBuffer1.iElapsedTime = iElapsedTime;
+			iFrameBuffer1.iAvailable = EFalse;
+			}
+			
+		if (iObserver2)
+			{
+			iObserver2->VideoBufferReady(iFrameCameraBuffer1,KErrNone);
+			}
+		else
+			{
+			iObserver->FrameBufferReady(&iFrameBuffer1,KErrNone);
+			}
+		}
+	else if (aBufferNum == 2)
+		{
+		if (iObserver2)
+			{
+			iFrameCameraBuffer2.iIndexOfFirstFrameInBuffer = iFrameIndex;
+			iFrameCameraBuffer2.iElapsedTime = iElapsedTime;
+			iFrameCameraBuffer2.iAvailable = EFalse;
+			}
+		else
+			{
+			iFrameBuffer2.iIndexOfFirstFrameInBuffer = iFrameIndex;
+			iFrameBuffer2.iElapsedTime = iElapsedTime;
+			iFrameBuffer2.iAvailable = EFalse;
+			}
+			
+		if (iObserver2)
+			{
+			iObserver2->VideoBufferReady(iFrameCameraBuffer2,KErrNone);
+			}
+		else
+			{
+			iObserver->FrameBufferReady(&iFrameBuffer2,KErrNone);
+			}
+		}
+	}
+
+void CTestCamera::ServiceViewFinder(CFbsBitmap* aSourceFrame)
+	{
+	if (iDSA)
+		{
+		iDSA->Gc()->DrawBitmap(iScreenRect,aSourceFrame);
+		iDSA->ScreenDevice()->Update();
+		}
+	else if (iViewFinderBitmap)
+		{
+		if (iViewFinderBitmapGc)
+			{
+			if (!iClipRect.IsEmpty())
+				{
+				TReal32 xRatio = static_cast<TReal32>(aSourceFrame->SizeInPixels().iWidth) / 
+								 static_cast<TReal32>(iClipRect.Size().iWidth);
+
+				TReal32 yRatio = static_cast<TReal32>(aSourceFrame->SizeInPixels().iHeight) / 
+								 static_cast<TReal32>(iClipRect.Size().iHeight);
+
+				TRect sourceRect(TPoint(static_cast<TInt>(xRatio*iClipRect.iTl.iX),
+										static_cast<TInt>(yRatio*iClipRect.iTl.iY)),
+								 TPoint(static_cast<TInt>(xRatio*iClipRect.iBr.iX),
+										static_cast<TInt>(yRatio*iClipRect.iBr.iY)));
+
+				TRect destRect(TPoint(0,0), iClipRect.Size());
+
+				iViewFinderBitmapGc->DrawBitmap(destRect,
+												aSourceFrame,
+												sourceRect);
+				}
+			else
+				{
+				TRect destRect(TPoint(0,0), iViewFinderBitmap->SizeInPixels());
+				iViewFinderBitmapGc->DrawBitmap(destRect, aSourceFrame);
+				}
+				
+			if (iObserver2)
+				{
+				iObserver2->ViewFinderReady(iFrameCameraBuffer1,KErrNone);
+				}
+			else
+				{
+				iObserver->ViewFinderFrameReady(*iViewFinderBitmap);
+				}
+		
+			}
+		}
+	else
+		{
+		iScreenGc->DrawBitmap(iClipRect,aSourceFrame);
+		iScreenDev->Update();
+		}
+	}
+
+void CTestCamera::ServiceImageCapture(const CFbsBitGc& aSourceBitmapGc)
+	{
+	iImageCaptureActive = EFalse;
+	iGc->BitBlt(TPoint(0,0), aSourceBitmapGc);
+	CFbsBitmap* image = iImage;
+	RTestCameraFrameBuffer frameBuffer(image);
+	delete iGc;
+	iGc = NULL;
+	delete iDev;
+	iDev = NULL;
+	if (iObserver2 != NULL)
+		{
+		iObserver2->ImageBufferReady(frameBuffer,KErrNone);
+		}
+	else
+		{
+		iImage = NULL;
+		iObserver->ImageReady(image,NULL,KErrNone);
+		}
+	}
+	
+void CTestCamera::ServiceBurstImageCapture(const CFbsBitGc& aSourceBitmapGc)
+	{
+	iGc->BitBlt(TPoint(0,0), aSourceBitmapGc);
+	if (iObserver2 != NULL)
+		{
+		CFbsBitmap* image = iImage;
+		RTestCameraFrameBuffer frameBuffer(image);
+		iObserver2->ImageBufferReady(frameBuffer,KErrNone);
+		}
+	else//not for MCameraObserver
+		{
+		return;
+		}
+	
+	if(iSnapshotImpl)
+		{
+		if(iSnapshotImpl->iSnapshotActive)
+			{
+			return;
+			}
+		}
+	User::After(500000);
+	iStillImagePos.iX += KFramePosIncrement;
+	iStillImagePos.iY += KFramePosIncrement;
+
+	if (iStillImagePos.iX >= iStillImageSize.iWidth)
+		{
+		iStillImagePos.iX = 0;
+		}
+			
+	if (iStillImagePos.iY >= iStillImageSize.iHeight)
+		{
+		iStillImagePos.iY = 0;
+		}
+	}
+
+void CTestCamera::CheckReserveAndPowerL()
+	{
+	if (!iReserved)
+		{
+		User::Leave(KErrInUse);
+		}
+		
+	if (!iPowerOn)
+		{
+		User::Leave(KErrNotReady);
+		}	
+	}
+
+TInt CTestCamera::CheckReserveAndPower() const
+	{
+	if (!iReserved)
+		{
+		return KErrInUse;
+		}
+		
+	if (!iPowerOn)
+		{
+		return KErrNotReady;
+		}	
+	
+	return KErrNone;
+	}
+
+TInt CTestCamera::ReserveCallBack(TAny* aThis)
+	{
+	const TECAMEvent event(KUidECamEventReserveComplete,KErrNone);
+	CTestCamera* testCamera = static_cast<CTestCamera*>(aThis);
+	if (testCamera->iObserver2)
+		{
+		testCamera->iObserver2->HandleEvent(event);
+		}
+	else
+		{
+		testCamera->iObserver->ReserveComplete(KErrNone);
+		}
+	return KErrNone;
+	}
+
+TInt CTestCamera::PowerOnCallBack(TAny* aThis)
+	{
+	TECAMEvent event(KUidECamEventPowerOnComplete,KErrNone);
+	CTestCamera* testCamera = static_cast<CTestCamera*>(aThis);
+	if (testCamera->iObserver2)
+		{
+		testCamera->iObserver2->HandleEvent(event);
+		}
+	else
+		{
+		testCamera->iObserver->PowerOnComplete(testCamera->iPowerOn ? KErrNone : KErrInUse);
+		}
+	return KErrNone;
+	}
+
+TInt CTestCamera::ImageCaptureCallBack(TAny* aThis)
+	{
+	CTestCamera* testCamera = static_cast<CTestCamera*>(aThis);
+	if (testCamera->iObserver2)
+		{
+		testCamera->iObserver2->ImageBufferReady((static_cast<CTestCamera*>(aThis))->iFrameCameraBuffer1,testCamera->iStillCaptureErr);
+		}
+	else
+		{
+		testCamera->iObserver->ImageReady(NULL,NULL,testCamera->iStillCaptureErr);
+		}
+	testCamera->iStillCaptureErr = KErrNone;
+	return KErrNone;
+	}
+
+TInt CTestCamera::VideoCaptureCallBack(TAny* aThis)
+	{
+	CTestCamera* testCamera = static_cast<CTestCamera*>(aThis);
+	if (testCamera->iObserver2)
+		{
+		testCamera->iObserver2->VideoBufferReady((static_cast<CTestCamera*>(aThis))->iFrameCameraBuffer1,testCamera->iVideoCaptureErr);
+		}
+	else
+		{
+		testCamera->iObserver->FrameBufferReady(NULL,testCamera->iVideoCaptureErr);
+		}
+	testCamera->iVideoCaptureErr = KErrNone;
+	return KErrNone;
+	}
+	
+TInt CTestCamera::HandleEventCallBack(TAny* aThis)
+	{
+	CTestCamera* testCamera = static_cast<CTestCamera*>(aThis);
+	if (testCamera->iObserver2)
+		{
+		testCamera->iObserver2->HandleEvent(testCamera->iECamEvent);
+		}
+	
+	return KErrNone;
+	}
+
+TInt CTestCamera::HandleEvent2CallBack(TAny* aThis)
+	{
+	CTestCamera* testCamera = static_cast<CTestCamera*>(aThis);
+	if (testCamera->iObserver2)
+		{
+		testCamera->iObserver2->HandleEvent(testCamera->iECamEvent2);
+		}
+	
+	return KErrNone;
+	}
+
+//
+// CTestCameraInfo
+//
+
+CTestCameraInfo::CTestCameraInfo()
+	{
+	}
+	
+CTestCameraInfo::~CTestCameraInfo()
+	{
+	}
+	
+CTestCameraInfo* CTestCameraInfo::NewL()
+	{
+	FileDependencyUtil::CheckFileDependencyL();
+	return new (ELeave) CTestCameraInfo;
+	}
+	
+TInt CTestCameraInfo::CamerasAvailable()
+	{
+	return 1;
+	}
+
+//void CTestCamera::CheckFileDependencyL()
+void FileDependencyUtil::CheckFileDependencyL()
+	{	
+	RFs fsSession;
+  	RFile file;
+    CleanupClosePushL(fsSession);
+  	User::LeaveIfError(fsSession.Connect());
+    TInt err = file.Open(fsSession, KTestCameraPluginName, EFileRead);
+  	file.Close();
+  	if(err != KErrNone)
+  		{
+	    User::LeaveIfError(KErrNotSupported);
+  		}
+  	CleanupStack::PopAndDestroy(); //fsSession 
+	}
+
+// __________________________________________________________________________
+// Exported proxy for instantiation method resolution
+// Define the interface UIDs
+const TImplementationProxy ImplementationTable[] = 
+	{
+	IMPLEMENTATION_PROXY_ENTRY(KUidOnboardCameraTestPlugin,	CTestCamera::NewL),
+	IMPLEMENTATION_PROXY_ENTRY(KUidOnboardCameraTestInfo,	CTestCameraInfo::NewL)
+	};
+
+EXPORT_C const TImplementationProxy* ImplementationGroupProxy(TInt& aTableCount)
+	{
+	aTableCount = sizeof(ImplementationTable) / sizeof(TImplementationProxy);
+
+	return ImplementationTable;
+	}
--- a/mmplugins/cameraplugins/source/testcamera/TestCamera.h	Thu Mar 25 11:21:36 2010 +0900
+++ b/mmplugins/cameraplugins/source/testcamera/TestCamera.h	Tue Oct 19 11:48:59 2010 +0900
@@ -1,318 +1,318 @@
-// Copyright (c) 2002-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:
-//
-
-#ifndef __TESTCAMERA_H__
-#define __TESTCAMERA_H__
-
-
-#include <ecam/ecamplugin.h>
-#include <ecam/ecaminfoplugin.h>
-#include <bitdev.h>
-#include <ecam.h>
-#include <w32std.h>
-#include <ecamadvsettings.h>
-
-_LIT(KTestCameraPluginName, "C:\\102070cc.txt");
-
-const TInt KMinTestCameraZoom = -3;
-const TInt KMaxTestCameraZoom = 3;
-const TReal32 KMaxTestCameraDigitalZoomFactor = 1.0;
-const TInt KMaxTestCameraDigitalZoom = 0;
-const TInt KFramePosIncrement = 5;
-const TInt KFrameFeatureSize = 25;
-const TInt KFrameFeatureBorderThickness = 5;
-const enum CCamera::TFormat KInitialViewFinderFormat = CCamera::EFormatFbsBitmapColor16M;
-const TDisplayMode KViewFinderDisplayMode = EColor4K;
-
-class CTestCamAdvSet;
-class CTestCamPresets;
-class CTestCamSnapshot;
-class CTestCamImgProc;
-
-class RTestCameraFrameBuffer : public MCameraBuffer
-	{
-public:
-	RTestCameraFrameBuffer(CFbsBitmap*& aFrame): iAvailable(ETrue), iFrame(aFrame) {}
-	virtual TInt NumFrames() {return 0;}
-	virtual TDesC8* DataL(TInt aFrameIndex) {if (aFrameIndex != 0) { User::Leave(KErrArgument); } return NULL; }
-	virtual CFbsBitmap& BitmapL(TInt aFrameIndex) {if (aFrameIndex != 0) { User::Leave(KErrArgument); } return *iFrame;}
- 	virtual	RChunk& ChunkL() { return iChunk;}
-	virtual TInt ChunkOffsetL(TInt aFrameIndex) {if (aFrameIndex != 0) { User::Leave(KErrArgument); } return 0;}
-	virtual TInt FrameSize(TInt aFrameIndex) {if (aFrameIndex != 0) { User::Leave(KErrArgument); } return 0; }
-	virtual void Release() {iAvailable = ETrue;}
-public:	
-	volatile TBool iAvailable;
-	CFbsBitmap*& iFrame;
-	RChunk iChunk;
-	};
-
-class RTestFrameBuffer : public MFrameBuffer
-	{
-public:
-	RTestFrameBuffer(CFbsBitmap*& aFrame): iAvailable(ETrue), iFrame(aFrame) {}
-	virtual TDesC8* DataL(TInt /*aIndex*/) { User::Leave(KErrNotSupported); return NULL; }
-	virtual CFbsBitmap* FrameL(TInt aIndex) { if (aIndex != 0) User::Leave(KErrNotSupported); return iFrame; }
-	virtual void Release() { iAvailable = ETrue; }
-public:
-	TBool iAvailable;
-	CFbsBitmap*& iFrame;
-	};
-
-class CDirectScreenAccess;
-
-class CTestCamera : public CCameraPlugin, public MDirectScreenAccess
-	{
-	friend class CTestCamAdvSet;
-	friend class CTestCamPresets;
-	friend class CTestCamSnapshot;
-	friend class CTestCamImgProc;
-	
-public:
-	static CTestCamera* NewL();
-	~CTestCamera();
-	void ConstructL();
-	// from CCameraPlugin
-	void Construct2L(MCameraObserver& aObserver,TInt aCameraIndex);
-	void Construct2DupL(MCameraObserver& aObserver,TInt aCameraHandle);
-	void Construct2L(MCameraObserver2& aObserver,TInt aCameraIndex,TInt aPriority);
-	void Construct2DupL(MCameraObserver2& aObserver,TInt aCameraHandle);
-private:
-	// From CCamera
-	virtual void CameraInfo(TCameraInfo& aInfo) const;
-	virtual void Reserve();
-	virtual void Release();
-	virtual void PowerOn();
-	virtual void PowerOff();
-	virtual TInt Handle();
-
-	virtual void SetZoomFactorL(TInt aZoomFactor = 0);
-	virtual TInt ZoomFactor() const;
-	virtual void SetDigitalZoomFactorL(TInt aDigitalZoomFactor = 0);
-	virtual TInt DigitalZoomFactor() const;
-
-	virtual void SetContrastL(TInt aContrast);
-	virtual TInt Contrast() const;
-	virtual void SetBrightnessL(TInt aBrightness);
-	virtual TInt Brightness() const;
-	virtual void SetFlashL(TFlash aFlash = EFlashNone);
-	virtual TFlash Flash() const;
-	virtual void SetExposureL(TExposure aExposure = EExposureAuto);
-	virtual TExposure Exposure() const;
-	virtual void SetWhiteBalanceL(TWhiteBalance aWhiteBalance = EWBAuto);
-	virtual TWhiteBalance WhiteBalance() const;
-
-	virtual void StartViewFinderDirectL(RWsSession& aWs,CWsScreenDevice& aScreenDevice,RWindowBase& aWindow,TRect& aScreenRect);
-	virtual void StartViewFinderDirectL(RWsSession& aWs,CWsScreenDevice& aScreenDevice,RWindowBase& aWindow,TRect& aScreenRect,TRect& aClipRect);
-	virtual void StartViewFinderBitmapsL(TSize& aSize);
-	virtual void StartViewFinderBitmapsL(TSize& aSize,TRect& aClipRect);
-	virtual void StartViewFinderL(TFormat aImageFormat,TSize& aSize);
-	virtual void StartViewFinderL(TFormat aImageFormat,TSize& aSize,TRect& aClipRect);
-	virtual void StopViewFinder();
-	virtual TBool ViewFinderActive() const;
-	virtual void SetViewFinderMirrorL(TBool aMirror);
-	virtual TBool ViewFinderMirror() const;
-
-	virtual void PrepareImageCaptureL(TFormat aImageFormat,TInt aSizeIndex);
-	virtual void PrepareImageCaptureL(TFormat aImageFormat,TInt aSizeIndex,const TRect& aClipRect);
-	virtual void CaptureImage();
-	virtual void CancelCaptureImage();
-	virtual void EnumerateCaptureSizes(TSize& aSize,TInt aSizeIndex,TFormat aFormat) const;
-
-	virtual void PrepareVideoCaptureL(TFormat aFormat,TInt aSizeIndex,TInt aRateIndex,TInt aBuffersToUse,TInt aFramesPerBuffer);
-	virtual void PrepareVideoCaptureL(TFormat aFormat,TInt aSizeIndex,TInt aRateIndex,TInt aBuffersToUse,TInt aFramesPerBuffer,const TRect& aClipRect);
-	virtual void StartVideoCapture();
-	virtual void StopVideoCapture();
-
-	virtual TBool VideoCaptureActive() const;
-	virtual void EnumerateVideoFrameSizes(TSize& aSize,TInt aSizeIndex,TFormat aFormat) const;
-	virtual void EnumerateVideoFrameRates(TReal32& aRate,TInt aRateIndex,TFormat aFormat,TInt aSizeIndex,TExposure aExposure = EExposureAuto) const;
-	virtual void GetFrameSize(TSize& aSize) const;
-	virtual TReal32 FrameRate() const;
-	virtual TInt BuffersInUse() const;
-	virtual TInt FramesPerBuffer() const;
-
-	virtual void SetJpegQuality(TInt aQuality);
-	virtual TInt JpegQuality() const;
-
-	virtual TAny* CustomInterface(TUid aInterface);
-
-	// From MAbortDirectScreenAccess
-	virtual void AbortNow(RDirectScreenAccess::TTerminationReasons aReason);
-
-	// From MDirectScreenAccess
-	virtual void Restart(RDirectScreenAccess::TTerminationReasons aReason);
-
-	// New functions
-	static TInt TimerCallBack(TAny* aThis);
-	void FrameReady();
-	void GetFrame(CFbsBitGc& aGc, TPoint& aPos) const;
-	void GetImgProcessedFrame(CFbsBitGc& aGc, TPoint& aPos) const;
-	void ServiceVideo(TInt aBuferNum);
-	void ServiceViewFinder(CFbsBitmap* aSourceFrame);
-	void ServiceImageCapture(const CFbsBitGc& aSourceBitmapGc);
-	void ServiceBurstImageCapture(const CFbsBitGc& aSourceBitmapGc);
-	void DoCaptureImageL();
-	void CheckReserveAndPowerL();
-	TInt CheckReserveAndPower() const;
-	void CustomInterfaceL(TAny*& aIface, TUid aInterface);
-	static TInt ReserveCallBack(TAny* aThis);
-	static TInt PowerOnCallBack(TAny* aThis);
-	static TInt ImageCaptureCallBack(TAny* aThis);
-	static TInt VideoCaptureCallBack(TAny* aThis);
-	static TInt HandleEventCallBack(TAny* aThis);
-	static TInt HandleEvent2CallBack(TAny* aThis);
-	
-private:
-	 CTestCamera();	
-private:
-	MCameraObserver* iObserver; // not owned
-	MCameraObserver2* iObserver2; // not owned
-	TBool iReserved;
-	TBool iPowerOn;
-
-	TCameraInfo iInfo;
-	CPeriodic* iTimer;
-	TTimeIntervalMicroSeconds32 iFrameDelay;
-	TInt iFrameIndex;
-	TTimeIntervalMicroSeconds iElapsedTime;
-	TPoint iStillImagePos;
-	TPoint iVideoFramePos;
-
-	TReal32 iVideoFrameRate;
-	TInt iBuffersInUse;
-	TSize iVideoFrameSize;
-	TFormat iVideoFrameFormat;
-
-	CFbsBitmap* iVideoFrame1;
-	CFbsBitmapDevice* iVideoFrameDev1;
-	CFbsBitGc* iVideoFrameGc1;
-	CFbsBitmap* iVideoFrame2;
-	CFbsBitmapDevice* iVideoFrameDev2;
-	CFbsBitGc* iVideoFrameGc2;
-
-	TInt iStillCaptureErr;
-	TSize iStillImageSize;
-	TFormat iStillImageFormat;
-	CFbsBitmap* iStillImage;
-	CFbsBitmapDevice* iStillImageDev;
-	CFbsBitGc* iStillImageGc;
-
-	TSize iViewFinderSize;
-	TFormat iViewFinderFormat;
-	CFbsBitmap* iViewFinderBitmap;
-	CFbsBitmapDevice* iViewFinderBitmapDev;
-	CFbsBitGc* iViewFinderBitmapGc;
-
-	CDirectScreenAccess* iDSA;
-	CFbsScreenDevice* iScreenDev;
-	CFbsBitGc* iScreenGc;
-	TRect iScreenRect;
-	TRect iClipRect;
-
-	CFbsBitmap* iImage;
-	CFbsBitmapDevice* iDev;
-	CFbsBitGc* iGc;
-
-	CAsyncCallBack iReserveAsync;
-	CAsyncCallBack iPowerOnAsync;
-	CAsyncCallBack iImageCaptureAsync;
-	CAsyncCallBack iVideoCaptureAsync;
-	CAsyncCallBack iHandleEventAsync;
-	CAsyncCallBack iHandleEvent2Async;
-
-	RTestFrameBuffer iFrameBuffer1;
-	RTestFrameBuffer iFrameBuffer2;
-	
-	RTestCameraFrameBuffer iFrameCameraBuffer1;
-	RTestCameraFrameBuffer iFrameCameraBuffer2;
-
-	TInt iVideoCaptureErr;
-	// Members to store the current optical or digital value set with SetZoomFactorL() and SetDigitalZoomFactorL()
-	// Although arguments have trailing Factor in fact they must contain values in the ranges specified by
-	//  	iInfo.iMinZoom : iInfo.iMaxZoom for optical zoom and 
-	//		0 : iInfo.iMaxDigitalZoom for digital zoom 
-	// The factor values cannot be modified using Camera API as it is assumed 
-	// that they are determined by the camera hardware.  
-	TInt iZoom;
-	TInt iDigitalZoom;
-	
-	TInt iContrast;
-	TInt iBrightness;
-	
-	TInt iImgProcBrightness;
-	TInt iImgProcContrast;
-	
-	volatile TBool iViewFinderActive;
-	volatile TBool iVideoCaptureActive;
-	volatile TBool iImageCaptureActive;
-	volatile TBool iVideoPreparedLast;
-	volatile TBool iVideoCapturePrepared;
-	volatile TBool iImageCapturePrepared;
-
-	RArray<TSize> iImageSizes;
-	RArray<TSize> iVideoFrameSizes;
-	RArray<TReal32> iVideoFrameRates;
-	TInt iCameraIndex;
-	TInt iCameraHandle;
-	TInt iPriority;	
-	
-	TECAMEvent iECamEvent;
-	TECAMEvent2 iECamEvent2;
-	TInt iEventError;
-	
-	CTestCamAdvSet* iAdvSettingsImpl;
-	CTestCamSnapshot* iSnapshotImpl;
-	CTestCamImgProc* iImgProcImpl;
-	
-	CCamera::CCameraAdvancedSettings::TDriveMode iDriveMode;
-	TInt iBurstImages;
-	};
-	
-class CTestCameraInfo : public CCameraInfoPlugin
-	{
-public:
-	static CTestCameraInfo* NewL();
-	~CTestCameraInfo();
-	// from CCameraInfoPlugin
-	TInt CamerasAvailable();
-private:
-	CTestCameraInfo();	
-	};
-	
-enum TStubPanicReasons
-	{
-	EPanicUnimplemented=1
-	};	
-
-class FileDependencyUtil
-	{
-public:
-	static void CheckFileDependencyL();
-	};
-
-class CDataGlobal : public CBase
-	{
-public:
-	CTestCamAdvSet* iTestCamAdvSet;
-	CTestCamPresets* iTestCamPresets;
-	CTestCamSnapshot* iTestCamSnapshot;
-	CTestCamImgProc* iTestCamImgProc;
-	TInt 		iAdvSetReferenceCount;	
-	TInt 		iPresetsReferenceCount;
-	TInt 		iSnapshotReferenceCount;	
-	TInt 		iImgProcReferenceCount;
-	};
-	
-#endif
+// Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of the License "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+#ifndef __TESTCAMERA_H__
+#define __TESTCAMERA_H__
+
+
+#include <ecam/ecamplugin.h>
+#include <ecam/ecaminfoplugin.h>
+#include <bitdev.h>
+#include <ecam.h>
+#include <w32std.h>
+#include <ecamadvsettings.h>
+
+_LIT(KTestCameraPluginName, "C:\\102070cc.txt");
+
+const TInt KMinTestCameraZoom = -3;
+const TInt KMaxTestCameraZoom = 3;
+const TReal32 KMaxTestCameraDigitalZoomFactor = 1.0;
+const TInt KMaxTestCameraDigitalZoom = 0;
+const TInt KFramePosIncrement = 5;
+const TInt KFrameFeatureSize = 25;
+const TInt KFrameFeatureBorderThickness = 5;
+const enum CCamera::TFormat KInitialViewFinderFormat = CCamera::EFormatFbsBitmapColor16M;
+const TDisplayMode KViewFinderDisplayMode = EColor4K;
+
+class CTestCamAdvSet;
+class CTestCamPresets;
+class CTestCamSnapshot;
+class CTestCamImgProc;
+
+class RTestCameraFrameBuffer : public MCameraBuffer
+	{
+public:
+	RTestCameraFrameBuffer(CFbsBitmap*& aFrame): iAvailable(ETrue), iFrame(aFrame) {}
+	virtual TInt NumFrames() {return 0;}
+	virtual TDesC8* DataL(TInt aFrameIndex) {if (aFrameIndex != 0) { User::Leave(KErrArgument); } return NULL; }
+	virtual CFbsBitmap& BitmapL(TInt aFrameIndex) {if (aFrameIndex != 0) { User::Leave(KErrArgument); } return *iFrame;}
+ 	virtual	RChunk& ChunkL() { return iChunk;}
+	virtual TInt ChunkOffsetL(TInt aFrameIndex) {if (aFrameIndex != 0) { User::Leave(KErrArgument); } return 0;}
+	virtual TInt FrameSize(TInt aFrameIndex) {if (aFrameIndex != 0) { User::Leave(KErrArgument); } return 0; }
+	virtual void Release() {iAvailable = ETrue;}
+public:	
+	volatile TBool iAvailable;
+	CFbsBitmap*& iFrame;
+	RChunk iChunk;
+	};
+
+class RTestFrameBuffer : public MFrameBuffer
+	{
+public:
+	RTestFrameBuffer(CFbsBitmap*& aFrame): iAvailable(ETrue), iFrame(aFrame) {}
+	virtual TDesC8* DataL(TInt /*aIndex*/) { User::Leave(KErrNotSupported); return NULL; }
+	virtual CFbsBitmap* FrameL(TInt aIndex) { if (aIndex != 0) User::Leave(KErrNotSupported); return iFrame; }
+	virtual void Release() { iAvailable = ETrue; }
+public:
+	TBool iAvailable;
+	CFbsBitmap*& iFrame;
+	};
+
+class CDirectScreenAccess;
+
+class CTestCamera : public CCameraPlugin, public MDirectScreenAccess
+	{
+	friend class CTestCamAdvSet;
+	friend class CTestCamPresets;
+	friend class CTestCamSnapshot;
+	friend class CTestCamImgProc;
+	
+public:
+	static CTestCamera* NewL();
+	~CTestCamera();
+	void ConstructL();
+	// from CCameraPlugin
+	void Construct2L(MCameraObserver& aObserver,TInt aCameraIndex);
+	void Construct2DupL(MCameraObserver& aObserver,TInt aCameraHandle);
+	void Construct2L(MCameraObserver2& aObserver,TInt aCameraIndex,TInt aPriority);
+	void Construct2DupL(MCameraObserver2& aObserver,TInt aCameraHandle);
+private:
+	// From CCamera
+	virtual void CameraInfo(TCameraInfo& aInfo) const;
+	virtual void Reserve();
+	virtual void Release();
+	virtual void PowerOn();
+	virtual void PowerOff();
+	virtual TInt Handle();
+
+	virtual void SetZoomFactorL(TInt aZoomFactor = 0);
+	virtual TInt ZoomFactor() const;
+	virtual void SetDigitalZoomFactorL(TInt aDigitalZoomFactor = 0);
+	virtual TInt DigitalZoomFactor() const;
+
+	virtual void SetContrastL(TInt aContrast);
+	virtual TInt Contrast() const;
+	virtual void SetBrightnessL(TInt aBrightness);
+	virtual TInt Brightness() const;
+	virtual void SetFlashL(TFlash aFlash = EFlashNone);
+	virtual TFlash Flash() const;
+	virtual void SetExposureL(TExposure aExposure = EExposureAuto);
+	virtual TExposure Exposure() const;
+	virtual void SetWhiteBalanceL(TWhiteBalance aWhiteBalance = EWBAuto);
+	virtual TWhiteBalance WhiteBalance() const;
+
+	virtual void StartViewFinderDirectL(RWsSession& aWs,CWsScreenDevice& aScreenDevice,RWindowBase& aWindow,TRect& aScreenRect);
+	virtual void StartViewFinderDirectL(RWsSession& aWs,CWsScreenDevice& aScreenDevice,RWindowBase& aWindow,TRect& aScreenRect,TRect& aClipRect);
+	virtual void StartViewFinderBitmapsL(TSize& aSize);
+	virtual void StartViewFinderBitmapsL(TSize& aSize,TRect& aClipRect);
+	virtual void StartViewFinderL(TFormat aImageFormat,TSize& aSize);
+	virtual void StartViewFinderL(TFormat aImageFormat,TSize& aSize,TRect& aClipRect);
+	virtual void StopViewFinder();
+	virtual TBool ViewFinderActive() const;
+	virtual void SetViewFinderMirrorL(TBool aMirror);
+	virtual TBool ViewFinderMirror() const;
+
+	virtual void PrepareImageCaptureL(TFormat aImageFormat,TInt aSizeIndex);
+	virtual void PrepareImageCaptureL(TFormat aImageFormat,TInt aSizeIndex,const TRect& aClipRect);
+	virtual void CaptureImage();
+	virtual void CancelCaptureImage();
+	virtual void EnumerateCaptureSizes(TSize& aSize,TInt aSizeIndex,TFormat aFormat) const;
+
+	virtual void PrepareVideoCaptureL(TFormat aFormat,TInt aSizeIndex,TInt aRateIndex,TInt aBuffersToUse,TInt aFramesPerBuffer);
+	virtual void PrepareVideoCaptureL(TFormat aFormat,TInt aSizeIndex,TInt aRateIndex,TInt aBuffersToUse,TInt aFramesPerBuffer,const TRect& aClipRect);
+	virtual void StartVideoCapture();
+	virtual void StopVideoCapture();
+
+	virtual TBool VideoCaptureActive() const;
+	virtual void EnumerateVideoFrameSizes(TSize& aSize,TInt aSizeIndex,TFormat aFormat) const;
+	virtual void EnumerateVideoFrameRates(TReal32& aRate,TInt aRateIndex,TFormat aFormat,TInt aSizeIndex,TExposure aExposure = EExposureAuto) const;
+	virtual void GetFrameSize(TSize& aSize) const;
+	virtual TReal32 FrameRate() const;
+	virtual TInt BuffersInUse() const;
+	virtual TInt FramesPerBuffer() const;
+
+	virtual void SetJpegQuality(TInt aQuality);
+	virtual TInt JpegQuality() const;
+
+	virtual TAny* CustomInterface(TUid aInterface);
+
+	// From MAbortDirectScreenAccess
+	virtual void AbortNow(RDirectScreenAccess::TTerminationReasons aReason);
+
+	// From MDirectScreenAccess
+	virtual void Restart(RDirectScreenAccess::TTerminationReasons aReason);
+
+	// New functions
+	static TInt TimerCallBack(TAny* aThis);
+	void FrameReady();
+	void GetFrame(CFbsBitGc& aGc, TPoint& aPos) const;
+	void GetImgProcessedFrame(CFbsBitGc& aGc, TPoint& aPos) const;
+	void ServiceVideo(TInt aBuferNum);
+	void ServiceViewFinder(CFbsBitmap* aSourceFrame);
+	void ServiceImageCapture(const CFbsBitGc& aSourceBitmapGc);
+	void ServiceBurstImageCapture(const CFbsBitGc& aSourceBitmapGc);
+	void DoCaptureImageL();
+	void CheckReserveAndPowerL();
+	TInt CheckReserveAndPower() const;
+	void CustomInterfaceL(TAny*& aIface, TUid aInterface);
+	static TInt ReserveCallBack(TAny* aThis);
+	static TInt PowerOnCallBack(TAny* aThis);
+	static TInt ImageCaptureCallBack(TAny* aThis);
+	static TInt VideoCaptureCallBack(TAny* aThis);
+	static TInt HandleEventCallBack(TAny* aThis);
+	static TInt HandleEvent2CallBack(TAny* aThis);
+	
+private:
+	 CTestCamera();	
+private:
+	MCameraObserver* iObserver; // not owned
+	MCameraObserver2* iObserver2; // not owned
+	TBool iReserved;
+	TBool iPowerOn;
+
+	TCameraInfo iInfo;
+	CPeriodic* iTimer;
+	TTimeIntervalMicroSeconds32 iFrameDelay;
+	TInt iFrameIndex;
+	TTimeIntervalMicroSeconds iElapsedTime;
+	TPoint iStillImagePos;
+	TPoint iVideoFramePos;
+
+	TReal32 iVideoFrameRate;
+	TInt iBuffersInUse;
+	TSize iVideoFrameSize;
+	TFormat iVideoFrameFormat;
+
+	CFbsBitmap* iVideoFrame1;
+	CFbsBitmapDevice* iVideoFrameDev1;
+	CFbsBitGc* iVideoFrameGc1;
+	CFbsBitmap* iVideoFrame2;
+	CFbsBitmapDevice* iVideoFrameDev2;
+	CFbsBitGc* iVideoFrameGc2;
+
+	TInt iStillCaptureErr;
+	TSize iStillImageSize;
+	TFormat iStillImageFormat;
+	CFbsBitmap* iStillImage;
+	CFbsBitmapDevice* iStillImageDev;
+	CFbsBitGc* iStillImageGc;
+
+	TSize iViewFinderSize;
+	TFormat iViewFinderFormat;
+	CFbsBitmap* iViewFinderBitmap;
+	CFbsBitmapDevice* iViewFinderBitmapDev;
+	CFbsBitGc* iViewFinderBitmapGc;
+
+	CDirectScreenAccess* iDSA;
+	CFbsScreenDevice* iScreenDev;
+	CFbsBitGc* iScreenGc;
+	TRect iScreenRect;
+	TRect iClipRect;
+
+	CFbsBitmap* iImage;
+	CFbsBitmapDevice* iDev;
+	CFbsBitGc* iGc;
+
+	CAsyncCallBack iReserveAsync;
+	CAsyncCallBack iPowerOnAsync;
+	CAsyncCallBack iImageCaptureAsync;
+	CAsyncCallBack iVideoCaptureAsync;
+	CAsyncCallBack iHandleEventAsync;
+	CAsyncCallBack iHandleEvent2Async;
+
+	RTestFrameBuffer iFrameBuffer1;
+	RTestFrameBuffer iFrameBuffer2;
+	
+	RTestCameraFrameBuffer iFrameCameraBuffer1;
+	RTestCameraFrameBuffer iFrameCameraBuffer2;
+
+	TInt iVideoCaptureErr;
+	// Members to store the current optical or digital value set with SetZoomFactorL() and SetDigitalZoomFactorL()
+	// Although arguments have trailing Factor in fact they must contain values in the ranges specified by
+	//  	iInfo.iMinZoom : iInfo.iMaxZoom for optical zoom and 
+	//		0 : iInfo.iMaxDigitalZoom for digital zoom 
+	// The factor values cannot be modified using Camera API as it is assumed 
+	// that they are determined by the camera hardware.  
+	TInt iZoom;
+	TInt iDigitalZoom;
+	
+	TInt iContrast;
+	TInt iBrightness;
+	
+	TInt iImgProcBrightness;
+	TInt iImgProcContrast;
+	
+	volatile TBool iViewFinderActive;
+	volatile TBool iVideoCaptureActive;
+	volatile TBool iImageCaptureActive;
+	volatile TBool iVideoPreparedLast;
+	volatile TBool iVideoCapturePrepared;
+	volatile TBool iImageCapturePrepared;
+
+	RArray<TSize> iImageSizes;
+	RArray<TSize> iVideoFrameSizes;
+	RArray<TReal32> iVideoFrameRates;
+	TInt iCameraIndex;
+	TInt iCameraHandle;
+	TInt iPriority;	
+	
+	TECAMEvent iECamEvent;
+	TECAMEvent2 iECamEvent2;
+	TInt iEventError;
+	
+	CTestCamAdvSet* iAdvSettingsImpl;
+	CTestCamSnapshot* iSnapshotImpl;
+	CTestCamImgProc* iImgProcImpl;
+	
+	CCamera::CCameraAdvancedSettings::TDriveMode iDriveMode;
+	TInt iBurstImages;
+	};
+	
+class CTestCameraInfo : public CCameraInfoPlugin
+	{
+public:
+	static CTestCameraInfo* NewL();
+	~CTestCameraInfo();
+	// from CCameraInfoPlugin
+	TInt CamerasAvailable();
+private:
+	CTestCameraInfo();	
+	};
+	
+enum TStubPanicReasons
+	{
+	EPanicUnimplemented=1
+	};	
+
+class FileDependencyUtil
+	{
+public:
+	static void CheckFileDependencyL();
+	};
+
+class CDataGlobal : public CBase
+	{
+public:
+	CTestCamAdvSet* iTestCamAdvSet;
+	CTestCamPresets* iTestCamPresets;
+	CTestCamSnapshot* iTestCamSnapshot;
+	CTestCamImgProc* iTestCamImgProc;
+	TInt 		iAdvSetReferenceCount;	
+	TInt 		iPresetsReferenceCount;
+	TInt 		iSnapshotReferenceCount;	
+	TInt 		iImgProcReferenceCount;
+	};
+	
+#endif
--- a/mmplugins/cameraplugins/source/testcamera/TestCameraUids.hrh	Thu Mar 25 11:21:36 2010 +0900
+++ b/mmplugins/cameraplugins/source/testcamera/TestCameraUids.hrh	Tue Oct 19 11:48:59 2010 +0900
@@ -1,25 +1,24 @@
-// Copyright (c) 2005-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:
-//
-
-#ifndef TESTCAMERAUIDS_HRH
-#define TESTCAMERAUIDS_HRH
-
-
-#define KUidOnboardCameraTestDll	0x102070CC
-#define KUidOnboardCameraTestPlugin     0x102070CD
-#define	KUidOnboardCameraTestInfo	0x102070CE
-
-#endif // TESTCAMERAUIDS_HRH
-
+// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of the License "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+#ifndef TESTCAMERAUIDS_HRH
+#define TESTCAMERAUIDS_HRH
+
+
+#define KUidOnboardCameraTestDll	0x102070CC
+#define KUidOnboardCameraTestPlugin     0x102070CD
+#define	KUidOnboardCameraTestInfo	0x102070CE
+
+#endif // TESTCAMERAUIDS_HRH
--- a/mmplugins/cameraplugins/source/testcamera/test_advanced_settings.cpp	Thu Mar 25 11:21:36 2010 +0900
+++ b/mmplugins/cameraplugins/source/testcamera/test_advanced_settings.cpp	Tue Oct 19 11:48:59 2010 +0900
@@ -1,1602 +1,1602 @@
-// Copyright (c) 2007-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:
-// testadvancedsettings.cpp
-// 
-//
-
-#include "test_advanced_settings.h"
-#include <ecamerrors.h>
-#include "ecamversion.h"
-
-CTestCamAdvSet::CTestCamAdvSet(CTestCamera& aOwner): iOwner(aOwner)
-	{
-	Init();
-	}
-	
-CTestCamAdvSet::~CTestCamAdvSet()
-	{
-	iSupportedISORates.Close();
-	iSupportedApertures.Close();
-	iSupportedShutterSpeeds.Close();
-	
-	CDataGlobal* globalData = static_cast <CDataGlobal*> (Dll::Tls());	
-	if(globalData != NULL)
-		{
-		if(!globalData->iTestCamPresets && !globalData->iTestCamSnapshot && !globalData->iTestCamImgProc)
-			{
-			delete globalData;
-			Dll::FreeTls();
-			}	
-		else
-			{
-			globalData->iTestCamAdvSet = NULL;	
-			Dll::SetTls(globalData);
-			}
-		}
-	}
-		
-CTestCamAdvSet* CTestCamAdvSet::NewL(CTestCamera& aOwner)
-	{
-	CDataGlobal* globalData = static_cast <CDataGlobal*> (Dll::Tls());
-	
-	if(globalData == NULL)
-		{
-		globalData = new (ELeave) CDataGlobal;
-		CleanupStack::PushL(globalData);
-		globalData->iAdvSetReferenceCount = 0;
-		globalData->iTestCamAdvSet = new (ELeave) CTestCamAdvSet(aOwner);
-		CleanupStack::PushL(globalData->iTestCamAdvSet);
-		globalData->iTestCamAdvSet->ConstructL();
-		globalData->iTestCamAdvSet->iRefCount = 1;
-		User::LeaveIfError(Dll::SetTls(globalData));
-		CleanupStack::Pop(globalData->iTestCamAdvSet);
-		CleanupStack::Pop(globalData);
-		return globalData->iTestCamAdvSet;
-		}
-	else
-		{
-		if(globalData->iTestCamAdvSet == NULL)
-			{
-			globalData->iAdvSetReferenceCount = 0;
-			globalData->iTestCamAdvSet = new (ELeave) CTestCamAdvSet(aOwner);
-			CleanupStack::PushL(globalData->iTestCamAdvSet);
-			globalData->iTestCamAdvSet->ConstructL();
-			globalData->iTestCamAdvSet->iRefCount = 1;
-			User::LeaveIfError(Dll::SetTls(globalData));
-			CleanupStack::Pop(globalData->iTestCamAdvSet);
-			return globalData->iTestCamAdvSet;
-			}
-			
-		CTestCamAdvSet* self = globalData->iTestCamAdvSet;
-		
-		globalData->iAdvSetReferenceCount++;
-		self->iRefCount = globalData->iAdvSetReferenceCount + 1;
-		if (globalData->iAdvSetReferenceCount == KNumOfAdvSetExtensions-1 )
-			{
-			globalData->iTestCamAdvSet = NULL;
-			if(!globalData->iTestCamPresets && !globalData->iTestCamSnapshot && !globalData->iTestCamImgProc)
-				{
-				delete globalData;
-				Dll::FreeTls();
-				}
-			else
-				{
-				User::LeaveIfError(Dll::SetTls(globalData));
-				}
-			}
-		else
-			{
-			User::LeaveIfError(Dll::SetTls(globalData));
-			}
-		return self;		
-		}
-	}
-
-void CTestCamAdvSet::Release()
-	{
-	iRefCount--; 
-	if(iRefCount == 0)
-		{
-		iOwner.iAdvSettingsImpl = NULL;
-		delete this;
-		}
-	}	
-	
-void CTestCamAdvSet::Init()
-	{
-	for(TUint i=0; i< KNumAvailableCameras; i++)
-		{
-		iCameraTypes[i] = CCamera::CCameraAdvancedSettings::ECameraPluggable;
-		}
-	
-	iFocusDistance = KDefaultFocusDistance;
-	iIsoRate = KDefaultIsoRate;
-	iISORateType = CCamera::CCameraAdvancedSettings::EISOManual;
-	iAperture = KDefaultAperture;
-	iShutterSpeed = KDefaultShutterSpeed;
-	}
-	
-void CTestCamAdvSet::ConstructL()
-	{
-	iSupportedISORates.Reset();
-	iSupportedISORates.AppendL(KDefaultIsoRate);
-	
-	iSupportedApertures.Reset();
-	iSupportedApertures.AppendL(KDefaultAperture);
-	
-	iSupportedShutterSpeeds.Reset();
-	iSupportedShutterSpeeds.AppendL(KDefaultShutterSpeed);
-	}
-
-CCamera::CCameraAdvancedSettings::TCameraType CTestCamAdvSet::CameraType() const
-	{
-	return CCamera::CCameraAdvancedSettings::ECameraPluggable;	
-	}
-
-CCamera::CCameraAdvancedSettings::TCameraType CTestCamAdvSet::CameraType(TInt aCameraIndex) const
-	{
-	if (aCameraIndex >= KNumAvailableCameras || aCameraIndex < 0)
-		{
-		return CCamera::CCameraAdvancedSettings::ECameraUnknown;	
-		}
-	else 
-		{
-		return iCameraTypes[aCameraIndex];	
-		}
-	}
-	
-TBool CTestCamAdvSet::IsCameraPresent() const
-	{
-	return ETrue;
-	}
-
-TBool CTestCamAdvSet::IsCameraPresent(TInt aCameraIndex) const
-	{
-	if (aCameraIndex >= KNumAvailableCameras || aCameraIndex < 0)
-		{
-		return EFalse;	
-		}
-	else 
-		{
-		return ETrue;	
-		}
-	}
-	
-TInt CTestCamAdvSet::CameraIndex() const
-	{
-	return iOwner.iCameraIndex;
-	}
-	
-TInt CTestCamAdvSet::SupportedStabilizationModes() const
-	{
-	return KFeatureNotSupported;
-	}
-	
-CCamera::CCameraAdvancedSettings::TStabilizationMode CTestCamAdvSet::StabilizationMode() const
-	{
-	return CCamera::CCameraAdvancedSettings::EStabilizationModeOff;
-	}
-	
-void CTestCamAdvSet::SetStabilizationMode(CCamera::CCameraAdvancedSettings::TStabilizationMode aStabilizationMode)
-	{	
-	TInt eventError = KErrNotSupported;
-	if(aStabilizationMode == CCamera::CCameraAdvancedSettings::EStabilizationModeOff)
-		{
-		eventError = KErrAlreadyExists;
-		}
-		
-	TECAMEvent ecamevent(KUidECamEventCameraSettingStabilizationMode, eventError);
-	
-	iOwner.iECamEvent = ecamevent;
-	iOwner.iHandleEventAsync.CallBack();
-	}
-	
-TInt CTestCamAdvSet::SupportedFocusModes() const
-	{
-	return KFeatureNotSupported;
-	}
-	
-CCamera::CCameraAdvancedSettings::TFocusMode CTestCamAdvSet::FocusMode() const
-	{
-	return CCamera::CCameraAdvancedSettings::EFocusModeAuto;	
-	}
-	
-void CTestCamAdvSet::SetFocusMode(CCamera::CCameraAdvancedSettings::TFocusMode aFocusMode)
-	{
-	TInt eventError = KErrNotSupported;
-	if(aFocusMode == CCamera::CCameraAdvancedSettings::EFocusModeAuto)
-		{
-		eventError = KErrAlreadyExists;
-		}
-		
-	TECAMEvent ecamevent(KUidECamEventCameraSettingFocusMode, eventError);
-	
-	iOwner.iECamEvent = ecamevent;
-	iOwner.iHandleEventAsync.CallBack();
-	}
-	
-TInt CTestCamAdvSet::SupportedFocusRanges() const
-	{
-	return KFeatureNotSupported;
-	}
-	
-CCamera::CCameraAdvancedSettings::TFocusRange CTestCamAdvSet::FocusRange() const
-	{
-	return CCamera::CCameraAdvancedSettings::EFocusRangeAuto;
-	}
-	
-void CTestCamAdvSet::SetFocusRange(CCamera::CCameraAdvancedSettings::TFocusRange aFocusRange)
-	{
-	TInt eventError = KErrNotSupported;
-	if(aFocusRange == CCamera::CCameraAdvancedSettings::EFocusRangeAuto)
-		{
-		eventError = KErrAlreadyExists;
-		}
-		
-	TECAMEvent ecamevent1(KUidECamEventCameraSettingFocusRange2, eventError);
-	TECAMEvent ecamevent2(KUidECamEventCameraSettingFocusRange, eventError);
-	
-	iOwner.iECamEvent = ecamevent1;
-	iOwner.iHandleEventAsync.CallBack();
-	
-	iOwner.iECamEvent = ecamevent2;
-	iOwner.iHandleEventAsync.CallBack();
-	}
-	
-TInt CTestCamAdvSet::SupportedAutoFocusTypes() const
-	{
-	return KFeatureNotSupported;
-	}
-	
-CCamera::CCameraAdvancedSettings::TAutoFocusType CTestCamAdvSet::AutoFocusType() const
-	{
-    return CCamera::CCameraAdvancedSettings::EAutoFocusTypeOff;
-	}
-	
-void CTestCamAdvSet::SetAutoFocusType(CCamera::CCameraAdvancedSettings::TAutoFocusType aAutoFocusType)
-	{
-	TInt eventError = KErrNotSupported;
-	if(aAutoFocusType == CCamera::CCameraAdvancedSettings::EAutoFocusTypeOff)
-		{
-		eventError = KErrAlreadyExists;
-		}
-		
-	TECAMEvent ecamevent1(KUidECamEventCameraSettingAutoFocusType2, eventError);
-	TECAMEvent ecamevent2(KUidECamEventCameraSettingAutoFocusType, eventError);
-	
-	iOwner.iECamEvent = ecamevent1;
-	iOwner.iHandleEventAsync.CallBack();
-	
-	iOwner.iECamEvent = ecamevent2;
-	iOwner.iHandleEventAsync.CallBack();
-	}
-	
-TInt CTestCamAdvSet::SupportedAutoFocusAreas() const
-	{
-	return KFeatureNotSupported;
-	}
-	
-CCamera::CCameraAdvancedSettings::TAutoFocusArea CTestCamAdvSet::AutoFocusArea() const
-	{
-	return CCamera::CCameraAdvancedSettings::EAutoFocusTypeAuto;
-	}
-	
-void CTestCamAdvSet::SetAutoFocusArea(CCamera::CCameraAdvancedSettings::TAutoFocusArea aAutoFocusArea)
-	{
-	TInt eventError = KErrNotSupported;
-	if(aAutoFocusArea == CCamera::CCameraAdvancedSettings::EAutoFocusTypeAuto)
-		{
-		eventError = KErrAlreadyExists;
-		}
-		
-	TECAMEvent ecamevent(KUidECamEventCameraSettingAutoFocusArea, eventError);
-	
-	iOwner.iECamEvent = ecamevent;
-	iOwner.iHandleEventAsync.CallBack();
-	}
-	
-TInt CTestCamAdvSet::FocusDistance() const
-	{
-	return iFocusDistance;
-	}
-	
-void CTestCamAdvSet::SetFocusDistance(TInt aDistance) 
-	{
-	TInt eventError = KErrNone;
-	if(aDistance < 0)
-		{
-		eventError = KErrNotSupported;
-		}
-	else
-		{
-		iFocusDistance = aDistance;
-		}
-		
-	TECAMEvent ecamevent(KUidECamEventCameraSettingFocusDistance, eventError);
-	
-	iOwner.iECamEvent = ecamevent;
-	iOwner.iHandleEventAsync.CallBack();
-	}
-	
-TInt CTestCamAdvSet::GetMinFocalLength() const
-	{
-	return KErrNotSupported;
-	}
-	
-void CTestCamAdvSet::GetSupportedIsoRatesL(RArray<TInt>& aSupportedIsoRates) const
-	{
-	if(iSupportedISORates.Count() == 0)
-		{
-		User::Leave(KErrNotSupported);
-		}
-	
-	for(TInt index=0; index < iSupportedISORates.Count(); index++)
-		{
-		aSupportedIsoRates.AppendL(iSupportedISORates[index]);
-		}
-	}
-	
-TInt CTestCamAdvSet::IsoRate() const
-	{
-	return iIsoRate; 
-	}
-
-void CTestCamAdvSet::SetIsoRate(TInt aRate)
-	{
-	TInt eventError = KErrNone;
-	if(iSupportedISORates.Find(aRate) == KErrNotFound)
-		{
-		eventError = KErrECamParameterNotInRange;
-		}
-	else 
-		{
-		//set the ISO type to Manual
-		iISORateType = CCamera::CCameraAdvancedSettings::EISOManual;			
-		iIsoRate = aRate;
-		}
-		
-	TECAMEvent ecamevent(KUidECamEventCameraSettingIsoRate, eventError);
-	
-	iOwner.iECamEvent = ecamevent;
-	iOwner.iHandleEventAsync.CallBack();
-	}
-
-void CTestCamAdvSet::GetSupportedISORateTypeL(TInt& aSupportedISORateTypes) const
-	{
-	aSupportedISORateTypes = KSupportedISORateTypes;	
-	}
-		
-void CTestCamAdvSet::SetISORate(CCamera::CCameraAdvancedSettings::TISORateType aISORateType, TInt aParam)
-	{
-	TInt eventError = KErrNone;
-	
-	if(!(aISORateType & KSupportedISORateTypes) || iSupportedISORates.Count() == 0)
-		{
-		eventError = KErrNotSupported;
-		}
-	else
-		{
-		switch(aISORateType)
-			{
-			case CCamera::CCameraAdvancedSettings::EISOManual:
-				{
-				if(iSupportedISORates.Find(aParam) == KErrNotFound)
-					{
-					eventError = KErrECamParameterNotInRange;
-					}
-				else
-					{
-					iISORateType = aISORateType;
-					if(aParam == iIsoRate)
-						{
-						eventError = KErrAlreadyExists;
-						}
-					else
-						{
-						iIsoRate = aParam;
-						}
-					}
-				break;
-				}
-			case CCamera::CCameraAdvancedSettings::EISOAutoUnPrioritised:
-				{
-				eventError = KErrNotSupported;
-				break;	
-				}
-			case CCamera::CCameraAdvancedSettings::EISOAutoISOPrioritised:
-				{
-				eventError = KErrNotSupported;
-				break;
-				}
-			case CCamera::CCameraAdvancedSettings::EISOAutoShutterSpeedPrioritised:
-				{
-				eventError = KErrNotSupported;
-				break;	
-				}
-			case CCamera::CCameraAdvancedSettings::EISOAutoAperturePrioritised:
-				{
-				eventError = KErrNotSupported;
-				break;	
-				}
-			default:
-				eventError = KErrNotSupported;
-			}
-		}
-			
-	TECAMEvent ecamevent(KUidECamEventCameraSettingIsoRateType, eventError);
-	
-	iOwner.iECamEvent = ecamevent;
-	iOwner.iHandleEventAsync.CallBack();
-	}
-
-void CTestCamAdvSet::GetISORateL(CCamera::CCameraAdvancedSettings::TISORateType& aISORateType, TInt& /*aParam*/, TInt& aISORate) const
-	{
-	//If camera has no ISO rate supported, then leave
-	if(iSupportedISORates.Count() == 0)	
-		{
-		User::Leave(KErrNotSupported);
-		}
-		
-	aISORateType = iISORateType;
-	aISORate = iIsoRate;
-//	aParam is redundant for manual ISO.
-	}
-	
-void CTestCamAdvSet::GetAperturesL(RArray<TInt>& aFStops, TValueInfo& aInfo) const
-	{
-	if(iSupportedApertures.Count() == 0)
-		{
-		aFStops.Reset();
-		aInfo = ENotActive;
-		}
-	
-	for(TInt index=0; index < iSupportedApertures.Count(); index++)
-		{
-		aFStops.AppendL(iSupportedApertures[index]);
-		}
-		
-	aInfo = EDiscreteSteps;
-	}
-	
-TInt CTestCamAdvSet::Aperture() const
-	{
-	return iAperture;
-	}
-
-void CTestCamAdvSet::SetAperture(TInt aFStop)
-	{	
-	TInt eventError = KErrNone;
-	if(iSupportedApertures.Find(aFStop) == KErrNotFound)
-		{
-		eventError = KErrECamParameterNotInRange;
-		}
-	else 
-		{
-		iAperture = aFStop;
-		}
-		
-	TECAMEvent ecamevent(KUidECamEventCameraSettingAperture, eventError);
-	
-	iOwner.iECamEvent = ecamevent;
-	iOwner.iHandleEventAsync.CallBack();
-	}	
-	
-void CTestCamAdvSet::GetShutterSpeedsL(RArray<TInt>& aShutterSpeeds, TValueInfo& aInfo) const
-	{
-	if(iSupportedShutterSpeeds.Count() == 0)
-		{
-		aShutterSpeeds.Reset();
-		aInfo = ENotActive;
-		}
-	
-	for(TInt index=0; index < iSupportedShutterSpeeds.Count(); index++)
-		{
-		aShutterSpeeds.AppendL(iSupportedShutterSpeeds[index]);
-		aInfo = EDiscreteSteps;
-		}
-	}
-	
-TInt CTestCamAdvSet::ShutterSpeed() const
-	{
-	return iShutterSpeed;
-	}
-	
-void CTestCamAdvSet::SetShutterSpeed(TInt aShutterSpeed)
-	{
-	TInt eventError = KErrNone;
-	if(iSupportedShutterSpeeds.Find(aShutterSpeed) == KErrNotFound)
-		{
-		eventError = KErrECamParameterNotInRange;
-		}
-	else 
-		{
-		iShutterSpeed = aShutterSpeed;
-		}
-		
-	TECAMEvent ecamevent(KUidECamEventCameraSettingShutterSpeed, eventError);
-	
-	iOwner.iECamEvent = ecamevent;
-	iOwner.iHandleEventAsync.CallBack();
-	}
-	
-TInt CTestCamAdvSet::SupportedMeteringModes() const
-	{
-	return KFeatureNotSupported;
-	}
-	
-CCamera::CCameraAdvancedSettings::TMeteringMode CTestCamAdvSet::MeteringMode() const
-	{
-	return CCamera::CCameraAdvancedSettings::EMeteringModeAuto;
-	}
-	
-void CTestCamAdvSet::SetMeteringMode(CCamera::CCameraAdvancedSettings::TMeteringMode aMeteringMode)
-	{
-	TInt eventError = KErrNotSupported;
-	if(aMeteringMode == CCamera::CCameraAdvancedSettings::EMeteringModeAuto)
-		{
-		eventError = KErrAlreadyExists;
-		}
-		
-	TECAMEvent ecamevent(KUidECamEventCameraSettingMeteringMode, eventError);
-	
-	iOwner.iECamEvent = ecamevent;
-	iOwner.iHandleEventAsync.CallBack();
-	}
-	
-TInt CTestCamAdvSet::SupportedDriveModes() const
-	{
-	return KSupportedDriveModes;
-	}
-	
-CCamera::CCameraAdvancedSettings::TDriveMode CTestCamAdvSet::DriveMode() const
-	{
-	return iOwner.iDriveMode;
-	}
-	
-void CTestCamAdvSet::SetDriveMode(CCamera::CCameraAdvancedSettings::TDriveMode aDriveMode)
-	{
-	TInt eventError = KErrNone;
-	if(iOwner.iVideoCaptureActive || iOwner.iImageCaptureActive)
-		{
-		eventError = KErrNotReady;
-		}
-	else
-		{
-		if(!(aDriveMode & KSupportedDriveModes))
-			{
-			eventError = KErrNotSupported;
-			}	
-		else
-			{
-			if(eventError == KErrNone)
-				{
-				iOwner.iDriveMode = aDriveMode;
-				}	
-			}
-		}
-	
-	TECAMEvent ecamevent(KUidECamEventCameraSettingDriveMode, eventError);
-	
-	iOwner.iECamEvent = ecamevent;
-	iOwner.iHandleEventAsync.CallBack();
-	}
-	
-TInt CTestCamAdvSet::SupportedBracketModes() const
-	{
-	return KFeatureNotSupported;
-	}
-	
-CCamera::CCameraAdvancedSettings::TBracketMode CTestCamAdvSet::BracketMode() const
-	{
-	return CCamera::CCameraAdvancedSettings::EBracketModeOff;
-	}
-	
-void CTestCamAdvSet::SetBracketMode(CCamera::CCameraAdvancedSettings::TBracketMode aBracketMode)
-	{
-	TInt eventError = KErrNotSupported;
-	if(aBracketMode == CCamera::CCameraAdvancedSettings::EBracketModeOff)
-		{
-		eventError = KErrAlreadyExists;
-		}
-		
-	TECAMEvent ecamevent(KUidECamEventCameraSettingBracketMode, eventError);
-	
-	iOwner.iECamEvent = ecamevent;
-	iOwner.iHandleEventAsync.CallBack();
-	}
-	
-TInt CTestCamAdvSet::SupportedBracketParameters() const
-	{
-	return KFeatureNotSupported;
-	}
-	
-CCamera::CCameraAdvancedSettings::TBracketParameter CTestCamAdvSet::BracketParameter() const
-	{
-	return CCamera::CCameraAdvancedSettings::EBracketParameterNone;
-	}
-	
-void CTestCamAdvSet::SetBracketParameter(CCamera::CCameraAdvancedSettings::TBracketParameter aBracketParameter)
-	{
-	TInt eventError = KErrNotSupported;
-	if(aBracketParameter == CCamera::CCameraAdvancedSettings::EBracketParameterNone)
-		{
-		eventError = KErrAlreadyExists;
-		}
-		
-	TECAMEvent ecamevent(KUidECamEventCameraSettingBracketParameter, eventError);
-	
-	iOwner.iECamEvent = ecamevent;
-	iOwner.iHandleEventAsync.CallBack();
-	}
-	
-TInt CTestCamAdvSet::SupportedBracketSteps() const
-	{
-	return KFeatureNotSupported;
-	}
-	
-CCamera::CCameraAdvancedSettings::TBracketStep CTestCamAdvSet::BracketStep() const
-	{
-	return CCamera::CCameraAdvancedSettings::EBracketStepNonConfig;
-	}
-	
-void CTestCamAdvSet::SetBracketStep(CCamera::CCameraAdvancedSettings::TBracketStep aBracketStep)
-	{
-	TInt eventError = KErrNotSupported;
-	if(aBracketStep == CCamera::CCameraAdvancedSettings::EBracketStepNonConfig)
-		{
-		eventError = KErrAlreadyExists;
-		}
-		
-	TECAMEvent ecamevent(KUidECamEventCameraSettingBracketStep, eventError);
-	
-	iOwner.iECamEvent = ecamevent;
-	iOwner.iHandleEventAsync.CallBack();
-	}
-	
-void CTestCamAdvSet::GetBracketMerge(TInt& aStartIndex, TInt& aFrames) const
-	{
-	aStartIndex = KFeatureNotSupported;
-	aFrames     = KFeatureNotSupported;
-	}
-	
-void CTestCamAdvSet::SetBracketMerge(TInt /*aStartIndex*/ , TInt /*aFrames*/)
-	{
-	TECAMEvent ecamevent(KUidECamEventBracketMerge, KErrNotSupported);
-	
-	iOwner.iECamEvent = ecamevent;
-	iOwner.iHandleEventAsync.CallBack();
-	}
-	
-TInt CTestCamAdvSet::SupportedFlashModes() const
-	{
-	return KFeatureNotSupported;
-	}
-	
-CCamera::TFlash CTestCamAdvSet::FlashMode() const
-	{
-	return CCamera::EFlashNone;
-	}
-	
-void CTestCamAdvSet::SetFlashMode(CCamera::TFlash /*aMode*/)
-	{
-    TECAMEvent ecamevent(KUidECamEventCameraSettingFlashMode, KErrNotSupported);
-	
-	iOwner.iECamEvent = ecamevent;
-	iOwner.iHandleEventAsync.CallBack();
-	}
-	
-TBool CTestCamAdvSet::RedEyeReduceOn() const
-	{
-	return KDefaultRedEyeReduce;
-	}
-	
-void CTestCamAdvSet::SetRedEyeReduceOn(TBool /*aState*/)
-	{
-	TECAMEvent ecamevent(KUidECamEventCameraSettingFlashRedEyeReduce, KErrNotSupported);
-						 
-	iOwner.iECamEvent = ecamevent;
-	iOwner.iHandleEventAsync.CallBack();
-	}
-	
-void CTestCamAdvSet::GetFlashCompensationStepsL(RArray<TInt>& aFlashCompensationSteps, TValueInfo& aInfo) const
-	{
-	aFlashCompensationSteps.Reset();
-	aInfo = ENotActive;
-	}
-	
-TInt CTestCamAdvSet::FlashCompensationStep() const
-	{
-	return KFlashCompensationStep;
-	}
-
-TInt CTestCamAdvSet::GetFlashCompensationStep(TInt& aFlashCompensationStep) const
-	{
-	aFlashCompensationStep = KFlashCompensationStep;
-	return KErrNone;
-	}
-	
-void CTestCamAdvSet::GetFlashCompensationRangeInSteps(TInt& aNegativeCompensation, TInt& aPositiveCompensation) const
-	{
-	aNegativeCompensation = KFlashCompensationStep;
-	aPositiveCompensation = KFlashCompensationStep;
-	}
-	
-void CTestCamAdvSet::SetFlashCompensationStep(TInt /*aFlashCompensationStep*/)
-	{
-	TECAMEvent ecamevent(KUidECamEventCameraSettingFlashCompensationStep, KErrNotSupported);
-	
-	iOwner.iECamEvent = ecamevent;
-	iOwner.iHandleEventAsync.CallBack();
-	}
-	
-TInt CTestCamAdvSet::FlashCompensation() const
-	{
-	return KFlashCompensationStep;
-	}
-	
-TInt CTestCamAdvSet::GetFlashCompensation(TInt& aFlashCompensation) const
-	{
-	aFlashCompensation = KFlashCompensationStep;
-	return KErrNone;
-	}
-	
-void CTestCamAdvSet::SetFlashCompensation(TInt /*aFlashCompensation*/)
-	{
-	TECAMEvent ecamevent(KUidECamEventCameraSettingFlashCompensation, KErrNotSupported);
-	
-	iOwner.iECamEvent = ecamevent;
-	iOwner.iHandleEventAsync.CallBack();
-	}
-	
-TBool CTestCamAdvSet::IsExternalFlashPresent() const
-	{
-	return KExternalFlashPresentState;
-	}
-	
-void CTestCamAdvSet::GetManualFlashPowerLevelsL(RArray<TInt>& aManualFlashPowerLevels, TValueInfo& aInfo) const
-	{
-	aManualFlashPowerLevels.Reset();
-	aInfo = ENotActive;
-	}
-	
-TInt CTestCamAdvSet::ManualFlashPowerLevel() const
-	{
-	return KErrNotSupported;
-	}
-	
-void CTestCamAdvSet::SetManualFlashPowerLevel(TInt /*aManualFlashPowerLevel*/)
-	{
-	TECAMEvent ecamevent(KUidECamEventCameraSettingFlashManualPower, KErrNotSupported);
-	
-	iOwner.iECamEvent = ecamevent;
-	iOwner.iHandleEventAsync.CallBack();
-	}
-	
-TInt CTestCamAdvSet::SupportedExposureModes() const
-	{
-	return CCamera::EExposureAuto;
-	}
-	
-CCamera::TExposure CTestCamAdvSet::ExposureMode() const
-	{
-	return CCamera::EExposureAuto;
-	}
-	
-void CTestCamAdvSet::SetExposureMode(CCamera::TExposure aExposureMode)
-	{
-	TInt eventError = KErrNotSupported;
-	if(aExposureMode == CCamera::EExposureAuto)
-		{
-		eventError = KErrAlreadyExists;
-		}
-		
-	TECAMEvent ecamevent(KUidECamEventCameraSettingExposureMode, eventError);
-	
-	iOwner.iECamEvent = ecamevent;
-	iOwner.iHandleEventAsync.CallBack();
-	}
-	
-void CTestCamAdvSet::GetExposureCompensationStepsL(RArray<TInt>& aExposureCompensationSteps, TValueInfo& aInfo) const
-	{
-	aExposureCompensationSteps.Reset();
-	aInfo = ENotActive;
-	}
-
-void CTestCamAdvSet::GetExposureCompensationRangeInSteps(TInt& aNegativeCompensation, TInt& aPositiveCompensation) const
-	{
-	aNegativeCompensation = KExposureCompensationStep;
-	aPositiveCompensation = KExposureCompensationStep;
-	}
-	
-TInt CTestCamAdvSet::ExposureCompensationStep() const
-	{
-	return KExposureCompensationStep;
-	}
-	
-TInt CTestCamAdvSet::GetExposureCompensationStep(TInt& aExposureCompensationStep) const
-	{
-	aExposureCompensationStep = KExposureCompensationStep;
-	return KErrNone;
-	}
-	
-void CTestCamAdvSet::SetExposureCompensationStep(TInt /*aExposureCompensationStep*/)
-	{
-	TECAMEvent ecamevent(KUidECamEventCameraSettingExposureCompensationStep, KErrNotSupported);
-	
-	iOwner.iECamEvent = ecamevent;
-	iOwner.iHandleEventAsync.CallBack();
-	}
-	
-TInt CTestCamAdvSet::ExposureCompensation() const
-	{
-	return KExposureCompensationStep;
-	}
-	
-TInt CTestCamAdvSet::GetExposureCompensation(TInt& aExposureCompensation) const
-	{
-	aExposureCompensation = KExposureCompensationStep;
-	return KErrNone;
-	}
-	
-void CTestCamAdvSet::SetExposureCompensation(TInt /*aExposureCompensation*/)
-	{
-	TECAMEvent ecamevent(KUidECamEventCameraSettingExposureCompensation, KErrNotSupported);
-	
-	iOwner.iECamEvent = ecamevent;
-	iOwner.iHandleEventAsync.CallBack();
-	}
-	
-TInt CTestCamAdvSet::SupportedWhiteBalanceModes() const
-	{
-	return KFeatureNotSupported;
-	}
-	
-CCamera::TWhiteBalance CTestCamAdvSet::WhiteBalanceMode() const
-	{
-	return CCamera::EWBAuto;
-	}
-	
-void CTestCamAdvSet::SetWhiteBalanceMode(CCamera::TWhiteBalance aWhiteBalanceMode)
-	{
-	TInt eventError = KErrNotSupported;
-	if(aWhiteBalanceMode == CCamera::EWBAuto)
-		{
-		eventError = KErrAlreadyExists;
-		}
-		
-	TECAMEvent ecamevent(KUidECamEventCameraSettingWhiteBalanceMode, eventError);
-	
-	iOwner.iECamEvent = ecamevent;
-	iOwner.iHandleEventAsync.CallBack();
-	}
-	
-TBool CTestCamAdvSet::ApertureExposureLockOn() const
-	{
-	return KApertureExposureLockOn;
-	}
-	
-void CTestCamAdvSet::SetApertureExposureLockOn(TBool /*aAELock*/)
-	{
-	TECAMEvent ecamevent(KUidECamEventAELock, KErrNotSupported);
-	
-	iOwner.iECamEvent = ecamevent;
-	iOwner.iHandleEventAsync.CallBack();
-	}
-	
-TBool CTestCamAdvSet::ShootClickOn() const
-	{
-	return KShootClickOn;
-	}
-	
-void CTestCamAdvSet::SetShootClickOn(TBool /*aShootClickOn*/)
-	{
-	TECAMEvent ecamevent(KUidECamEventSoundClick, KErrNotSupported);
-	
-	iOwner.iECamEvent = ecamevent;
-	iOwner.iHandleEventAsync.CallBack();
-	}
-	
-void CTestCamAdvSet::GetTimerIntervalsL(RArray<TInt>& aTimerIntervals, TValueInfo& aInfo) const
-	{
-	aTimerIntervals.Reset();
-	aInfo = ENotActive;
-	}
-
-TInt CTestCamAdvSet::TimerInterval() const
-	{
-	return KErrNotSupported;
-	}
-	
-void CTestCamAdvSet::SetTimerInterval(TInt /*aTimerInterval*/)
-	{
-	TECAMEvent ecamevent(KUidECamEventCameraSettingTimerInterval, KErrNotSupported);
-	
-	iOwner.iECamEvent = ecamevent;
-	iOwner.iHandleEventAsync.CallBack();
-	}
-	
-void CTestCamAdvSet::GetTimeLapsePeriodRange(TTime& aTimeLapseMin, TTime& aTimeLapseMax) const
-	{
-	TTime timeLapse(KTimeLapse);
-	aTimeLapseMin = aTimeLapseMax = timeLapse;
-	}
-	
-void CTestCamAdvSet::GetTimeLapse(TTime& aStart, TTime& aEnd, TTime& aInterval) const
-	{
-	TTime timeLapse(KTimeLapse);
-	aStart = aEnd = aInterval = timeLapse;
-	}
-	
-void CTestCamAdvSet::SetTimeLapse(const TTime& /*aStart*/, const TTime& /*aEnd*/, const TTime& /*aInterval*/)
-	{
-	TECAMEvent ecamevent(KUidECamEventCameraSettingTimeLapse, KErrNotSupported);
-	
-	iOwner.iECamEvent = ecamevent;
-	iOwner.iHandleEventAsync.CallBack();
-	}
-	
-CCamera::CCameraAdvancedSettings::TPictureOrientation CTestCamAdvSet::PictureOrientation() const
-	{
-	return CCamera::CCameraAdvancedSettings::EPictureOrientationUnknown;
-	}
-	
-void CTestCamAdvSet::SetPictureOrientation(CCamera::CCameraAdvancedSettings::TPictureOrientation aOrientation)
-	{
-	TInt eventError = KErrNotSupported;
-	
-	if(iOwner.iVideoCaptureActive || iOwner.iImageCaptureActive)
-		{
-		eventError = KErrNotReady;
-		}
-	else
-		{
-		if(aOrientation == CCamera::CCameraAdvancedSettings::EPictureOrientationUnknown)
-			{
-			eventError = KErrAlreadyExists;
-			}	
-		}
-		
-	TECAMEvent ecamevent(KUidECamEventCameraSettingPictureOrientation, eventError);
-	
-	iOwner.iECamEvent = ecamevent;
-	iOwner.iHandleEventAsync.CallBack();
-	}
-	
-TInt CTestCamAdvSet::SupportedPixelAspectRatios() const
-	{
-	return KSupportedPixelAspectRatio;
-	}
-	
-CCamera::CCameraAdvancedSettings::TPixelAspectRatio CTestCamAdvSet::PixelAspectRatio() const
-	{
-	return CCamera::CCameraAdvancedSettings::EPixelAspectUnknown;
-	}
-	
-void CTestCamAdvSet::SetPixelAspectRatio(CCamera::CCameraAdvancedSettings::TPixelAspectRatio aPixelAspectRatio)
-	{
-	TInt eventError = KErrNotSupported;
-	
-	if(aPixelAspectRatio == CCamera::CCameraAdvancedSettings::EPixelAspectUnknown)
-		{
-		eventError = KErrAlreadyExists;
-		}	
-		
-	TECAMEvent ecamevent(KUidECamEventPixelAspectRatio, eventError);
-	
-	iOwner.iECamEvent = ecamevent;
-	iOwner.iHandleEventAsync.CallBack();
-	}
-	
-TInt CTestCamAdvSet::SupportedYuvRanges() const
-	{
-	return KSupportedYuvRange;
-	}
-	
-CCamera::CCameraAdvancedSettings::TYuvRange CTestCamAdvSet::YuvRange() const
-	{
-	return CCamera::CCameraAdvancedSettings::EYuvRangeUnknown;
-	}
-	
-void CTestCamAdvSet::SetYuvRange(CCamera::CCameraAdvancedSettings::TYuvRange aYuvRange)
-	{
-	TInt eventError = KErrNotSupported;
-	
-	if(aYuvRange == CCamera::CCameraAdvancedSettings::EYuvRangeUnknown)
-		{
-		eventError = KErrAlreadyExists;
-		}	
-		
-	TECAMEvent ecamevent(KUidECamEventYuvRange, eventError);
-	
-	iOwner.iECamEvent = ecamevent;
-	iOwner.iHandleEventAsync.CallBack();
-	}
-	
-TInt CTestCamAdvSet::BurstImages() const
-	{
-	return iOwner.iBurstImages;
-	}
-	
-void CTestCamAdvSet::SetBurstImages(TInt aImages)
-	{
-	TInt eventError = iOwner.CheckReserveAndPower();
-	
-	if(eventError == KErrNone)
-		{
-		if(aImages == iOwner.iBurstImages)
-			{
-			eventError = KErrAlreadyExists;
-			}
-		else
-			{
-			if(aImages<1)
-				{
-				eventError = KErrArgument;
-				}
-			}
-		}
-		
-	if(eventError != KErrNone)
-		{
-		TECAMEvent ecamevent(KUidECamEventBurstImages, eventError);
-	
-		iOwner.iECamEvent = ecamevent;
-		iOwner.iHandleEventAsync.CallBack();
-		return;
-		}
-		
-	if(aImages > KMaxBurstImages)
-		{
-		iOwner.iBurstImages = KMaxBurstImages;
-		}
-	else
-		{
-		iOwner.iBurstImages = aImages;
-		}
-			
-	TECAMEvent ecamevent(KUidECamEventBurstImages, eventError);
-	
-	iOwner.iECamEvent = ecamevent;
-	iOwner.iHandleEventAsync.CallBack();
-	}
-	
-void CTestCamAdvSet::GetOpticalZoomStepsL(RArray<TInt>& aOpticalZoomSteps, TValueInfo& aInfo)  const
-	{	
-	aOpticalZoomSteps.Reset();
-	aOpticalZoomSteps.AppendL(KECamFineResolutionFactor);
-	aInfo = EDiscreteSteps;
-	}
-	
-TInt CTestCamAdvSet::OpticalZoom() const
-	{
-	return KECamFineResolutionFactor;
-	}
-	
-void CTestCamAdvSet::SetOpticalZoom(TInt aOpticalZoom)
-	{
-	TInt eventError = KErrNotSupported;
-	
-	if(aOpticalZoom == KECamFineResolutionFactor)
-		{
-		eventError = KErrAlreadyExists;
-		}
-		
-	TECAMEvent ecamevent(KUidECamEventCameraSettingOpticalZoom, eventError);
-	
-	iOwner.iECamEvent = ecamevent;
-	iOwner.iHandleEventAsync.CallBack();
-	}
-	
-void CTestCamAdvSet::GetDigitalZoomStepsL(RArray<TInt>& aDigitalZoomSteps,
-								 TValueInfo& aInfo) const
-	{
-	aDigitalZoomSteps.Reset();
-	aDigitalZoomSteps.AppendL(KECamFineResolutionFactor);
-	aInfo = EDiscreteSteps;
-	}
-	
-void CTestCamAdvSet::GetDigitalZoomStepsForStillL(RArray<TInt>& aDigitalZoomSteps, TValueInfo& aInfo, TInt /*aSizeIndex*/,
-								 CCamera::TFormat /*aFormat*/, TBool& /*aIsInfluencePossible*/) const
-	{
-	aDigitalZoomSteps.Reset();
-	aDigitalZoomSteps.AppendL(KECamFineResolutionFactor);
-	aInfo = EDiscreteSteps;
-	}
-
-void CTestCamAdvSet::GetDigitalZoomStepsForVideoL(RArray<TInt>& aDigitalZoomSteps, TValueInfo& aInfo, TInt /*aFrameRateIndex*/,
-								 TInt /*aSizeIndex*/, CCamera::TFormat /*aFormat*/, TBool& /*aIsInfluencePossible*/, CCamera::TExposure /*aExposure*/) const
-	{
-	aDigitalZoomSteps.Reset();
-	aDigitalZoomSteps.AppendL(KECamFineResolutionFactor);
-	aInfo = EDiscreteSteps;
-	}
-
-TInt CTestCamAdvSet::DigitalZoom() const
-	{
-	return KECamFineResolutionFactor;
-	}
-
-void CTestCamAdvSet::SetDigitalZoom(TInt aDigitalZoom)
-	{
-	TInt eventError = KErrNotSupported;
-	
-	if(aDigitalZoom == KECamFineResolutionFactor)
-		{
-		eventError = KErrAlreadyExists;
-		}
-		
-	TECAMEvent ecamevent(KUidECamEventCameraSettingDigitalZoom, eventError);
-	
-	iOwner.iECamEvent = ecamevent;
-	iOwner.iHandleEventAsync.CallBack();
-	}
-	
-TBool CTestCamAdvSet::ExposureLockOn() const
-	{
-	return KExposureLockOn;		
-	}
-
-void CTestCamAdvSet::SetExposureLockOn(TBool aState)
-	{
-	TInt eventError = KErrNotSupported;
-	
-	if(aState == KExposureLockOn)
-		{
-		eventError = KErrAlreadyExists;
-		}
-		
-	TECAMEvent ecamevent(KUidECamEventCameraSettingExposureLock, eventError);
-	
-	iOwner.iECamEvent = ecamevent;
-	iOwner.iHandleEventAsync.CallBack();	
-	}
-		
-TBool CTestCamAdvSet::AutoFocusLockOn() const
-	{
-	return KAutoFocusLockOn;
-	}
-
-void CTestCamAdvSet::SetAutoFocusLockOn(TBool aState)
-	{	
-	TInt eventError = KErrNotSupported;
-	
-	if(aState == KAutoFocusLockOn)
-		{
-		eventError = KErrAlreadyExists;
-		}
-		
-	TECAMEvent ecamevent(KUidECamEventCameraSettingAutoFocusLock, eventError);
-	
-	iOwner.iECamEvent = ecamevent;
-	iOwner.iHandleEventAsync.CallBack();
-	}
-
-void CTestCamAdvSet::GetSupportedSettingsL(RArray<TUid>& aSettings) const
-	{
-	aSettings.Reset();
-	User::Leave(KErrNotSupported);
-	}
-    
-void CTestCamAdvSet::GetActiveSettingsL(RArray<TUid>& aActiveSettings) const
-	{
-	aActiveSettings.Reset();
-	User::Leave(KErrNotSupported);
-	}
- 
-void CTestCamAdvSet::GetDisabledSettingsL(RArray<TUid>& aDisbledSettings) const
-	{
-	aDisbledSettings.Reset();
-	User::Leave(KErrNotSupported);
-	}
-	    
-void CTestCamAdvSet::SetAutomaticSizeSelectionChangeOn(TBool aSetOn)
-	{
-	TInt eventError = KErrNotSupported;
-	
-	if(aSetOn == KAutomaticSizeSelectionChangeOn)
-		{
-		eventError = KErrAlreadyExists;
-		}
-		
-	TECAMEvent ecamevent(KUidECamEventCameraSettingAutomaticSizeSelection, eventError);
-	
-	iOwner.iECamEvent = ecamevent;
-	iOwner.iHandleEventAsync.CallBack();
-	}
-	
-TBool CTestCamAdvSet::AutomaticSizeSelectionChangeOn() const
-	{
-	return KAutomaticSizeSelectionChangeOn;
-	}
-
-void CTestCamAdvSet::GetSupportedContinuousAutoFocusTimeoutsL(RArray<TInt>& aTimeouts, TValueInfo& aInfo) const
-	{
-	aTimeouts.Reset();
-	aInfo = ENotActive;
-	}
-	
-void CTestCamAdvSet::SetContinuousAutoFocusTimeout(TInt /*aTimeout*/)
-	{
-	TECAMEvent ecamevent(KUidECamEventCameraSettingsContinuousAutoFocusTimeout, KErrNotSupported);
-	
-	iOwner.iECamEvent = ecamevent;
-	iOwner.iHandleEventAsync.CallBack();
-	}
-	
-void CTestCamAdvSet::SetStabilizationEffect(CCamera::CCameraAdvancedSettings::TStabilizationEffect aEffect)
-	{
-	TInt eventError = KErrNotSupported;
-	
-	if(aEffect == KStabilizationEffect)
-		{
-		eventError = KErrAlreadyExists;
-		}
-		
-	TECAMEvent ecamevent(KUidECamEventCameraSettingsStabilizationEffect, eventError);
-	
-	iOwner.iECamEvent = ecamevent;
-	iOwner.iHandleEventAsync.CallBack();
-	}
-	
-CCamera::CCameraAdvancedSettings::TStabilizationEffect CTestCamAdvSet::StabilizationEffect() const
-	{
-	return KStabilizationEffect;
-	}
-
-TInt CTestCamAdvSet::SupportedStabilizationEffects() const
-	{
-	return KStabilizationEffect;
-	}
-
-TInt CTestCamAdvSet::SupportedStabilizationComplexityValues() const
-	{
-	return KStabilizationComplexity; 
-	}
-	
-CCamera::CCameraAdvancedSettings::TStabilizationAlgorithmComplexity CTestCamAdvSet::StabilizationComplexity() const
-	{
-	return KStabilizationComplexity;
-	}
-	
-void CTestCamAdvSet::SetStabilizationComplexity(CCamera::CCameraAdvancedSettings::TStabilizationAlgorithmComplexity aComplexity)
-	{
-	TInt eventError = KErrNotSupported;
-	
-	if(aComplexity == KStabilizationComplexity)
-		{
-		eventError = KErrAlreadyExists;
-		}
-		
-	TECAMEvent ecamevent(KUidECamEventSettingsStabilizationAlgorithmComplexity, eventError);
-	
-	iOwner.iECamEvent = ecamevent;
-	iOwner.iHandleEventAsync.CallBack();
-	}
-	
-CCamera::CCameraAdvancedSettings::TWBUnits CTestCamAdvSet::SupportedWBUnits() const
-	{
-	return KSupportedWBUnits;
-	}
-	
-void CTestCamAdvSet::SetWBRgbValue(const TRgb& /*aValue*/)
-	{
-	TECAMEvent ecamevent(KUidECamEventCameraSettingsWBValue, KErrNotSupported);
-	
-	iOwner.iECamEvent = ecamevent;
-	iOwner.iHandleEventAsync.CallBack();
-	}
-	
-void CTestCamAdvSet::GetWBRgbValue(TRgb& aValue) const
-	{
-	aValue = KRgbWhite;
-	}
-	
-void CTestCamAdvSet::GetWBSupportedColorTemperaturesL(RArray<TInt>& aWBColorTemperatures, TValueInfo& aInfo) const
-	{
-	aWBColorTemperatures.Reset();
-	aInfo = ENotActive;
-	}
-	
-void CTestCamAdvSet::SetWBColorTemperature(TInt /*aColorTemperature*/)
-	{
-	TECAMEvent ecamevent(KUidECamEventCameraSettingsWBValue, KErrNotSupported);
-	
-	iOwner.iECamEvent = ecamevent;
-	iOwner.iHandleEventAsync.CallBack();
-	}
-
-TInt CTestCamAdvSet::WBColorTemperature() const
-	{
-	return KErrNotSupported;
-	}
-
-TInt CTestCamAdvSet::ContinuousAutoFocusTimeout() const
-	{
-	return KErrNotSupported;
-	}
-
-TInt CTestCamAdvSet::IsFlashReady(TBool& aReady) const
-	{
-	aReady = KFlashReadyState;
-	return KErrNone;
-	}
-
-void CTestCamAdvSet::GetCurrentFocusModeStepsL(RArray<TInt>& aFocusModeSteps, TValueInfo& aInfo) const
-	{
-	aFocusModeSteps.Reset();
-	aInfo = ENotActive;
-	}
-	
-void CTestCamAdvSet::SetReferenceScreen(CWsScreenDevice& /*aScreenDevice*/)
-	{
-	TECAMEvent ecamevent(KUidECamEventCameraSettingReferenceScreen, KErrNotSupported);
-	
-	iOwner.iECamEvent = ecamevent;
-	iOwner.iHandleEventAsync.CallBack();
-	}
-	
-void CTestCamAdvSet::GetPreCaptureWarningSupportedL(CCamera::CCameraAdvancedSettings::TCameraMode /*aCameraMode*/, TInt& aPreCaptureWarningSupported) const
-	{
-	aPreCaptureWarningSupported = KPreCaptureWarning; 
-	}
-
-void CTestCamAdvSet::SubscribeToPreCaptureWarningL(TInt /*aPreCaptureWarning*/)
-	{
-	User::Leave(KErrNotSupported);
-	}
-	
-void CTestCamAdvSet::UnSubscribePreCaptureWarningL()
-	{
-	User::Leave(KErrNotSupported);
-	}
-	
-void CTestCamAdvSet::GetPreCaptureWarningL(TInt& /*aPreCaptureWarning*/) const
-	{
-	User::Leave(KErrNotSupported);
-	}
-	
-void CTestCamAdvSet::GetSupportedAFAssistantLightL(TInt& aSupportedAFAssistantLight) const
-	{
-	aSupportedAFAssistantLight = KAFAssisstantLight;
-	}
-
-void CTestCamAdvSet::GetAFAssistantLightL(CCamera::CCameraAdvancedSettings::TAFAssistantLight& /*aAFAssistantLight*/) const
-	{
-	User::Leave(KErrNotSupported);
-	}
-
-void CTestCamAdvSet::SetAFAssistantLight(CCamera::CCameraAdvancedSettings::TAFAssistantLight aAFAssistantLight)
-	{
-	TInt eventError = KErrNotSupported;
-	
-	if(aAFAssistantLight == KAFAssisstantLight)
-		{
-		eventError = KErrAlreadyExists;
-		}
-		
-	TECAMEvent ecamevent(KUidECamEventCameraSettingAFAssistantLight, eventError);
-	
-	iOwner.iECamEvent = ecamevent;
-	iOwner.iHandleEventAsync.CallBack();
-	}
-	
-/**********************************************************************************************************/
-/* 											CTestCamPresets  											  */
-/**********************************************************************************************************/
-
-CTestCamPresets::CTestCamPresets(CTestCamera& aOwner): iOwner(aOwner),iCurrentPreset(KNullUid)
-	{}
-	
-CTestCamPresets::~CTestCamPresets()
-	{
-	iSupportedPresets.Close();
-	iFactoryPresetAffectSettings.Close();
-	
-	CDataGlobal* globalData = static_cast <CDataGlobal*> (Dll::Tls());	
-	if(globalData != NULL)
-		{
-		if(!globalData->iTestCamAdvSet && !globalData->iTestCamSnapshot && !globalData->iTestCamImgProc)
-			{
-			delete globalData;
-			Dll::FreeTls();
-			}
-		else
-			{
-			globalData->iTestCamPresets = NULL;
-			Dll::SetTls(globalData);	
-			}
-		}
-	}
-		
-CTestCamPresets* CTestCamPresets::NewL(CTestCamera& aOwner)
-	{
-	CDataGlobal* globalData = static_cast <CDataGlobal*> (Dll::Tls());
-	
-	if(globalData == NULL)
-		{
-		globalData = new (ELeave) CDataGlobal;
-		CleanupStack::PushL(globalData);
-		globalData->iPresetsReferenceCount = 0;
-		globalData->iTestCamPresets = new (ELeave) CTestCamPresets(aOwner);
-		globalData->iTestCamPresets->ConstructL();
-		globalData->iTestCamPresets->iRefCount = 1;
-		User::LeaveIfError(Dll::SetTls(globalData));
-		CleanupStack::Pop(globalData);
-		return globalData->iTestCamPresets;
-		}
-	else
-		{
-		if(globalData->iTestCamPresets == NULL)
-			{
-			globalData->iPresetsReferenceCount = 0;
-			globalData->iTestCamPresets = new (ELeave) CTestCamPresets(aOwner);
-			CleanupStack::PushL(globalData->iTestCamPresets);
-			globalData->iTestCamPresets->ConstructL();
-			globalData->iTestCamPresets->iRefCount = 1;
-			User::LeaveIfError(Dll::SetTls(globalData));
-			CleanupStack::Pop(globalData->iTestCamPresets);
-			return globalData->iTestCamPresets;
-			}
-			
-		CTestCamPresets* self = globalData->iTestCamPresets;
-		
-		globalData->iPresetsReferenceCount++;
-		self->iRefCount = globalData->iPresetsReferenceCount + 1;
-		if (globalData->iPresetsReferenceCount == KNumOfPresetExtensions-1 )
-			{
-			globalData->iTestCamPresets = NULL;
-			if(!globalData->iTestCamAdvSet && !globalData->iTestCamSnapshot && !globalData->iTestCamImgProc)
-				{
-				delete globalData;
-				Dll::FreeTls();
-				}
-			else
-				{
-				User::LeaveIfError(Dll::SetTls(globalData));	
-				}
-			}
-		else
-			{
-			User::LeaveIfError(Dll::SetTls(globalData));
-			}
-		return self;		
-		}
-	}
-
-void CTestCamPresets::Release()
-	{
-	iRefCount--; 
-	if(iRefCount == 0)
-		{
-		delete this;
-		}
-	}	
-	
-void CTestCamPresets::ConstructL()
-	{
-	iSupportedPresets.Reset();
-	iSupportedPresets.AppendL(KUidECamPresetFactoryDefault);
-	
-	iFactoryPresetAffectSettings.Reset();
-	iFactoryPresetAffectSettings.AppendL(KUidECamEventCameraSettingDriveMode);
-	iFactoryPresetAffectSettings.AppendL(KUidECamEventBurstImages);	
-	}
-
-void CTestCamPresets::GetSupportedPresetsL(RArray<TUid>& aPresets) const
-	{
-	aPresets.Reset();
-	for	(TInt index=0; index < iSupportedPresets.Count(); index++)
-		{
-		User::LeaveIfError(aPresets.Append(iSupportedPresets[index]));
-		}
-	}
-
-void CTestCamPresets::SetPreset(TUid aPreset)
-	{
-	TInt eventError = iOwner.CheckReserveAndPower();
-	if(eventError == KErrNone)
-		{
-		if(aPreset == iSupportedPresets[0])
-			{
-			//ResetBrightness, Contrast, Drivemode, No. of burst mode images
-			iOwner.iBrightness = 0;
-			iOwner.iContrast = 0;
-			iOwner.iImgProcBrightness = 0;
-			iOwner.iImgProcContrast = 0;
-			iOwner.iDriveMode = KDefaultDriveMode;
-			iOwner.iBurstImages = KBurstImages;
-			}
-		else
-			{
-			eventError = KErrNotSupported;	
-			}
-		}
-	
-	TECAMEvent ecamevent(aPreset, eventError);
-	
-	iOwner.iECamEvent = ecamevent;
-	iOwner.iHandleEventAsync.CallBack();	
-	}
-	
-TUid CTestCamPresets::Preset() const
-	{
-	return iCurrentPreset;	
-	}
-	
-void CTestCamPresets::GetAffectedSettingsL(RArray<TUid>& aSettings) const
-	{
-	aSettings.Reset();
-	
-	if(iCurrentPreset == iSupportedPresets[0])
-		{	
-		for	(TInt index=0; index < iFactoryPresetAffectSettings.Count(); index++)
-			{
-			User::LeaveIfError(aSettings.Append(iFactoryPresetAffectSettings[index]));
-			}
-		}
-	}
-	
-void CTestCamPresets::GetAssociatedSettingsL(TUid aPreset, RArray<TUid>& aSettings) const
-	{
-	switch(aPreset.iUid)
-		{
-		case KUidECamPresetFactoryDefaultUidValue:
-			{
-			aSettings.Reset();
-			for	(TInt index=0; index < iFactoryPresetAffectSettings.Count(); index++)
-				{
-				User::LeaveIfError(aSettings.Append(iFactoryPresetAffectSettings[index]));
-				}
-			break;	
-			}
-		
-		//fall through	
-		case KUidECamPresetOutdoorUidValue:
-		case KUidECamPresetOutdoorSportUidValue:
-		case KUidECamPresetSnowUidValue:
-		case KUidECamPresetBeachUidValue:
-		case KUidECamPresetNightPortraitUidValue:
-		case KUidECamPresetNightFireworksUidValue:
-		case KUidECamPresetFogUidValue:
-		case KUidECamPresetIndoorUidValue:
-		case KUidECamPresetIndoorSportUidValue:
-			{
-			User::Leave(KErrNotSupported);	
-			}
-		//fall through			
-		case KUidECamPresetNightPartyIndoorUidValue:
-		case KUidECamPresetNightCloseUpUidValue:
-		case KUidECamPresetNightMacroUidValue:
-		case KUidECamPresetTextDocumentUidValue:
-		case KUidECamPresetBarcodeUidValue:
-		case KUidECamPresetAutoUidValue:
-		case KUidECamPresetPortraitUidValue:
-		case KUidECamPresetLandscapeUidValue:
-		case KUidECamPresetAmbienceMoodUidValue:
-			{
-			if(iOwner.CameraVersion() == KCameraDefaultVersion)	
-				{
-				User::Leave(KErrArgument);
-				}
-			else
-				{
-				User::Leave(KErrNotSupported);
-				}
-			}
-						
-		default:
-			User::Leave(KErrArgument);
-			
-		}
-	}
+// Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of the License "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// testadvancedsettings.cpp
+// 
+//
+
+#include "test_advanced_settings.h"
+#include <ecamerrors.h>
+#include <ecam/ecamversion.h>
+
+CTestCamAdvSet::CTestCamAdvSet(CTestCamera& aOwner): iOwner(aOwner)
+	{
+	Init();
+	}
+	
+CTestCamAdvSet::~CTestCamAdvSet()
+	{
+	iSupportedISORates.Close();
+	iSupportedApertures.Close();
+	iSupportedShutterSpeeds.Close();
+	
+	CDataGlobal* globalData = static_cast <CDataGlobal*> (Dll::Tls());	
+	if(globalData != NULL)
+		{
+		if(!globalData->iTestCamPresets && !globalData->iTestCamSnapshot && !globalData->iTestCamImgProc)
+			{
+			delete globalData;
+			Dll::FreeTls();
+			}	
+		else
+			{
+			globalData->iTestCamAdvSet = NULL;	
+			Dll::SetTls(globalData);
+			}
+		}
+	}
+		
+CTestCamAdvSet* CTestCamAdvSet::NewL(CTestCamera& aOwner)
+	{
+	CDataGlobal* globalData = static_cast <CDataGlobal*> (Dll::Tls());
+	
+	if(globalData == NULL)
+		{
+		globalData = new (ELeave) CDataGlobal;
+		CleanupStack::PushL(globalData);
+		globalData->iAdvSetReferenceCount = 0;
+		globalData->iTestCamAdvSet = new (ELeave) CTestCamAdvSet(aOwner);
+		CleanupStack::PushL(globalData->iTestCamAdvSet);
+		globalData->iTestCamAdvSet->ConstructL();
+		globalData->iTestCamAdvSet->iRefCount = 1;
+		User::LeaveIfError(Dll::SetTls(globalData));
+		CleanupStack::Pop(globalData->iTestCamAdvSet);
+		CleanupStack::Pop(globalData);
+		return globalData->iTestCamAdvSet;
+		}
+	else
+		{
+		if(globalData->iTestCamAdvSet == NULL)
+			{
+			globalData->iAdvSetReferenceCount = 0;
+			globalData->iTestCamAdvSet = new (ELeave) CTestCamAdvSet(aOwner);
+			CleanupStack::PushL(globalData->iTestCamAdvSet);
+			globalData->iTestCamAdvSet->ConstructL();
+			globalData->iTestCamAdvSet->iRefCount = 1;
+			User::LeaveIfError(Dll::SetTls(globalData));
+			CleanupStack::Pop(globalData->iTestCamAdvSet);
+			return globalData->iTestCamAdvSet;
+			}
+			
+		CTestCamAdvSet* self = globalData->iTestCamAdvSet;
+		
+		globalData->iAdvSetReferenceCount++;
+		self->iRefCount = globalData->iAdvSetReferenceCount + 1;
+		if (globalData->iAdvSetReferenceCount == KNumOfAdvSetExtensions-1 )
+			{
+			globalData->iTestCamAdvSet = NULL;
+			if(!globalData->iTestCamPresets && !globalData->iTestCamSnapshot && !globalData->iTestCamImgProc)
+				{
+				delete globalData;
+				Dll::FreeTls();
+				}
+			else
+				{
+				User::LeaveIfError(Dll::SetTls(globalData));
+				}
+			}
+		else
+			{
+			User::LeaveIfError(Dll::SetTls(globalData));
+			}
+		return self;		
+		}
+	}
+
+void CTestCamAdvSet::Release()
+	{
+	iRefCount--; 
+	if(iRefCount == 0)
+		{
+		iOwner.iAdvSettingsImpl = NULL;
+		delete this;
+		}
+	}	
+	
+void CTestCamAdvSet::Init()
+	{
+	for(TUint i=0; i< KNumAvailableCameras; i++)
+		{
+		iCameraTypes[i] = CCamera::CCameraAdvancedSettings::ECameraPluggable;
+		}
+	
+	iFocusDistance = KDefaultFocusDistance;
+	iIsoRate = KDefaultIsoRate;
+	iISORateType = CCamera::CCameraAdvancedSettings::EISOManual;
+	iAperture = KDefaultAperture;
+	iShutterSpeed = KDefaultShutterSpeed;
+	}
+	
+void CTestCamAdvSet::ConstructL()
+	{
+	iSupportedISORates.Reset();
+	iSupportedISORates.AppendL(KDefaultIsoRate);
+	
+	iSupportedApertures.Reset();
+	iSupportedApertures.AppendL(KDefaultAperture);
+	
+	iSupportedShutterSpeeds.Reset();
+	iSupportedShutterSpeeds.AppendL(KDefaultShutterSpeed);
+	}
+
+CCamera::CCameraAdvancedSettings::TCameraType CTestCamAdvSet::CameraType() const
+	{
+	return CCamera::CCameraAdvancedSettings::ECameraPluggable;	
+	}
+
+CCamera::CCameraAdvancedSettings::TCameraType CTestCamAdvSet::CameraType(TInt aCameraIndex) const
+	{
+	if (aCameraIndex >= KNumAvailableCameras || aCameraIndex < 0)
+		{
+		return CCamera::CCameraAdvancedSettings::ECameraUnknown;	
+		}
+	else 
+		{
+		return iCameraTypes[aCameraIndex];	
+		}
+	}
+	
+TBool CTestCamAdvSet::IsCameraPresent() const
+	{
+	return ETrue;
+	}
+
+TBool CTestCamAdvSet::IsCameraPresent(TInt aCameraIndex) const
+	{
+	if (aCameraIndex >= KNumAvailableCameras || aCameraIndex < 0)
+		{
+		return EFalse;	
+		}
+	else 
+		{
+		return ETrue;	
+		}
+	}
+	
+TInt CTestCamAdvSet::CameraIndex() const
+	{
+	return iOwner.iCameraIndex;
+	}
+	
+TInt CTestCamAdvSet::SupportedStabilizationModes() const
+	{
+	return KFeatureNotSupported;
+	}
+	
+CCamera::CCameraAdvancedSettings::TStabilizationMode CTestCamAdvSet::StabilizationMode() const
+	{
+	return CCamera::CCameraAdvancedSettings::EStabilizationModeOff;
+	}
+	
+void CTestCamAdvSet::SetStabilizationMode(CCamera::CCameraAdvancedSettings::TStabilizationMode aStabilizationMode)
+	{	
+	TInt eventError = KErrNotSupported;
+	if(aStabilizationMode == CCamera::CCameraAdvancedSettings::EStabilizationModeOff)
+		{
+		eventError = KErrAlreadyExists;
+		}
+		
+	TECAMEvent ecamevent(KUidECamEventCameraSettingStabilizationMode, eventError);
+	
+	iOwner.iECamEvent = ecamevent;
+	iOwner.iHandleEventAsync.CallBack();
+	}
+	
+TInt CTestCamAdvSet::SupportedFocusModes() const
+	{
+	return KFeatureNotSupported;
+	}
+	
+CCamera::CCameraAdvancedSettings::TFocusMode CTestCamAdvSet::FocusMode() const
+	{
+	return CCamera::CCameraAdvancedSettings::EFocusModeAuto;	
+	}
+	
+void CTestCamAdvSet::SetFocusMode(CCamera::CCameraAdvancedSettings::TFocusMode aFocusMode)
+	{
+	TInt eventError = KErrNotSupported;
+	if(aFocusMode == CCamera::CCameraAdvancedSettings::EFocusModeAuto)
+		{
+		eventError = KErrAlreadyExists;
+		}
+		
+	TECAMEvent ecamevent(KUidECamEventCameraSettingFocusMode, eventError);
+	
+	iOwner.iECamEvent = ecamevent;
+	iOwner.iHandleEventAsync.CallBack();
+	}
+	
+TInt CTestCamAdvSet::SupportedFocusRanges() const
+	{
+	return KFeatureNotSupported;
+	}
+	
+CCamera::CCameraAdvancedSettings::TFocusRange CTestCamAdvSet::FocusRange() const
+	{
+	return CCamera::CCameraAdvancedSettings::EFocusRangeAuto;
+	}
+	
+void CTestCamAdvSet::SetFocusRange(CCamera::CCameraAdvancedSettings::TFocusRange aFocusRange)
+	{
+	TInt eventError = KErrNotSupported;
+	if(aFocusRange == CCamera::CCameraAdvancedSettings::EFocusRangeAuto)
+		{
+		eventError = KErrAlreadyExists;
+		}
+		
+	TECAMEvent ecamevent1(KUidECamEventCameraSettingFocusRange2, eventError);
+	TECAMEvent ecamevent2(KUidECamEventCameraSettingFocusRange, eventError);
+	
+	iOwner.iECamEvent = ecamevent1;
+	iOwner.iHandleEventAsync.CallBack();
+	
+	iOwner.iECamEvent = ecamevent2;
+	iOwner.iHandleEventAsync.CallBack();
+	}
+	
+TInt CTestCamAdvSet::SupportedAutoFocusTypes() const
+	{
+	return KFeatureNotSupported;
+	}
+	
+CCamera::CCameraAdvancedSettings::TAutoFocusType CTestCamAdvSet::AutoFocusType() const
+	{
+    return CCamera::CCameraAdvancedSettings::EAutoFocusTypeOff;
+	}
+	
+void CTestCamAdvSet::SetAutoFocusType(CCamera::CCameraAdvancedSettings::TAutoFocusType aAutoFocusType)
+	{
+	TInt eventError = KErrNotSupported;
+	if(aAutoFocusType == CCamera::CCameraAdvancedSettings::EAutoFocusTypeOff)
+		{
+		eventError = KErrAlreadyExists;
+		}
+		
+	TECAMEvent ecamevent1(KUidECamEventCameraSettingAutoFocusType2, eventError);
+	TECAMEvent ecamevent2(KUidECamEventCameraSettingAutoFocusType, eventError);
+	
+	iOwner.iECamEvent = ecamevent1;
+	iOwner.iHandleEventAsync.CallBack();
+	
+	iOwner.iECamEvent = ecamevent2;
+	iOwner.iHandleEventAsync.CallBack();
+	}
+	
+TInt CTestCamAdvSet::SupportedAutoFocusAreas() const
+	{
+	return KFeatureNotSupported;
+	}
+	
+CCamera::CCameraAdvancedSettings::TAutoFocusArea CTestCamAdvSet::AutoFocusArea() const
+	{
+	return CCamera::CCameraAdvancedSettings::EAutoFocusTypeAuto;
+	}
+	
+void CTestCamAdvSet::SetAutoFocusArea(CCamera::CCameraAdvancedSettings::TAutoFocusArea aAutoFocusArea)
+	{
+	TInt eventError = KErrNotSupported;
+	if(aAutoFocusArea == CCamera::CCameraAdvancedSettings::EAutoFocusTypeAuto)
+		{
+		eventError = KErrAlreadyExists;
+		}
+		
+	TECAMEvent ecamevent(KUidECamEventCameraSettingAutoFocusArea, eventError);
+	
+	iOwner.iECamEvent = ecamevent;
+	iOwner.iHandleEventAsync.CallBack();
+	}
+	
+TInt CTestCamAdvSet::FocusDistance() const
+	{
+	return iFocusDistance;
+	}
+	
+void CTestCamAdvSet::SetFocusDistance(TInt aDistance) 
+	{
+	TInt eventError = KErrNone;
+	if(aDistance < 0)
+		{
+		eventError = KErrNotSupported;
+		}
+	else
+		{
+		iFocusDistance = aDistance;
+		}
+		
+	TECAMEvent ecamevent(KUidECamEventCameraSettingFocusDistance, eventError);
+	
+	iOwner.iECamEvent = ecamevent;
+	iOwner.iHandleEventAsync.CallBack();
+	}
+	
+TInt CTestCamAdvSet::GetMinFocalLength() const
+	{
+	return KErrNotSupported;
+	}
+	
+void CTestCamAdvSet::GetSupportedIsoRatesL(RArray<TInt>& aSupportedIsoRates) const
+	{
+	if(iSupportedISORates.Count() == 0)
+		{
+		User::Leave(KErrNotSupported);
+		}
+	
+	for(TInt index=0; index < iSupportedISORates.Count(); index++)
+		{
+		aSupportedIsoRates.AppendL(iSupportedISORates[index]);
+		}
+	}
+	
+TInt CTestCamAdvSet::IsoRate() const
+	{
+	return iIsoRate; 
+	}
+
+void CTestCamAdvSet::SetIsoRate(TInt aRate)
+	{
+	TInt eventError = KErrNone;
+	if(iSupportedISORates.Find(aRate) == KErrNotFound)
+		{
+		eventError = KErrECamParameterNotInRange;
+		}
+	else 
+		{
+		//set the ISO type to Manual
+		iISORateType = CCamera::CCameraAdvancedSettings::EISOManual;			
+		iIsoRate = aRate;
+		}
+		
+	TECAMEvent ecamevent(KUidECamEventCameraSettingIsoRate, eventError);
+	
+	iOwner.iECamEvent = ecamevent;
+	iOwner.iHandleEventAsync.CallBack();
+	}
+
+void CTestCamAdvSet::GetSupportedISORateTypeL(TInt& aSupportedISORateTypes) const
+	{
+	aSupportedISORateTypes = KSupportedISORateTypes;	
+	}
+		
+void CTestCamAdvSet::SetISORate(CCamera::CCameraAdvancedSettings::TISORateType aISORateType, TInt aParam)
+	{
+	TInt eventError = KErrNone;
+	
+	if(!(aISORateType & KSupportedISORateTypes) || iSupportedISORates.Count() == 0)
+		{
+		eventError = KErrNotSupported;
+		}
+	else
+		{
+		switch(aISORateType)
+			{
+			case CCamera::CCameraAdvancedSettings::EISOManual:
+				{
+				if(iSupportedISORates.Find(aParam) == KErrNotFound)
+					{
+					eventError = KErrECamParameterNotInRange;
+					}
+				else
+					{
+					iISORateType = aISORateType;
+					if(aParam == iIsoRate)
+						{
+						eventError = KErrAlreadyExists;
+						}
+					else
+						{
+						iIsoRate = aParam;
+						}
+					}
+				break;
+				}
+			case CCamera::CCameraAdvancedSettings::EISOAutoUnPrioritised:
+				{
+				eventError = KErrNotSupported;
+				break;	
+				}
+			case CCamera::CCameraAdvancedSettings::EISOAutoISOPrioritised:
+				{
+				eventError = KErrNotSupported;
+				break;
+				}
+			case CCamera::CCameraAdvancedSettings::EISOAutoShutterSpeedPrioritised:
+				{
+				eventError = KErrNotSupported;
+				break;	
+				}
+			case CCamera::CCameraAdvancedSettings::EISOAutoAperturePrioritised:
+				{
+				eventError = KErrNotSupported;
+				break;	
+				}
+			default:
+				eventError = KErrNotSupported;
+			}
+		}
+			
+	TECAMEvent ecamevent(KUidECamEventCameraSettingIsoRateType, eventError);
+	
+	iOwner.iECamEvent = ecamevent;
+	iOwner.iHandleEventAsync.CallBack();
+	}
+
+void CTestCamAdvSet::GetISORateL(CCamera::CCameraAdvancedSettings::TISORateType& aISORateType, TInt& /*aParam*/, TInt& aISORate) const
+	{
+	//If camera has no ISO rate supported, then leave
+	if(iSupportedISORates.Count() == 0)	
+		{
+		User::Leave(KErrNotSupported);
+		}
+		
+	aISORateType = iISORateType;
+	aISORate = iIsoRate;
+//	aParam is redundant for manual ISO.
+	}
+	
+void CTestCamAdvSet::GetAperturesL(RArray<TInt>& aFStops, TValueInfo& aInfo) const
+	{
+	if(iSupportedApertures.Count() == 0)
+		{
+		aFStops.Reset();
+		aInfo = ENotActive;
+		}
+	
+	for(TInt index=0; index < iSupportedApertures.Count(); index++)
+		{
+		aFStops.AppendL(iSupportedApertures[index]);
+		}
+		
+	aInfo = EDiscreteSteps;
+	}
+	
+TInt CTestCamAdvSet::Aperture() const
+	{
+	return iAperture;
+	}
+
+void CTestCamAdvSet::SetAperture(TInt aFStop)
+	{	
+	TInt eventError = KErrNone;
+	if(iSupportedApertures.Find(aFStop) == KErrNotFound)
+		{
+		eventError = KErrECamParameterNotInRange;
+		}
+	else 
+		{
+		iAperture = aFStop;
+		}
+		
+	TECAMEvent ecamevent(KUidECamEventCameraSettingAperture, eventError);
+	
+	iOwner.iECamEvent = ecamevent;
+	iOwner.iHandleEventAsync.CallBack();
+	}	
+	
+void CTestCamAdvSet::GetShutterSpeedsL(RArray<TInt>& aShutterSpeeds, TValueInfo& aInfo) const
+	{
+	if(iSupportedShutterSpeeds.Count() == 0)
+		{
+		aShutterSpeeds.Reset();
+		aInfo = ENotActive;
+		}
+	
+	for(TInt index=0; index < iSupportedShutterSpeeds.Count(); index++)
+		{
+		aShutterSpeeds.AppendL(iSupportedShutterSpeeds[index]);
+		aInfo = EDiscreteSteps;
+		}
+	}
+	
+TInt CTestCamAdvSet::ShutterSpeed() const
+	{
+	return iShutterSpeed;
+	}
+	
+void CTestCamAdvSet::SetShutterSpeed(TInt aShutterSpeed)
+	{
+	TInt eventError = KErrNone;
+	if(iSupportedShutterSpeeds.Find(aShutterSpeed) == KErrNotFound)
+		{
+		eventError = KErrECamParameterNotInRange;
+		}
+	else 
+		{
+		iShutterSpeed = aShutterSpeed;
+		}
+		
+	TECAMEvent ecamevent(KUidECamEventCameraSettingShutterSpeed, eventError);
+	
+	iOwner.iECamEvent = ecamevent;
+	iOwner.iHandleEventAsync.CallBack();
+	}
+	
+TInt CTestCamAdvSet::SupportedMeteringModes() const
+	{
+	return KFeatureNotSupported;
+	}
+	
+CCamera::CCameraAdvancedSettings::TMeteringMode CTestCamAdvSet::MeteringMode() const
+	{
+	return CCamera::CCameraAdvancedSettings::EMeteringModeAuto;
+	}
+	
+void CTestCamAdvSet::SetMeteringMode(CCamera::CCameraAdvancedSettings::TMeteringMode aMeteringMode)
+	{
+	TInt eventError = KErrNotSupported;
+	if(aMeteringMode == CCamera::CCameraAdvancedSettings::EMeteringModeAuto)
+		{
+		eventError = KErrAlreadyExists;
+		}
+		
+	TECAMEvent ecamevent(KUidECamEventCameraSettingMeteringMode, eventError);
+	
+	iOwner.iECamEvent = ecamevent;
+	iOwner.iHandleEventAsync.CallBack();
+	}
+	
+TInt CTestCamAdvSet::SupportedDriveModes() const
+	{
+	return KSupportedDriveModes;
+	}
+	
+CCamera::CCameraAdvancedSettings::TDriveMode CTestCamAdvSet::DriveMode() const
+	{
+	return iOwner.iDriveMode;
+	}
+	
+void CTestCamAdvSet::SetDriveMode(CCamera::CCameraAdvancedSettings::TDriveMode aDriveMode)
+	{
+	TInt eventError = KErrNone;
+	if(iOwner.iVideoCaptureActive || iOwner.iImageCaptureActive)
+		{
+		eventError = KErrNotReady;
+		}
+	else
+		{
+		if(!(aDriveMode & KSupportedDriveModes))
+			{
+			eventError = KErrNotSupported;
+			}	
+		else
+			{
+			if(eventError == KErrNone)
+				{
+				iOwner.iDriveMode = aDriveMode;
+				}	
+			}
+		}
+	
+	TECAMEvent ecamevent(KUidECamEventCameraSettingDriveMode, eventError);
+	
+	iOwner.iECamEvent = ecamevent;
+	iOwner.iHandleEventAsync.CallBack();
+	}
+	
+TInt CTestCamAdvSet::SupportedBracketModes() const
+	{
+	return KFeatureNotSupported;
+	}
+	
+CCamera::CCameraAdvancedSettings::TBracketMode CTestCamAdvSet::BracketMode() const
+	{
+	return CCamera::CCameraAdvancedSettings::EBracketModeOff;
+	}
+	
+void CTestCamAdvSet::SetBracketMode(CCamera::CCameraAdvancedSettings::TBracketMode aBracketMode)
+	{
+	TInt eventError = KErrNotSupported;
+	if(aBracketMode == CCamera::CCameraAdvancedSettings::EBracketModeOff)
+		{
+		eventError = KErrAlreadyExists;
+		}
+		
+	TECAMEvent ecamevent(KUidECamEventCameraSettingBracketMode, eventError);
+	
+	iOwner.iECamEvent = ecamevent;
+	iOwner.iHandleEventAsync.CallBack();
+	}
+	
+TInt CTestCamAdvSet::SupportedBracketParameters() const
+	{
+	return KFeatureNotSupported;
+	}
+	
+CCamera::CCameraAdvancedSettings::TBracketParameter CTestCamAdvSet::BracketParameter() const
+	{
+	return CCamera::CCameraAdvancedSettings::EBracketParameterNone;
+	}
+	
+void CTestCamAdvSet::SetBracketParameter(CCamera::CCameraAdvancedSettings::TBracketParameter aBracketParameter)
+	{
+	TInt eventError = KErrNotSupported;
+	if(aBracketParameter == CCamera::CCameraAdvancedSettings::EBracketParameterNone)
+		{
+		eventError = KErrAlreadyExists;
+		}
+		
+	TECAMEvent ecamevent(KUidECamEventCameraSettingBracketParameter, eventError);
+	
+	iOwner.iECamEvent = ecamevent;
+	iOwner.iHandleEventAsync.CallBack();
+	}
+	
+TInt CTestCamAdvSet::SupportedBracketSteps() const
+	{
+	return KFeatureNotSupported;
+	}
+	
+CCamera::CCameraAdvancedSettings::TBracketStep CTestCamAdvSet::BracketStep() const
+	{
+	return CCamera::CCameraAdvancedSettings::EBracketStepNonConfig;
+	}
+	
+void CTestCamAdvSet::SetBracketStep(CCamera::CCameraAdvancedSettings::TBracketStep aBracketStep)
+	{
+	TInt eventError = KErrNotSupported;
+	if(aBracketStep == CCamera::CCameraAdvancedSettings::EBracketStepNonConfig)
+		{
+		eventError = KErrAlreadyExists;
+		}
+		
+	TECAMEvent ecamevent(KUidECamEventCameraSettingBracketStep, eventError);
+	
+	iOwner.iECamEvent = ecamevent;
+	iOwner.iHandleEventAsync.CallBack();
+	}
+	
+void CTestCamAdvSet::GetBracketMerge(TInt& aStartIndex, TInt& aFrames) const
+	{
+	aStartIndex = KFeatureNotSupported;
+	aFrames     = KFeatureNotSupported;
+	}
+	
+void CTestCamAdvSet::SetBracketMerge(TInt /*aStartIndex*/ , TInt /*aFrames*/)
+	{
+	TECAMEvent ecamevent(KUidECamEventBracketMerge, KErrNotSupported);
+	
+	iOwner.iECamEvent = ecamevent;
+	iOwner.iHandleEventAsync.CallBack();
+	}
+	
+TInt CTestCamAdvSet::SupportedFlashModes() const
+	{
+	return KFeatureNotSupported;
+	}
+	
+CCamera::TFlash CTestCamAdvSet::FlashMode() const
+	{
+	return CCamera::EFlashNone;
+	}
+	
+void CTestCamAdvSet::SetFlashMode(CCamera::TFlash /*aMode*/)
+	{
+    TECAMEvent ecamevent(KUidECamEventCameraSettingFlashMode, KErrNotSupported);
+	
+	iOwner.iECamEvent = ecamevent;
+	iOwner.iHandleEventAsync.CallBack();
+	}
+	
+TBool CTestCamAdvSet::RedEyeReduceOn() const
+	{
+	return KDefaultRedEyeReduce;
+	}
+	
+void CTestCamAdvSet::SetRedEyeReduceOn(TBool /*aState*/)
+	{
+	TECAMEvent ecamevent(KUidECamEventCameraSettingFlashRedEyeReduce, KErrNotSupported);
+						 
+	iOwner.iECamEvent = ecamevent;
+	iOwner.iHandleEventAsync.CallBack();
+	}
+	
+void CTestCamAdvSet::GetFlashCompensationStepsL(RArray<TInt>& aFlashCompensationSteps, TValueInfo& aInfo) const
+	{
+	aFlashCompensationSteps.Reset();
+	aInfo = ENotActive;
+	}
+	
+TInt CTestCamAdvSet::FlashCompensationStep() const
+	{
+	return KFlashCompensationStep;
+	}
+
+TInt CTestCamAdvSet::GetFlashCompensationStep(TInt& aFlashCompensationStep) const
+	{
+	aFlashCompensationStep = KFlashCompensationStep;
+	return KErrNone;
+	}
+	
+void CTestCamAdvSet::GetFlashCompensationRangeInSteps(TInt& aNegativeCompensation, TInt& aPositiveCompensation) const
+	{
+	aNegativeCompensation = KFlashCompensationStep;
+	aPositiveCompensation = KFlashCompensationStep;
+	}
+	
+void CTestCamAdvSet::SetFlashCompensationStep(TInt /*aFlashCompensationStep*/)
+	{
+	TECAMEvent ecamevent(KUidECamEventCameraSettingFlashCompensationStep, KErrNotSupported);
+	
+	iOwner.iECamEvent = ecamevent;
+	iOwner.iHandleEventAsync.CallBack();
+	}
+	
+TInt CTestCamAdvSet::FlashCompensation() const
+	{
+	return KFlashCompensationStep;
+	}
+	
+TInt CTestCamAdvSet::GetFlashCompensation(TInt& aFlashCompensation) const
+	{
+	aFlashCompensation = KFlashCompensationStep;
+	return KErrNone;
+	}
+	
+void CTestCamAdvSet::SetFlashCompensation(TInt /*aFlashCompensation*/)
+	{
+	TECAMEvent ecamevent(KUidECamEventCameraSettingFlashCompensation, KErrNotSupported);
+	
+	iOwner.iECamEvent = ecamevent;
+	iOwner.iHandleEventAsync.CallBack();
+	}
+	
+TBool CTestCamAdvSet::IsExternalFlashPresent() const
+	{
+	return KExternalFlashPresentState;
+	}
+	
+void CTestCamAdvSet::GetManualFlashPowerLevelsL(RArray<TInt>& aManualFlashPowerLevels, TValueInfo& aInfo) const
+	{
+	aManualFlashPowerLevels.Reset();
+	aInfo = ENotActive;
+	}
+	
+TInt CTestCamAdvSet::ManualFlashPowerLevel() const
+	{
+	return KErrNotSupported;
+	}
+	
+void CTestCamAdvSet::SetManualFlashPowerLevel(TInt /*aManualFlashPowerLevel*/)
+	{
+	TECAMEvent ecamevent(KUidECamEventCameraSettingFlashManualPower, KErrNotSupported);
+	
+	iOwner.iECamEvent = ecamevent;
+	iOwner.iHandleEventAsync.CallBack();
+	}
+	
+TInt CTestCamAdvSet::SupportedExposureModes() const
+	{
+	return CCamera::EExposureAuto;
+	}
+	
+CCamera::TExposure CTestCamAdvSet::ExposureMode() const
+	{
+	return CCamera::EExposureAuto;
+	}
+	
+void CTestCamAdvSet::SetExposureMode(CCamera::TExposure aExposureMode)
+	{
+	TInt eventError = KErrNotSupported;
+	if(aExposureMode == CCamera::EExposureAuto)
+		{
+		eventError = KErrAlreadyExists;
+		}
+		
+	TECAMEvent ecamevent(KUidECamEventCameraSettingExposureMode, eventError);
+	
+	iOwner.iECamEvent = ecamevent;
+	iOwner.iHandleEventAsync.CallBack();
+	}
+	
+void CTestCamAdvSet::GetExposureCompensationStepsL(RArray<TInt>& aExposureCompensationSteps, TValueInfo& aInfo) const
+	{
+	aExposureCompensationSteps.Reset();
+	aInfo = ENotActive;
+	}
+
+void CTestCamAdvSet::GetExposureCompensationRangeInSteps(TInt& aNegativeCompensation, TInt& aPositiveCompensation) const
+	{
+	aNegativeCompensation = KExposureCompensationStep;
+	aPositiveCompensation = KExposureCompensationStep;
+	}
+	
+TInt CTestCamAdvSet::ExposureCompensationStep() const
+	{
+	return KExposureCompensationStep;
+	}
+	
+TInt CTestCamAdvSet::GetExposureCompensationStep(TInt& aExposureCompensationStep) const
+	{
+	aExposureCompensationStep = KExposureCompensationStep;
+	return KErrNone;
+	}
+	
+void CTestCamAdvSet::SetExposureCompensationStep(TInt /*aExposureCompensationStep*/)
+	{
+	TECAMEvent ecamevent(KUidECamEventCameraSettingExposureCompensationStep, KErrNotSupported);
+	
+	iOwner.iECamEvent = ecamevent;
+	iOwner.iHandleEventAsync.CallBack();
+	}
+	
+TInt CTestCamAdvSet::ExposureCompensation() const
+	{
+	return KExposureCompensationStep;
+	}
+	
+TInt CTestCamAdvSet::GetExposureCompensation(TInt& aExposureCompensation) const
+	{
+	aExposureCompensation = KExposureCompensationStep;
+	return KErrNone;
+	}
+	
+void CTestCamAdvSet::SetExposureCompensation(TInt /*aExposureCompensation*/)
+	{
+	TECAMEvent ecamevent(KUidECamEventCameraSettingExposureCompensation, KErrNotSupported);
+	
+	iOwner.iECamEvent = ecamevent;
+	iOwner.iHandleEventAsync.CallBack();
+	}
+	
+TInt CTestCamAdvSet::SupportedWhiteBalanceModes() const
+	{
+	return KFeatureNotSupported;
+	}
+	
+CCamera::TWhiteBalance CTestCamAdvSet::WhiteBalanceMode() const
+	{
+	return CCamera::EWBAuto;
+	}
+	
+void CTestCamAdvSet::SetWhiteBalanceMode(CCamera::TWhiteBalance aWhiteBalanceMode)
+	{
+	TInt eventError = KErrNotSupported;
+	if(aWhiteBalanceMode == CCamera::EWBAuto)
+		{
+		eventError = KErrAlreadyExists;
+		}
+		
+	TECAMEvent ecamevent(KUidECamEventCameraSettingWhiteBalanceMode, eventError);
+	
+	iOwner.iECamEvent = ecamevent;
+	iOwner.iHandleEventAsync.CallBack();
+	}
+	
+TBool CTestCamAdvSet::ApertureExposureLockOn() const
+	{
+	return KApertureExposureLockOn;
+	}
+	
+void CTestCamAdvSet::SetApertureExposureLockOn(TBool /*aAELock*/)
+	{
+	TECAMEvent ecamevent(KUidECamEventAELock, KErrNotSupported);
+	
+	iOwner.iECamEvent = ecamevent;
+	iOwner.iHandleEventAsync.CallBack();
+	}
+	
+TBool CTestCamAdvSet::ShootClickOn() const
+	{
+	return KShootClickOn;
+	}
+	
+void CTestCamAdvSet::SetShootClickOn(TBool /*aShootClickOn*/)
+	{
+	TECAMEvent ecamevent(KUidECamEventSoundClick, KErrNotSupported);
+	
+	iOwner.iECamEvent = ecamevent;
+	iOwner.iHandleEventAsync.CallBack();
+	}
+	
+void CTestCamAdvSet::GetTimerIntervalsL(RArray<TInt>& aTimerIntervals, TValueInfo& aInfo) const
+	{
+	aTimerIntervals.Reset();
+	aInfo = ENotActive;
+	}
+
+TInt CTestCamAdvSet::TimerInterval() const
+	{
+	return KErrNotSupported;
+	}
+	
+void CTestCamAdvSet::SetTimerInterval(TInt /*aTimerInterval*/)
+	{
+	TECAMEvent ecamevent(KUidECamEventCameraSettingTimerInterval, KErrNotSupported);
+	
+	iOwner.iECamEvent = ecamevent;
+	iOwner.iHandleEventAsync.CallBack();
+	}
+	
+void CTestCamAdvSet::GetTimeLapsePeriodRange(TTime& aTimeLapseMin, TTime& aTimeLapseMax) const
+	{
+	TTime timeLapse(KTimeLapse);
+	aTimeLapseMin = aTimeLapseMax = timeLapse;
+	}
+	
+void CTestCamAdvSet::GetTimeLapse(TTime& aStart, TTime& aEnd, TTime& aInterval) const
+	{
+	TTime timeLapse(KTimeLapse);
+	aStart = aEnd = aInterval = timeLapse;
+	}
+	
+void CTestCamAdvSet::SetTimeLapse(const TTime& /*aStart*/, const TTime& /*aEnd*/, const TTime& /*aInterval*/)
+	{
+	TECAMEvent ecamevent(KUidECamEventCameraSettingTimeLapse, KErrNotSupported);
+	
+	iOwner.iECamEvent = ecamevent;
+	iOwner.iHandleEventAsync.CallBack();
+	}
+	
+CCamera::CCameraAdvancedSettings::TPictureOrientation CTestCamAdvSet::PictureOrientation() const
+	{
+	return CCamera::CCameraAdvancedSettings::EPictureOrientationUnknown;
+	}
+	
+void CTestCamAdvSet::SetPictureOrientation(CCamera::CCameraAdvancedSettings::TPictureOrientation aOrientation)
+	{
+	TInt eventError = KErrNotSupported;
+	
+	if(iOwner.iVideoCaptureActive || iOwner.iImageCaptureActive)
+		{
+		eventError = KErrNotReady;
+		}
+	else
+		{
+		if(aOrientation == CCamera::CCameraAdvancedSettings::EPictureOrientationUnknown)
+			{
+			eventError = KErrAlreadyExists;
+			}	
+		}
+		
+	TECAMEvent ecamevent(KUidECamEventCameraSettingPictureOrientation, eventError);
+	
+	iOwner.iECamEvent = ecamevent;
+	iOwner.iHandleEventAsync.CallBack();
+	}
+	
+TInt CTestCamAdvSet::SupportedPixelAspectRatios() const
+	{
+	return KSupportedPixelAspectRatio;
+	}
+	
+CCamera::CCameraAdvancedSettings::TPixelAspectRatio CTestCamAdvSet::PixelAspectRatio() const
+	{
+	return CCamera::CCameraAdvancedSettings::EPixelAspectUnknown;
+	}
+	
+void CTestCamAdvSet::SetPixelAspectRatio(CCamera::CCameraAdvancedSettings::TPixelAspectRatio aPixelAspectRatio)
+	{
+	TInt eventError = KErrNotSupported;
+	
+	if(aPixelAspectRatio == CCamera::CCameraAdvancedSettings::EPixelAspectUnknown)
+		{
+		eventError = KErrAlreadyExists;
+		}	
+		
+	TECAMEvent ecamevent(KUidECamEventPixelAspectRatio, eventError);
+	
+	iOwner.iECamEvent = ecamevent;
+	iOwner.iHandleEventAsync.CallBack();
+	}
+	
+TInt CTestCamAdvSet::SupportedYuvRanges() const
+	{
+	return KSupportedYuvRange;
+	}
+	
+CCamera::CCameraAdvancedSettings::TYuvRange CTestCamAdvSet::YuvRange() const
+	{
+	return CCamera::CCameraAdvancedSettings::EYuvRangeUnknown;
+	}
+	
+void CTestCamAdvSet::SetYuvRange(CCamera::CCameraAdvancedSettings::TYuvRange aYuvRange)
+	{
+	TInt eventError = KErrNotSupported;
+	
+	if(aYuvRange == CCamera::CCameraAdvancedSettings::EYuvRangeUnknown)
+		{
+		eventError = KErrAlreadyExists;
+		}	
+		
+	TECAMEvent ecamevent(KUidECamEventYuvRange, eventError);
+	
+	iOwner.iECamEvent = ecamevent;
+	iOwner.iHandleEventAsync.CallBack();
+	}
+	
+TInt CTestCamAdvSet::BurstImages() const
+	{
+	return iOwner.iBurstImages;
+	}
+	
+void CTestCamAdvSet::SetBurstImages(TInt aImages)
+	{
+	TInt eventError = iOwner.CheckReserveAndPower();
+	
+	if(eventError == KErrNone)
+		{
+		if(aImages == iOwner.iBurstImages)
+			{
+			eventError = KErrAlreadyExists;
+			}
+		else
+			{
+			if(aImages<1)
+				{
+				eventError = KErrArgument;
+				}
+			}
+		}
+		
+	if(eventError != KErrNone)
+		{
+		TECAMEvent ecamevent(KUidECamEventBurstImages, eventError);
+	
+		iOwner.iECamEvent = ecamevent;
+		iOwner.iHandleEventAsync.CallBack();
+		return;
+		}
+		
+	if(aImages > KMaxBurstImages)
+		{
+		iOwner.iBurstImages = KMaxBurstImages;
+		}
+	else
+		{
+		iOwner.iBurstImages = aImages;
+		}
+			
+	TECAMEvent ecamevent(KUidECamEventBurstImages, eventError);
+	
+	iOwner.iECamEvent = ecamevent;
+	iOwner.iHandleEventAsync.CallBack();
+	}
+	
+void CTestCamAdvSet::GetOpticalZoomStepsL(RArray<TInt>& aOpticalZoomSteps, TValueInfo& aInfo)  const
+	{	
+	aOpticalZoomSteps.Reset();
+	aOpticalZoomSteps.AppendL(KECamFineResolutionFactor);
+	aInfo = EDiscreteSteps;
+	}
+	
+TInt CTestCamAdvSet::OpticalZoom() const
+	{
+	return KECamFineResolutionFactor;
+	}
+	
+void CTestCamAdvSet::SetOpticalZoom(TInt aOpticalZoom)
+	{
+	TInt eventError = KErrNotSupported;
+	
+	if(aOpticalZoom == KECamFineResolutionFactor)
+		{
+		eventError = KErrAlreadyExists;
+		}
+		
+	TECAMEvent ecamevent(KUidECamEventCameraSettingOpticalZoom, eventError);
+	
+	iOwner.iECamEvent = ecamevent;
+	iOwner.iHandleEventAsync.CallBack();
+	}
+	
+void CTestCamAdvSet::GetDigitalZoomStepsL(RArray<TInt>& aDigitalZoomSteps,
+								 TValueInfo& aInfo) const
+	{
+	aDigitalZoomSteps.Reset();
+	aDigitalZoomSteps.AppendL(KECamFineResolutionFactor);
+	aInfo = EDiscreteSteps;
+	}
+	
+void CTestCamAdvSet::GetDigitalZoomStepsForStillL(RArray<TInt>& aDigitalZoomSteps, TValueInfo& aInfo, TInt /*aSizeIndex*/,
+								 CCamera::TFormat /*aFormat*/, TBool& /*aIsInfluencePossible*/) const
+	{
+	aDigitalZoomSteps.Reset();
+	aDigitalZoomSteps.AppendL(KECamFineResolutionFactor);
+	aInfo = EDiscreteSteps;
+	}
+
+void CTestCamAdvSet::GetDigitalZoomStepsForVideoL(RArray<TInt>& aDigitalZoomSteps, TValueInfo& aInfo, TInt /*aFrameRateIndex*/,
+								 TInt /*aSizeIndex*/, CCamera::TFormat /*aFormat*/, TBool& /*aIsInfluencePossible*/, CCamera::TExposure /*aExposure*/) const
+	{
+	aDigitalZoomSteps.Reset();
+	aDigitalZoomSteps.AppendL(KECamFineResolutionFactor);
+	aInfo = EDiscreteSteps;
+	}
+
+TInt CTestCamAdvSet::DigitalZoom() const
+	{
+	return KECamFineResolutionFactor;
+	}
+
+void CTestCamAdvSet::SetDigitalZoom(TInt aDigitalZoom)
+	{
+	TInt eventError = KErrNotSupported;
+	
+	if(aDigitalZoom == KECamFineResolutionFactor)
+		{
+		eventError = KErrAlreadyExists;
+		}
+		
+	TECAMEvent ecamevent(KUidECamEventCameraSettingDigitalZoom, eventError);
+	
+	iOwner.iECamEvent = ecamevent;
+	iOwner.iHandleEventAsync.CallBack();
+	}
+	
+TBool CTestCamAdvSet::ExposureLockOn() const
+	{
+	return KExposureLockOn;		
+	}
+
+void CTestCamAdvSet::SetExposureLockOn(TBool aState)
+	{
+	TInt eventError = KErrNotSupported;
+	
+	if(aState == KExposureLockOn)
+		{
+		eventError = KErrAlreadyExists;
+		}
+		
+	TECAMEvent ecamevent(KUidECamEventCameraSettingExposureLock, eventError);
+	
+	iOwner.iECamEvent = ecamevent;
+	iOwner.iHandleEventAsync.CallBack();	
+	}
+		
+TBool CTestCamAdvSet::AutoFocusLockOn() const
+	{
+	return KAutoFocusLockOn;
+	}
+
+void CTestCamAdvSet::SetAutoFocusLockOn(TBool aState)
+	{	
+	TInt eventError = KErrNotSupported;
+	
+	if(aState == KAutoFocusLockOn)
+		{
+		eventError = KErrAlreadyExists;
+		}
+		
+	TECAMEvent ecamevent(KUidECamEventCameraSettingAutoFocusLock, eventError);
+	
+	iOwner.iECamEvent = ecamevent;
+	iOwner.iHandleEventAsync.CallBack();
+	}
+
+void CTestCamAdvSet::GetSupportedSettingsL(RArray<TUid>& aSettings) const
+	{
+	aSettings.Reset();
+	User::Leave(KErrNotSupported);
+	}
+    
+void CTestCamAdvSet::GetActiveSettingsL(RArray<TUid>& aActiveSettings) const
+	{
+	aActiveSettings.Reset();
+	User::Leave(KErrNotSupported);
+	}
+ 
+void CTestCamAdvSet::GetDisabledSettingsL(RArray<TUid>& aDisbledSettings) const
+	{
+	aDisbledSettings.Reset();
+	User::Leave(KErrNotSupported);
+	}
+	    
+void CTestCamAdvSet::SetAutomaticSizeSelectionChangeOn(TBool aSetOn)
+	{
+	TInt eventError = KErrNotSupported;
+	
+	if(aSetOn == KAutomaticSizeSelectionChangeOn)
+		{
+		eventError = KErrAlreadyExists;
+		}
+		
+	TECAMEvent ecamevent(KUidECamEventCameraSettingAutomaticSizeSelection, eventError);
+	
+	iOwner.iECamEvent = ecamevent;
+	iOwner.iHandleEventAsync.CallBack();
+	}
+	
+TBool CTestCamAdvSet::AutomaticSizeSelectionChangeOn() const
+	{
+	return KAutomaticSizeSelectionChangeOn;
+	}
+
+void CTestCamAdvSet::GetSupportedContinuousAutoFocusTimeoutsL(RArray<TInt>& aTimeouts, TValueInfo& aInfo) const
+	{
+	aTimeouts.Reset();
+	aInfo = ENotActive;
+	}
+	
+void CTestCamAdvSet::SetContinuousAutoFocusTimeout(TInt /*aTimeout*/)
+	{
+	TECAMEvent ecamevent(KUidECamEventCameraSettingsContinuousAutoFocusTimeout, KErrNotSupported);
+	
+	iOwner.iECamEvent = ecamevent;
+	iOwner.iHandleEventAsync.CallBack();
+	}
+	
+void CTestCamAdvSet::SetStabilizationEffect(CCamera::CCameraAdvancedSettings::TStabilizationEffect aEffect)
+	{
+	TInt eventError = KErrNotSupported;
+	
+	if(aEffect == KStabilizationEffect)
+		{
+		eventError = KErrAlreadyExists;
+		}
+		
+	TECAMEvent ecamevent(KUidECamEventCameraSettingsStabilizationEffect, eventError);
+	
+	iOwner.iECamEvent = ecamevent;
+	iOwner.iHandleEventAsync.CallBack();
+	}
+	
+CCamera::CCameraAdvancedSettings::TStabilizationEffect CTestCamAdvSet::StabilizationEffect() const
+	{
+	return KStabilizationEffect;
+	}
+
+TInt CTestCamAdvSet::SupportedStabilizationEffects() const
+	{
+	return KStabilizationEffect;
+	}
+
+TInt CTestCamAdvSet::SupportedStabilizationComplexityValues() const
+	{
+	return KStabilizationComplexity; 
+	}
+	
+CCamera::CCameraAdvancedSettings::TStabilizationAlgorithmComplexity CTestCamAdvSet::StabilizationComplexity() const
+	{
+	return KStabilizationComplexity;
+	}
+	
+void CTestCamAdvSet::SetStabilizationComplexity(CCamera::CCameraAdvancedSettings::TStabilizationAlgorithmComplexity aComplexity)
+	{
+	TInt eventError = KErrNotSupported;
+	
+	if(aComplexity == KStabilizationComplexity)
+		{
+		eventError = KErrAlreadyExists;
+		}
+		
+	TECAMEvent ecamevent(KUidECamEventSettingsStabilizationAlgorithmComplexity, eventError);
+	
+	iOwner.iECamEvent = ecamevent;
+	iOwner.iHandleEventAsync.CallBack();
+	}
+	
+CCamera::CCameraAdvancedSettings::TWBUnits CTestCamAdvSet::SupportedWBUnits() const
+	{
+	return KSupportedWBUnits;
+	}
+	
+void CTestCamAdvSet::SetWBRgbValue(const TRgb& /*aValue*/)
+	{
+	TECAMEvent ecamevent(KUidECamEventCameraSettingsWBValue, KErrNotSupported);
+	
+	iOwner.iECamEvent = ecamevent;
+	iOwner.iHandleEventAsync.CallBack();
+	}
+	
+void CTestCamAdvSet::GetWBRgbValue(TRgb& aValue) const
+	{
+	aValue = KRgbWhite;
+	}
+	
+void CTestCamAdvSet::GetWBSupportedColorTemperaturesL(RArray<TInt>& aWBColorTemperatures, TValueInfo& aInfo) const
+	{
+	aWBColorTemperatures.Reset();
+	aInfo = ENotActive;
+	}
+	
+void CTestCamAdvSet::SetWBColorTemperature(TInt /*aColorTemperature*/)
+	{
+	TECAMEvent ecamevent(KUidECamEventCameraSettingsWBValue, KErrNotSupported);
+	
+	iOwner.iECamEvent = ecamevent;
+	iOwner.iHandleEventAsync.CallBack();
+	}
+
+TInt CTestCamAdvSet::WBColorTemperature() const
+	{
+	return KErrNotSupported;
+	}
+
+TInt CTestCamAdvSet::ContinuousAutoFocusTimeout() const
+	{
+	return KErrNotSupported;
+	}
+
+TInt CTestCamAdvSet::IsFlashReady(TBool& aReady) const
+	{
+	aReady = KFlashReadyState;
+	return KErrNone;
+	}
+
+void CTestCamAdvSet::GetCurrentFocusModeStepsL(RArray<TInt>& aFocusModeSteps, TValueInfo& aInfo) const
+	{
+	aFocusModeSteps.Reset();
+	aInfo = ENotActive;
+	}
+	
+void CTestCamAdvSet::SetReferenceScreen(CWsScreenDevice& /*aScreenDevice*/)
+	{
+	TECAMEvent ecamevent(KUidECamEventCameraSettingReferenceScreen, KErrNotSupported);
+	
+	iOwner.iECamEvent = ecamevent;
+	iOwner.iHandleEventAsync.CallBack();
+	}
+	
+void CTestCamAdvSet::GetPreCaptureWarningSupportedL(CCamera::CCameraAdvancedSettings::TCameraMode /*aCameraMode*/, TInt& aPreCaptureWarningSupported) const
+	{
+	aPreCaptureWarningSupported = KPreCaptureWarning; 
+	}
+
+void CTestCamAdvSet::SubscribeToPreCaptureWarningL(TInt /*aPreCaptureWarning*/)
+	{
+	User::Leave(KErrNotSupported);
+	}
+	
+void CTestCamAdvSet::UnSubscribePreCaptureWarningL()
+	{
+	User::Leave(KErrNotSupported);
+	}
+	
+void CTestCamAdvSet::GetPreCaptureWarningL(TInt& /*aPreCaptureWarning*/) const
+	{
+	User::Leave(KErrNotSupported);
+	}
+	
+void CTestCamAdvSet::GetSupportedAFAssistantLightL(TInt& aSupportedAFAssistantLight) const
+	{
+	aSupportedAFAssistantLight = KAFAssisstantLight;
+	}
+
+void CTestCamAdvSet::GetAFAssistantLightL(CCamera::CCameraAdvancedSettings::TAFAssistantLight& /*aAFAssistantLight*/) const
+	{
+	User::Leave(KErrNotSupported);
+	}
+
+void CTestCamAdvSet::SetAFAssistantLight(CCamera::CCameraAdvancedSettings::TAFAssistantLight aAFAssistantLight)
+	{
+	TInt eventError = KErrNotSupported;
+	
+	if(aAFAssistantLight == KAFAssisstantLight)
+		{
+		eventError = KErrAlreadyExists;
+		}
+		
+	TECAMEvent ecamevent(KUidECamEventCameraSettingAFAssistantLight, eventError);
+	
+	iOwner.iECamEvent = ecamevent;
+	iOwner.iHandleEventAsync.CallBack();
+	}
+	
+/**********************************************************************************************************/
+/* 											CTestCamPresets  											  */
+/**********************************************************************************************************/
+
+CTestCamPresets::CTestCamPresets(CTestCamera& aOwner): iOwner(aOwner),iCurrentPreset(KNullUid)
+	{}
+	
+CTestCamPresets::~CTestCamPresets()
+	{
+	iSupportedPresets.Close();
+	iFactoryPresetAffectSettings.Close();
+	
+	CDataGlobal* globalData = static_cast <CDataGlobal*> (Dll::Tls());	
+	if(globalData != NULL)
+		{
+		if(!globalData->iTestCamAdvSet && !globalData->iTestCamSnapshot && !globalData->iTestCamImgProc)
+			{
+			delete globalData;
+			Dll::FreeTls();
+			}
+		else
+			{
+			globalData->iTestCamPresets = NULL;
+			Dll::SetTls(globalData);	
+			}
+		}
+	}
+		
+CTestCamPresets* CTestCamPresets::NewL(CTestCamera& aOwner)
+	{
+	CDataGlobal* globalData = static_cast <CDataGlobal*> (Dll::Tls());
+	
+	if(globalData == NULL)
+		{
+		globalData = new (ELeave) CDataGlobal;
+		CleanupStack::PushL(globalData);
+		globalData->iPresetsReferenceCount = 0;
+		globalData->iTestCamPresets = new (ELeave) CTestCamPresets(aOwner);
+		globalData->iTestCamPresets->ConstructL();
+		globalData->iTestCamPresets->iRefCount = 1;
+		User::LeaveIfError(Dll::SetTls(globalData));
+		CleanupStack::Pop(globalData);
+		return globalData->iTestCamPresets;
+		}
+	else
+		{
+		if(globalData->iTestCamPresets == NULL)
+			{
+			globalData->iPresetsReferenceCount = 0;
+			globalData->iTestCamPresets = new (ELeave) CTestCamPresets(aOwner);
+			CleanupStack::PushL(globalData->iTestCamPresets);
+			globalData->iTestCamPresets->ConstructL();
+			globalData->iTestCamPresets->iRefCount = 1;
+			User::LeaveIfError(Dll::SetTls(globalData));
+			CleanupStack::Pop(globalData->iTestCamPresets);
+			return globalData->iTestCamPresets;
+			}
+			
+		CTestCamPresets* self = globalData->iTestCamPresets;
+		
+		globalData->iPresetsReferenceCount++;
+		self->iRefCount = globalData->iPresetsReferenceCount + 1;
+		if (globalData->iPresetsReferenceCount == KNumOfPresetExtensions-1 )
+			{
+			globalData->iTestCamPresets = NULL;
+			if(!globalData->iTestCamAdvSet && !globalData->iTestCamSnapshot && !globalData->iTestCamImgProc)
+				{
+				delete globalData;
+				Dll::FreeTls();
+				}
+			else
+				{
+				User::LeaveIfError(Dll::SetTls(globalData));	
+				}
+			}
+		else
+			{
+			User::LeaveIfError(Dll::SetTls(globalData));
+			}
+		return self;		
+		}
+	}
+
+void CTestCamPresets::Release()
+	{
+	iRefCount--; 
+	if(iRefCount == 0)
+		{
+		delete this;
+		}
+	}	
+	
+void CTestCamPresets::ConstructL()
+	{
+	iSupportedPresets.Reset();
+	iSupportedPresets.AppendL(KUidECamPresetFactoryDefault);
+	
+	iFactoryPresetAffectSettings.Reset();
+	iFactoryPresetAffectSettings.AppendL(KUidECamEventCameraSettingDriveMode);
+	iFactoryPresetAffectSettings.AppendL(KUidECamEventBurstImages);	
+	}
+
+void CTestCamPresets::GetSupportedPresetsL(RArray<TUid>& aPresets) const
+	{
+	aPresets.Reset();
+	for	(TInt index=0; index < iSupportedPresets.Count(); index++)
+		{
+		User::LeaveIfError(aPresets.Append(iSupportedPresets[index]));
+		}
+	}
+
+void CTestCamPresets::SetPreset(TUid aPreset)
+	{
+	TInt eventError = iOwner.CheckReserveAndPower();
+	if(eventError == KErrNone)
+		{
+		if(aPreset == iSupportedPresets[0])
+			{
+			//ResetBrightness, Contrast, Drivemode, No. of burst mode images
+			iOwner.iBrightness = 0;
+			iOwner.iContrast = 0;
+			iOwner.iImgProcBrightness = 0;
+			iOwner.iImgProcContrast = 0;
+			iOwner.iDriveMode = KDefaultDriveMode;
+			iOwner.iBurstImages = KBurstImages;
+			}
+		else
+			{
+			eventError = KErrNotSupported;	
+			}
+		}
+	
+	TECAMEvent ecamevent(aPreset, eventError);
+	
+	iOwner.iECamEvent = ecamevent;
+	iOwner.iHandleEventAsync.CallBack();	
+	}
+	
+TUid CTestCamPresets::Preset() const
+	{
+	return iCurrentPreset;	
+	}
+	
+void CTestCamPresets::GetAffectedSettingsL(RArray<TUid>& aSettings) const
+	{
+	aSettings.Reset();
+	
+	if(iCurrentPreset == iSupportedPresets[0])
+		{	
+		for	(TInt index=0; index < iFactoryPresetAffectSettings.Count(); index++)
+			{
+			User::LeaveIfError(aSettings.Append(iFactoryPresetAffectSettings[index]));
+			}
+		}
+	}
+	
+void CTestCamPresets::GetAssociatedSettingsL(TUid aPreset, RArray<TUid>& aSettings) const
+	{
+	switch(aPreset.iUid)
+		{
+		case KUidECamPresetFactoryDefaultUidValue:
+			{
+			aSettings.Reset();
+			for	(TInt index=0; index < iFactoryPresetAffectSettings.Count(); index++)
+				{
+				User::LeaveIfError(aSettings.Append(iFactoryPresetAffectSettings[index]));
+				}
+			break;	
+			}
+		
+		//fall through	
+		case KUidECamPresetOutdoorUidValue:
+		case KUidECamPresetOutdoorSportUidValue:
+		case KUidECamPresetSnowUidValue:
+		case KUidECamPresetBeachUidValue:
+		case KUidECamPresetNightPortraitUidValue:
+		case KUidECamPresetNightFireworksUidValue:
+		case KUidECamPresetFogUidValue:
+		case KUidECamPresetIndoorUidValue:
+		case KUidECamPresetIndoorSportUidValue:
+			{
+			User::Leave(KErrNotSupported);	
+			}
+		//fall through			
+		case KUidECamPresetNightPartyIndoorUidValue:
+		case KUidECamPresetNightCloseUpUidValue:
+		case KUidECamPresetNightMacroUidValue:
+		case KUidECamPresetTextDocumentUidValue:
+		case KUidECamPresetBarcodeUidValue:
+		case KUidECamPresetAutoUidValue:
+		case KUidECamPresetPortraitUidValue:
+		case KUidECamPresetLandscapeUidValue:
+		case KUidECamPresetAmbienceMoodUidValue:
+			{
+			if(iOwner.CameraVersion() == KCameraDefaultVersion)	
+				{
+				User::Leave(KErrArgument);
+				}
+			else
+				{
+				User::Leave(KErrNotSupported);
+				}
+			}
+						
+		default:
+			User::Leave(KErrArgument);
+			
+		}
+	}
--- a/mmplugins/cameraplugins/source/testcamera/test_advanced_settings.h	Thu Mar 25 11:21:36 2010 +0900
+++ b/mmplugins/cameraplugins/source/testcamera/test_advanced_settings.h	Tue Oct 19 11:48:59 2010 +0900
@@ -1,276 +1,276 @@
-// Copyright (c) 2007-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:
-// testadvancedsettings.h
-// 
-//
-
-#ifndef TESTADVANCEDSETTINGS_H
-#define TESTADVANCEDSETTINGS_H
-
-#include "TestCamera.h"
-#include <ecam/ecamadvsettingsintf.h>
-
-const TInt KNumOfAdvSetExtensions = 3;
-const TInt KNumOfPresetExtensions = 1;
-const TInt KNumAvailableCameras = 1;
-const TInt KFeatureNotSupported = 0;
-const TInt KSupportedDriveModes = CCamera::CCameraAdvancedSettings::EDriveModeAuto | CCamera::CCameraAdvancedSettings::EDriveModeSingleShot | CCamera::CCameraAdvancedSettings::EDriveModeBurst;
-const CCamera::CCameraAdvancedSettings::TDriveMode KDefaultDriveMode = CCamera::CCameraAdvancedSettings::EDriveModeSingleShot;
-const TBool KDefaultRedEyeReduce = EFalse;
-const TInt KFlashCompensationStep = 0;
-const TBool KExternalFlashPresentState = EFalse;
-const TInt KExposureCompensationStep = 0;
-const TBool KApertureExposureLockOn = EFalse;
-const TBool KShootClickOn = EFalse;
-const TInt64 KTimeLapse = 0;
-const CCamera::CCameraAdvancedSettings::TPixelAspectRatio KSupportedPixelAspectRatio = CCamera::CCameraAdvancedSettings::EPixelAspectUnknown;
-const CCamera::CCameraAdvancedSettings::TYuvRange KSupportedYuvRange = CCamera::CCameraAdvancedSettings::EYuvRangeUnknown;
-const TInt KBurstImages = 4;
-const TInt KMaxBurstImages = 10;
-const TBool KExposureLockOn = EFalse;
-const TBool KAutoFocusLockOn = EFalse;
-const TBool KAutomaticSizeSelectionChangeOn = EFalse;
-const CCamera::CCameraAdvancedSettings::TStabilizationEffect KStabilizationEffect = CCamera::CCameraAdvancedSettings::EStabilizationOff;
-const CCamera::CCameraAdvancedSettings::TStabilizationAlgorithmComplexity KStabilizationComplexity = CCamera::CCameraAdvancedSettings::EStabilizationComplexityAuto;
-const CCamera::CCameraAdvancedSettings::TWBUnits KSupportedWBUnits = CCamera::CCameraAdvancedSettings::EWBUnknown;
-const TBool KFlashReadyState = EFalse;
-const CCamera::CCameraAdvancedSettings::TPreCaptureWarning KPreCaptureWarning = CCamera::CCameraAdvancedSettings::EPCWNone;
-const CCamera::CCameraAdvancedSettings::TAFAssistantLight KAFAssisstantLight = CCamera::CCameraAdvancedSettings::EAFAssistantLightOff;
-const CCamera::CCameraAdvancedSettings::TISORateType KSupportedISORateTypes = CCamera::CCameraAdvancedSettings::EISOManual;	
-const TInt KDefaultIsoRate = 200;
-const TInt KDefaultAperture = 280;
-const TInt KDefaultShutterSpeed = 100;
-const TInt KDefaultFocusDistance = 100;
-
-// Implementations of the MCameraAdvancedSettings class
-class CTestCamAdvSet : 	public CBase, 
-						public MCameraAdvancedSettings,
-						public MCameraAdvancedSettings2,
-						public MCameraAdvancedSettings3
-	{
-	friend class CTestCamera;
-public:
-	static CTestCamAdvSet* NewL(CTestCamera& aOwner);
-	~CTestCamAdvSet();
-	
-protected:
-	//from MCameraAdvancedSettings
-	void Release();
-  	CCamera::CCameraAdvancedSettings::TCameraType CameraType() const;
-  	CCamera::CCameraAdvancedSettings::TCameraType CameraType(TInt aCameraIndex) const;
-	TBool IsCameraPresent() const;
- 	TBool IsCameraPresent(TInt aCameraIndex) const;
-	TInt CameraIndex() const;	
-    TInt SupportedStabilizationModes() const;
-    CCamera::CCameraAdvancedSettings::TStabilizationMode StabilizationMode() const;
-    void SetStabilizationMode(CCamera::CCameraAdvancedSettings::TStabilizationMode aStabilizationMode);
-    TInt SupportedFocusModes() const;
-    CCamera::CCameraAdvancedSettings::TFocusMode FocusMode() const;
-  	void SetFocusMode(CCamera::CCameraAdvancedSettings::TFocusMode aFocusMode);
-  	TInt SupportedFocusRanges() const;
-    CCamera::CCameraAdvancedSettings::TFocusRange FocusRange() const;
-    void SetFocusRange(CCamera::CCameraAdvancedSettings::TFocusRange aFocusRange);
-    TInt SupportedAutoFocusTypes() const;
-    CCamera::CCameraAdvancedSettings::TAutoFocusType AutoFocusType() const;
-    void SetAutoFocusType(CCamera::CCameraAdvancedSettings::TAutoFocusType aAutoFocusType);
-	TInt SupportedAutoFocusAreas() const;
-    CCamera::CCameraAdvancedSettings::TAutoFocusArea AutoFocusArea() const;
-    void SetAutoFocusArea(CCamera::CCameraAdvancedSettings::TAutoFocusArea aAutoFocusArea);
-	TInt FocusDistance() const;
-	void SetFocusDistance(TInt aDistance);
-	TInt GetMinFocalLength() const;
-	void GetSupportedIsoRatesL(RArray<TInt>& aSupportedIsoRates) const;
-    TInt IsoRate() const;
-    void SetIsoRate(TInt aRate);
-    void GetAperturesL(RArray<TInt>& aFStops, TValueInfo& aInfo) const;
-    TInt Aperture() const; 
-    void SetAperture(TInt aFStop); 
-	void GetShutterSpeedsL(RArray<TInt>& aShutterSpeeds, TValueInfo& aInfo) const; 
-    TInt ShutterSpeed() const; 
-    void SetShutterSpeed(TInt aShutterSpeed); 
-    TInt SupportedMeteringModes() const;
-    CCamera::CCameraAdvancedSettings::TMeteringMode MeteringMode() const;
-    void SetMeteringMode(CCamera::CCameraAdvancedSettings::TMeteringMode aMeteringMode);
-    TInt SupportedDriveModes() const;
-    CCamera::CCameraAdvancedSettings::TDriveMode DriveMode() const;
-    void SetDriveMode(CCamera::CCameraAdvancedSettings::TDriveMode aDriveMode);
-    TInt SupportedBracketModes() const;
-    CCamera::CCameraAdvancedSettings::TBracketMode BracketMode() const;
-    void SetBracketMode(CCamera::CCameraAdvancedSettings::TBracketMode aBracketMode);
-    TInt SupportedBracketParameters() const;
-    CCamera::CCameraAdvancedSettings::TBracketParameter BracketParameter() const;
-    void SetBracketParameter(CCamera::CCameraAdvancedSettings::TBracketParameter aBracketParameter);
-    TInt SupportedBracketSteps() const;
-    CCamera::CCameraAdvancedSettings::TBracketStep BracketStep() const;
-    void SetBracketStep(CCamera::CCameraAdvancedSettings::TBracketStep aBracketStep);
-	void GetBracketMerge(TInt& aStartIndex, TInt& aFrames) const;
-	void SetBracketMerge(TInt aStartIndex, TInt aFrames);
-    TInt SupportedFlashModes() const;
-	CCamera::TFlash FlashMode() const;
-	void SetFlashMode(CCamera::TFlash aMode);
-    TBool RedEyeReduceOn() const;
-    void SetRedEyeReduceOn(TBool aState);
-	void GetFlashCompensationStepsL(RArray<TInt>& aFlashCompensationSteps, TValueInfo& aInfo) const; 
-	TInt FlashCompensationStep() const;
-	TInt GetFlashCompensationStep(TInt& aFlashCompensationStep) const;
-	void SetFlashCompensationStep(TInt aFlashCompensationStep);
-	void GetFlashCompensationRangeInSteps(TInt& aNegativeCompensation, TInt& aPositiveCompensation) const;
-	TInt FlashCompensation() const;
-	TInt GetFlashCompensation(TInt& aFlashCompensation) const;
-	void SetFlashCompensation(TInt aFlashCompensationSteps);
-	TBool IsExternalFlashPresent() const;
-    void GetManualFlashPowerLevelsL(RArray<TInt>& aManualFlashPowerLevels, TValueInfo& aInfo) const;
-    TInt ManualFlashPowerLevel() const;
-    void SetManualFlashPowerLevel(TInt aManualFlashPowerLevel);
-	TInt SupportedExposureModes() const;
-	CCamera::TExposure ExposureMode() const;
-	void SetExposureMode(CCamera::TExposure aExposureMode);
-	void GetExposureCompensationStepsL(RArray<TInt>& aExposureCompensationSteps, TValueInfo& aInfo) const; 
-	TInt ExposureCompensationStep() const;
-	TInt GetExposureCompensationStep(TInt& aExposureCompensationStep) const;
-	void SetExposureCompensationStep(TInt aExposureCompensationStep);
-	void GetExposureCompensationRangeInSteps(TInt& aNegativeCompensation, TInt& aPositiveCompensation) const;
-	TInt ExposureCompensation() const;
-	TInt GetExposureCompensation(TInt& aExposureCompensation) const;
-	void SetExposureCompensation(TInt aExposureCompensationSteps);
-	TInt SupportedWhiteBalanceModes() const;
-	CCamera::TWhiteBalance WhiteBalanceMode() const;
-	void SetWhiteBalanceMode(CCamera::TWhiteBalance aWhiteBalanceMode);
-	TBool ApertureExposureLockOn() const;
-	void SetApertureExposureLockOn(TBool aAELock);
-	TBool ShootClickOn() const;
-	void SetShootClickOn(TBool aShootClickOn);
-	void GetTimerIntervalsL(RArray<TInt>& aTimerIntervals, TValueInfo& aInfo) const;
-    TInt TimerInterval() const;  
-    void SetTimerInterval(TInt aTimerInterval); 
-	void GetTimeLapsePeriodRange(TTime& aTimeLapseMin, TTime& aTimeLapseMax) const;
-    void GetTimeLapse(TTime& aStart, TTime& aEnd, TTime& aInterval) const;  
-    void SetTimeLapse(const TTime& aStart, const TTime& aEnd, const TTime& aInterval); 
-    CCamera::CCameraAdvancedSettings::TPictureOrientation PictureOrientation() const;
-    void SetPictureOrientation(CCamera::CCameraAdvancedSettings::TPictureOrientation aOrientation); 
-    TInt SupportedPixelAspectRatios() const;
-    CCamera::CCameraAdvancedSettings::TPixelAspectRatio PixelAspectRatio() const;
-    void SetPixelAspectRatio(CCamera::CCameraAdvancedSettings::TPixelAspectRatio aPixelAspectRatio); 
-    TInt SupportedYuvRanges() const;
-    CCamera::CCameraAdvancedSettings::TYuvRange YuvRange() const;
-    void SetYuvRange(CCamera::CCameraAdvancedSettings::TYuvRange aYuvRange);
-    TInt BurstImages() const;
-    void SetBurstImages(TInt aImages);	
-	void GetOpticalZoomStepsL(RArray<TInt>& aOpticalZoomSteps, TValueInfo& aInfo) const;
-	TInt OpticalZoom() const;
-	void SetOpticalZoom(TInt aOpticalZoom);
-	void GetDigitalZoomStepsL(RArray<TInt>& aDigitalZoomSteps, TValueInfo& aInfo) const;
-	TInt DigitalZoom() const;
-	void SetDigitalZoom(TInt aDigitalZoom);
-	TBool ExposureLockOn() const;
-	void SetExposureLockOn(TBool aState);
-	TBool AutoFocusLockOn() const;
-	void SetAutoFocusLockOn(TBool aState);
-    void GetSupportedSettingsL(RArray<TUid>& aSettings) const;
-    void GetActiveSettingsL(RArray<TUid>& aActiveSettings) const;
-    void GetDisabledSettingsL(RArray<TUid>& aDisabledSettings) const;
-	TBool AutomaticSizeSelectionChangeOn() const;	
-	void SetAutomaticSizeSelectionChangeOn(TBool aSetOn);	
-    void GetSupportedContinuousAutoFocusTimeoutsL(RArray<TInt>& aTimeouts, TValueInfo& aInfo) const;
-    TInt ContinuousAutoFocusTimeout() const; 
-    void SetContinuousAutoFocusTimeout(TInt aTimeout);
-	TInt SupportedStabilizationEffects() const;
-	CCamera::CCameraAdvancedSettings::TStabilizationEffect StabilizationEffect() const;
-    void SetStabilizationEffect(CCamera::CCameraAdvancedSettings::TStabilizationEffect aEffect);
-	TInt SupportedStabilizationComplexityValues() const;
-	CCamera::CCameraAdvancedSettings::TStabilizationAlgorithmComplexity StabilizationComplexity() const;
-	void SetStabilizationComplexity(CCamera::CCameraAdvancedSettings::TStabilizationAlgorithmComplexity aComplexity);
-    CCamera::CCameraAdvancedSettings::TWBUnits SupportedWBUnits() const;
-    void GetWBRgbValue(TRgb& aValue) const;
-    void SetWBRgbValue(const TRgb& aValue);
-  	void GetWBSupportedColorTemperaturesL(RArray<TInt>& aWBColorTemperatures, TValueInfo& aInfo) const;
- 	TInt WBColorTemperature() const;   
-	void SetWBColorTemperature(TInt aWBColorTemperature);
-	
-	//from MCameraAdvancedSettings2
-	TInt IsFlashReady(TBool& aReady) const;
-	void GetCurrentFocusModeStepsL(RArray<TInt>& aFocusModeSteps, TValueInfo& aInfo) const;
-	
-	//from MCameraAdvancedSettings3
-	void GetSupportedISORateTypeL(TInt& aSupportedISORateTypes) const;
-	void SetISORate(CCamera::CCameraAdvancedSettings::TISORateType aISORateType, TInt aParam);
-	void GetISORateL(CCamera::CCameraAdvancedSettings::TISORateType& aISORateType, TInt& aParam, TInt& aISORate) const;
-	void SetReferenceScreen(CWsScreenDevice& aScreenDevice);
-	void GetDigitalZoomStepsForStillL(RArray<TInt>& aDigitalZoomSteps, TValueInfo& aInfo, TInt aSizeIndex, 
-					CCamera::TFormat aFormat, TBool& aIsInfluencePossible) const;
-	void GetDigitalZoomStepsForVideoL(RArray<TInt>& aDigitalZoomSteps, TValueInfo& aInfo, TInt aFrameRateIndex, 
-					TInt aSizeIndex, CCamera::TFormat aFormat, TBool& aIsInfluencePossible, CCamera::TExposure aExposure) const;
-	void GetPreCaptureWarningSupportedL(CCamera::CCameraAdvancedSettings::TCameraMode aCameraMode, TInt& aPreCaptureWarningSupported) const;
-	void SubscribeToPreCaptureWarningL(TInt aPreCaptureWarning);
-	void UnSubscribePreCaptureWarningL();
-	void GetPreCaptureWarningL(TInt& aPreCaptureWarning) const;
-	void GetSupportedAFAssistantLightL(TInt& aSupportedAFAssistantLight) const;
-	void GetAFAssistantLightL(CCamera::CCameraAdvancedSettings::TAFAssistantLight& aAFAssistantLight) const;
-	void SetAFAssistantLight(CCamera::CCameraAdvancedSettings::TAFAssistantLight aAFAssistantLight);
-
-private:
-	CTestCamAdvSet(CTestCamera& aOwner);
-	void Init();
-	void ConstructL();
-	
-private:
-	CTestCamera& iOwner;
-	
-	TInt iRefCount;
-	
-	CCamera::CCameraAdvancedSettings::TCameraType iCameraTypes[KNumAvailableCameras];
-	TInt iFocusDistance;
-	RArray<TInt> iSupportedISORates;
-	TInt iIsoRate;
-	CCamera::CCameraAdvancedSettings::TISORateType iISORateType;
-	RArray<TInt> iSupportedApertures;
-	TInt iAperture;
-	RArray<TInt> iSupportedShutterSpeeds;
-	TInt iShutterSpeed;
-	};
-	
-// Implementations of the MCameraPresets class
-class CTestCamPresets : public CBase, 
-						public MCameraPresets
-	{
-	//friend class CTestCamera;
-public:
-	static CTestCamPresets* NewL(CTestCamera& aOwner);
-	~CTestCamPresets();
-	
-protected:
-	//from MCameraPresets
-	void Release();
-	void GetSupportedPresetsL(RArray<TUid>& aPresets) const;
-    void SetPreset(TUid aPreset);
-    TUid Preset() const;
-    void GetAffectedSettingsL(RArray<TUid>& aSettings) const;
-	void GetAssociatedSettingsL(TUid aPreset, RArray<TUid>& aSettings) const;
-	
-private:
-	CTestCamPresets(CTestCamera& aOwner);
-	void ConstructL();
-	
-private:
-	CTestCamera& iOwner;
-	
-	TInt iRefCount;
-	
-	RArray<TUid> iSupportedPresets;
-	TUid iCurrentPreset;
-	
-	RArray<TUid> iFactoryPresetAffectSettings;
-	};
-
-#endif // TESTADVANCEDSETTINGS_H
+// Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of the License "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// testadvancedsettings.h
+// 
+//
+
+#ifndef TESTADVANCEDSETTINGS_H
+#define TESTADVANCEDSETTINGS_H
+
+#include "TestCamera.h"
+#include <ecam/ecamadvsettingsintf.h>
+
+const TInt KNumOfAdvSetExtensions = 3;
+const TInt KNumOfPresetExtensions = 1;
+const TInt KNumAvailableCameras = 1;
+const TInt KFeatureNotSupported = 0;
+const TInt KSupportedDriveModes = CCamera::CCameraAdvancedSettings::EDriveModeAuto | CCamera::CCameraAdvancedSettings::EDriveModeSingleShot | CCamera::CCameraAdvancedSettings::EDriveModeBurst;
+const CCamera::CCameraAdvancedSettings::TDriveMode KDefaultDriveMode = CCamera::CCameraAdvancedSettings::EDriveModeSingleShot;
+const TBool KDefaultRedEyeReduce = EFalse;
+const TInt KFlashCompensationStep = 0;
+const TBool KExternalFlashPresentState = EFalse;
+const TInt KExposureCompensationStep = 0;
+const TBool KApertureExposureLockOn = EFalse;
+const TBool KShootClickOn = EFalse;
+const TInt64 KTimeLapse = 0;
+const CCamera::CCameraAdvancedSettings::TPixelAspectRatio KSupportedPixelAspectRatio = CCamera::CCameraAdvancedSettings::EPixelAspectUnknown;
+const CCamera::CCameraAdvancedSettings::TYuvRange KSupportedYuvRange = CCamera::CCameraAdvancedSettings::EYuvRangeUnknown;
+const TInt KBurstImages = 4;
+const TInt KMaxBurstImages = 10;
+const TBool KExposureLockOn = EFalse;
+const TBool KAutoFocusLockOn = EFalse;
+const TBool KAutomaticSizeSelectionChangeOn = EFalse;
+const CCamera::CCameraAdvancedSettings::TStabilizationEffect KStabilizationEffect = CCamera::CCameraAdvancedSettings::EStabilizationOff;
+const CCamera::CCameraAdvancedSettings::TStabilizationAlgorithmComplexity KStabilizationComplexity = CCamera::CCameraAdvancedSettings::EStabilizationComplexityAuto;
+const CCamera::CCameraAdvancedSettings::TWBUnits KSupportedWBUnits = CCamera::CCameraAdvancedSettings::EWBUnknown;
+const TBool KFlashReadyState = EFalse;
+const CCamera::CCameraAdvancedSettings::TPreCaptureWarning KPreCaptureWarning = CCamera::CCameraAdvancedSettings::EPCWNone;
+const CCamera::CCameraAdvancedSettings::TAFAssistantLight KAFAssisstantLight = CCamera::CCameraAdvancedSettings::EAFAssistantLightOff;
+const CCamera::CCameraAdvancedSettings::TISORateType KSupportedISORateTypes = CCamera::CCameraAdvancedSettings::EISOManual;	
+const TInt KDefaultIsoRate = 200;
+const TInt KDefaultAperture = 280;
+const TInt KDefaultShutterSpeed = 100;
+const TInt KDefaultFocusDistance = 100;
+
+// Implementations of the MCameraAdvancedSettings class
+class CTestCamAdvSet : 	public CBase, 
+						public MCameraAdvancedSettings,
+						public MCameraAdvancedSettings2,
+						public MCameraAdvancedSettings3
+	{
+	friend class CTestCamera;
+public:
+	static CTestCamAdvSet* NewL(CTestCamera& aOwner);
+	~CTestCamAdvSet();
+	
+protected:
+	//from MCameraAdvancedSettings
+	void Release();
+  	CCamera::CCameraAdvancedSettings::TCameraType CameraType() const;
+  	CCamera::CCameraAdvancedSettings::TCameraType CameraType(TInt aCameraIndex) const;
+	TBool IsCameraPresent() const;
+ 	TBool IsCameraPresent(TInt aCameraIndex) const;
+	TInt CameraIndex() const;	
+    TInt SupportedStabilizationModes() const;
+    CCamera::CCameraAdvancedSettings::TStabilizationMode StabilizationMode() const;
+    void SetStabilizationMode(CCamera::CCameraAdvancedSettings::TStabilizationMode aStabilizationMode);
+    TInt SupportedFocusModes() const;
+    CCamera::CCameraAdvancedSettings::TFocusMode FocusMode() const;
+  	void SetFocusMode(CCamera::CCameraAdvancedSettings::TFocusMode aFocusMode);
+  	TInt SupportedFocusRanges() const;
+    CCamera::CCameraAdvancedSettings::TFocusRange FocusRange() const;
+    void SetFocusRange(CCamera::CCameraAdvancedSettings::TFocusRange aFocusRange);
+    TInt SupportedAutoFocusTypes() const;
+    CCamera::CCameraAdvancedSettings::TAutoFocusType AutoFocusType() const;
+    void SetAutoFocusType(CCamera::CCameraAdvancedSettings::TAutoFocusType aAutoFocusType);
+	TInt SupportedAutoFocusAreas() const;
+    CCamera::CCameraAdvancedSettings::TAutoFocusArea AutoFocusArea() const;
+    void SetAutoFocusArea(CCamera::CCameraAdvancedSettings::TAutoFocusArea aAutoFocusArea);
+	TInt FocusDistance() const;
+	void SetFocusDistance(TInt aDistance);
+	TInt GetMinFocalLength() const;
+	void GetSupportedIsoRatesL(RArray<TInt>& aSupportedIsoRates) const;
+    TInt IsoRate() const;
+    void SetIsoRate(TInt aRate);
+    void GetAperturesL(RArray<TInt>& aFStops, TValueInfo& aInfo) const;
+    TInt Aperture() const; 
+    void SetAperture(TInt aFStop); 
+	void GetShutterSpeedsL(RArray<TInt>& aShutterSpeeds, TValueInfo& aInfo) const; 
+    TInt ShutterSpeed() const; 
+    void SetShutterSpeed(TInt aShutterSpeed); 
+    TInt SupportedMeteringModes() const;
+    CCamera::CCameraAdvancedSettings::TMeteringMode MeteringMode() const;
+    void SetMeteringMode(CCamera::CCameraAdvancedSettings::TMeteringMode aMeteringMode);
+    TInt SupportedDriveModes() const;
+    CCamera::CCameraAdvancedSettings::TDriveMode DriveMode() const;
+    void SetDriveMode(CCamera::CCameraAdvancedSettings::TDriveMode aDriveMode);
+    TInt SupportedBracketModes() const;
+    CCamera::CCameraAdvancedSettings::TBracketMode BracketMode() const;
+    void SetBracketMode(CCamera::CCameraAdvancedSettings::TBracketMode aBracketMode);
+    TInt SupportedBracketParameters() const;
+    CCamera::CCameraAdvancedSettings::TBracketParameter BracketParameter() const;
+    void SetBracketParameter(CCamera::CCameraAdvancedSettings::TBracketParameter aBracketParameter);
+    TInt SupportedBracketSteps() const;
+    CCamera::CCameraAdvancedSettings::TBracketStep BracketStep() const;
+    void SetBracketStep(CCamera::CCameraAdvancedSettings::TBracketStep aBracketStep);
+	void GetBracketMerge(TInt& aStartIndex, TInt& aFrames) const;
+	void SetBracketMerge(TInt aStartIndex, TInt aFrames);
+    TInt SupportedFlashModes() const;
+	CCamera::TFlash FlashMode() const;
+	void SetFlashMode(CCamera::TFlash aMode);
+    TBool RedEyeReduceOn() const;
+    void SetRedEyeReduceOn(TBool aState);
+	void GetFlashCompensationStepsL(RArray<TInt>& aFlashCompensationSteps, TValueInfo& aInfo) const; 
+	TInt FlashCompensationStep() const;
+	TInt GetFlashCompensationStep(TInt& aFlashCompensationStep) const;
+	void SetFlashCompensationStep(TInt aFlashCompensationStep);
+	void GetFlashCompensationRangeInSteps(TInt& aNegativeCompensation, TInt& aPositiveCompensation) const;
+	TInt FlashCompensation() const;
+	TInt GetFlashCompensation(TInt& aFlashCompensation) const;
+	void SetFlashCompensation(TInt aFlashCompensationSteps);
+	TBool IsExternalFlashPresent() const;
+    void GetManualFlashPowerLevelsL(RArray<TInt>& aManualFlashPowerLevels, TValueInfo& aInfo) const;
+    TInt ManualFlashPowerLevel() const;
+    void SetManualFlashPowerLevel(TInt aManualFlashPowerLevel);
+	TInt SupportedExposureModes() const;
+	CCamera::TExposure ExposureMode() const;
+	void SetExposureMode(CCamera::TExposure aExposureMode);
+	void GetExposureCompensationStepsL(RArray<TInt>& aExposureCompensationSteps, TValueInfo& aInfo) const; 
+	TInt ExposureCompensationStep() const;
+	TInt GetExposureCompensationStep(TInt& aExposureCompensationStep) const;
+	void SetExposureCompensationStep(TInt aExposureCompensationStep);
+	void GetExposureCompensationRangeInSteps(TInt& aNegativeCompensation, TInt& aPositiveCompensation) const;
+	TInt ExposureCompensation() const;
+	TInt GetExposureCompensation(TInt& aExposureCompensation) const;
+	void SetExposureCompensation(TInt aExposureCompensationSteps);
+	TInt SupportedWhiteBalanceModes() const;
+	CCamera::TWhiteBalance WhiteBalanceMode() const;
+	void SetWhiteBalanceMode(CCamera::TWhiteBalance aWhiteBalanceMode);
+	TBool ApertureExposureLockOn() const;
+	void SetApertureExposureLockOn(TBool aAELock);
+	TBool ShootClickOn() const;
+	void SetShootClickOn(TBool aShootClickOn);
+	void GetTimerIntervalsL(RArray<TInt>& aTimerIntervals, TValueInfo& aInfo) const;
+    TInt TimerInterval() const;  
+    void SetTimerInterval(TInt aTimerInterval); 
+	void GetTimeLapsePeriodRange(TTime& aTimeLapseMin, TTime& aTimeLapseMax) const;
+    void GetTimeLapse(TTime& aStart, TTime& aEnd, TTime& aInterval) const;  
+    void SetTimeLapse(const TTime& aStart, const TTime& aEnd, const TTime& aInterval); 
+    CCamera::CCameraAdvancedSettings::TPictureOrientation PictureOrientation() const;
+    void SetPictureOrientation(CCamera::CCameraAdvancedSettings::TPictureOrientation aOrientation); 
+    TInt SupportedPixelAspectRatios() const;
+    CCamera::CCameraAdvancedSettings::TPixelAspectRatio PixelAspectRatio() const;
+    void SetPixelAspectRatio(CCamera::CCameraAdvancedSettings::TPixelAspectRatio aPixelAspectRatio); 
+    TInt SupportedYuvRanges() const;
+    CCamera::CCameraAdvancedSettings::TYuvRange YuvRange() const;
+    void SetYuvRange(CCamera::CCameraAdvancedSettings::TYuvRange aYuvRange);
+    TInt BurstImages() const;
+    void SetBurstImages(TInt aImages);	
+	void GetOpticalZoomStepsL(RArray<TInt>& aOpticalZoomSteps, TValueInfo& aInfo) const;
+	TInt OpticalZoom() const;
+	void SetOpticalZoom(TInt aOpticalZoom);
+	void GetDigitalZoomStepsL(RArray<TInt>& aDigitalZoomSteps, TValueInfo& aInfo) const;
+	TInt DigitalZoom() const;
+	void SetDigitalZoom(TInt aDigitalZoom);
+	TBool ExposureLockOn() const;
+	void SetExposureLockOn(TBool aState);
+	TBool AutoFocusLockOn() const;
+	void SetAutoFocusLockOn(TBool aState);
+    void GetSupportedSettingsL(RArray<TUid>& aSettings) const;
+    void GetActiveSettingsL(RArray<TUid>& aActiveSettings) const;
+    void GetDisabledSettingsL(RArray<TUid>& aDisabledSettings) const;
+	TBool AutomaticSizeSelectionChangeOn() const;	
+	void SetAutomaticSizeSelectionChangeOn(TBool aSetOn);	
+    void GetSupportedContinuousAutoFocusTimeoutsL(RArray<TInt>& aTimeouts, TValueInfo& aInfo) const;
+    TInt ContinuousAutoFocusTimeout() const; 
+    void SetContinuousAutoFocusTimeout(TInt aTimeout);
+	TInt SupportedStabilizationEffects() const;
+	CCamera::CCameraAdvancedSettings::TStabilizationEffect StabilizationEffect() const;
+    void SetStabilizationEffect(CCamera::CCameraAdvancedSettings::TStabilizationEffect aEffect);
+	TInt SupportedStabilizationComplexityValues() const;
+	CCamera::CCameraAdvancedSettings::TStabilizationAlgorithmComplexity StabilizationComplexity() const;
+	void SetStabilizationComplexity(CCamera::CCameraAdvancedSettings::TStabilizationAlgorithmComplexity aComplexity);
+    CCamera::CCameraAdvancedSettings::TWBUnits SupportedWBUnits() const;
+    void GetWBRgbValue(TRgb& aValue) const;
+    void SetWBRgbValue(const TRgb& aValue);
+  	void GetWBSupportedColorTemperaturesL(RArray<TInt>& aWBColorTemperatures, TValueInfo& aInfo) const;
+ 	TInt WBColorTemperature() const;   
+	void SetWBColorTemperature(TInt aWBColorTemperature);
+	
+	//from MCameraAdvancedSettings2
+	TInt IsFlashReady(TBool& aReady) const;
+	void GetCurrentFocusModeStepsL(RArray<TInt>& aFocusModeSteps, TValueInfo& aInfo) const;
+	
+	//from MCameraAdvancedSettings3
+	void GetSupportedISORateTypeL(TInt& aSupportedISORateTypes) const;
+	void SetISORate(CCamera::CCameraAdvancedSettings::TISORateType aISORateType, TInt aParam);
+	void GetISORateL(CCamera::CCameraAdvancedSettings::TISORateType& aISORateType, TInt& aParam, TInt& aISORate) const;
+	void SetReferenceScreen(CWsScreenDevice& aScreenDevice);
+	void GetDigitalZoomStepsForStillL(RArray<TInt>& aDigitalZoomSteps, TValueInfo& aInfo, TInt aSizeIndex, 
+					CCamera::TFormat aFormat, TBool& aIsInfluencePossible) const;
+	void GetDigitalZoomStepsForVideoL(RArray<TInt>& aDigitalZoomSteps, TValueInfo& aInfo, TInt aFrameRateIndex, 
+					TInt aSizeIndex, CCamera::TFormat aFormat, TBool& aIsInfluencePossible, CCamera::TExposure aExposure) const;
+	void GetPreCaptureWarningSupportedL(CCamera::CCameraAdvancedSettings::TCameraMode aCameraMode, TInt& aPreCaptureWarningSupported) const;
+	void SubscribeToPreCaptureWarningL(TInt aPreCaptureWarning);
+	void UnSubscribePreCaptureWarningL();
+	void GetPreCaptureWarningL(TInt& aPreCaptureWarning) const;
+	void GetSupportedAFAssistantLightL(TInt& aSupportedAFAssistantLight) const;
+	void GetAFAssistantLightL(CCamera::CCameraAdvancedSettings::TAFAssistantLight& aAFAssistantLight) const;
+	void SetAFAssistantLight(CCamera::CCameraAdvancedSettings::TAFAssistantLight aAFAssistantLight);
+
+private:
+	CTestCamAdvSet(CTestCamera& aOwner);
+	void Init();
+	void ConstructL();
+	
+private:
+	CTestCamera& iOwner;
+	
+	TInt iRefCount;
+	
+	CCamera::CCameraAdvancedSettings::TCameraType iCameraTypes[KNumAvailableCameras];
+	TInt iFocusDistance;
+	RArray<TInt> iSupportedISORates;
+	TInt iIsoRate;
+	CCamera::CCameraAdvancedSettings::TISORateType iISORateType;
+	RArray<TInt> iSupportedApertures;
+	TInt iAperture;
+	RArray<TInt> iSupportedShutterSpeeds;
+	TInt iShutterSpeed;
+	};
+	
+// Implementations of the MCameraPresets class
+class CTestCamPresets : public CBase, 
+						public MCameraPresets
+	{
+	//friend class CTestCamera;
+public:
+	static CTestCamPresets* NewL(CTestCamera& aOwner);
+	~CTestCamPresets();
+	
+protected:
+	//from MCameraPresets
+	void Release();
+	void GetSupportedPresetsL(RArray<TUid>& aPresets) const;
+    void SetPreset(TUid aPreset);
+    TUid Preset() const;
+    void GetAffectedSettingsL(RArray<TUid>& aSettings) const;
+	void GetAssociatedSettingsL(TUid aPreset, RArray<TUid>& aSettings) const;
+	
+private:
+	CTestCamPresets(CTestCamera& aOwner);
+	void ConstructL();
+	
+private:
+	CTestCamera& iOwner;
+	
+	TInt iRefCount;
+	
+	RArray<TUid> iSupportedPresets;
+	TUid iCurrentPreset;
+	
+	RArray<TUid> iFactoryPresetAffectSettings;
+	};
+
+#endif // TESTADVANCEDSETTINGS_H
--- a/mmplugins/cameraplugins/source/testcamera/test_image_processing.cpp	Thu Mar 25 11:21:36 2010 +0900
+++ b/mmplugins/cameraplugins/source/testcamera/test_image_processing.cpp	Tue Oct 19 11:48:59 2010 +0900
@@ -1,441 +1,441 @@
-// Copyright (c) 2007-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:
-// testimageprocessing.cpp
-// 
-//
-
-#include "test_image_processing.h"
-#include <ecamerrors.h>
-#include "ecamversion.h"
-
-CTestCamImgProc::CTestCamImgProc(CTestCamera& aOwner): iOwner(aOwner)
-	{}
-	
-CTestCamImgProc::~CTestCamImgProc()
-	{
-	iSupportedTranformations.Close();
-	iActiveTransformations.Close();
-	iActiveTransformSequence.Close();
-	
-	CDataGlobal* globalData = static_cast <CDataGlobal*> (Dll::Tls());	
-	if(globalData != NULL)
-		{
-		if(!globalData->iTestCamAdvSet && !globalData->iTestCamPresets && !globalData->iTestCamSnapshot)
-			{
-			delete globalData;
-			Dll::FreeTls();
-			}	
-		else
-			{
-			globalData->iTestCamImgProc = NULL;	
-			Dll::SetTls(globalData);
-			}
-		}
-	}
-		
-CTestCamImgProc* CTestCamImgProc::NewL(CTestCamera& aOwner)
-	{
-	CDataGlobal* globalData = static_cast <CDataGlobal*> (Dll::Tls());
-	
-	if(globalData == NULL)
-		{
-		globalData = new (ELeave) CDataGlobal;
-		CleanupStack::PushL(globalData);
-		globalData->iImgProcReferenceCount = 0;
-		globalData->iTestCamImgProc = new (ELeave) CTestCamImgProc(aOwner);
-		CleanupStack::PushL(globalData->iTestCamImgProc);
-		globalData->iTestCamImgProc->ConstructL();
-		globalData->iTestCamImgProc->iRefCount = 1;
-		User::LeaveIfError(Dll::SetTls(globalData));
-		CleanupStack::Pop(globalData->iTestCamImgProc);
-		CleanupStack::Pop(globalData);
-		return globalData->iTestCamImgProc;
-		}
-	else
-		{
-		if(globalData->iTestCamImgProc == NULL)
-			{
-			globalData->iImgProcReferenceCount = 0;
-			globalData->iTestCamImgProc = new (ELeave) CTestCamImgProc(aOwner);
-			CleanupStack::PushL(globalData->iTestCamImgProc);
-			globalData->iTestCamImgProc->ConstructL();
-			globalData->iTestCamImgProc->iRefCount = 1;
-			User::LeaveIfError(Dll::SetTls(globalData));
-			CleanupStack::Pop(globalData->iTestCamImgProc);
-			return globalData->iTestCamImgProc;
-			}
-			
-		CTestCamImgProc* self = globalData->iTestCamImgProc;
-		
-		globalData->iImgProcReferenceCount++;
-		self->iRefCount = globalData->iImgProcReferenceCount + 1;
-		if (globalData->iImgProcReferenceCount == KNumOfImgProcExtensions-1)
-			{
-			globalData->iTestCamImgProc = NULL;
-			if(!globalData->iTestCamAdvSet && !globalData->iTestCamPresets && !globalData->iTestCamSnapshot)
-				{
-				delete globalData;
-				Dll::FreeTls();
-				}
-			else
-				{
-				User::LeaveIfError(Dll::SetTls(globalData));	
-				}
-			}
-		else
-			{
-			User::LeaveIfError(Dll::SetTls(globalData));	
-			}
-		return self;		
-		}
-	}
-
-void CTestCamImgProc::Release()
-	{
-	iRefCount--; 
-	if(iRefCount == 0)
-		{
-		iOwner.iImgProcImpl = NULL;
-		delete this;
-		}
-	}	
-	
-void CTestCamImgProc::ConstructL()
-	{
-	iSupportedTranformations.Reset();
-	iSupportedTranformations.AppendL(KUidECamEventImageProcessingAdjustBrightness);
-	iSupportedTranformations.AppendL(KUidECamEventImageProcessingAdjustContrast);
-	
-	iActiveTransformations.Reset();
-	
-	iActiveTransformSequence.Reset();
-	}
-	
-void CTestCamImgProc::GetSupportedTransformationsL(RArray<TUid>& aTransformations) const
-	{
-	aTransformations.Reset();
-	for(TInt index=0; index < iSupportedTranformations.Count(); index++)
-		{
-		aTransformations.AppendL(iSupportedTranformations[index]);
-		}
-	}
-
-void CTestCamImgProc::GetActiveTransformationsL(RArray<TUid>& aTransformations) const
-	{
-	aTransformations.Reset();
-	for(TInt index=0; index < iActiveTransformations.Count(); index++)
-		{
-		aTransformations.AppendL(iActiveTransformations[index]);
-		}	
-	}
-	
-void CTestCamImgProc::GetTransformationSupportedValuesL(TUid aTransformation, RArray<TInt>& aValues, TValueInfo& aInfo) const
-	{
-	TInt err = iActiveTransformations.Find(aTransformation);
-	if(err == KErrNotFound)
-		{
-		User::Leave(err);
-		}
-		
-	switch(aTransformation.iUid)
-		{
-		case KUidECamEventImageProcessingAdjustBrightnessUidValue:
-			{
-			aInfo = EContinuousRangeMinMax;
-			aValues.Reset();
-			aValues.AppendL(KMinBrightness);
-			aValues.AppendL(KMaxBrightness);	
-			break;
-			}
-			
-		case KUidECamEventImageProcessingAdjustContrastUidValue:
-			{
-			aInfo = EContinuousRangeMinMax;
-			aValues.Reset();
-			aValues.AppendL(KMinContrast);
-			aValues.AppendL(KMaxContrast);	
-			break;
-			}
-			
-		default:
-			User::Leave(KErrNotSupported);
-		}
-	}
-	
-TInt CTestCamImgProc::TransformationValue(TUid aTransformation) const
-	{
-	switch(aTransformation.iUid)
-		{
-		case KUidECamEventImageProcessingAdjustBrightnessUidValue:
-			{
-			return iOwner.iImgProcBrightness;
-			}
-			
-		case KUidECamEventImageProcessingAdjustContrastUidValue:
-			{
-			return iOwner.iImgProcContrast;
-			}
-			
-		default:
-			return 0;
-		}	
-	}
-	
-TInt CTestCamImgProc::GetTransformationValue(TUid aTransformation, TInt& aTransformationValue) const
-	{
-	switch(aTransformation.iUid)
-		{
-		case KUidECamEventImageProcessingAdjustBrightnessUidValue:
-			{
-			aTransformationValue = iOwner.iImgProcBrightness;
-			return KErrNone;
-			}
-			
-		case KUidECamEventImageProcessingAdjustContrastUidValue:
-			{
-			aTransformationValue = iOwner.iImgProcContrast;
-			return KErrNone;
-			}
-			
-		default:
-			return KErrNotSupported;
-		}	
-	}
-	
-void CTestCamImgProc::SetTransformationValue(TUid aTransformation, TInt aValue)
-	{
-	TInt eventError = iOwner.CheckReserveAndPower();
-	
-	if(eventError == KErrNone)
-		{
-		switch(aTransformation.iUid)
-			{
-			case KUidECamEventImageProcessingAdjustBrightnessUidValue:
-				{
-				if(aValue < KMinBrightness)
-					{
-					iOwner.iImgProcBrightness = KMinBrightness;
-					}
-				else
-					{
-					if(aValue > KMaxBrightness)	
-						{
-						iOwner.iImgProcBrightness = KMaxBrightness;
-						}
-					else
-						{
-						iOwner.iImgProcBrightness = aValue;	
-						}
-					}
-				break;
-				}
-				
-			case KUidECamEventImageProcessingAdjustContrastUidValue:
-				{
-				if(aValue < KMinContrast)
-					{
-					iOwner.iImgProcContrast = KMinContrast;
-					}
-				else
-					{
-					if(aValue > KMaxContrast)	
-						{
-						iOwner.iImgProcContrast = KMaxContrast;
-						}
-					else
-						{
-						iOwner.iImgProcContrast = aValue;	
-						}
-					}
-				break;
-				}
-				
-			default:
-				eventError = KErrNotSupported;
-			}	
-		}
-	
-	if(eventError == KErrNone)	
-		{
-		eventError = iActiveTransformations.Find(aTransformation);
-		
-		if(eventError == KErrNotFound)
-			{
-			eventError = iActiveTransformations.Append(aTransformation);
-			
-			if(eventError == KErrNone)
-				{
-				if(IsTransform(aTransformation))
-					{
-					eventError = iActiveTransformSequence.Append(aTransformation);
-					}
-				}
-			}
-		else
-			{
-			eventError = KErrNone;	
-			}	
-		}
-		
-	TECAMEvent ecamevent(aTransformation, eventError);
-	
-	iOwner.iECamEvent = ecamevent;
-	iOwner.iHandleEventAsync.CallBack();
-	}
-	
-void CTestCamImgProc::GetActiveTransformSequenceL(RArray<TUid>& aTransformSequence) const
-	{
-	aTransformSequence.Reset();
-	for(TInt index=0; index < iActiveTransformSequence.Count(); index++)
-		{
-		aTransformSequence.AppendL(iActiveTransformSequence[index]);
-		}	
-	}
-	
-void CTestCamImgProc::SetActiveTransformSequenceL(RArray<TUid>& aTransformSequence)
-	{
-	TInt err = KErrNone;
-	for(TInt index=0; index < aTransformSequence.Count(); index++)
-		{
-		err = iActiveTransformations.Find(aTransformSequence[index]);
-		if(err == KErrNotFound)
-			{
-			User::Leave(err);
-			}
-		}
-		
-	iActiveTransformSequence.Reset();
-	for(TInt index=0; index < aTransformSequence.Count(); index++)
-		{
-		iActiveTransformSequence.AppendL(aTransformSequence[index]);
-		}
-	}
-	
-void CTestCamImgProc::SetSourceRect(const TRect& /*aRect*/)
-	{
-	return;
-	}
-
-void CTestCamImgProc::GetSourceRect(TRect& /*aRect*/) const
-	{
-	return;	
-	}
-	
-void CTestCamImgProc::GetConcurrentColorSwappingsSupportedL(TInt& /*aConcurrentColorSwappingSupported*/) const
-	{
-	User::Leave(KErrNotSupported);
-	}
-	
-void CTestCamImgProc::GetColorSwapCapabilitiesL(TInt /*aIndex*/, CCamera::CCameraImageProcessing::TColorOperationCapabilities& /*aColorSwapCapabilities*/) const
-	{
-	User::Leave(KErrNotSupported);	
-	}
-	
-void CTestCamImgProc::SetColorSwapEntry(TInt aIndex, const CCamera::CCameraImageProcessing::TColorOperationEntry& /*aColorSwapParameters*/)
-	{
-	TECAMEvent2 ecamevent2(KUidECamEventCIPSetColorSwapEntry, KErrNotSupported, aIndex);
-	
-	iOwner.iECamEvent2 = ecamevent2;
-	iOwner.iHandleEvent2Async.CallBack();
-	}
-	
-void CTestCamImgProc::RemoveColorSwapEntry(TInt aIndex)
-	{
-	TECAMEvent2 ecamevent2(KUidECamEventCIPRemoveColorSwapEntry, KErrNotSupported, aIndex);
-	
-	iOwner.iECamEvent2 = ecamevent2;
-	iOwner.iHandleEvent2Async.CallBack();
-	}
-	
-void CTestCamImgProc::GetColorSwapEntryL(TInt /*aIndex*/, CCamera::CCameraImageProcessing::TColorOperationEntry& /*aColorSwapParameters*/) const
-	{
-	User::Leave(KErrNotSupported);	
-	}
-	
-void CTestCamImgProc::StartColorSwapping()
-	{
-	TECAMEvent ecamevent(KUidECamEventCIPStartColorSwap, KErrNotSupported);
-	
-	iOwner.iECamEvent = ecamevent;
-	iOwner.iHandleEventAsync.CallBack();
-	}
-	
-void CTestCamImgProc::CancelColorSwappingL()
-	{
-	User::Leave(KErrNotSupported);
-	}
-	
-void CTestCamImgProc::GetConcurrentColorAccentSupportedL(TInt& /*aConcurrentColorAccentSupported*/) const
-	{
-	User::Leave(KErrNotSupported);	
-	}
-	
-void CTestCamImgProc::GetColorAccentCapabilitiesL(TInt /*aIndex*/, CCamera::CCameraImageProcessing::TColorOperationCapabilities& /*aColorAccentCapabilities*/) const
-	{
-	User::Leave(KErrNotSupported);	
-	}
-	
-void CTestCamImgProc::SetColorAccentEntry(TInt aIndex, const CCamera::CCameraImageProcessing::TColorOperationEntry& /*aColorAccentParameters*/)
-	{
-	TECAMEvent2 ecamevent2(KUidECamEventCIPSetColorAccentEntry, KErrNotSupported, aIndex);
-	
-	iOwner.iECamEvent2 = ecamevent2;
-	iOwner.iHandleEvent2Async.CallBack();
-	}
-	
-void CTestCamImgProc::RemoveColorAccentEntry(TInt aIndex)
-	{
-	TECAMEvent2 ecamevent2(KUidECamEventCIPRemoveColorAccentEntry, KErrNotSupported, aIndex);
-	
-	iOwner.iECamEvent2 = ecamevent2;
-	iOwner.iHandleEvent2Async.CallBack();
-	}
-	
-void CTestCamImgProc::GetColorAccentEntryL(TInt /*aIndex*/, CCamera::CCameraImageProcessing::TColorOperationEntry& /*aColorAccentParameters*/) const
-	{
-	User::Leave(KErrNotSupported);	
-	}
-	
-void CTestCamImgProc::StartColorAccent()
-	{
-	TECAMEvent ecamevent(KUidECamEventCIPStartColorAccent, KErrNotSupported);
-	
-	iOwner.iECamEvent = ecamevent;
-	iOwner.iHandleEventAsync.CallBack();
-	}
-	
-void CTestCamImgProc::CancelColorAccentL()
-	{
-	User::Leave(KErrNotSupported);
-	}
-
-TBool CTestCamImgProc::IsTransform(TUid aTransformation)
-	{
-	switch(aTransformation.iUid)
-		{
-		//fall through
-		case KUidECamEventImageProcessingTransformCropUidValue:
-		case KUidECamEventImageProcessingTransformRotateUidValue:
-		case KUidECamEventImageProcessingTransformMirrorUidValue:
-		case KUidECamEventImageProcessingTransformScaleUidValue:
-		case KUidECamEventImageProcessingSourceRectUidValue:
-		case KUidECamEventImageProcessingNoiseReductionUidValue:
-		case KUidECamEventImageProcessingGlareRemovalUidValue:
-			{
-			return ETrue;	
-			}
-		default:
-			return EFalse;
-		}
-	}
+// Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of the License "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// testimageprocessing.cpp
+// 
+//
+
+#include "test_image_processing.h"
+#include <ecamerrors.h>
+#include <ecam/ecamversion.h>
+
+CTestCamImgProc::CTestCamImgProc(CTestCamera& aOwner): iOwner(aOwner)
+	{}
+	
+CTestCamImgProc::~CTestCamImgProc()
+	{
+	iSupportedTranformations.Close();
+	iActiveTransformations.Close();
+	iActiveTransformSequence.Close();
+	
+	CDataGlobal* globalData = static_cast <CDataGlobal*> (Dll::Tls());	
+	if(globalData != NULL)
+		{
+		if(!globalData->iTestCamAdvSet && !globalData->iTestCamPresets && !globalData->iTestCamSnapshot)
+			{
+			delete globalData;
+			Dll::FreeTls();
+			}	
+		else
+			{
+			globalData->iTestCamImgProc = NULL;	
+			Dll::SetTls(globalData);
+			}
+		}
+	}
+		
+CTestCamImgProc* CTestCamImgProc::NewL(CTestCamera& aOwner)
+	{
+	CDataGlobal* globalData = static_cast <CDataGlobal*> (Dll::Tls());
+	
+	if(globalData == NULL)
+		{
+		globalData = new (ELeave) CDataGlobal;
+		CleanupStack::PushL(globalData);
+		globalData->iImgProcReferenceCount = 0;
+		globalData->iTestCamImgProc = new (ELeave) CTestCamImgProc(aOwner);
+		CleanupStack::PushL(globalData->iTestCamImgProc);
+		globalData->iTestCamImgProc->ConstructL();
+		globalData->iTestCamImgProc->iRefCount = 1;
+		User::LeaveIfError(Dll::SetTls(globalData));
+		CleanupStack::Pop(globalData->iTestCamImgProc);
+		CleanupStack::Pop(globalData);
+		return globalData->iTestCamImgProc;
+		}
+	else
+		{
+		if(globalData->iTestCamImgProc == NULL)
+			{
+			globalData->iImgProcReferenceCount = 0;
+			globalData->iTestCamImgProc = new (ELeave) CTestCamImgProc(aOwner);
+			CleanupStack::PushL(globalData->iTestCamImgProc);
+			globalData->iTestCamImgProc->ConstructL();
+			globalData->iTestCamImgProc->iRefCount = 1;
+			User::LeaveIfError(Dll::SetTls(globalData));
+			CleanupStack::Pop(globalData->iTestCamImgProc);
+			return globalData->iTestCamImgProc;
+			}
+			
+		CTestCamImgProc* self = globalData->iTestCamImgProc;
+		
+		globalData->iImgProcReferenceCount++;
+		self->iRefCount = globalData->iImgProcReferenceCount + 1;
+		if (globalData->iImgProcReferenceCount == KNumOfImgProcExtensions-1)
+			{
+			globalData->iTestCamImgProc = NULL;
+			if(!globalData->iTestCamAdvSet && !globalData->iTestCamPresets && !globalData->iTestCamSnapshot)
+				{
+				delete globalData;
+				Dll::FreeTls();
+				}
+			else
+				{
+				User::LeaveIfError(Dll::SetTls(globalData));	
+				}
+			}
+		else
+			{
+			User::LeaveIfError(Dll::SetTls(globalData));	
+			}
+		return self;		
+		}
+	}
+
+void CTestCamImgProc::Release()
+	{
+	iRefCount--; 
+	if(iRefCount == 0)
+		{
+		iOwner.iImgProcImpl = NULL;
+		delete this;
+		}
+	}	
+	
+void CTestCamImgProc::ConstructL()
+	{
+	iSupportedTranformations.Reset();
+	iSupportedTranformations.AppendL(KUidECamEventImageProcessingAdjustBrightness);
+	iSupportedTranformations.AppendL(KUidECamEventImageProcessingAdjustContrast);
+	
+	iActiveTransformations.Reset();
+	
+	iActiveTransformSequence.Reset();
+	}
+	
+void CTestCamImgProc::GetSupportedTransformationsL(RArray<TUid>& aTransformations) const
+	{
+	aTransformations.Reset();
+	for(TInt index=0; index < iSupportedTranformations.Count(); index++)
+		{
+		aTransformations.AppendL(iSupportedTranformations[index]);
+		}
+	}
+
+void CTestCamImgProc::GetActiveTransformationsL(RArray<TUid>& aTransformations) const
+	{
+	aTransformations.Reset();
+	for(TInt index=0; index < iActiveTransformations.Count(); index++)
+		{
+		aTransformations.AppendL(iActiveTransformations[index]);
+		}	
+	}
+	
+void CTestCamImgProc::GetTransformationSupportedValuesL(TUid aTransformation, RArray<TInt>& aValues, TValueInfo& aInfo) const
+	{
+	TInt err = iActiveTransformations.Find(aTransformation);
+	if(err == KErrNotFound)
+		{
+		User::Leave(err);
+		}
+		
+	switch(aTransformation.iUid)
+		{
+		case KUidECamEventImageProcessingAdjustBrightnessUidValue:
+			{
+			aInfo = EContinuousRangeMinMax;
+			aValues.Reset();
+			aValues.AppendL(KMinBrightness);
+			aValues.AppendL(KMaxBrightness);	
+			break;
+			}
+			
+		case KUidECamEventImageProcessingAdjustContrastUidValue:
+			{
+			aInfo = EContinuousRangeMinMax;
+			aValues.Reset();
+			aValues.AppendL(KMinContrast);
+			aValues.AppendL(KMaxContrast);	
+			break;
+			}
+			
+		default:
+			User::Leave(KErrNotSupported);
+		}
+	}
+	
+TInt CTestCamImgProc::TransformationValue(TUid aTransformation) const
+	{
+	switch(aTransformation.iUid)
+		{
+		case KUidECamEventImageProcessingAdjustBrightnessUidValue:
+			{
+			return iOwner.iImgProcBrightness;
+			}
+			
+		case KUidECamEventImageProcessingAdjustContrastUidValue:
+			{
+			return iOwner.iImgProcContrast;
+			}
+			
+		default:
+			return 0;
+		}	
+	}
+	
+TInt CTestCamImgProc::GetTransformationValue(TUid aTransformation, TInt& aTransformationValue) const
+	{
+	switch(aTransformation.iUid)
+		{
+		case KUidECamEventImageProcessingAdjustBrightnessUidValue:
+			{
+			aTransformationValue = iOwner.iImgProcBrightness;
+			return KErrNone;
+			}
+			
+		case KUidECamEventImageProcessingAdjustContrastUidValue:
+			{
+			aTransformationValue = iOwner.iImgProcContrast;
+			return KErrNone;
+			}
+			
+		default:
+			return KErrNotSupported;
+		}	
+	}
+	
+void CTestCamImgProc::SetTransformationValue(TUid aTransformation, TInt aValue)
+	{
+	TInt eventError = iOwner.CheckReserveAndPower();
+	
+	if(eventError == KErrNone)
+		{
+		switch(aTransformation.iUid)
+			{
+			case KUidECamEventImageProcessingAdjustBrightnessUidValue:
+				{
+				if(aValue < KMinBrightness)
+					{
+					iOwner.iImgProcBrightness = KMinBrightness;
+					}
+				else
+					{
+					if(aValue > KMaxBrightness)	
+						{
+						iOwner.iImgProcBrightness = KMaxBrightness;
+						}
+					else
+						{
+						iOwner.iImgProcBrightness = aValue;	
+						}
+					}
+				break;
+				}
+				
+			case KUidECamEventImageProcessingAdjustContrastUidValue:
+				{
+				if(aValue < KMinContrast)
+					{
+					iOwner.iImgProcContrast = KMinContrast;
+					}
+				else
+					{
+					if(aValue > KMaxContrast)	
+						{
+						iOwner.iImgProcContrast = KMaxContrast;
+						}
+					else
+						{
+						iOwner.iImgProcContrast = aValue;	
+						}
+					}
+				break;
+				}
+				
+			default:
+				eventError = KErrNotSupported;
+			}	
+		}
+	
+	if(eventError == KErrNone)	
+		{
+		eventError = iActiveTransformations.Find(aTransformation);
+		
+		if(eventError == KErrNotFound)
+			{
+			eventError = iActiveTransformations.Append(aTransformation);
+			
+			if(eventError == KErrNone)
+				{
+				if(IsTransform(aTransformation))
+					{
+					eventError = iActiveTransformSequence.Append(aTransformation);
+					}
+				}
+			}
+		else
+			{
+			eventError = KErrNone;	
+			}	
+		}
+		
+	TECAMEvent ecamevent(aTransformation, eventError);
+	
+	iOwner.iECamEvent = ecamevent;
+	iOwner.iHandleEventAsync.CallBack();
+	}
+	
+void CTestCamImgProc::GetActiveTransformSequenceL(RArray<TUid>& aTransformSequence) const
+	{
+	aTransformSequence.Reset();
+	for(TInt index=0; index < iActiveTransformSequence.Count(); index++)
+		{
+		aTransformSequence.AppendL(iActiveTransformSequence[index]);
+		}	
+	}
+	
+void CTestCamImgProc::SetActiveTransformSequenceL(RArray<TUid>& aTransformSequence)
+	{
+	TInt err = KErrNone;
+	for(TInt index=0; index < aTransformSequence.Count(); index++)
+		{
+		err = iActiveTransformations.Find(aTransformSequence[index]);
+		if(err == KErrNotFound)
+			{
+			User::Leave(err);
+			}
+		}
+		
+	iActiveTransformSequence.Reset();
+	for(TInt index=0; index < aTransformSequence.Count(); index++)
+		{
+		iActiveTransformSequence.AppendL(aTransformSequence[index]);
+		}
+	}
+	
+void CTestCamImgProc::SetSourceRect(const TRect& /*aRect*/)
+	{
+	return;
+	}
+
+void CTestCamImgProc::GetSourceRect(TRect& /*aRect*/) const
+	{
+	return;	
+	}
+	
+void CTestCamImgProc::GetConcurrentColorSwappingsSupportedL(TInt& /*aConcurrentColorSwappingSupported*/) const
+	{
+	User::Leave(KErrNotSupported);
+	}
+	
+void CTestCamImgProc::GetColorSwapCapabilitiesL(TInt /*aIndex*/, CCamera::CCameraImageProcessing::TColorOperationCapabilities& /*aColorSwapCapabilities*/) const
+	{
+	User::Leave(KErrNotSupported);	
+	}
+	
+void CTestCamImgProc::SetColorSwapEntry(TInt aIndex, const CCamera::CCameraImageProcessing::TColorOperationEntry& /*aColorSwapParameters*/)
+	{
+	TECAMEvent2 ecamevent2(KUidECamEventCIPSetColorSwapEntry, KErrNotSupported, aIndex);
+	
+	iOwner.iECamEvent2 = ecamevent2;
+	iOwner.iHandleEvent2Async.CallBack();
+	}
+	
+void CTestCamImgProc::RemoveColorSwapEntry(TInt aIndex)
+	{
+	TECAMEvent2 ecamevent2(KUidECamEventCIPRemoveColorSwapEntry, KErrNotSupported, aIndex);
+	
+	iOwner.iECamEvent2 = ecamevent2;
+	iOwner.iHandleEvent2Async.CallBack();
+	}
+	
+void CTestCamImgProc::GetColorSwapEntryL(TInt /*aIndex*/, CCamera::CCameraImageProcessing::TColorOperationEntry& /*aColorSwapParameters*/) const
+	{
+	User::Leave(KErrNotSupported);	
+	}
+	
+void CTestCamImgProc::StartColorSwapping()
+	{
+	TECAMEvent ecamevent(KUidECamEventCIPStartColorSwap, KErrNotSupported);
+	
+	iOwner.iECamEvent = ecamevent;
+	iOwner.iHandleEventAsync.CallBack();
+	}
+	
+void CTestCamImgProc::CancelColorSwappingL()
+	{
+	User::Leave(KErrNotSupported);
+	}
+	
+void CTestCamImgProc::GetConcurrentColorAccentSupportedL(TInt& /*aConcurrentColorAccentSupported*/) const
+	{
+	User::Leave(KErrNotSupported);	
+	}
+	
+void CTestCamImgProc::GetColorAccentCapabilitiesL(TInt /*aIndex*/, CCamera::CCameraImageProcessing::TColorOperationCapabilities& /*aColorAccentCapabilities*/) const
+	{
+	User::Leave(KErrNotSupported);	
+	}
+	
+void CTestCamImgProc::SetColorAccentEntry(TInt aIndex, const CCamera::CCameraImageProcessing::TColorOperationEntry& /*aColorAccentParameters*/)
+	{
+	TECAMEvent2 ecamevent2(KUidECamEventCIPSetColorAccentEntry, KErrNotSupported, aIndex);
+	
+	iOwner.iECamEvent2 = ecamevent2;
+	iOwner.iHandleEvent2Async.CallBack();
+	}
+	
+void CTestCamImgProc::RemoveColorAccentEntry(TInt aIndex)
+	{
+	TECAMEvent2 ecamevent2(KUidECamEventCIPRemoveColorAccentEntry, KErrNotSupported, aIndex);
+	
+	iOwner.iECamEvent2 = ecamevent2;
+	iOwner.iHandleEvent2Async.CallBack();
+	}
+	
+void CTestCamImgProc::GetColorAccentEntryL(TInt /*aIndex*/, CCamera::CCameraImageProcessing::TColorOperationEntry& /*aColorAccentParameters*/) const
+	{
+	User::Leave(KErrNotSupported);	
+	}
+	
+void CTestCamImgProc::StartColorAccent()
+	{
+	TECAMEvent ecamevent(KUidECamEventCIPStartColorAccent, KErrNotSupported);
+	
+	iOwner.iECamEvent = ecamevent;
+	iOwner.iHandleEventAsync.CallBack();
+	}
+	
+void CTestCamImgProc::CancelColorAccentL()
+	{
+	User::Leave(KErrNotSupported);
+	}
+
+TBool CTestCamImgProc::IsTransform(TUid aTransformation)
+	{
+	switch(aTransformation.iUid)
+		{
+		//fall through
+		case KUidECamEventImageProcessingTransformCropUidValue:
+		case KUidECamEventImageProcessingTransformRotateUidValue:
+		case KUidECamEventImageProcessingTransformMirrorUidValue:
+		case KUidECamEventImageProcessingTransformScaleUidValue:
+		case KUidECamEventImageProcessingSourceRectUidValue:
+		case KUidECamEventImageProcessingNoiseReductionUidValue:
+		case KUidECamEventImageProcessingGlareRemovalUidValue:
+			{
+			return ETrue;	
+			}
+		default:
+			return EFalse;
+		}
+	}
--- a/mmplugins/cameraplugins/source/testcamera/test_image_processing.h	Thu Mar 25 11:21:36 2010 +0900
+++ b/mmplugins/cameraplugins/source/testcamera/test_image_processing.h	Tue Oct 19 11:48:59 2010 +0900
@@ -1,85 +1,85 @@
-// Copyright (c) 2007-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:
-// testimageprocessing.h
-// 
-//
-
-#ifndef TESTIMAGEPROCESSING_H
-#define TESTIMAGEPROCESSING_H
-
-#include "TestCamera.h"
-#include <ecam/ecamadvsettingsintf.h>
-
-const TInt KNumOfImgProcExtensions = 2;
-const TInt KMinBrightness = -100;
-const TInt KMaxBrightness = 100;
-const TInt KMinContrast = -100;
-const TInt KMaxContrast = 100;
-
-// Implementations of the MCameraImageProcessing class
-class CTestCamImgProc : 	public CBase, 
-							public MCameraImageProcessing,
-							public MCameraImageProcessing2
-	{
-	friend class CTestCamera;
-public:
-	static CTestCamImgProc* NewL(CTestCamera& aOwner);
-	~CTestCamImgProc();
-	
-protected:
-	//from MCameraImageProcessing
-	void Release();
-	void GetSupportedTransformationsL(RArray<TUid>& aTransformations) const;
-	void GetActiveTransformationsL(RArray<TUid>& aTransformations) const;
-	void GetTransformationSupportedValuesL(TUid aTransformation, RArray<TInt>& aValues, TValueInfo& aInfo) const;
-	TInt TransformationValue(TUid aTransformation) const;
-	TInt GetTransformationValue(TUid aTransformation, TInt& aTransformationValue) const;
-	void SetTransformationValue(TUid aTransformation, TInt aValue);
-	void GetActiveTransformSequenceL(RArray<TUid>& aTransformSequence) const;
-	void SetActiveTransformSequenceL(RArray<TUid>& aTransformSequence);
-	void SetSourceRect(const TRect& aRect);
-	void GetSourceRect(TRect& aRect) const;
-	
-	//from MCameraImageProcessing2
-	void GetConcurrentColorSwappingsSupportedL(TInt& aConcurrentColorSwappingSupported) const;
-	void GetColorSwapCapabilitiesL(TInt aIndex, CCamera::CCameraImageProcessing::TColorOperationCapabilities& aColorSwapCapabilities) const;
-	void SetColorSwapEntry(TInt aIndex, const CCamera::CCameraImageProcessing::TColorOperationEntry& aColorSwapParameters); 
-	void RemoveColorSwapEntry(TInt aIndex);
-	void GetColorSwapEntryL(TInt aIndex, CCamera::CCameraImageProcessing::TColorOperationEntry& aColorSwapParameters) const; 
-	void StartColorSwapping();
-	void CancelColorSwappingL();
-	void GetConcurrentColorAccentSupportedL(TInt& aConcurrentColorAccentSupported) const;
-	void GetColorAccentCapabilitiesL(TInt aIndex, CCamera::CCameraImageProcessing::TColorOperationCapabilities& aColorAccentCapabilities) const;
-	void SetColorAccentEntry(TInt aIndex, const CCamera::CCameraImageProcessing::TColorOperationEntry& aColorAccentParameters); 
-	void RemoveColorAccentEntry(TInt aIndex);
-	void GetColorAccentEntryL(TInt aIndex, CCamera::CCameraImageProcessing::TColorOperationEntry& aColorAccentParameters) const; 
-	void StartColorAccent();
-	void CancelColorAccentL();
-
-private:
-	CTestCamImgProc(CTestCamera& aOwner);
-	void ConstructL();
-	
-	TBool IsTransform(TUid aTransformation);
-	
-private:
-	CTestCamera& iOwner;
-	
-	TInt iRefCount;
-	
-	RArray<TUid> iSupportedTranformations;
-	RArray<TUid> iActiveTransformations;
-	RArray<TUid> iActiveTransformSequence;
-	};
-#endif // TESTIMAGEPROCESSING_H
+// Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of the License "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// testimageprocessing.h
+// 
+//
+
+#ifndef TESTIMAGEPROCESSING_H
+#define TESTIMAGEPROCESSING_H
+
+#include "TestCamera.h"
+#include <ecam/ecamadvsettingsintf.h>
+
+const TInt KNumOfImgProcExtensions = 2;
+const TInt KMinBrightness = -100;
+const TInt KMaxBrightness = 100;
+const TInt KMinContrast = -100;
+const TInt KMaxContrast = 100;
+
+// Implementations of the MCameraImageProcessing class
+class CTestCamImgProc : 	public CBase, 
+							public MCameraImageProcessing,
+							public MCameraImageProcessing2
+	{
+	friend class CTestCamera;
+public:
+	static CTestCamImgProc* NewL(CTestCamera& aOwner);
+	~CTestCamImgProc();
+	
+protected:
+	//from MCameraImageProcessing
+	void Release();
+	void GetSupportedTransformationsL(RArray<TUid>& aTransformations) const;
+	void GetActiveTransformationsL(RArray<TUid>& aTransformations) const;
+	void GetTransformationSupportedValuesL(TUid aTransformation, RArray<TInt>& aValues, TValueInfo& aInfo) const;
+	TInt TransformationValue(TUid aTransformation) const;
+	TInt GetTransformationValue(TUid aTransformation, TInt& aTransformationValue) const;
+	void SetTransformationValue(TUid aTransformation, TInt aValue);
+	void GetActiveTransformSequenceL(RArray<TUid>& aTransformSequence) const;
+	void SetActiveTransformSequenceL(RArray<TUid>& aTransformSequence);
+	void SetSourceRect(const TRect& aRect);
+	void GetSourceRect(TRect& aRect) const;
+	
+	//from MCameraImageProcessing2
+	void GetConcurrentColorSwappingsSupportedL(TInt& aConcurrentColorSwappingSupported) const;
+	void GetColorSwapCapabilitiesL(TInt aIndex, CCamera::CCameraImageProcessing::TColorOperationCapabilities& aColorSwapCapabilities) const;
+	void SetColorSwapEntry(TInt aIndex, const CCamera::CCameraImageProcessing::TColorOperationEntry& aColorSwapParameters); 
+	void RemoveColorSwapEntry(TInt aIndex);
+	void GetColorSwapEntryL(TInt aIndex, CCamera::CCameraImageProcessing::TColorOperationEntry& aColorSwapParameters) const; 
+	void StartColorSwapping();
+	void CancelColorSwappingL();
+	void GetConcurrentColorAccentSupportedL(TInt& aConcurrentColorAccentSupported) const;
+	void GetColorAccentCapabilitiesL(TInt aIndex, CCamera::CCameraImageProcessing::TColorOperationCapabilities& aColorAccentCapabilities) const;
+	void SetColorAccentEntry(TInt aIndex, const CCamera::CCameraImageProcessing::TColorOperationEntry& aColorAccentParameters); 
+	void RemoveColorAccentEntry(TInt aIndex);
+	void GetColorAccentEntryL(TInt aIndex, CCamera::CCameraImageProcessing::TColorOperationEntry& aColorAccentParameters) const; 
+	void StartColorAccent();
+	void CancelColorAccentL();
+
+private:
+	CTestCamImgProc(CTestCamera& aOwner);
+	void ConstructL();
+	
+	TBool IsTransform(TUid aTransformation);
+	
+private:
+	CTestCamera& iOwner;
+	
+	TInt iRefCount;
+	
+	RArray<TUid> iSupportedTranformations;
+	RArray<TUid> iActiveTransformations;
+	RArray<TUid> iActiveTransformSequence;
+	};
+#endif // TESTIMAGEPROCESSING_H
--- a/mmplugins/cameraplugins/source/testcamera/test_snapshot.cpp	Thu Mar 25 11:21:36 2010 +0900
+++ b/mmplugins/cameraplugins/source/testcamera/test_snapshot.cpp	Tue Oct 19 11:48:59 2010 +0900
@@ -1,360 +1,359 @@
-// Copyright (c) 2007-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:
-// testsnapshot.cpp
-// 
-//
-
-#include "test_snapshot.h"
-#include <ecamerrors.h>
-
-CTestCamSnapshot::CTestCamSnapshot(CTestCamera& aOwner): iOwner(aOwner), iSnapshotBuffer(iSnapshot)
-	{
-	Init();
-	}
-	
-CTestCamSnapshot::~CTestCamSnapshot()
-	{
-	delete iSnapshotImage;
-	iSnapshotImage = NULL;
-	delete iSnapshotImageGc;
-	iSnapshotImage = NULL;
-	delete iSnapshotImageDev;
-	iSnapshotImageDev = NULL;
-	
-	delete iSnapshot;
-	iSnapshot = NULL;
-	delete iSnapshotGc;
-	iSnapshotGc = NULL;
-	delete iSnapshotDev;
-	iSnapshotDev = NULL;
-	
-	iSupportedSnapshotRect.Close();
-	
-	CDataGlobal* globalData = static_cast <CDataGlobal*> (Dll::Tls());
-	if(globalData != NULL)
-		{
-		if(!globalData->iTestCamPresets && !globalData->iTestCamAdvSet && !globalData->iTestCamImgProc)
-			{
-			delete globalData;
-			Dll::FreeTls();
-			}	
-		else
-			{
-			globalData->iTestCamSnapshot = NULL;	
-			Dll::SetTls(globalData);
-			}
-		}
-	}
-		
-CTestCamSnapshot* CTestCamSnapshot::NewL(CTestCamera& aOwner)
-	{
-	CDataGlobal* globalData = static_cast <CDataGlobal*> (Dll::Tls());
-	
-	if(globalData == NULL)
-		{
-		globalData = new (ELeave) CDataGlobal;
-		CleanupStack::PushL(globalData);
-		globalData->iSnapshotReferenceCount = 0;
-		globalData->iTestCamSnapshot = new (ELeave) CTestCamSnapshot(aOwner);
-		CleanupStack::PushL(globalData->iTestCamSnapshot);
-		globalData->iTestCamSnapshot->ConstructL();
-		globalData->iTestCamSnapshot->iRefCount = 1;
-		User::LeaveIfError(Dll::SetTls(globalData));
-		CleanupStack::Pop(globalData->iTestCamSnapshot);
-		CleanupStack::Pop(globalData);
-		return globalData->iTestCamSnapshot;
-		}
-	else
-		{
-		if(globalData->iTestCamSnapshot == NULL)
-			{
-			globalData->iSnapshotReferenceCount = 0;
-			globalData->iTestCamSnapshot = new (ELeave) CTestCamSnapshot(aOwner);
-			CleanupStack::PushL(globalData->iTestCamSnapshot);
-			globalData->iTestCamSnapshot->ConstructL();
-			globalData->iTestCamSnapshot->iRefCount = 1;
-			User::LeaveIfError(Dll::SetTls(globalData));
-			CleanupStack::Pop(globalData->iTestCamSnapshot);
-			return globalData->iTestCamSnapshot;
-			}
-		
-		CTestCamSnapshot* self = globalData->iTestCamSnapshot;
-		
-		globalData->iSnapshotReferenceCount++;
-		self->iRefCount = globalData->iSnapshotReferenceCount + 1;
-		if (globalData->iSnapshotReferenceCount == KNumOfSnapshotExtensions-1 )
-			{
-			globalData->iTestCamSnapshot = NULL;
-			if(!globalData->iTestCamPresets && !globalData->iTestCamAdvSet && !globalData->iTestCamImgProc)
-				{
-				delete globalData;
-				Dll::FreeTls();
-				}
-			else
-				{
-				User::LeaveIfError(Dll::SetTls(globalData));	
-				}
-			}
-		else
-			{
-			User::LeaveIfError(Dll::SetTls(globalData));	
-			}
-		return self;		
-		}
-	}
-
-void CTestCamSnapshot::Release()
-	{
-	iRefCount--; 
-	if(iRefCount == 0)
-		{
-		iOwner.iSnapshotImpl = NULL;
-		delete this;
-		}
-	}	
-	
-void CTestCamSnapshot::Init()
-	{
-	iImageFormatsSupported = 0;
-	iImageFormatsSupported |= CCamera::EFormatFbsBitmapColor4K;
-	iImageFormatsSupported |= CCamera::EFormatFbsBitmapColor64K;
-	iImageFormatsSupported |= CCamera::EFormatFbsBitmapColor16M; 
-	iSnapshotPrepared = EFalse;
-	iSnapshotActive = EFalse;
-	iBgColor = KRgbWhite;
-	}
-
-void CTestCamSnapshot::ConstructL()
-	{
-	iSupportedSnapshotRect.Reset();
-	iSupportedSnapshotRect.AppendL(TRect(TPoint(0,0), iOwner.iImageSizes[0]));
-	iSupportedSnapshotRect.AppendL(TRect(TPoint(0,0), iOwner.iImageSizes[1]));
-	}
-
-TUint32 CTestCamSnapshot::SupportedFormats()
-	{
-	return iImageFormatsSupported;
-	}
-	
-void CTestCamSnapshot::PrepareSnapshotL(CCamera::TFormat aFormat, const TPoint& aPosition, const TSize& aSize, const TRgb& aBgColor, TBool /*aMaintainAspectRatio*/)
-	{
-	iOwner.CheckReserveAndPowerL();
-		
-	if (iOwner.iVideoCaptureActive || iOwner.iImageCaptureActive)
-		{
-		User::Leave(KErrNotReady);
-		}
-		
-	if (!(aFormat & iImageFormatsSupported) )
-		{
-		User::Leave(KErrNotSupported);
-		}
-	
-	//check if the snapshot size is supported
-	TRect snapshot_rect = TRect(aPosition, aSize);
-	
-	if(snapshot_rect != iSupportedSnapshotRect[0] && snapshot_rect != iSupportedSnapshotRect[1])
-		{
-		User::Leave(KErrNotSupported);
-		}
-
-	if (iSnapshotPrepared
-		&& iSnapshotFormat == aFormat
-		&& iSnapshotImageRect == snapshot_rect
-		&& iBgColor == aBgColor
-		)
-		{
-		return;
-		}
-
-	TDisplayMode displayMode = ENone;
-	switch (aFormat)
-		{
-		case CCamera::EFormatFbsBitmapColor4K :
-			displayMode = EColor4K;
-			break;
-		case CCamera::EFormatFbsBitmapColor64K :
-			displayMode = EColor64K;
-			break;
-		case CCamera::EFormatFbsBitmapColor16M :
-			displayMode = EColor16M;
-			break;
-		default :
-			User::Leave(KErrNotSupported);
-			break;
-		}
-
-	delete iSnapshotImage;
-	iSnapshotImage = NULL;
-	delete iSnapshotImageGc;
-	iSnapshotImageGc = NULL;
-	delete iSnapshotImageDev;
-	iSnapshotImageDev = NULL;
-
-	iSnapshotImage = new(ELeave) CFbsBitmap;
-	User::LeaveIfError(iSnapshotImage->Create(aSize, displayMode));
-	iSnapshotImageDev = CFbsBitmapDevice::NewL(iSnapshotImage);
-	User::LeaveIfError(iSnapshotImageDev->CreateContext(iSnapshotImageGc));
-	iSnapshotImageGc->SetPenColor(KRgbBlack);
-	iSnapshotImageGc->SetPenSize(TSize(KFrameFeatureBorderThickness, KFrameFeatureBorderThickness));
-	iSnapshotImageGc->SetBrushColor(aBgColor);
-	iSnapshotImageGc->SetFaded(ETrue);
-	
-	iSnapshotPrepared = ETrue;
-	iSnapshotImageRect = snapshot_rect;
-	iSnapshotFormat = aFormat;
-	iBgColor = aBgColor;
-	}
-	
-void CTestCamSnapshot::PrepareSnapshotL(CCamera::TFormat /*aFormat*/, const TSize& /*aSize*/, TBool /*aMaintainAspectRatio*/)
-	{
-	User::Leave(KErrNotSupported);
-	}
-	
-void CTestCamSnapshot::SetBgColorL(const TRgb& /*aBgColor*/)
-	{
-	User::Leave(KErrNotSupported);
-	}
-	
-void CTestCamSnapshot::SetPositionL(const TPoint& /*aPosition*/)
-	{
-	User::Leave(KErrNotSupported);
-	}
-	
-TBool CTestCamSnapshot::IsSnapshotActive() const
-	{
-	return iSnapshotActive;
-	}
-
-void CTestCamSnapshot::StartSnapshot()
-	{
-	TInt error = iOwner.CheckReserveAndPower();
-	
-	if(error == KErrNone)
-		{
-		if(!iSnapshotPrepared)
-			{
-			error = KErrNotReady;
-			}
-		}
-	
-	if(error != KErrNone)
-		{
-		TECAMEvent ecamevent(KUidECamEventCameraSnapshot, error);
-		
-		iOwner.iECamEvent = ecamevent;
-		iOwner.iHandleEventAsync.CallBack();	
-		return;	
-		}
-		
-	delete iSnapshot;
-	iSnapshot = NULL;
-	delete iSnapshotGc;
-	iSnapshot = NULL;
-	delete iSnapshotDev;
-	iSnapshotDev = NULL;
-	
-	TRAP(error, DoStartSnapshotL());
-	
-	if(error != KErrNone)
-		{
-		TECAMEvent ecamevent(KUidECamEventCameraSnapshot, error);
-		
-		iOwner.iECamEvent = ecamevent;
-		iOwner.iHandleEventAsync.CallBack();
-		}
-	}
-	
-void CTestCamSnapshot::DoStartSnapshotL()
-	{
-	CFbsBitmap* snapshot = new(ELeave) CFbsBitmap;
-	CleanupStack::PushL(snapshot);
-	User::LeaveIfError(snapshot->Create(iSnapshotImageRect.Size(), iSnapshotImage->DisplayMode()));
-	CFbsBitmapDevice* dev = CFbsBitmapDevice::NewL(snapshot);
-	CleanupStack::PushL(dev);
-	CFbsBitGc* gc = NULL;
-	User::LeaveIfError(dev->CreateContext(gc));
-	CleanupStack::Pop(dev);
-	CleanupStack::Pop(snapshot);
-	
-	iSnapshot = snapshot;
-	iSnapshotDev = dev;
-	iSnapshotGc = gc;
-		
-	iSnapshotActive = ETrue;
-	}
-
-void CTestCamSnapshot::StopSnapshot()
-	{
-	delete iSnapshotGc;
-	iSnapshotGc = NULL;
-	delete iSnapshotDev;
-	iSnapshotDev = NULL;
-	delete iSnapshot;
-	iSnapshot = NULL;
-	
-	iSnapshotActive = EFalse;
-	}
-        	
-MCameraBuffer& CTestCamSnapshot::SnapshotDataL(RArray<TInt>& /*aFrameIndexOrder*/)
-	{
-	iSnapshotBuffer.iAvailable = EFalse;
-	return iSnapshotBuffer;
-	}
-	
-void CTestCamSnapshot::ServiceSnapshot(const CFbsBitGc& aSourceBitmapGc)
-	{
-	TInt error = KErrNone;
-	if(!iSnapshotBuffer.iAvailable)
-		{
-		error = KErrInUse;
-		}
-	else
-		{
-		iSnapshotGc->BitBlt(TPoint(0,0), aSourceBitmapGc);
-		}
-			
-	iOwner.iObserver2->HandleEvent(TECAMEvent(KUidECamEventCameraSnapshot, error));
-	}
-	
-void CTestCamSnapshot::ServiceBurstImageSnapshot(const CFbsBitGc& aSourceBitmapGc)
-	{
-	TInt error = KErrNone;
-	if(!iSnapshotBuffer.iAvailable)
-		{
-		error = KErrInUse;
-		}
-	else
-		{
-		iSnapshotGc->BitBlt(TPoint(0,0), aSourceBitmapGc);
-		}
-			
-	iOwner.iObserver2->HandleEvent(TECAMEvent(KUidECamEventCameraSnapshot, error));
-	
-	User::After(500000);
-	
-	iOwner.iStillImagePos.iX += KFramePosIncrement;
-	iOwner.iStillImagePos.iY += KFramePosIncrement;
-
-	if (iOwner.iStillImagePos.iX >= iOwner.iStillImageSize.iWidth)
-		{
-		iOwner.iStillImagePos.iX = 0;
-		}
-		
-	if (iOwner.iStillImagePos.iY >= iOwner.iStillImageSize.iHeight)
-		{
-		iOwner.iStillImagePos.iY = 0;
-		}
-	}
-
+// Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of the License "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// testsnapshot.cpp
+// 
+//
+
+#include "test_snapshot.h"
+#include <ecamerrors.h>
+
+CTestCamSnapshot::CTestCamSnapshot(CTestCamera& aOwner): iOwner(aOwner), iSnapshotBuffer(iSnapshot)
+	{
+	Init();
+	}
+	
+CTestCamSnapshot::~CTestCamSnapshot()
+	{
+	delete iSnapshotImage;
+	iSnapshotImage = NULL;
+	delete iSnapshotImageGc;
+	iSnapshotImage = NULL;
+	delete iSnapshotImageDev;
+	iSnapshotImageDev = NULL;
+	
+	delete iSnapshot;
+	iSnapshot = NULL;
+	delete iSnapshotGc;
+	iSnapshotGc = NULL;
+	delete iSnapshotDev;
+	iSnapshotDev = NULL;
+	
+	iSupportedSnapshotRect.Close();
+	
+	CDataGlobal* globalData = static_cast <CDataGlobal*> (Dll::Tls());
+	if(globalData != NULL)
+		{
+		if(!globalData->iTestCamPresets && !globalData->iTestCamAdvSet && !globalData->iTestCamImgProc)
+			{
+			delete globalData;
+			Dll::FreeTls();
+			}	
+		else
+			{
+			globalData->iTestCamSnapshot = NULL;	
+			Dll::SetTls(globalData);
+			}
+		}
+	}
+		
+CTestCamSnapshot* CTestCamSnapshot::NewL(CTestCamera& aOwner)
+	{
+	CDataGlobal* globalData = static_cast <CDataGlobal*> (Dll::Tls());
+	
+	if(globalData == NULL)
+		{
+		globalData = new (ELeave) CDataGlobal;
+		CleanupStack::PushL(globalData);
+		globalData->iSnapshotReferenceCount = 0;
+		globalData->iTestCamSnapshot = new (ELeave) CTestCamSnapshot(aOwner);
+		CleanupStack::PushL(globalData->iTestCamSnapshot);
+		globalData->iTestCamSnapshot->ConstructL();
+		globalData->iTestCamSnapshot->iRefCount = 1;
+		User::LeaveIfError(Dll::SetTls(globalData));
+		CleanupStack::Pop(globalData->iTestCamSnapshot);
+		CleanupStack::Pop(globalData);
+		return globalData->iTestCamSnapshot;
+		}
+	else
+		{
+		if(globalData->iTestCamSnapshot == NULL)
+			{
+			globalData->iSnapshotReferenceCount = 0;
+			globalData->iTestCamSnapshot = new (ELeave) CTestCamSnapshot(aOwner);
+			CleanupStack::PushL(globalData->iTestCamSnapshot);
+			globalData->iTestCamSnapshot->ConstructL();
+			globalData->iTestCamSnapshot->iRefCount = 1;
+			User::LeaveIfError(Dll::SetTls(globalData));
+			CleanupStack::Pop(globalData->iTestCamSnapshot);
+			return globalData->iTestCamSnapshot;
+			}
+		
+		CTestCamSnapshot* self = globalData->iTestCamSnapshot;
+		
+		globalData->iSnapshotReferenceCount++;
+		self->iRefCount = globalData->iSnapshotReferenceCount + 1;
+		if (globalData->iSnapshotReferenceCount == KNumOfSnapshotExtensions-1 )
+			{
+			globalData->iTestCamSnapshot = NULL;
+			if(!globalData->iTestCamPresets && !globalData->iTestCamAdvSet && !globalData->iTestCamImgProc)
+				{
+				delete globalData;
+				Dll::FreeTls();
+				}
+			else
+				{
+				User::LeaveIfError(Dll::SetTls(globalData));	
+				}
+			}
+		else
+			{
+			User::LeaveIfError(Dll::SetTls(globalData));	
+			}
+		return self;		
+		}
+	}
+
+void CTestCamSnapshot::Release()
+	{
+	iRefCount--; 
+	if(iRefCount == 0)
+		{
+		iOwner.iSnapshotImpl = NULL;
+		delete this;
+		}
+	}	
+	
+void CTestCamSnapshot::Init()
+	{
+	iImageFormatsSupported = 0;
+	iImageFormatsSupported |= CCamera::EFormatFbsBitmapColor4K;
+	iImageFormatsSupported |= CCamera::EFormatFbsBitmapColor64K;
+	iImageFormatsSupported |= CCamera::EFormatFbsBitmapColor16M; 
+	iSnapshotPrepared = EFalse;
+	iSnapshotActive = EFalse;
+	iBgColor = KRgbWhite;
+	}
+
+void CTestCamSnapshot::ConstructL()
+	{
+	iSupportedSnapshotRect.Reset();
+	iSupportedSnapshotRect.AppendL(TRect(TPoint(0,0), iOwner.iImageSizes[0]));
+	iSupportedSnapshotRect.AppendL(TRect(TPoint(0,0), iOwner.iImageSizes[1]));
+	}
+
+TUint32 CTestCamSnapshot::SupportedFormats()
+	{
+	return iImageFormatsSupported;
+	}
+	
+void CTestCamSnapshot::PrepareSnapshotL(CCamera::TFormat aFormat, const TPoint& aPosition, const TSize& aSize, const TRgb& aBgColor, TBool /*aMaintainAspectRatio*/)
+	{
+	iOwner.CheckReserveAndPowerL();
+		
+	if (iOwner.iVideoCaptureActive || iOwner.iImageCaptureActive)
+		{
+		User::Leave(KErrNotReady);
+		}
+		
+	if (!(aFormat & iImageFormatsSupported) )
+		{
+		User::Leave(KErrNotSupported);
+		}
+	
+	//check if the snapshot size is supported
+	TRect snapshot_rect = TRect(aPosition, aSize);
+	
+	if(snapshot_rect != iSupportedSnapshotRect[0] && snapshot_rect != iSupportedSnapshotRect[1])
+		{
+		User::Leave(KErrNotSupported);
+		}
+
+	if (iSnapshotPrepared
+		&& iSnapshotFormat == aFormat
+		&& iSnapshotImageRect == snapshot_rect
+		&& iBgColor == aBgColor
+		)
+		{
+		return;
+		}
+
+	TDisplayMode displayMode = ENone;
+	switch (aFormat)
+		{
+		case CCamera::EFormatFbsBitmapColor4K :
+			displayMode = EColor4K;
+			break;
+		case CCamera::EFormatFbsBitmapColor64K :
+			displayMode = EColor64K;
+			break;
+		case CCamera::EFormatFbsBitmapColor16M :
+			displayMode = EColor16M;
+			break;
+		default :
+			User::Leave(KErrNotSupported);
+			break;
+		}
+
+	delete iSnapshotImage;
+	iSnapshotImage = NULL;
+	delete iSnapshotImageGc;
+	iSnapshotImageGc = NULL;
+	delete iSnapshotImageDev;
+	iSnapshotImageDev = NULL;
+
+	iSnapshotImage = new(ELeave) CFbsBitmap;
+	User::LeaveIfError(iSnapshotImage->Create(aSize, displayMode));
+	iSnapshotImageDev = CFbsBitmapDevice::NewL(iSnapshotImage);
+	User::LeaveIfError(iSnapshotImageDev->CreateContext(iSnapshotImageGc));
+	iSnapshotImageGc->SetPenColor(KRgbBlack);
+	iSnapshotImageGc->SetPenSize(TSize(KFrameFeatureBorderThickness, KFrameFeatureBorderThickness));
+	iSnapshotImageGc->SetBrushColor(aBgColor);
+	iSnapshotImageGc->SetFaded(ETrue);
+	
+	iSnapshotPrepared = ETrue;
+	iSnapshotImageRect = snapshot_rect;
+	iSnapshotFormat = aFormat;
+	iBgColor = aBgColor;
+	}
+	
+void CTestCamSnapshot::PrepareSnapshotL(CCamera::TFormat /*aFormat*/, const TSize& /*aSize*/, TBool /*aMaintainAspectRatio*/)
+	{
+	User::Leave(KErrNotSupported);
+	}
+	
+void CTestCamSnapshot::SetBgColorL(const TRgb& /*aBgColor*/)
+	{
+	User::Leave(KErrNotSupported);
+	}
+	
+void CTestCamSnapshot::SetPositionL(const TPoint& /*aPosition*/)
+	{
+	User::Leave(KErrNotSupported);
+	}
+	
+TBool CTestCamSnapshot::IsSnapshotActive() const
+	{
+	return iSnapshotActive;
+	}
+
+void CTestCamSnapshot::StartSnapshot()
+	{
+	TInt error = iOwner.CheckReserveAndPower();
+	
+	if(error == KErrNone)
+		{
+		if(!iSnapshotPrepared)
+			{
+			error = KErrNotReady;
+			}
+		}
+	
+	if(error != KErrNone)
+		{
+		TECAMEvent ecamevent(KUidECamEventCameraSnapshot, error);
+		
+		iOwner.iECamEvent = ecamevent;
+		iOwner.iHandleEventAsync.CallBack();	
+		return;	
+		}
+		
+	delete iSnapshot;
+	iSnapshot = NULL;
+	delete iSnapshotGc;
+	iSnapshot = NULL;
+	delete iSnapshotDev;
+	iSnapshotDev = NULL;
+	
+	TRAP(error, DoStartSnapshotL());
+	
+	if(error != KErrNone)
+		{
+		TECAMEvent ecamevent(KUidECamEventCameraSnapshot, error);
+		
+		iOwner.iECamEvent = ecamevent;
+		iOwner.iHandleEventAsync.CallBack();
+		}
+	}
+	
+void CTestCamSnapshot::DoStartSnapshotL()
+	{
+	CFbsBitmap* snapshot = new(ELeave) CFbsBitmap;
+	CleanupStack::PushL(snapshot);
+	User::LeaveIfError(snapshot->Create(iSnapshotImageRect.Size(), iSnapshotImage->DisplayMode()));
+	CFbsBitmapDevice* dev = CFbsBitmapDevice::NewL(snapshot);
+	CleanupStack::PushL(dev);
+	CFbsBitGc* gc = NULL;
+	User::LeaveIfError(dev->CreateContext(gc));
+	CleanupStack::Pop(dev);
+	CleanupStack::Pop(snapshot);
+	
+	iSnapshot = snapshot;
+	iSnapshotDev = dev;
+	iSnapshotGc = gc;
+		
+	iSnapshotActive = ETrue;
+	}
+
+void CTestCamSnapshot::StopSnapshot()
+	{
+	delete iSnapshotGc;
+	iSnapshotGc = NULL;
+	delete iSnapshotDev;
+	iSnapshotDev = NULL;
+	delete iSnapshot;
+	iSnapshot = NULL;
+	
+	iSnapshotActive = EFalse;
+	}
+        	
+MCameraBuffer& CTestCamSnapshot::SnapshotDataL(RArray<TInt>& /*aFrameIndexOrder*/)
+	{
+	iSnapshotBuffer.iAvailable = EFalse;
+	return iSnapshotBuffer;
+	}
+	
+void CTestCamSnapshot::ServiceSnapshot(const CFbsBitGc& aSourceBitmapGc)
+	{
+	TInt error = KErrNone;
+	if(!iSnapshotBuffer.iAvailable)
+		{
+		error = KErrInUse;
+		}
+	else
+		{
+		iSnapshotGc->BitBlt(TPoint(0,0), aSourceBitmapGc);
+		}
+			
+	iOwner.iObserver2->HandleEvent(TECAMEvent(KUidECamEventCameraSnapshot, error));
+	}
+	
+void CTestCamSnapshot::ServiceBurstImageSnapshot(const CFbsBitGc& aSourceBitmapGc)
+	{
+	TInt error = KErrNone;
+	if(!iSnapshotBuffer.iAvailable)
+		{
+		error = KErrInUse;
+		}
+	else
+		{
+		iSnapshotGc->BitBlt(TPoint(0,0), aSourceBitmapGc);
+		}
+			
+	iOwner.iObserver2->HandleEvent(TECAMEvent(KUidECamEventCameraSnapshot, error));
+	
+	User::After(500000);
+	
+	iOwner.iStillImagePos.iX += KFramePosIncrement;
+	iOwner.iStillImagePos.iY += KFramePosIncrement;
+
+	if (iOwner.iStillImagePos.iX >= iOwner.iStillImageSize.iWidth)
+		{
+		iOwner.iStillImagePos.iX = 0;
+		}
+		
+	if (iOwner.iStillImagePos.iY >= iOwner.iStillImageSize.iHeight)
+		{
+		iOwner.iStillImagePos.iY = 0;
+		}
+	}
--- a/mmplugins/cameraplugins/source/testcamera/test_snapshot.h	Thu Mar 25 11:21:36 2010 +0900
+++ b/mmplugins/cameraplugins/source/testcamera/test_snapshot.h	Tue Oct 19 11:48:59 2010 +0900
@@ -1,95 +1,95 @@
-// Copyright (c) 2007-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:
-// testsnapshot.h
-// 
-//
-
-#ifndef TESTSNAPSHOT_H
-#define TESTSNAPSHOT_H
-
-#include "TestCamera.h"
-#include <ecam/mcamerasnapshot.h>
-
-const TInt KNumOfSnapshotExtensions = 1;
-
-// Implementations of the MCameraSnapshot class
-class CTestCamSnapshot : 	public CBase, 
-							public MCameraSnapshot
-	{
-	friend class CTestCamera;
-public:
-	static CTestCamSnapshot* NewL(CTestCamera& aOwner);
-	~CTestCamSnapshot();
-	
-private:
-	void Release();
-	
-	//from MCameraSnapshot
-	TUint32 SupportedFormats();
-	
-    void PrepareSnapshotL(CCamera::TFormat aFormat, const TPoint& aPosition, const TSize& aSize, const TRgb& aBgColor, TBool aMaintainAspectRatio);
-    
-	void PrepareSnapshotL(CCamera::TFormat aFormat, const TSize& aSize, TBool aMaintainAspectRatio);
-	
-	void SetBgColorL(const TRgb& aBgColor); 
-	
-	void SetPositionL(const TPoint& aPosition);
-	
-    TBool IsSnapshotActive() const;
-
-    void StartSnapshot();
-
-	void StopSnapshot();
-        	
-	MCameraBuffer& SnapshotDataL(RArray<TInt>& aFrameIndexOrder);
-	
-	// New functions
-	void ServiceSnapshot(const CFbsBitGc& aSourceBitmapGc);
-	void ServiceBurstImageSnapshot(const CFbsBitGc& aSourceBitmapGc);
-
-private:
-	CTestCamSnapshot(CTestCamera& aOwner);
-	void Init();
-	void ConstructL();
-	void DoStartSnapshotL();
-	
-private:
-	CTestCamera& iOwner;
-	
-	TInt iRefCount;
-			
-	CFbsBitmap* iSnapshot;
-	CFbsBitmapDevice* iSnapshotDev;
-	CFbsBitGc* iSnapshotGc;
-	
-	CFbsBitmap* iSnapshotImage;
-	CFbsBitmapDevice* iSnapshotImageDev;
-	CFbsBitGc* iSnapshotImageGc;
-	
-	TRect iSnapshotImageRect;
-	CCamera::TFormat iSnapshotFormat;
-	TRgb iBgColor;
-	
-	TUint32 iImageFormatsSupported;
-	
-	RArray<TRect> iSupportedSnapshotRect;
-	
-	RTestCameraFrameBuffer iSnapshotBuffer;
-	
-	volatile TBool iSnapshotPrepared;
-	volatile TBool iSnapshotActive;
-		
-	};
-	
-#endif // TESTSNAPSHOT_H
+// Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of the License "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// testsnapshot.h
+// 
+//
+
+#ifndef TESTSNAPSHOT_H
+#define TESTSNAPSHOT_H
+
+#include "TestCamera.h"
+#include <ecam/mcamerasnapshot.h>
+
+const TInt KNumOfSnapshotExtensions = 1;
+
+// Implementations of the MCameraSnapshot class
+class CTestCamSnapshot : 	public CBase, 
+							public MCameraSnapshot
+	{
+	friend class CTestCamera;
+public:
+	static CTestCamSnapshot* NewL(CTestCamera& aOwner);
+	~CTestCamSnapshot();
+	
+private:
+	void Release();
+	
+	//from MCameraSnapshot
+	TUint32 SupportedFormats();
+	
+    void PrepareSnapshotL(CCamera::TFormat aFormat, const TPoint& aPosition, const TSize& aSize, const TRgb& aBgColor, TBool aMaintainAspectRatio);
+    
+	void PrepareSnapshotL(CCamera::TFormat aFormat, const TSize& aSize, TBool aMaintainAspectRatio);
+	
+	void SetBgColorL(const TRgb& aBgColor); 
+	
+	void SetPositionL(const TPoint& aPosition);
+	
+    TBool IsSnapshotActive() const;
+
+    void StartSnapshot();
+
+	void StopSnapshot();
+        	
+	MCameraBuffer& SnapshotDataL(RArray<TInt>& aFrameIndexOrder);
+	
+	// New functions
+	void ServiceSnapshot(const CFbsBitGc& aSourceBitmapGc);
+	void ServiceBurstImageSnapshot(const CFbsBitGc& aSourceBitmapGc);
+
+private:
+	CTestCamSnapshot(CTestCamera& aOwner);
+	void Init();
+	void ConstructL();
+	void DoStartSnapshotL();
+	
+private:
+	CTestCamera& iOwner;
+	
+	TInt iRefCount;
+			
+	CFbsBitmap* iSnapshot;
+	CFbsBitmapDevice* iSnapshotDev;
+	CFbsBitGc* iSnapshotGc;
+	
+	CFbsBitmap* iSnapshotImage;
+	CFbsBitmapDevice* iSnapshotImageDev;
+	CFbsBitGc* iSnapshotImageGc;
+	
+	TRect iSnapshotImageRect;
+	CCamera::TFormat iSnapshotFormat;
+	TRgb iBgColor;
+	
+	TUint32 iImageFormatsSupported;
+	
+	RArray<TRect> iSupportedSnapshotRect;
+	
+	RTestCameraFrameBuffer iSnapshotBuffer;
+	
+	volatile TBool iSnapshotPrepared;
+	volatile TBool iSnapshotActive;
+		
+	};
+	
+#endif // TESTSNAPSHOT_H
--- a/mmplugins/cameraplugins/source/webcamera/01000001.rss	Thu Mar 25 11:21:36 2010 +0900
+++ b/mmplugins/cameraplugins/source/webcamera/01000001.rss	Tue Oct 19 11:48:59 2010 +0900
@@ -1,58 +1,58 @@
-/*
-* Copyright (c) 2010 ISB.
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of the "Symbian Foundation License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
-*
-* Initial Contributors:
-* ISB - Initial contribution
-*
-* Contributors:
-*
-* Description:
-*
-*/
-
-#include <ecom/registryinfo.rh>
-#include <ecamuids.hrh>
-#include "ecamwebcamerapluginuids.hrh"
-
-RESOURCE REGISTRY_INFO theInfo
-	{
-	dll_uid = KUidOnboardWebCameraDll;
-	interfaces = 
-		{
-		INTERFACE_INFO
-			{
-			interface_uid = KUidOnboardCameraPlugin;
-			implementations = 
-				{
-				IMPLEMENTATION_INFO
-					{
-					implementation_uid = KUidOnboardWebCameraPlugin;
-					version_no = 4;
-					display_name = "ECam WebCamera Plugin";
-					opaque_data = "0;";
-					default_data="*";
-					}
-				};
-			},
-		INTERFACE_INFO
-			{
-			interface_uid = KUidOnboardCameraInfoPlugin;
-			implementations = 
-				{
-				IMPLEMENTATION_INFO
-					{
-					implementation_uid = KUidOnboardWebCameraInfo;
-					version_no = 4;
-					display_name = "ECam WebCamera InfoPlugin";
-					opaque_data = "0;";
-					default_data="*";
-					}
-				};
-			}
-		};
-	}
+/*
+* Copyright (c) 2010 ISB.
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the "Symbian Foundation License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+*
+* Initial Contributors:
+* ISB - Initial contribution
+*
+* Contributors:
+*
+* Description:
+*
+*/
+
+#include <ecom/registryinfo.rh>
+#include <ecamuids.hrh>
+#include "ecamwebcamerapluginuids.hrh"
+
+RESOURCE REGISTRY_INFO theInfo
+	{
+	dll_uid = KUidOnboardWebCameraDll;
+	interfaces = 
+		{
+		INTERFACE_INFO
+			{
+			interface_uid = KUidOnboardCameraPlugin;
+			implementations = 
+				{
+				IMPLEMENTATION_INFO
+					{
+					implementation_uid = KUidOnboardWebCameraPlugin;
+					version_no = 4;
+					display_name = "ECam WebCamera Plugin";
+					opaque_data = "0;";
+					default_data="*";
+					}
+				};
+			},
+		INTERFACE_INFO
+			{
+			interface_uid = KUidOnboardCameraInfoPlugin;
+			implementations = 
+				{
+				IMPLEMENTATION_INFO
+					{
+					implementation_uid = KUidOnboardWebCameraInfo;
+					version_no = 4;
+					display_name = "ECam WebCamera InfoPlugin";
+					opaque_data = "0;";
+					default_data="*";
+					}
+				};
+			}
+		};
+	}
--- a/mmplugins/cameraplugins/source/webcamera/ecamwebcameraactive.cpp	Thu Mar 25 11:21:36 2010 +0900
+++ b/mmplugins/cameraplugins/source/webcamera/ecamwebcameraactive.cpp	Tue Oct 19 11:48:59 2010 +0900
@@ -1,140 +1,140 @@
-/*
-* Copyright (c) 2010 ISB.
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of the "Symbian Foundation License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
-*
-* Initial Contributors:
-* ISB - Initial contribution
-*
-* Contributors:
-*
-* Description:
-*
-*/
-
-#include "ecamwebcameraactive.h"
-
-
-//
-// CWebCameraActive
-//
-CWebCameraActive* CWebCameraActive::NewL(MWebCameraActiveCallBack* aOwner, RWebcameraDevice& aDriver)
-	{
-	CWebCameraActive* self = new(ELeave) CWebCameraActive(aOwner, aDriver);
-	CleanupStack::PushL(self);
-	self->ConstructL();
-	CleanupStack::Pop(self);
-
-	return self;
-	}
-
-CWebCameraActive::CWebCameraActive(MWebCameraActiveCallBack* aOwner, RWebcameraDevice& aDriver)
-				 :CActive(CActive::EPriorityStandard),
-				  iOwner(aOwner),
-				  iDriver(aDriver)
-	{
-	CActiveScheduler::Add(this);
-	}
-
-CWebCameraActive::~CWebCameraActive()
-	{
-	}
-
-/**
-* RunL.
-*/
-void CWebCameraActive::RunL()
-	{
-	TInt wError = iStatus.Int();
-
-	switch(iOperation)
-		{
-	case ECamActiveReserve:
-		iOwner->ReserveCallBack(wError);
-		break;
-
-	case ECamActivePowerOn:
-		iOwner->PowerOnCallBack(wError);
-		break;
-
-	case ECamActiveImageCapture:
-		iOwner->ImageCaptureCallBackL(wError);
-		break;
-		}
-	iOperation = ECamActiveIdle;
-	}
-
-void CWebCameraActive::DoCancel()
-	{
-	}
-
-void CWebCameraActive::ConstructL()
-	{
-	}
-
-/** 
-Asynchronous function that performs any required initialisation and reserves
-the camera for exclusive use.
-
-Calls CWebCamera::ReserveCallBack when complete. 
-*/
-void CWebCameraActive::Reserve()
-	{
-	iOperation = ECamActiveReserve;
-
-	//Because there is not a camera device, I do not handle it
-	TRequestStatus* status = &iStatus;
-	User::RequestComplete(status, KErrNone);
-	SetActive();
-	}
-
-/** 
-Asynchronous method to switch on camera power.
-
-User must have successfully called Reserve() prior to calling this function.
-
-Calls CWebCamera::PowerOnCallBack when power on is complete. 
-*/
-void CWebCameraActive::PowerOn()
-	{
-	iOperation = ECamActivePowerOn;
-
-	//Because there is not a camera device, I do not handle it	
-	TRequestStatus* status = &iStatus;
-	User::RequestComplete(status, KErrNone);
-	SetActive();
-	}
-
-/** 
-Cancels the asynchronous still image capture. 
-	
-Calls CWebCamera::ImageCaptureCallBackL when capture is complete. 
-	
-* @param aDes descriptor to store a capture image
-*/
-void CWebCameraActive::ImageCapture(TDes8& aDes)
-	{
-	iOperation = ECamActiveImageCapture;
-
-	// start capture image
-	// The division transfer is going to support in the next version. 
-	iDriver.Capture(iStatus, aDes);
-	SetActive();
-	}
-
-/** 
-Cancels the asynchronous still image capture. 
-	
-@see CWebCamera::CancelCaptureImage
-*/
-void CWebCameraActive::CancelCaptureImage()
-	{
-	iOperation = ECamActiveIdle;
-
-	iDriver.CaptureCancel();
-	SetActive();
-	}
-
+/*
+* Copyright (c) 2010 ISB.
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the "Symbian Foundation License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+*
+* Initial Contributors:
+* ISB - Initial contribution
+*
+* Contributors:
+*
+* Description:
+*
+*/
+
+#include "ecamwebcameraactive.h"
+
+
+//
+// CWebCameraActive
+//
+CWebCameraActive* CWebCameraActive::NewL(MWebCameraActiveCallBack* aOwner, RWebcameraDevice& aDriver)
+	{
+	CWebCameraActive* self = new(ELeave) CWebCameraActive(aOwner, aDriver);
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	CleanupStack::Pop(self);
+
+	return self;
+	}
+
+CWebCameraActive::CWebCameraActive(MWebCameraActiveCallBack* aOwner, RWebcameraDevice& aDriver)
+				 :CActive(CActive::EPriorityStandard),
+				  iOwner(aOwner),
+				  iDriver(aDriver)
+	{
+	CActiveScheduler::Add(this);
+	}
+
+CWebCameraActive::~CWebCameraActive()
+	{
+	}
+
+/**
+* RunL.
+*/
+void CWebCameraActive::RunL()
+	{
+	TInt wError = iStatus.Int();
+
+	switch(iOperation)
+		{
+	case ECamActiveReserve:
+		iOwner->ReserveCallBack(wError);
+		break;
+
+	case ECamActivePowerOn:
+		iOwner->PowerOnCallBack(wError);
+		break;
+
+	case ECamActiveImageCapture:
+		iOwner->ImageCaptureCallBackL(wError);
+		break;
+		}
+	iOperation = ECamActiveIdle;
+	}
+
+void CWebCameraActive::DoCancel()
+	{
+	}
+
+void CWebCameraActive::ConstructL()
+	{
+	}
+
+/** 
+Asynchronous function that performs any required initialisation and reserves
+the camera for exclusive use.
+
+Calls CWebCamera::ReserveCallBack when complete. 
+*/
+void CWebCameraActive::Reserve()
+	{
+	iOperation = ECamActiveReserve;
+
+	//Because there is not a camera device, I do not handle it
+	TRequestStatus* status = &iStatus;
+	User::RequestComplete(status, KErrNone);
+	SetActive();
+	}
+
+/** 
+Asynchronous method to switch on camera power.
+
+User must have successfully called Reserve() prior to calling this function.
+
+Calls CWebCamera::PowerOnCallBack when power on is complete. 
+*/
+void CWebCameraActive::PowerOn()
+	{
+	iOperation = ECamActivePowerOn;
+
+	//Because there is not a camera device, I do not handle it
+	iDriver.PowerOn(iStatus);
+
+	SetActive();
+	}
+
+/** 
+Cancels the asynchronous still image capture. 
+	
+Calls CWebCamera::ImageCaptureCallBackL when capture is complete. 
+	
+* @param aDes descriptor to store a capture image
+*/
+void CWebCameraActive::ImageCapture(TInt& aChunkSize)
+	{
+	iOperation = ECamActiveImageCapture;
+
+	// start capture image
+	// The division transfer is going to support in the next version. 
+	iDriver.Capture(iStatus, aChunkSize);
+	SetActive();
+	}
+
+/** 
+Cancels the asynchronous still image capture. 
+	
+@see CWebCamera::CancelCaptureImage
+*/
+void CWebCameraActive::CancelCaptureImage()
+	{
+	iOperation = ECamActiveIdle;
+
+	iDriver.CaptureCancel();
+	SetActive();
+	}
+
--- a/mmplugins/cameraplugins/source/webcamera/ecamwebcameraactive.h	Thu Mar 25 11:21:36 2010 +0900
+++ b/mmplugins/cameraplugins/source/webcamera/ecamwebcameraactive.h	Tue Oct 19 11:48:59 2010 +0900
@@ -1,115 +1,115 @@
-/*
-* Copyright (c) 2010 ISB.
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of the "Symbian Foundation License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
-*
-* Initial Contributors:
-* ISB - Initial contribution
-*
-* Contributors:
-*
-* Description:
-*
-*/
-
-#ifndef ECAMWEBCAMERAACTIVE_H
-#define ECAMWEBCAMERAACTIVE_H
-
-#include "ecamwebcameraplugin.h"
-
-/**
- *  Perform an Async demand of the camera application
- */
-class CWebCameraActive : public CActive
-	{
-private:
-	
-	/**
-    Active Operation of ECamWebCamera
-    */
-	enum TECamWebCameraActiveOperation
-		{
-		ECamActiveIdle = 0,
-		ECamActiveReserve,
-		ECamActivePowerOn,
-		ECamActiveImageCapture,
-		};
-
-public:
-    /** Constructor */
-    /**
-     * @param aOwner 
-     		  pointer to callback object.
-     * @param aDriver 
-     		  reference to driver.
-     */
-    CWebCameraActive(MWebCameraActiveCallBack* aOwner, RWebcameraDevice& aDriver);
-	
-	/**> Destructor */
-	~CWebCameraActive();
-	
-    /**
-     * Two-phased constructor.
-     * @param aOwner 
-     		  pointer to callback object.
-     * @param aDriver 
-     		  reference to driver.
-     */
-	static CWebCameraActive* NewL(MWebCameraActiveCallBack* aOwner, RWebcameraDevice& aDriver);
-
-	/** 
-	Asynchronous function that performs any required initialisation and reserves
-	the camera for exclusive use.
-
-	Calls CWebCamera::ReserveCallBack when complete. 
-	*/
-	void Reserve();
-
-	/** 
-	Asynchronous method to switch on camera power.
-
-	User must have successfully called Reserve() prior to calling this function.
-
-	Calls CWebCamera::PowerOnCallBack when power on is complete. 
-	*/
-	void PowerOn();
-	
-	/** 
-	Cancels the asynchronous still image capture. 
-	
-	Calls CWebCamera::ImageCaptureCallBack when capture is complete. 
-	
-	* @param aDes descriptor to store a capture image
-	*/
-	void ImageCapture(TDes8& aDes);
-	
-	/** 
-	Cancels the asynchronous still image capture. 
-	
-	@see CWebCamera::CancelCaptureImage
-	*/
-	void CancelCaptureImage();
-
-private:
-	void ConstructL();
-
-private:
-    /**
-     * RunL.
-     */
-	void RunL();
-	void DoCancel();
-	void ViewFinderComplete(TInt aError);
-
-private:
-
-	MWebCameraActiveCallBack*		iOwner;		// origin of start.
-	TECamWebCameraActiveOperation	iOperation;	// Status of the Active Operation of ECamWebCamera
-	RWebcameraDevice				iDriver;	// Camera driver
-	};
-
-
-#endif // ECAMWEBCAMERAPLUGIN_H
+/*
+* Copyright (c) 2010 ISB.
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the "Symbian Foundation License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+*
+* Initial Contributors:
+* ISB - Initial contribution
+*
+* Contributors:
+*
+* Description:
+*
+*/
+
+#ifndef ECAMWEBCAMERAACTIVE_H
+#define ECAMWEBCAMERAACTIVE_H
+
+#include "ecamwebcameraplugin.h"
+
+/**
+ *  Perform an Async demand of the camera application
+ */
+class CWebCameraActive : public CActive
+	{
+private:
+	
+	/**
+    Active Operation of ECamWebCamera
+    */
+	enum TECamWebCameraActiveOperation
+		{
+		ECamActiveIdle = 0,
+		ECamActiveReserve,
+		ECamActivePowerOn,
+		ECamActiveImageCapture,
+		};
+
+public:
+    /** Constructor */
+    /**
+     * @param aOwner 
+     		  pointer to callback object.
+     * @param aDriver 
+     		  reference to driver.
+     */
+    CWebCameraActive(MWebCameraActiveCallBack* aOwner, RWebcameraDevice& aDriver);
+	
+	/** Destructor */
+	~CWebCameraActive();
+	
+    /**
+     * Two-phased constructor.
+     * @param aOwner 
+     		  pointer to callback object.
+     * @param aDriver 
+     		  reference to driver.
+     */
+	static CWebCameraActive* NewL(MWebCameraActiveCallBack* aOwner, RWebcameraDevice& aDriver);
+
+	/** 
+	Asynchronous function that performs any required initialisation and reserves
+	the camera for exclusive use.
+
+	Calls CWebCamera::ReserveCallBack when complete. 
+	*/
+	void Reserve();
+
+	/** 
+	Asynchronous method to switch on camera power.
+
+	User must have successfully called Reserve() prior to calling this function.
+
+	Calls CWebCamera::PowerOnCallBack when power on is complete. 
+	*/
+	void PowerOn();
+	
+	/** 
+	Cancels the asynchronous still image capture. 
+	
+	Calls CWebCamera::ImageCaptureCallBack when capture is complete. 
+	
+	* @param aDes descriptor to store a capture image
+	*/
+	void ImageCapture(TInt& aChunkSize);
+	
+	/** 
+	Cancels the asynchronous still image capture. 
+	
+	@see CWebCamera::CancelCaptureImage
+	*/
+	void CancelCaptureImage();
+
+private:
+	void ConstructL();
+
+private:
+    /**
+     * RunL.
+     */
+	void RunL();
+	void DoCancel();
+	void ViewFinderComplete(TInt aError);
+
+private:
+
+	MWebCameraActiveCallBack*		iOwner;		// origin of start.
+	TECamWebCameraActiveOperation	iOperation;	// Status of the Active Operation of ECamWebCamera
+	RWebcameraDevice				iDriver;	// Camera driver
+	};
+
+
+#endif // ECAMWEBCAMERAPLUGIN_H
--- a/mmplugins/cameraplugins/source/webcamera/ecamwebcameraadvset.cpp	Thu Mar 25 11:21:36 2010 +0900
+++ b/mmplugins/cameraplugins/source/webcamera/ecamwebcameraadvset.cpp	Tue Oct 19 11:48:59 2010 +0900
@@ -1,799 +1,799 @@
-/*
-* Copyright (c) 2010 ISB.
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of the "Symbian Foundation License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
-*
-* Initial Contributors:
-* ISB - Initial contribution
-*
-* Contributors:
-*
-* Description:
-*
-*/
-
-#include <w32std.h>
-#include <ecamerrors.h>
-#include "ecamwebcameraadvset.h"
-
-
-CWebCameraAdvSet::CWebCameraAdvSet(CWebCamera& aOwner)
-			   :iOwner(aOwner)
-	{
-	}
-	
-CWebCameraAdvSet::~CWebCameraAdvSet()
-	{
-	iSupportedISORates.Close();
-	}
-
-CWebCameraAdvSet* CWebCameraAdvSet::NewL(CWebCamera& aOwner)
-	{
-	CWebCameraAdvSet* self = new(ELeave) CWebCameraAdvSet(aOwner);
-	CleanupStack::PushL(self);
-	self->ConstructL();
-	CleanupStack::Pop(self);
-
-	return self;
-	}
-
-void CWebCameraAdvSet::Release()
-	{
-	}
-	
-void CWebCameraAdvSet::Init()
-	{
-	}
-	
-void CWebCameraAdvSet::ConstructL()
-	{
-	iSupportedISORates.Reset();
-	iSupportedISORates.AppendL(KDefaultIsoRate);
-	}
-
-CCamera::CCameraAdvancedSettings::TCameraType CWebCameraAdvSet::CameraType() const
-	{
-	return CCamera::CCameraAdvancedSettings::ECameraPluggable;
-	}
-
-CCamera::CCameraAdvancedSettings::TCameraType CWebCameraAdvSet::CameraType(TInt /*aCameraIndex*/) const
-	{
-	return CCamera::CCameraAdvancedSettings::ECameraUnknown;
-	}
-	
-TBool CWebCameraAdvSet::IsCameraPresent() const
-	{
-	return EFalse;
-	}
-
-TBool CWebCameraAdvSet::IsCameraPresent(TInt /*aCameraIndex*/) const
-	{
-	return EFalse;
-	}
-	
-TInt CWebCameraAdvSet::CameraIndex() const
-	{
-	return KErrNotSupported;
-	}
-	
-TInt CWebCameraAdvSet::SupportedStabilizationModes() const
-	{
-	return 0;
-	}
-	
-CCamera::CCameraAdvancedSettings::TStabilizationMode CWebCameraAdvSet::StabilizationMode() const
-	{
-	return CCamera::CCameraAdvancedSettings::EStabilizationModeOff;
-	}
-	
-void CWebCameraAdvSet::SetStabilizationMode(CCamera::CCameraAdvancedSettings::TStabilizationMode /*aStabilizationMode*/)
-	{
-	User::Leave(KErrNotSupported);
-	}
-	
-TInt CWebCameraAdvSet::SupportedFocusModes() const
-	{
-	return KErrNotSupported;
-	}
-	
-CCamera::CCameraAdvancedSettings::TFocusMode CWebCameraAdvSet::FocusMode() const
-	{
-	return CCamera::CCameraAdvancedSettings::EFocusModeAuto;
-	}
-	
-void CWebCameraAdvSet::SetFocusMode(CCamera::CCameraAdvancedSettings::TFocusMode /*aFocusMode*/)
-	{
-	User::Leave(KErrNotSupported);
-	}
-	
-TInt CWebCameraAdvSet::SupportedFocusRanges() const
-	{
-	return KErrNotSupported;
-	}
-	
-CCamera::CCameraAdvancedSettings::TFocusRange CWebCameraAdvSet::FocusRange() const
-	{
-	return CCamera::CCameraAdvancedSettings::EFocusRangeAuto;
-	}
-	
-void CWebCameraAdvSet::SetFocusRange(CCamera::CCameraAdvancedSettings::TFocusRange /*aFocusRange*/)
-	{
-	User::Leave(KErrNotSupported);
-	}
-	
-TInt CWebCameraAdvSet::SupportedAutoFocusTypes() const
-	{
-	return KErrNotSupported;
-	}
-	
-CCamera::CCameraAdvancedSettings::TAutoFocusType CWebCameraAdvSet::AutoFocusType() const
-	{
-    return CCamera::CCameraAdvancedSettings::EAutoFocusTypeOff;
-	}
-	
-void CWebCameraAdvSet::SetAutoFocusType(CCamera::CCameraAdvancedSettings::TAutoFocusType /*aAutoFocusType*/)
-	{
-	User::Leave(KErrNotSupported);
-	}
-	
-TInt CWebCameraAdvSet::SupportedAutoFocusAreas() const
-	{
-	return KErrNotSupported;
-	}
-	
-CCamera::CCameraAdvancedSettings::TAutoFocusArea CWebCameraAdvSet::AutoFocusArea() const
-	{
-	return CCamera::CCameraAdvancedSettings::EAutoFocusTypeAuto;
-	}
-	
-void CWebCameraAdvSet::SetAutoFocusArea(CCamera::CCameraAdvancedSettings::TAutoFocusArea /*aAutoFocusArea*/)
-	{
-	User::Leave(KErrNotSupported);
-	}
-	
-TInt CWebCameraAdvSet::FocusDistance() const
-	{
-	return KErrNotSupported;
-	}
-	
-void CWebCameraAdvSet::SetFocusDistance(TInt /*aDistance*/) 
-	{
-	User::Leave(KErrNotSupported);
-	}
-	
-TInt CWebCameraAdvSet::GetMinFocalLength() const
-	{
-	return KErrNotSupported;
-	}
-	
-void CWebCameraAdvSet::GetSupportedIsoRatesL(RArray<TInt>& aSupportedIsoRates) const
-	{
-	if(iSupportedISORates.Count() == 0)
-		{
-		User::Leave(KErrNotSupported);
-		}
-	
-	for(TInt index=0; index < iSupportedISORates.Count(); index++)
-		{
-		aSupportedIsoRates.AppendL(iSupportedISORates[index]);
-		}
-	}
-	
-TInt CWebCameraAdvSet::IsoRate() const
-	{
-	return KDefaultIsoRate;
-	}
-
-void CWebCameraAdvSet::SetIsoRate(TInt /*aRate*/)
-	{
-	User::Leave(KErrNotSupported);
-	}
-
-void CWebCameraAdvSet::GetSupportedISORateTypeL(TInt& /*aSupportedISORateTypes*/) const
-	{
-	User::Leave(KErrNotSupported);
-	}
-		
-void CWebCameraAdvSet::SetISORate(CCamera::CCameraAdvancedSettings::TISORateType /*aISORateType*/, TInt /*aParam*/)
-	{
-	User::Leave(KErrNotSupported);
-	}
-
-void CWebCameraAdvSet::GetISORateL(CCamera::CCameraAdvancedSettings::TISORateType& /*aISORateType*/, TInt& /*aParam*/, TInt& /*aISORate*/) const
-	{
-	User::Leave(KErrNotSupported);
-	}
-	
-void CWebCameraAdvSet::GetAperturesL(RArray<TInt>& /*aFStops*/, TValueInfo& /*aInfo*/) const
-	{
-	User::Leave(KErrNotSupported);
-	}
-	
-TInt CWebCameraAdvSet::Aperture() const
-	{
-	return KErrNotSupported;
-	}
-
-void CWebCameraAdvSet::SetAperture(TInt /*aFStop*/)
-	{	
-	User::Leave(KErrNotSupported);
-	}	
-	
-void CWebCameraAdvSet::GetShutterSpeedsL(RArray<TInt>& /*aShutterSpeeds*/, TValueInfo& /*aInfo*/) const
-	{
-	User::Leave(KErrNotSupported);
-	}
-	
-TInt CWebCameraAdvSet::ShutterSpeed() const
-	{
-	return KErrNotSupported;
-	}
-	
-void CWebCameraAdvSet::SetShutterSpeed(TInt /*aShutterSpeed*/)
-	{
-	User::Leave(KErrNotSupported);
-	}
-	
-TInt CWebCameraAdvSet::SupportedMeteringModes() const
-	{
-	return KErrNotSupported;
-	}
-	
-CCamera::CCameraAdvancedSettings::TMeteringMode CWebCameraAdvSet::MeteringMode() const
-	{
-	return CCamera::CCameraAdvancedSettings::EMeteringModeAuto;
-	}
-	
-void CWebCameraAdvSet::SetMeteringMode(CCamera::CCameraAdvancedSettings::TMeteringMode /*aMeteringMode*/)
-	{
-	User::Leave(KErrNotSupported);
-	}
-	
-TInt CWebCameraAdvSet::SupportedDriveModes() const
-	{
-	return KErrNotSupported;
-	}
-	
-CCamera::CCameraAdvancedSettings::TDriveMode CWebCameraAdvSet::DriveMode() const
-	{
-	return CCamera::CCameraAdvancedSettings::EDriveModeAuto;
-	}
-	
-void CWebCameraAdvSet::SetDriveMode(CCamera::CCameraAdvancedSettings::TDriveMode /*aDriveMode*/)
-	{
-	User::Leave(KErrNotSupported);
-	}
-	
-TInt CWebCameraAdvSet::SupportedBracketModes() const
-	{
-	return KErrNotSupported;
-	}
-	
-CCamera::CCameraAdvancedSettings::TBracketMode CWebCameraAdvSet::BracketMode() const
-	{
-	return CCamera::CCameraAdvancedSettings::EBracketModeOff;
-	}
-	
-void CWebCameraAdvSet::SetBracketMode(CCamera::CCameraAdvancedSettings::TBracketMode /*aBracketMode*/)
-	{
-	User::Leave(KErrNotSupported);
-	}
-	
-TInt CWebCameraAdvSet::SupportedBracketParameters() const
-	{
-	return KErrNotSupported;
-	}
-	
-CCamera::CCameraAdvancedSettings::TBracketParameter CWebCameraAdvSet::BracketParameter() const
-	{
-	return CCamera::CCameraAdvancedSettings::EBracketParameterNone;
-	}
-	
-void CWebCameraAdvSet::SetBracketParameter(CCamera::CCameraAdvancedSettings::TBracketParameter /*aBracketParameter*/)
-	{
-	User::Leave(KErrNotSupported);
-	}
-	
-TInt CWebCameraAdvSet::SupportedBracketSteps() const
-	{
-	return KErrNotSupported;
-	}
-	
-CCamera::CCameraAdvancedSettings::TBracketStep CWebCameraAdvSet::BracketStep() const
-	{
-	return CCamera::CCameraAdvancedSettings::EBracketStepNonConfig;
-	}
-	
-void CWebCameraAdvSet::SetBracketStep(CCamera::CCameraAdvancedSettings::TBracketStep /*aBracketStep*/)
-	{
-	User::Leave(KErrNotSupported);
-	}
-	
-void CWebCameraAdvSet::GetBracketMerge(TInt& /*aStartIndex*/, TInt& /*aFrames*/) const
-	{
-	User::Leave(KErrNotSupported);
-	}
-	
-void CWebCameraAdvSet::SetBracketMerge(TInt /*aStartIndex*/ , TInt /*aFrames*/)
-	{
-	User::Leave(KErrNotSupported);
-	}
-	
-TInt CWebCameraAdvSet::SupportedFlashModes() const
-	{
-	return KErrNotSupported;
-	}
-	
-CCamera::TFlash CWebCameraAdvSet::FlashMode() const
-	{
-	return CCamera::EFlashNone;
-	}
-	
-void CWebCameraAdvSet::SetFlashMode(CCamera::TFlash /*aMode*/)
-	{
-	User::Leave(KErrNotSupported);
-	}
-	
-TBool CWebCameraAdvSet::RedEyeReduceOn() const
-	{
-	return EFalse;
-	}
-	
-void CWebCameraAdvSet::SetRedEyeReduceOn(TBool /*aState*/)
-	{
-	User::Leave(KErrNotSupported);
-	}
-	
-void CWebCameraAdvSet::GetFlashCompensationStepsL(RArray<TInt>& /*aFlashCompensationSteps*/, TValueInfo& /*aInfo*/) const
-	{
-	User::Leave(KErrNotSupported);
-	}
-	
-TInt CWebCameraAdvSet::FlashCompensationStep() const
-	{
-	return KErrNotSupported;
-	}
-
-TInt CWebCameraAdvSet::GetFlashCompensationStep(TInt& /*aFlashCompensationStep*/) const
-	{
-	return KErrNotSupported;
-	}
-	
-void CWebCameraAdvSet::GetFlashCompensationRangeInSteps(TInt& /*aNegativeCompensation*/, TInt& /*aPositiveCompensation*/) const
-	{
-	User::Leave(KErrNotSupported);
-	}
-	
-void CWebCameraAdvSet::SetFlashCompensationStep(TInt /*aFlashCompensationStep*/)
-	{
-	User::Leave(KErrNotSupported);
-	}
-	
-TInt CWebCameraAdvSet::FlashCompensation() const
-	{
-	return KErrNotSupported;
-	}
-	
-TInt CWebCameraAdvSet::GetFlashCompensation(TInt& /*aFlashCompensation*/) const
-	{
-	return KErrNotSupported;
-	}
-	
-void CWebCameraAdvSet::SetFlashCompensation(TInt /*aFlashCompensation*/)
-	{
-	User::Leave(KErrNotSupported);
-	}
-	
-TBool CWebCameraAdvSet::IsExternalFlashPresent() const
-	{
-	return EFalse;
-	}
-	
-void CWebCameraAdvSet::GetManualFlashPowerLevelsL(RArray<TInt>& /*aManualFlashPowerLevels*/, TValueInfo& /*aInfo*/) const
-	{
-	User::Leave(KErrNotSupported);
-	}
-	
-TInt CWebCameraAdvSet::ManualFlashPowerLevel() const
-	{
-	return KErrNotSupported;
-	}
-	
-void CWebCameraAdvSet::SetManualFlashPowerLevel(TInt /*aManualFlashPowerLevel*/)
-	{
-	User::Leave(KErrNotSupported);
-	}
-	
-TInt CWebCameraAdvSet::SupportedExposureModes() const
-	{
-	return CCamera::EExposureAuto;
-	}
-	
-CCamera::TExposure CWebCameraAdvSet::ExposureMode() const
-	{
-	return CCamera::EExposureAuto;
-	}
-
-void CWebCameraAdvSet::SetExposureMode(CCamera::TExposure /*aExposureMode*/)
-	{
-	User::Leave(KErrNotSupported);
-	}
-
-void CWebCameraAdvSet::GetExposureCompensationStepsL(RArray<TInt>& aExposureCompensationSteps, TValueInfo& aInfo) const
-	{
-	aExposureCompensationSteps.Reset();
-	aInfo = ENotActive;
-	}
-
-void CWebCameraAdvSet::GetExposureCompensationRangeInSteps(TInt& /*aNegativeCompensation*/, TInt& /*aPositiveCompensation*/) const
-	{
-	User::Leave(KErrNotSupported);
-	}
-	
-TInt CWebCameraAdvSet::ExposureCompensationStep() const
-	{
-	return 0;
-	}
-	
-TInt CWebCameraAdvSet::GetExposureCompensationStep(TInt& /*aExposureCompensationStep*/) const
-	{
-	return KErrNotSupported;
-	}
-	
-void CWebCameraAdvSet::SetExposureCompensationStep(TInt /*aExposureCompensationStep*/)
-	{
-	User::Leave(KErrNotSupported);
-	}
-	
-TInt CWebCameraAdvSet::ExposureCompensation() const
-	{
-	return KErrNotSupported;
-	}
-	
-TInt CWebCameraAdvSet::GetExposureCompensation(TInt& /*aExposureCompensation*/) const
-	{
-	return KErrNotSupported;
-	}
-	
-void CWebCameraAdvSet::SetExposureCompensation(TInt /*aExposureCompensation*/)
-	{
-	User::Leave(KErrNotSupported);
-	}
-	
-TInt CWebCameraAdvSet::SupportedWhiteBalanceModes() const
-	{
-	return KErrNotSupported;
-	}
-	
-CCamera::TWhiteBalance CWebCameraAdvSet::WhiteBalanceMode() const
-	{
-	return CCamera::EWBAuto;
-	}
-	
-void CWebCameraAdvSet::SetWhiteBalanceMode(CCamera::TWhiteBalance /*aWhiteBalanceMode*/)
-	{
-	User::Leave(KErrNotSupported);
-	}
-	
-TBool CWebCameraAdvSet::ApertureExposureLockOn() const
-	{
-	return EFalse;
-	}
-	
-void CWebCameraAdvSet::SetApertureExposureLockOn(TBool /*aAELock*/)
-	{
-	User::Leave(KErrNotSupported);
-	}
-	
-TBool CWebCameraAdvSet::ShootClickOn() const
-	{
-	return EFalse;
-	}
-	
-void CWebCameraAdvSet::SetShootClickOn(TBool /*aShootClickOn*/)
-	{
-	User::Leave(KErrNotSupported);
-	}
-	
-void CWebCameraAdvSet::GetTimerIntervalsL(RArray<TInt>& /*aTimerIntervals*/, TValueInfo& /*aInfo*/) const
-	{
-	User::Leave(KErrNotSupported);
-	}
-
-TInt CWebCameraAdvSet::TimerInterval() const
-	{
-	return KErrNotSupported;
-	}
-	
-void CWebCameraAdvSet::SetTimerInterval(TInt /*aTimerInterval*/)
-	{
-	User::Leave(KErrNotSupported);
-	}
-	
-void CWebCameraAdvSet::GetTimeLapsePeriodRange(TTime& /*aTimeLapseMin*/, TTime& /*aTimeLapseMax*/) const
-	{
-	User::Leave(KErrNotSupported);
-	}
-	
-void CWebCameraAdvSet::GetTimeLapse(TTime& /*aStart*/, TTime& /*aEnd*/, TTime& /*aInterval*/) const
-	{
-	User::Leave(KErrNotSupported);
-	}
-	
-void CWebCameraAdvSet::SetTimeLapse(const TTime& /*aStart*/, const TTime& /*aEnd*/, const TTime& /*aInterval*/)
-	{
-	User::Leave(KErrNotSupported);
-	}
-	
-CCamera::CCameraAdvancedSettings::TPictureOrientation CWebCameraAdvSet::PictureOrientation() const
-	{
-	return CCamera::CCameraAdvancedSettings::EPictureOrientationUnknown;
-	}
-	
-void CWebCameraAdvSet::SetPictureOrientation(CCamera::CCameraAdvancedSettings::TPictureOrientation /*aOrientation*/)
-	{
-	User::Leave(KErrNotSupported);
-	}
-	
-TInt CWebCameraAdvSet::SupportedPixelAspectRatios() const
-	{
-	return KErrNotSupported;
-	}
-	
-CCamera::CCameraAdvancedSettings::TPixelAspectRatio CWebCameraAdvSet::PixelAspectRatio() const
-	{
-	return CCamera::CCameraAdvancedSettings::EPixelAspectUnknown;
-	}
-	
-void CWebCameraAdvSet::SetPixelAspectRatio(CCamera::CCameraAdvancedSettings::TPixelAspectRatio /*aPixelAspectRatio*/)
-	{
-	User::Leave(KErrNotSupported);
-	}
-	
-TInt CWebCameraAdvSet::SupportedYuvRanges() const
-	{
-	return KErrNotSupported;
-	}
-	
-CCamera::CCameraAdvancedSettings::TYuvRange CWebCameraAdvSet::YuvRange() const
-	{
-	return CCamera::CCameraAdvancedSettings::EYuvRangeUnknown;
-	}
-	
-void CWebCameraAdvSet::SetYuvRange(CCamera::CCameraAdvancedSettings::TYuvRange /*aYuvRange*/)
-	{
-	User::Leave(KErrNotSupported);
-	}
-	
-TInt CWebCameraAdvSet::BurstImages() const
-	{
-	return KErrNotSupported;
-	}
-	
-void CWebCameraAdvSet::SetBurstImages(TInt /*aImages*/)
-	{
-	User::Leave(KErrNotSupported);
-	}
-	
-void CWebCameraAdvSet::GetOpticalZoomStepsL(RArray<TInt>& /*aOpticalZoomSteps*/, TValueInfo& /*aInfo*/) const
-	{	
-	User::Leave(KErrNotSupported);
-	}
-	
-TInt CWebCameraAdvSet::OpticalZoom() const
-	{
-	return KECamFineResolutionFactor;
-	}
-	
-void CWebCameraAdvSet::SetOpticalZoom(TInt /*aOpticalZoom*/)
-	{
-	User::Leave(KErrNotSupported);
-	}
-	
-void CWebCameraAdvSet::GetDigitalZoomStepsL(RArray<TInt>& aDigitalZoomSteps, TValueInfo& aInfo) const
-	{
-	aDigitalZoomSteps.Reset();
-	aDigitalZoomSteps.AppendL(KECamFineResolutionFactor);
-	aInfo = EDiscreteSteps;
-	}
-	
-void CWebCameraAdvSet::GetDigitalZoomStepsForStillL(RArray<TInt>& aDigitalZoomSteps, TValueInfo& aInfo, TInt /*aSizeIndex*/, 
-								 CCamera::TFormat /*aFormat*/, TBool& /*aIsInfluencePossible*/) const
-	{
-	aDigitalZoomSteps.Reset();
-	aDigitalZoomSteps.AppendL(KECamFineResolutionFactor);
-	aInfo = EDiscreteSteps;
-	}
-
-void CWebCameraAdvSet::GetDigitalZoomStepsForVideoL(RArray<TInt>& aDigitalZoomSteps, TValueInfo& aInfo, TInt /*aFrameRateIndex*/,
-								 TInt /*aSizeIndex*/, CCamera::TFormat /*aFormat*/, TBool& /*aIsInfluencePossible*/, CCamera::TExposure /*aExposure*/) const
-	{
-	aDigitalZoomSteps.Reset();
-	aDigitalZoomSteps.AppendL(KECamFineResolutionFactor);
-	aInfo = EDiscreteSteps;
-	}
-
-TInt CWebCameraAdvSet::DigitalZoom() const
-	{
-	return KErrNotSupported;
-	}
-
-void CWebCameraAdvSet::SetDigitalZoom(TInt /*aDigitalZoom*/)
-	{
-	User::Leave(KErrNotSupported);
-	}
-	
-TBool CWebCameraAdvSet::ExposureLockOn() const
-	{
-	return EFalse;
-	}
-
-void CWebCameraAdvSet::SetExposureLockOn(TBool /*aState*/)
-	{
-	User::Leave(KErrNotSupported);
-	}
-		
-TBool CWebCameraAdvSet::AutoFocusLockOn() const
-	{
-	return EFalse;
-	}
-
-void CWebCameraAdvSet::SetAutoFocusLockOn(TBool /*aState*/)
-	{	
-	User::Leave(KErrNotSupported);
-	}
-
-void CWebCameraAdvSet::GetSupportedSettingsL(RArray<TUid>& /*aSettings*/) const
-	{
-	User::Leave(KErrNotSupported);
-	}
-    
-void CWebCameraAdvSet::GetActiveSettingsL(RArray<TUid>& /*aActiveSettings*/) const
-	{
-	User::Leave(KErrNotSupported);
-	}
- 
-void CWebCameraAdvSet::GetDisabledSettingsL(RArray<TUid>& /*aDisbledSettings*/) const
-	{
-	User::Leave(KErrNotSupported);
-	}
-	    
-void CWebCameraAdvSet::SetAutomaticSizeSelectionChangeOn(TBool /*aSetOn*/)
-	{
-	}
-	
-TBool CWebCameraAdvSet::AutomaticSizeSelectionChangeOn() const
-	{
-	return EFalse;
-	}
-
-void CWebCameraAdvSet::GetSupportedContinuousAutoFocusTimeoutsL(RArray<TInt>& /*aTimeouts*/, TValueInfo& /*aInfo*/) const
-	{
-	User::Leave(KErrNotSupported);
-	}
-	
-void CWebCameraAdvSet::SetContinuousAutoFocusTimeout(TInt /*aTimeout*/)
-	{
-	User::Leave(KErrNotSupported);
-	}
-	
-void CWebCameraAdvSet::SetStabilizationEffect(CCamera::CCameraAdvancedSettings::TStabilizationEffect /*aEffect*/)
-	{
-	User::Leave(KErrNotSupported);
-	}
-	
-CCamera::CCameraAdvancedSettings::TStabilizationEffect CWebCameraAdvSet::StabilizationEffect() const
-	{
-	return CCamera::CCameraAdvancedSettings::EStabilizationOff;
-	}
-
-TInt CWebCameraAdvSet::SupportedStabilizationEffects() const
-	{
-	return CCamera::CCameraAdvancedSettings::EStabilizationOff;
-	}
-
-TInt CWebCameraAdvSet::SupportedStabilizationComplexityValues() const
-	{
-	return CCamera::CCameraAdvancedSettings::EStabilizationOff;
-	}
-	
-CCamera::CCameraAdvancedSettings::TStabilizationAlgorithmComplexity CWebCameraAdvSet::StabilizationComplexity() const
-	{
-	return CCamera::CCameraAdvancedSettings::EStabilizationComplexityAuto;
-	}
-	
-void CWebCameraAdvSet::SetStabilizationComplexity(CCamera::CCameraAdvancedSettings::TStabilizationAlgorithmComplexity /*aComplexity*/)
-	{
-	User::Leave(KErrNotSupported);
-	}
-	
-CCamera::CCameraAdvancedSettings::TWBUnits CWebCameraAdvSet::SupportedWBUnits() const
-	{
-	return CCamera::CCameraAdvancedSettings::EWBUnknown;
-	}
-	
-void CWebCameraAdvSet::SetWBRgbValue(const TRgb& /*aValue*/)
-	{
-	User::Leave(KErrNotSupported);
-	}
-	
-void CWebCameraAdvSet::GetWBRgbValue(TRgb& /*aValue*/) const
-	{
-	User::Leave(KErrNotSupported);
-	}
-	
-void CWebCameraAdvSet::GetWBSupportedColorTemperaturesL(RArray<TInt>& /*aWBColorTemperatures*/, TValueInfo& /*aInfo*/) const
-	{
-	User::Leave(KErrNotSupported);
-	}
-	
-void CWebCameraAdvSet::SetWBColorTemperature(TInt /*aColorTemperature*/)
-	{
-	User::Leave(KErrNotSupported);
-	}
-
-TInt CWebCameraAdvSet::WBColorTemperature() const
-	{
-	return KErrNotSupported;
-	}
-
-TInt CWebCameraAdvSet::ContinuousAutoFocusTimeout() const
-	{
-	return KErrNotSupported;
-	}
-
-TInt CWebCameraAdvSet::IsFlashReady(TBool& aReady) const
-	{
-	aReady = 0;
-	return KErrNone;
-	}
-
-void CWebCameraAdvSet::GetCurrentFocusModeStepsL(RArray<TInt>& /*aFocusModeSteps*/, TValueInfo& /*aInfo*/) const
-	{
-	User::Leave(KErrNotSupported);
-	}
-	
-void CWebCameraAdvSet::SetReferenceScreen(CWsScreenDevice& /*aScreenDevice*/)
-	{
-	User::Leave(KErrNotSupported);
-	}
-	
-void CWebCameraAdvSet::GetPreCaptureWarningSupportedL(CCamera::CCameraAdvancedSettings::TCameraMode /*aCameraMode*/, TInt& /*aPreCaptureWarningSupported*/) const
-	{
-	User::Leave(KErrNotSupported);
-	}
-
-void CWebCameraAdvSet::SubscribeToPreCaptureWarningL(TInt /*aPreCaptureWarning*/)
-	{
-	User::Leave(KErrNotSupported);
-	}
-	
-void CWebCameraAdvSet::UnSubscribePreCaptureWarningL()
-	{
-	User::Leave(KErrNotSupported);
-	}
-	
-void CWebCameraAdvSet::GetPreCaptureWarningL(TInt& /*aPreCaptureWarning*/) const
-	{
-	User::Leave(KErrNotSupported);
-	}
-	
-void CWebCameraAdvSet::GetSupportedAFAssistantLightL(TInt& /*aSupportedAFAssistantLight*/) const
-	{
-	User::Leave(KErrNotSupported);
-	}
-
-void CWebCameraAdvSet::GetAFAssistantLightL(CCamera::CCameraAdvancedSettings::TAFAssistantLight& /*aAFAssistantLight*/) const
-	{
-	User::Leave(KErrNotSupported);
-	}
-
-void CWebCameraAdvSet::SetAFAssistantLight(CCamera::CCameraAdvancedSettings::TAFAssistantLight /*aAFAssistantLight*/)
-	{
-	User::Leave(KErrNotSupported);
-	}
-	
-
+/*
+* Copyright (c) 2010 ISB.
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the "Symbian Foundation License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+*
+* Initial Contributors:
+* ISB - Initial contribution
+*
+* Contributors:
+*
+* Description:
+*
+*/
+
+#include <w32std.h>
+#include <ecamerrors.h>
+#include "ecamwebcameraadvset.h"
+
+
+CWebCameraAdvSet::CWebCameraAdvSet(CWebCamera& aOwner)
+			   :iOwner(aOwner)
+	{
+	}
+	
+CWebCameraAdvSet::~CWebCameraAdvSet()
+	{
+	iSupportedISORates.Close();
+	}
+
+CWebCameraAdvSet* CWebCameraAdvSet::NewL(CWebCamera& aOwner)
+	{
+	CWebCameraAdvSet* self = new(ELeave) CWebCameraAdvSet(aOwner);
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	CleanupStack::Pop(self);
+
+	return self;
+	}
+
+void CWebCameraAdvSet::Release()
+	{
+	}
+	
+void CWebCameraAdvSet::Init()
+	{
+	}
+	
+void CWebCameraAdvSet::ConstructL()
+	{
+	iSupportedISORates.Reset();
+	iSupportedISORates.AppendL(KDefaultIsoRate);
+	}
+
+CCamera::CCameraAdvancedSettings::TCameraType CWebCameraAdvSet::CameraType() const
+	{
+	return CCamera::CCameraAdvancedSettings::ECameraPluggable;
+	}
+
+CCamera::CCameraAdvancedSettings::TCameraType CWebCameraAdvSet::CameraType(TInt /*aCameraIndex*/) const
+	{
+	return CCamera::CCameraAdvancedSettings::ECameraUnknown;
+	}
+	
+TBool CWebCameraAdvSet::IsCameraPresent() const
+	{
+	return EFalse;
+	}
+
+TBool CWebCameraAdvSet::IsCameraPresent(TInt /*aCameraIndex*/) const
+	{
+	return EFalse;
+	}
+	
+TInt CWebCameraAdvSet::CameraIndex() const
+	{
+	return KErrNotSupported;
+	}
+	
+TInt CWebCameraAdvSet::SupportedStabilizationModes() const
+	{
+	return 0;
+	}
+	
+CCamera::CCameraAdvancedSettings::TStabilizationMode CWebCameraAdvSet::StabilizationMode() const
+	{
+	return CCamera::CCameraAdvancedSettings::EStabilizationModeOff;
+	}
+	
+void CWebCameraAdvSet::SetStabilizationMode(CCamera::CCameraAdvancedSettings::TStabilizationMode /*aStabilizationMode*/)
+	{
+	User::Leave(KErrNotSupported);
+	}
+	
+TInt CWebCameraAdvSet::SupportedFocusModes() const
+	{
+	return KErrNotSupported;
+	}
+	
+CCamera::CCameraAdvancedSettings::TFocusMode CWebCameraAdvSet::FocusMode() const
+	{
+	return CCamera::CCameraAdvancedSettings::EFocusModeAuto;
+	}
+	
+void CWebCameraAdvSet::SetFocusMode(CCamera::CCameraAdvancedSettings::TFocusMode /*aFocusMode*/)
+	{
+	User::Leave(KErrNotSupported);
+	}
+	
+TInt CWebCameraAdvSet::SupportedFocusRanges() const
+	{
+	return KErrNotSupported;
+	}
+	
+CCamera::CCameraAdvancedSettings::TFocusRange CWebCameraAdvSet::FocusRange() const
+	{
+	return CCamera::CCameraAdvancedSettings::EFocusRangeAuto;
+	}
+	
+void CWebCameraAdvSet::SetFocusRange(CCamera::CCameraAdvancedSettings::TFocusRange /*aFocusRange*/)
+	{
+	User::Leave(KErrNotSupported);
+	}
+	
+TInt CWebCameraAdvSet::SupportedAutoFocusTypes() const
+	{
+	return KErrNotSupported;
+	}
+	
+CCamera::CCameraAdvancedSettings::TAutoFocusType CWebCameraAdvSet::AutoFocusType() const
+	{
+    return CCamera::CCameraAdvancedSettings::EAutoFocusTypeOff;
+	}
+	
+void CWebCameraAdvSet::SetAutoFocusType(CCamera::CCameraAdvancedSettings::TAutoFocusType /*aAutoFocusType*/)
+	{
+	User::Leave(KErrNotSupported);
+	}
+	
+TInt CWebCameraAdvSet::SupportedAutoFocusAreas() const
+	{
+	return KErrNotSupported;
+	}
+	
+CCamera::CCameraAdvancedSettings::TAutoFocusArea CWebCameraAdvSet::AutoFocusArea() const
+	{
+	return CCamera::CCameraAdvancedSettings::EAutoFocusTypeAuto;
+	}
+	
+void CWebCameraAdvSet::SetAutoFocusArea(CCamera::CCameraAdvancedSettings::TAutoFocusArea /*aAutoFocusArea*/)
+	{
+	User::Leave(KErrNotSupported);
+	}
+	
+TInt CWebCameraAdvSet::FocusDistance() const
+	{
+	return KErrNotSupported;
+	}
+	
+void CWebCameraAdvSet::SetFocusDistance(TInt /*aDistance*/) 
+	{
+	User::Leave(KErrNotSupported);
+	}
+	
+TInt CWebCameraAdvSet::GetMinFocalLength() const
+	{
+	return KErrNotSupported;
+	}
+	
+void CWebCameraAdvSet::GetSupportedIsoRatesL(RArray<TInt>& aSupportedIsoRates) const
+	{
+	if(iSupportedISORates.Count() == 0)
+		{
+		User::Leave(KErrNotSupported);
+		}
+	
+	for(TInt index=0; index < iSupportedISORates.Count(); index++)
+		{
+		aSupportedIsoRates.AppendL(iSupportedISORates[index]);
+		}
+	}
+	
+TInt CWebCameraAdvSet::IsoRate() const
+	{
+	return KDefaultIsoRate;
+	}
+
+void CWebCameraAdvSet::SetIsoRate(TInt /*aRate*/)
+	{
+	User::Leave(KErrNotSupported);
+	}
+
+void CWebCameraAdvSet::GetSupportedISORateTypeL(TInt& /*aSupportedISORateTypes*/) const
+	{
+	User::Leave(KErrNotSupported);
+	}
+		
+void CWebCameraAdvSet::SetISORate(CCamera::CCameraAdvancedSettings::TISORateType /*aISORateType*/, TInt /*aParam*/)
+	{
+	User::Leave(KErrNotSupported);
+	}
+
+void CWebCameraAdvSet::GetISORateL(CCamera::CCameraAdvancedSettings::TISORateType& /*aISORateType*/, TInt& /*aParam*/, TInt& /*aISORate*/) const
+	{
+	User::Leave(KErrNotSupported);
+	}
+	
+void CWebCameraAdvSet::GetAperturesL(RArray<TInt>& /*aFStops*/, TValueInfo& /*aInfo*/) const
+	{
+	User::Leave(KErrNotSupported);
+	}
+	
+TInt CWebCameraAdvSet::Aperture() const
+	{
+	return KErrNotSupported;
+	}
+
+void CWebCameraAdvSet::SetAperture(TInt /*aFStop*/)
+	{	
+	User::Leave(KErrNotSupported);
+	}	
+	
+void CWebCameraAdvSet::GetShutterSpeedsL(RArray<TInt>& /*aShutterSpeeds*/, TValueInfo& /*aInfo*/) const
+	{
+	User::Leave(KErrNotSupported);
+	}
+	
+TInt CWebCameraAdvSet::ShutterSpeed() const
+	{
+	return KErrNotSupported;
+	}
+	
+void CWebCameraAdvSet::SetShutterSpeed(TInt /*aShutterSpeed*/)
+	{
+	User::Leave(KErrNotSupported);
+	}
+	
+TInt CWebCameraAdvSet::SupportedMeteringModes() const
+	{
+	return KErrNotSupported;
+	}
+	
+CCamera::CCameraAdvancedSettings::TMeteringMode CWebCameraAdvSet::MeteringMode() const
+	{
+	return CCamera::CCameraAdvancedSettings::EMeteringModeAuto;
+	}
+	
+void CWebCameraAdvSet::SetMeteringMode(CCamera::CCameraAdvancedSettings::TMeteringMode /*aMeteringMode*/)
+	{
+	User::Leave(KErrNotSupported);
+	}
+	
+TInt CWebCameraAdvSet::SupportedDriveModes() const
+	{
+	return KErrNotSupported;
+	}
+	
+CCamera::CCameraAdvancedSettings::TDriveMode CWebCameraAdvSet::DriveMode() const
+	{
+	return CCamera::CCameraAdvancedSettings::EDriveModeAuto;
+	}
+	
+void CWebCameraAdvSet::SetDriveMode(CCamera::CCameraAdvancedSettings::TDriveMode /*aDriveMode*/)
+	{
+	User::Leave(KErrNotSupported);
+	}
+	
+TInt CWebCameraAdvSet::SupportedBracketModes() const
+	{
+	return KErrNotSupported;
+	}
+	
+CCamera::CCameraAdvancedSettings::TBracketMode CWebCameraAdvSet::BracketMode() const
+	{
+	return CCamera::CCameraAdvancedSettings::EBracketModeOff;
+	}
+	
+void CWebCameraAdvSet::SetBracketMode(CCamera::CCameraAdvancedSettings::TBracketMode /*aBracketMode*/)
+	{
+	User::Leave(KErrNotSupported);
+	}
+	
+TInt CWebCameraAdvSet::SupportedBracketParameters() const
+	{
+	return KErrNotSupported;
+	}
+	
+CCamera::CCameraAdvancedSettings::TBracketParameter CWebCameraAdvSet::BracketParameter() const
+	{
+	return CCamera::CCameraAdvancedSettings::EBracketParameterNone;
+	}
+	
+void CWebCameraAdvSet::SetBracketParameter(CCamera::CCameraAdvancedSettings::TBracketParameter /*aBracketParameter*/)
+	{
+	User::Leave(KErrNotSupported);
+	}
+	
+TInt CWebCameraAdvSet::SupportedBracketSteps() const
+	{
+	return KErrNotSupported;
+	}
+	
+CCamera::CCameraAdvancedSettings::TBracketStep CWebCameraAdvSet::BracketStep() const
+	{
+	return CCamera::CCameraAdvancedSettings::EBracketStepNonConfig;
+	}
+	
+void CWebCameraAdvSet::SetBracketStep(CCamera::CCameraAdvancedSettings::TBracketStep /*aBracketStep*/)
+	{
+	User::Leave(KErrNotSupported);
+	}
+	
+void CWebCameraAdvSet::GetBracketMerge(TInt& /*aStartIndex*/, TInt& /*aFrames*/) const
+	{
+	User::Leave(KErrNotSupported);
+	}
+	
+void CWebCameraAdvSet::SetBracketMerge(TInt /*aStartIndex*/ , TInt /*aFrames*/)
+	{
+	User::Leave(KErrNotSupported);
+	}
+	
+TInt CWebCameraAdvSet::SupportedFlashModes() const
+	{
+	return KErrNotSupported;
+	}
+	
+CCamera::TFlash CWebCameraAdvSet::FlashMode() const
+	{
+	return CCamera::EFlashNone;
+	}
+	
+void CWebCameraAdvSet::SetFlashMode(CCamera::TFlash /*aMode*/)
+	{
+	User::Leave(KErrNotSupported);
+	}
+	
+TBool CWebCameraAdvSet::RedEyeReduceOn() const
+	{
+	return EFalse;
+	}
+	
+void CWebCameraAdvSet::SetRedEyeReduceOn(TBool /*aState*/)
+	{
+	User::Leave(KErrNotSupported);
+	}
+	
+void CWebCameraAdvSet::GetFlashCompensationStepsL(RArray<TInt>& /*aFlashCompensationSteps*/, TValueInfo& /*aInfo*/) const
+	{
+	User::Leave(KErrNotSupported);
+	}
+	
+TInt CWebCameraAdvSet::FlashCompensationStep() const
+	{
+	return KErrNotSupported;
+	}
+
+TInt CWebCameraAdvSet::GetFlashCompensationStep(TInt& /*aFlashCompensationStep*/) const
+	{
+	return KErrNotSupported;
+	}
+	
+void CWebCameraAdvSet::GetFlashCompensationRangeInSteps(TInt& /*aNegativeCompensation*/, TInt& /*aPositiveCompensation*/) const
+	{
+	User::Leave(KErrNotSupported);
+	}
+	
+void CWebCameraAdvSet::SetFlashCompensationStep(TInt /*aFlashCompensationStep*/)
+	{
+	User::Leave(KErrNotSupported);
+	}
+	
+TInt CWebCameraAdvSet::FlashCompensation() const
+	{
+	return KErrNotSupported;
+	}
+	
+TInt CWebCameraAdvSet::GetFlashCompensation(TInt& /*aFlashCompensation*/) const
+	{
+	return KErrNotSupported;
+	}
+	
+void CWebCameraAdvSet::SetFlashCompensation(TInt /*aFlashCompensation*/)
+	{
+	User::Leave(KErrNotSupported);
+	}
+	
+TBool CWebCameraAdvSet::IsExternalFlashPresent() const
+	{
+	return EFalse;
+	}
+	
+void CWebCameraAdvSet::GetManualFlashPowerLevelsL(RArray<TInt>& /*aManualFlashPowerLevels*/, TValueInfo& /*aInfo*/) const
+	{
+	User::Leave(KErrNotSupported);
+	}
+	
+TInt CWebCameraAdvSet::ManualFlashPowerLevel() const
+	{
+	return KErrNotSupported;
+	}
+	
+void CWebCameraAdvSet::SetManualFlashPowerLevel(TInt /*aManualFlashPowerLevel*/)
+	{
+	User::Leave(KErrNotSupported);
+	}
+	
+TInt CWebCameraAdvSet::SupportedExposureModes() const
+	{
+	return CCamera::EExposureAuto;
+	}
+	
+CCamera::TExposure CWebCameraAdvSet::ExposureMode() const
+	{
+	return CCamera::EExposureAuto;
+	}
+
+void CWebCameraAdvSet::SetExposureMode(CCamera::TExposure /*aExposureMode*/)
+	{
+	User::Leave(KErrNotSupported);
+	}
+
+void CWebCameraAdvSet::GetExposureCompensationStepsL(RArray<TInt>& aExposureCompensationSteps, TValueInfo& aInfo) const
+	{
+	aExposureCompensationSteps.Reset();
+	aInfo = ENotActive;
+	}
+
+void CWebCameraAdvSet::GetExposureCompensationRangeInSteps(TInt& /*aNegativeCompensation*/, TInt& /*aPositiveCompensation*/) const
+	{
+	User::Leave(KErrNotSupported);
+	}
+	
+TInt CWebCameraAdvSet::ExposureCompensationStep() const
+	{
+	return 0;
+	}
+	
+TInt CWebCameraAdvSet::GetExposureCompensationStep(TInt& /*aExposureCompensationStep*/) const
+	{
+	return KErrNotSupported;
+	}
+	
+void CWebCameraAdvSet::SetExposureCompensationStep(TInt /*aExposureCompensationStep*/)
+	{
+	User::Leave(KErrNotSupported);
+	}
+	
+TInt CWebCameraAdvSet::ExposureCompensation() const
+	{
+	return KErrNotSupported;
+	}
+	
+TInt CWebCameraAdvSet::GetExposureCompensation(TInt& /*aExposureCompensation*/) const
+	{
+	return KErrNotSupported;
+	}
+	
+void CWebCameraAdvSet::SetExposureCompensation(TInt /*aExposureCompensation*/)
+	{
+	User::Leave(KErrNotSupported);
+	}
+	
+TInt CWebCameraAdvSet::SupportedWhiteBalanceModes() const
+	{
+	return KErrNotSupported;
+	}
+	
+CCamera::TWhiteBalance CWebCameraAdvSet::WhiteBalanceMode() const
+	{
+	return CCamera::EWBAuto;
+	}
+	
+void CWebCameraAdvSet::SetWhiteBalanceMode(CCamera::TWhiteBalance /*aWhiteBalanceMode*/)
+	{
+	User::Leave(KErrNotSupported);
+	}
+	
+TBool CWebCameraAdvSet::ApertureExposureLockOn() const
+	{
+	return EFalse;
+	}
+	
+void CWebCameraAdvSet::SetApertureExposureLockOn(TBool /*aAELock*/)
+	{
+	User::Leave(KErrNotSupported);
+	}
+	
+TBool CWebCameraAdvSet::ShootClickOn() const
+	{
+	return EFalse;
+	}
+	
+void CWebCameraAdvSet::SetShootClickOn(TBool /*aShootClickOn*/)
+	{
+	User::Leave(KErrNotSupported);
+	}
+	
+void CWebCameraAdvSet::GetTimerIntervalsL(RArray<TInt>& /*aTimerIntervals*/, TValueInfo& /*aInfo*/) const
+	{
+	User::Leave(KErrNotSupported);
+	}
+
+TInt CWebCameraAdvSet::TimerInterval() const
+	{
+	return KErrNotSupported;
+	}
+	
+void CWebCameraAdvSet::SetTimerInterval(TInt /*aTimerInterval*/)
+	{
+	User::Leave(KErrNotSupported);
+	}
+	
+void CWebCameraAdvSet::GetTimeLapsePeriodRange(TTime& /*aTimeLapseMin*/, TTime& /*aTimeLapseMax*/) const
+	{
+	User::Leave(KErrNotSupported);
+	}
+	
+void CWebCameraAdvSet::GetTimeLapse(TTime& /*aStart*/, TTime& /*aEnd*/, TTime& /*aInterval*/) const
+	{
+	User::Leave(KErrNotSupported);
+	}
+	
+void CWebCameraAdvSet::SetTimeLapse(const TTime& /*aStart*/, const TTime& /*aEnd*/, const TTime& /*aInterval*/)
+	{
+	User::Leave(KErrNotSupported);
+	}
+	
+CCamera::CCameraAdvancedSettings::TPictureOrientation CWebCameraAdvSet::PictureOrientation() const
+	{
+	return CCamera::CCameraAdvancedSettings::EPictureOrientationUnknown;
+	}
+	
+void CWebCameraAdvSet::SetPictureOrientation(CCamera::CCameraAdvancedSettings::TPictureOrientation /*aOrientation*/)
+	{
+	User::Leave(KErrNotSupported);
+	}
+	
+TInt CWebCameraAdvSet::SupportedPixelAspectRatios() const
+	{
+	return KErrNotSupported;
+	}
+	
+CCamera::CCameraAdvancedSettings::TPixelAspectRatio CWebCameraAdvSet::PixelAspectRatio() const
+	{
+	return CCamera::CCameraAdvancedSettings::EPixelAspectUnknown;
+	}
+	
+void CWebCameraAdvSet::SetPixelAspectRatio(CCamera::CCameraAdvancedSettings::TPixelAspectRatio /*aPixelAspectRatio*/)
+	{
+	User::Leave(KErrNotSupported);
+	}
+	
+TInt CWebCameraAdvSet::SupportedYuvRanges() const
+	{
+	return KErrNotSupported;
+	}
+	
+CCamera::CCameraAdvancedSettings::TYuvRange CWebCameraAdvSet::YuvRange() const
+	{
+	return CCamera::CCameraAdvancedSettings::EYuvRangeUnknown;
+	}
+	
+void CWebCameraAdvSet::SetYuvRange(CCamera::CCameraAdvancedSettings::TYuvRange /*aYuvRange*/)
+	{
+	User::Leave(KErrNotSupported);
+	}
+	
+TInt CWebCameraAdvSet::BurstImages() const
+	{
+	return KErrNotSupported;
+	}
+	
+void CWebCameraAdvSet::SetBurstImages(TInt /*aImages*/)
+	{
+	User::Leave(KErrNotSupported);
+	}
+	
+void CWebCameraAdvSet::GetOpticalZoomStepsL(RArray<TInt>& /*aOpticalZoomSteps*/, TValueInfo& /*aInfo*/) const
+	{	
+	User::Leave(KErrNotSupported);
+	}
+	
+TInt CWebCameraAdvSet::OpticalZoom() const
+	{
+	return KECamFineResolutionFactor;
+	}
+	
+void CWebCameraAdvSet::SetOpticalZoom(TInt /*aOpticalZoom*/)
+	{
+	User::Leave(KErrNotSupported);
+	}
+	
+void CWebCameraAdvSet::GetDigitalZoomStepsL(RArray<TInt>& aDigitalZoomSteps, TValueInfo& aInfo) const
+	{
+	aDigitalZoomSteps.Reset();
+	aDigitalZoomSteps.AppendL(KECamFineResolutionFactor);
+	aInfo = EDiscreteSteps;
+	}
+	
+void CWebCameraAdvSet::GetDigitalZoomStepsForStillL(RArray<TInt>& aDigitalZoomSteps, TValueInfo& aInfo, TInt /*aSizeIndex*/, 
+								 CCamera::TFormat /*aFormat*/, TBool& /*aIsInfluencePossible*/) const
+	{
+	aDigitalZoomSteps.Reset();
+	aDigitalZoomSteps.AppendL(KECamFineResolutionFactor);
+	aInfo = EDiscreteSteps;
+	}
+
+void CWebCameraAdvSet::GetDigitalZoomStepsForVideoL(RArray<TInt>& aDigitalZoomSteps, TValueInfo& aInfo, TInt /*aFrameRateIndex*/,
+								 TInt /*aSizeIndex*/, CCamera::TFormat /*aFormat*/, TBool& /*aIsInfluencePossible*/, CCamera::TExposure /*aExposure*/) const
+	{
+	aDigitalZoomSteps.Reset();
+	aDigitalZoomSteps.AppendL(KECamFineResolutionFactor);
+	aInfo = EDiscreteSteps;
+	}
+
+TInt CWebCameraAdvSet::DigitalZoom() const
+	{
+	return KErrNotSupported;
+	}
+
+void CWebCameraAdvSet::SetDigitalZoom(TInt /*aDigitalZoom*/)
+	{
+	User::Leave(KErrNotSupported);
+	}
+	
+TBool CWebCameraAdvSet::ExposureLockOn() const
+	{
+	return EFalse;
+	}
+
+void CWebCameraAdvSet::SetExposureLockOn(TBool /*aState*/)
+	{
+	User::Leave(KErrNotSupported);
+	}
+		
+TBool CWebCameraAdvSet::AutoFocusLockOn() const
+	{
+	return EFalse;
+	}
+
+void CWebCameraAdvSet::SetAutoFocusLockOn(TBool /*aState*/)
+	{	
+	User::Leave(KErrNotSupported);
+	}
+
+void CWebCameraAdvSet::GetSupportedSettingsL(RArray<TUid>& /*aSettings*/) const
+	{
+	User::Leave(KErrNotSupported);
+	}
+    
+void CWebCameraAdvSet::GetActiveSettingsL(RArray<TUid>& /*aActiveSettings*/) const
+	{
+	User::Leave(KErrNotSupported);
+	}
+ 
+void CWebCameraAdvSet::GetDisabledSettingsL(RArray<TUid>& /*aDisbledSettings*/) const
+	{
+	User::Leave(KErrNotSupported);
+	}
+	    
+void CWebCameraAdvSet::SetAutomaticSizeSelectionChangeOn(TBool /*aSetOn*/)
+	{
+	}
+	
+TBool CWebCameraAdvSet::AutomaticSizeSelectionChangeOn() const
+	{
+	return EFalse;
+	}
+
+void CWebCameraAdvSet::GetSupportedContinuousAutoFocusTimeoutsL(RArray<TInt>& /*aTimeouts*/, TValueInfo& /*aInfo*/) const
+	{
+	User::Leave(KErrNotSupported);
+	}
+	
+void CWebCameraAdvSet::SetContinuousAutoFocusTimeout(TInt /*aTimeout*/)
+	{
+	User::Leave(KErrNotSupported);
+	}
+	
+void CWebCameraAdvSet::SetStabilizationEffect(CCamera::CCameraAdvancedSettings::TStabilizationEffect /*aEffect*/)
+	{
+	User::Leave(KErrNotSupported);
+	}
+	
+CCamera::CCameraAdvancedSettings::TStabilizationEffect CWebCameraAdvSet::StabilizationEffect() const
+	{
+	return CCamera::CCameraAdvancedSettings::EStabilizationOff;
+	}
+
+TInt CWebCameraAdvSet::SupportedStabilizationEffects() const
+	{
+	return CCamera::CCameraAdvancedSettings::EStabilizationOff;
+	}
+
+TInt CWebCameraAdvSet::SupportedStabilizationComplexityValues() const
+	{
+	return CCamera::CCameraAdvancedSettings::EStabilizationOff;
+	}
+	
+CCamera::CCameraAdvancedSettings::TStabilizationAlgorithmComplexity CWebCameraAdvSet::StabilizationComplexity() const
+	{
+	return CCamera::CCameraAdvancedSettings::EStabilizationComplexityAuto;
+	}
+	
+void CWebCameraAdvSet::SetStabilizationComplexity(CCamera::CCameraAdvancedSettings::TStabilizationAlgorithmComplexity /*aComplexity*/)
+	{
+	User::Leave(KErrNotSupported);
+	}
+	
+CCamera::CCameraAdvancedSettings::TWBUnits CWebCameraAdvSet::SupportedWBUnits() const
+	{
+	return CCamera::CCameraAdvancedSettings::EWBUnknown;
+	}
+	
+void CWebCameraAdvSet::SetWBRgbValue(const TRgb& /*aValue*/)
+	{
+	User::Leave(KErrNotSupported);
+	}
+	
+void CWebCameraAdvSet::GetWBRgbValue(TRgb& /*aValue*/) const
+	{
+	User::Leave(KErrNotSupported);
+	}
+	
+void CWebCameraAdvSet::GetWBSupportedColorTemperaturesL(RArray<TInt>& /*aWBColorTemperatures*/, TValueInfo& /*aInfo*/) const
+	{
+	User::Leave(KErrNotSupported);
+	}
+	
+void CWebCameraAdvSet::SetWBColorTemperature(TInt /*aColorTemperature*/)
+	{
+	User::Leave(KErrNotSupported);
+	}
+
+TInt CWebCameraAdvSet::WBColorTemperature() const
+	{
+	return KErrNotSupported;
+	}
+
+TInt CWebCameraAdvSet::ContinuousAutoFocusTimeout() const
+	{
+	return KErrNotSupported;
+	}
+
+TInt CWebCameraAdvSet::IsFlashReady(TBool& aReady) const
+	{
+	aReady = 0;
+	return KErrNone;
+	}
+
+void CWebCameraAdvSet::GetCurrentFocusModeStepsL(RArray<TInt>& /*aFocusModeSteps*/, TValueInfo& /*aInfo*/) const
+	{
+	User::Leave(KErrNotSupported);
+	}
+	
+void CWebCameraAdvSet::SetReferenceScreen(CWsScreenDevice& /*aScreenDevice*/)
+	{
+	User::Leave(KErrNotSupported);
+	}
+	
+void CWebCameraAdvSet::GetPreCaptureWarningSupportedL(CCamera::CCameraAdvancedSettings::TCameraMode /*aCameraMode*/, TInt& /*aPreCaptureWarningSupported*/) const
+	{
+	User::Leave(KErrNotSupported);
+	}
+
+void CWebCameraAdvSet::SubscribeToPreCaptureWarningL(TInt /*aPreCaptureWarning*/)
+	{
+	User::Leave(KErrNotSupported);
+	}
+	
+void CWebCameraAdvSet::UnSubscribePreCaptureWarningL()
+	{
+	User::Leave(KErrNotSupported);
+	}
+	
+void CWebCameraAdvSet::GetPreCaptureWarningL(TInt& /*aPreCaptureWarning*/) const
+	{
+	User::Leave(KErrNotSupported);
+	}
+	
+void CWebCameraAdvSet::GetSupportedAFAssistantLightL(TInt& /*aSupportedAFAssistantLight*/) const
+	{
+	User::Leave(KErrNotSupported);
+	}
+
+void CWebCameraAdvSet::GetAFAssistantLightL(CCamera::CCameraAdvancedSettings::TAFAssistantLight& /*aAFAssistantLight*/) const
+	{
+	User::Leave(KErrNotSupported);
+	}
+
+void CWebCameraAdvSet::SetAFAssistantLight(CCamera::CCameraAdvancedSettings::TAFAssistantLight /*aAFAssistantLight*/)
+	{
+	User::Leave(KErrNotSupported);
+	}
+	
+
--- a/mmplugins/cameraplugins/source/webcamera/ecamwebcameraadvset.h	Thu Mar 25 11:21:36 2010 +0900
+++ b/mmplugins/cameraplugins/source/webcamera/ecamwebcameraadvset.h	Tue Oct 19 11:48:59 2010 +0900
@@ -1,203 +1,203 @@
-/*
-* Copyright (c) 2010 ISB.
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of the "Symbian Foundation License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
-*
-* Initial Contributors:
-* ISB - Initial contribution
-*
-* Contributors:
-*
-* Description:
-*
-*/
-
-#ifndef ECAMWEBCAMERAADVSET_H
-#define ECAMWEBCAMERAADVSET_H
-
-#include <ecam/ecamadvsettingsintf.h>
-#include "ecamwebcameraplugin.h"
-
-
-const TInt KDefaultIsoRate = 200;
-
-// Implementations of the MCameraAdvancedSettings class
-class CWebCameraAdvSet : public CBase, 
-						 public MCameraAdvancedSettings,
-						 public MCameraAdvancedSettings2,
-						 public MCameraAdvancedSettings3
-	{
-	friend class CWebCamera;
-public:
-	static CWebCameraAdvSet* NewL(CWebCamera& aOwner);
-	~CWebCameraAdvSet();
-	
-protected:
-	//from MCameraAdvancedSettings
-	void Release();
-  	CCamera::CCameraAdvancedSettings::TCameraType CameraType() const;
-  	CCamera::CCameraAdvancedSettings::TCameraType CameraType(TInt aCameraIndex) const;
-	TBool IsCameraPresent() const;
- 	TBool IsCameraPresent(TInt aCameraIndex) const;
-	TInt CameraIndex() const;	
-    TInt SupportedStabilizationModes() const;
-    CCamera::CCameraAdvancedSettings::TStabilizationMode StabilizationMode() const;
-    void SetStabilizationMode(CCamera::CCameraAdvancedSettings::TStabilizationMode aStabilizationMode);
-    TInt SupportedFocusModes() const;
-    CCamera::CCameraAdvancedSettings::TFocusMode FocusMode() const;
-  	void SetFocusMode(CCamera::CCameraAdvancedSettings::TFocusMode aFocusMode);
-  	TInt SupportedFocusRanges() const;
-    CCamera::CCameraAdvancedSettings::TFocusRange FocusRange() const;
-    void SetFocusRange(CCamera::CCameraAdvancedSettings::TFocusRange aFocusRange);
-    TInt SupportedAutoFocusTypes() const;
-    CCamera::CCameraAdvancedSettings::TAutoFocusType AutoFocusType() const;
-    void SetAutoFocusType(CCamera::CCameraAdvancedSettings::TAutoFocusType aAutoFocusType);
-	TInt SupportedAutoFocusAreas() const;
-    CCamera::CCameraAdvancedSettings::TAutoFocusArea AutoFocusArea() const;
-    void SetAutoFocusArea(CCamera::CCameraAdvancedSettings::TAutoFocusArea aAutoFocusArea);
-	TInt FocusDistance() const;
-	void SetFocusDistance(TInt aDistance);
-	TInt GetMinFocalLength() const;
-	void GetSupportedIsoRatesL(RArray<TInt>& aSupportedIsoRates) const;
-    TInt IsoRate() const;
-    void SetIsoRate(TInt aRate);
-    void GetAperturesL(RArray<TInt>& aFStops, TValueInfo& aInfo) const;
-    TInt Aperture() const; 
-    void SetAperture(TInt aFStop); 
-	void GetShutterSpeedsL(RArray<TInt>& aShutterSpeeds, TValueInfo& aInfo) const; 
-    TInt ShutterSpeed() const; 
-    void SetShutterSpeed(TInt aShutterSpeed); 
-    TInt SupportedMeteringModes() const;
-    CCamera::CCameraAdvancedSettings::TMeteringMode MeteringMode() const;
-    void SetMeteringMode(CCamera::CCameraAdvancedSettings::TMeteringMode aMeteringMode);
-    TInt SupportedDriveModes() const;
-    CCamera::CCameraAdvancedSettings::TDriveMode DriveMode() const;
-    void SetDriveMode(CCamera::CCameraAdvancedSettings::TDriveMode aDriveMode);
-    TInt SupportedBracketModes() const;
-    CCamera::CCameraAdvancedSettings::TBracketMode BracketMode() const;
-    void SetBracketMode(CCamera::CCameraAdvancedSettings::TBracketMode aBracketMode);
-    TInt SupportedBracketParameters() const;
-    CCamera::CCameraAdvancedSettings::TBracketParameter BracketParameter() const;
-    void SetBracketParameter(CCamera::CCameraAdvancedSettings::TBracketParameter aBracketParameter);
-    TInt SupportedBracketSteps() const;
-    CCamera::CCameraAdvancedSettings::TBracketStep BracketStep() const;
-    void SetBracketStep(CCamera::CCameraAdvancedSettings::TBracketStep aBracketStep);
-	void GetBracketMerge(TInt& aStartIndex, TInt& aFrames) const;
-	void SetBracketMerge(TInt aStartIndex, TInt aFrames);
-    TInt SupportedFlashModes() const;
-	CCamera::TFlash FlashMode() const;
-	void SetFlashMode(CCamera::TFlash aMode);
-    TBool RedEyeReduceOn() const;
-    void SetRedEyeReduceOn(TBool aState);
-	void GetFlashCompensationStepsL(RArray<TInt>& aFlashCompensationSteps, TValueInfo& aInfo) const; 
-	TInt FlashCompensationStep() const;
-	TInt GetFlashCompensationStep(TInt& aFlashCompensationStep) const;
-	void SetFlashCompensationStep(TInt aFlashCompensationStep);
-	void GetFlashCompensationRangeInSteps(TInt& aNegativeCompensation, TInt& aPositiveCompensation) const;
-	TInt FlashCompensation() const;
-	TInt GetFlashCompensation(TInt& aFlashCompensation) const;
-	void SetFlashCompensation(TInt aFlashCompensationSteps);
-	TBool IsExternalFlashPresent() const;
-    void GetManualFlashPowerLevelsL(RArray<TInt>& aManualFlashPowerLevels, TValueInfo& aInfo) const;
-    TInt ManualFlashPowerLevel() const;
-    void SetManualFlashPowerLevel(TInt aManualFlashPowerLevel);
-	TInt SupportedExposureModes() const;
-	CCamera::TExposure ExposureMode() const;
-	void SetExposureMode(CCamera::TExposure aExposureMode);
-	void GetExposureCompensationStepsL(RArray<TInt>& aExposureCompensationSteps, TValueInfo& aInfo) const; 
-	TInt ExposureCompensationStep() const;
-	TInt GetExposureCompensationStep(TInt& aExposureCompensationStep) const;
-	void SetExposureCompensationStep(TInt aExposureCompensationStep);
-	void GetExposureCompensationRangeInSteps(TInt& aNegativeCompensation, TInt& aPositiveCompensation) const;
-	TInt ExposureCompensation() const;
-	TInt GetExposureCompensation(TInt& aExposureCompensation) const;
-	void SetExposureCompensation(TInt aExposureCompensationSteps);
-	TInt SupportedWhiteBalanceModes() const;
-	CCamera::TWhiteBalance WhiteBalanceMode() const;
-	void SetWhiteBalanceMode(CCamera::TWhiteBalance aWhiteBalanceMode);
-	TBool ApertureExposureLockOn() const;
-	void SetApertureExposureLockOn(TBool aAELock);
-	TBool ShootClickOn() const;
-	void SetShootClickOn(TBool aShootClickOn);
-	void GetTimerIntervalsL(RArray<TInt>& aTimerIntervals, TValueInfo& aInfo) const;
-    TInt TimerInterval() const;  
-    void SetTimerInterval(TInt aTimerInterval); 
-	void GetTimeLapsePeriodRange(TTime& aTimeLapseMin, TTime& aTimeLapseMax) const;
-    void GetTimeLapse(TTime& aStart, TTime& aEnd, TTime& aInterval) const;  
-    void SetTimeLapse(const TTime& aStart, const TTime& aEnd, const TTime& aInterval); 
-    CCamera::CCameraAdvancedSettings::TPictureOrientation PictureOrientation() const;
-    void SetPictureOrientation(CCamera::CCameraAdvancedSettings::TPictureOrientation aOrientation); 
-    TInt SupportedPixelAspectRatios() const;
-    CCamera::CCameraAdvancedSettings::TPixelAspectRatio PixelAspectRatio() const;
-    void SetPixelAspectRatio(CCamera::CCameraAdvancedSettings::TPixelAspectRatio aPixelAspectRatio); 
-    TInt SupportedYuvRanges() const;
-    CCamera::CCameraAdvancedSettings::TYuvRange YuvRange() const;
-    void SetYuvRange(CCamera::CCameraAdvancedSettings::TYuvRange aYuvRange);
-    TInt BurstImages() const;
-    void SetBurstImages(TInt aImages);	
-	void GetOpticalZoomStepsL(RArray<TInt>& aOpticalZoomSteps, TValueInfo& aInfo) const;
-	TInt OpticalZoom() const;
-	void SetOpticalZoom(TInt aOpticalZoom);
-	void GetDigitalZoomStepsL(RArray<TInt>& aDigitalZoomSteps, TValueInfo& aInfo) const;
-	TInt DigitalZoom() const;
-	void SetDigitalZoom(TInt aDigitalZoom);
-	TBool ExposureLockOn() const;
-	void SetExposureLockOn(TBool aState);
-	TBool AutoFocusLockOn() const;
-	void SetAutoFocusLockOn(TBool aState);
-    void GetSupportedSettingsL(RArray<TUid>& aSettings) const;
-    void GetActiveSettingsL(RArray<TUid>& aActiveSettings) const;
-    void GetDisabledSettingsL(RArray<TUid>& aDisabledSettings) const;
-	TBool AutomaticSizeSelectionChangeOn() const;	
-	void SetAutomaticSizeSelectionChangeOn(TBool aSetOn);	
-    void GetSupportedContinuousAutoFocusTimeoutsL(RArray<TInt>& aTimeouts, TValueInfo& aInfo) const;
-    TInt ContinuousAutoFocusTimeout() const; 
-    void SetContinuousAutoFocusTimeout(TInt aTimeout);
-	TInt SupportedStabilizationEffects() const;
-	CCamera::CCameraAdvancedSettings::TStabilizationEffect StabilizationEffect() const;
-    void SetStabilizationEffect(CCamera::CCameraAdvancedSettings::TStabilizationEffect aEffect);
-	TInt SupportedStabilizationComplexityValues() const;
-	CCamera::CCameraAdvancedSettings::TStabilizationAlgorithmComplexity StabilizationComplexity() const;
-	void SetStabilizationComplexity(CCamera::CCameraAdvancedSettings::TStabilizationAlgorithmComplexity aComplexity);
-    CCamera::CCameraAdvancedSettings::TWBUnits SupportedWBUnits() const;
-    void GetWBRgbValue(TRgb& aValue) const;
-    void SetWBRgbValue(const TRgb& aValue);
-  	void GetWBSupportedColorTemperaturesL(RArray<TInt>& aWBColorTemperatures, TValueInfo& aInfo) const;
- 	TInt WBColorTemperature() const;   
-	void SetWBColorTemperature(TInt aWBColorTemperature);
-	
-	//from MCameraAdvancedSettings2
-	TInt IsFlashReady(TBool& aReady) const;
-	void GetCurrentFocusModeStepsL(RArray<TInt>& aFocusModeSteps, TValueInfo& aInfo) const;
-	
-	//from MCameraAdvancedSettings3
-	void GetSupportedISORateTypeL(TInt& aSupportedISORateTypes) const;
-	void SetISORate(CCamera::CCameraAdvancedSettings::TISORateType aISORateType, TInt aParam);
-	void GetISORateL(CCamera::CCameraAdvancedSettings::TISORateType& aISORateType, TInt& aParam, TInt& aISORate) const;
-	void SetReferenceScreen(CWsScreenDevice& aScreenDevice);
-	void GetDigitalZoomStepsForStillL(RArray<TInt>& aDigitalZoomSteps, TValueInfo& aInfo, TInt aSizeIndex, 
-					CCamera::TFormat aFormat, TBool& aIsInfluencePossible) const;
-	void GetDigitalZoomStepsForVideoL(RArray<TInt>& aDigitalZoomSteps, TValueInfo& aInfo, TInt aFrameRateIndex, 
-					TInt aSizeIndex, CCamera::TFormat aFormat, TBool& aIsInfluencePossible, CCamera::TExposure aExposure) const;
-	void GetPreCaptureWarningSupportedL(CCamera::CCameraAdvancedSettings::TCameraMode aCameraMode, TInt& aPreCaptureWarningSupported) const;
-	void SubscribeToPreCaptureWarningL(TInt aPreCaptureWarning);
-	void UnSubscribePreCaptureWarningL();
-	void GetPreCaptureWarningL(TInt& aPreCaptureWarning) const;
-	void GetSupportedAFAssistantLightL(TInt& aSupportedAFAssistantLight) const;
-	void GetAFAssistantLightL(CCamera::CCameraAdvancedSettings::TAFAssistantLight& aAFAssistantLight) const;
-	void SetAFAssistantLight(CCamera::CCameraAdvancedSettings::TAFAssistantLight aAFAssistantLight);
-
-private:
-	CWebCameraAdvSet(CWebCamera& aOwner);
-	void Init();
-	void ConstructL();
-	
-private:
-	CWebCamera& iOwner;
-	RArray<TInt> iSupportedISORates;
-	};
-
-#endif // TESTADVANCEDSETTINGS_H
+/*
+* Copyright (c) 2010 ISB.
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the "Symbian Foundation License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+*
+* Initial Contributors:
+* ISB - Initial contribution
+*
+* Contributors:
+*
+* Description:
+*
+*/
+
+#ifndef ECAMWEBCAMERAADVSET_H
+#define ECAMWEBCAMERAADVSET_H
+
+#include <ecam/ecamadvsettingsintf.h>
+#include "ecamwebcameraplugin.h"
+
+
+const TInt KDefaultIsoRate = 200;
+
+// Implementations of the MCameraAdvancedSettings class
+class CWebCameraAdvSet : public CBase, 
+						 public MCameraAdvancedSettings,
+						 public MCameraAdvancedSettings2,
+						 public MCameraAdvancedSettings3
+	{
+	friend class CWebCamera;
+public:
+	static CWebCameraAdvSet* NewL(CWebCamera& aOwner);
+	~CWebCameraAdvSet();
+	
+protected:
+	//from MCameraAdvancedSettings
+	void Release();
+  	CCamera::CCameraAdvancedSettings::TCameraType CameraType() const;
+  	CCamera::CCameraAdvancedSettings::TCameraType CameraType(TInt aCameraIndex) const;
+	TBool IsCameraPresent() const;
+ 	TBool IsCameraPresent(TInt aCameraIndex) const;
+	TInt CameraIndex() const;	
+    TInt SupportedStabilizationModes() const;
+    CCamera::CCameraAdvancedSettings::TStabilizationMode StabilizationMode() const;
+    void SetStabilizationMode(CCamera::CCameraAdvancedSettings::TStabilizationMode aStabilizationMode);
+    TInt SupportedFocusModes() const;
+    CCamera::CCameraAdvancedSettings::TFocusMode FocusMode() const;
+  	void SetFocusMode(CCamera::CCameraAdvancedSettings::TFocusMode aFocusMode);
+  	TInt SupportedFocusRanges() const;
+    CCamera::CCameraAdvancedSettings::TFocusRange FocusRange() const;
+    void SetFocusRange(CCamera::CCameraAdvancedSettings::TFocusRange aFocusRange);
+    TInt SupportedAutoFocusTypes() const;
+    CCamera::CCameraAdvancedSettings::TAutoFocusType AutoFocusType() const;
+    void SetAutoFocusType(CCamera::CCameraAdvancedSettings::TAutoFocusType aAutoFocusType);
+	TInt SupportedAutoFocusAreas() const;
+    CCamera::CCameraAdvancedSettings::TAutoFocusArea AutoFocusArea() const;
+    void SetAutoFocusArea(CCamera::CCameraAdvancedSettings::TAutoFocusArea aAutoFocusArea);
+	TInt FocusDistance() const;
+	void SetFocusDistance(TInt aDistance);
+	TInt GetMinFocalLength() const;
+	void GetSupportedIsoRatesL(RArray<TInt>& aSupportedIsoRates) const;
+    TInt IsoRate() const;
+    void SetIsoRate(TInt aRate);
+    void GetAperturesL(RArray<TInt>& aFStops, TValueInfo& aInfo) const;
+    TInt Aperture() const; 
+    void SetAperture(TInt aFStop); 
+	void GetShutterSpeedsL(RArray<TInt>& aShutterSpeeds, TValueInfo& aInfo) const; 
+    TInt ShutterSpeed() const; 
+    void SetShutterSpeed(TInt aShutterSpeed); 
+    TInt SupportedMeteringModes() const;
+    CCamera::CCameraAdvancedSettings::TMeteringMode MeteringMode() const;
+    void SetMeteringMode(CCamera::CCameraAdvancedSettings::TMeteringMode aMeteringMode);
+    TInt SupportedDriveModes() const;
+    CCamera::CCameraAdvancedSettings::TDriveMode DriveMode() const;
+    void SetDriveMode(CCamera::CCameraAdvancedSettings::TDriveMode aDriveMode);
+    TInt SupportedBracketModes() const;
+    CCamera::CCameraAdvancedSettings::TBracketMode BracketMode() const;
+    void SetBracketMode(CCamera::CCameraAdvancedSettings::TBracketMode aBracketMode);
+    TInt SupportedBracketParameters() const;
+    CCamera::CCameraAdvancedSettings::TBracketParameter BracketParameter() const;
+    void SetBracketParameter(CCamera::CCameraAdvancedSettings::TBracketParameter aBracketParameter);
+    TInt SupportedBracketSteps() const;
+    CCamera::CCameraAdvancedSettings::TBracketStep BracketStep() const;
+    void SetBracketStep(CCamera::CCameraAdvancedSettings::TBracketStep aBracketStep);
+	void GetBracketMerge(TInt& aStartIndex, TInt& aFrames) const;
+	void SetBracketMerge(TInt aStartIndex, TInt aFrames);
+    TInt SupportedFlashModes() const;
+	CCamera::TFlash FlashMode() const;
+	void SetFlashMode(CCamera::TFlash aMode);
+    TBool RedEyeReduceOn() const;
+    void SetRedEyeReduceOn(TBool aState);
+	void GetFlashCompensationStepsL(RArray<TInt>& aFlashCompensationSteps, TValueInfo& aInfo) const; 
+	TInt FlashCompensationStep() const;
+	TInt GetFlashCompensationStep(TInt& aFlashCompensationStep) const;
+	void SetFlashCompensationStep(TInt aFlashCompensationStep);
+	void GetFlashCompensationRangeInSteps(TInt& aNegativeCompensation, TInt& aPositiveCompensation) const;
+	TInt FlashCompensation() const;
+	TInt GetFlashCompensation(TInt& aFlashCompensation) const;
+	void SetFlashCompensation(TInt aFlashCompensationSteps);
+	TBool IsExternalFlashPresent() const;
+    void GetManualFlashPowerLevelsL(RArray<TInt>& aManualFlashPowerLevels, TValueInfo& aInfo) const;
+    TInt ManualFlashPowerLevel() const;
+    void SetManualFlashPowerLevel(TInt aManualFlashPowerLevel);
+	TInt SupportedExposureModes() const;
+	CCamera::TExposure ExposureMode() const;
+	void SetExposureMode(CCamera::TExposure aExposureMode);
+	void GetExposureCompensationStepsL(RArray<TInt>& aExposureCompensationSteps, TValueInfo& aInfo) const; 
+	TInt ExposureCompensationStep() const;
+	TInt GetExposureCompensationStep(TInt& aExposureCompensationStep) const;
+	void SetExposureCompensationStep(TInt aExposureCompensationStep);
+	void GetExposureCompensationRangeInSteps(TInt& aNegativeCompensation, TInt& aPositiveCompensation) const;
+	TInt ExposureCompensation() const;
+	TInt GetExposureCompensation(TInt& aExposureCompensation) const;
+	void SetExposureCompensation(TInt aExposureCompensationSteps);
+	TInt SupportedWhiteBalanceModes() const;
+	CCamera::TWhiteBalance WhiteBalanceMode() const;
+	void SetWhiteBalanceMode(CCamera::TWhiteBalance aWhiteBalanceMode);
+	TBool ApertureExposureLockOn() const;
+	void SetApertureExposureLockOn(TBool aAELock);
+	TBool ShootClickOn() const;
+	void SetShootClickOn(TBool aShootClickOn);
+	void GetTimerIntervalsL(RArray<TInt>& aTimerIntervals, TValueInfo& aInfo) const;
+    TInt TimerInterval() const;  
+    void SetTimerInterval(TInt aTimerInterval); 
+	void GetTimeLapsePeriodRange(TTime& aTimeLapseMin, TTime& aTimeLapseMax) const;
+    void GetTimeLapse(TTime& aStart, TTime& aEnd, TTime& aInterval) const;  
+    void SetTimeLapse(const TTime& aStart, const TTime& aEnd, const TTime& aInterval); 
+    CCamera::CCameraAdvancedSettings::TPictureOrientation PictureOrientation() const;
+    void SetPictureOrientation(CCamera::CCameraAdvancedSettings::TPictureOrientation aOrientation); 
+    TInt SupportedPixelAspectRatios() const;
+    CCamera::CCameraAdvancedSettings::TPixelAspectRatio PixelAspectRatio() const;
+    void SetPixelAspectRatio(CCamera::CCameraAdvancedSettings::TPixelAspectRatio aPixelAspectRatio); 
+    TInt SupportedYuvRanges() const;
+    CCamera::CCameraAdvancedSettings::TYuvRange YuvRange() const;
+    void SetYuvRange(CCamera::CCameraAdvancedSettings::TYuvRange aYuvRange);
+    TInt BurstImages() const;
+    void SetBurstImages(TInt aImages);	
+	void GetOpticalZoomStepsL(RArray<TInt>& aOpticalZoomSteps, TValueInfo& aInfo) const;
+	TInt OpticalZoom() const;
+	void SetOpticalZoom(TInt aOpticalZoom);
+	void GetDigitalZoomStepsL(RArray<TInt>& aDigitalZoomSteps, TValueInfo& aInfo) const;
+	TInt DigitalZoom() const;
+	void SetDigitalZoom(TInt aDigitalZoom);
+	TBool ExposureLockOn() const;
+	void SetExposureLockOn(TBool aState);
+	TBool AutoFocusLockOn() const;
+	void SetAutoFocusLockOn(TBool aState);
+    void GetSupportedSettingsL(RArray<TUid>& aSettings) const;
+    void GetActiveSettingsL(RArray<TUid>& aActiveSettings) const;
+    void GetDisabledSettingsL(RArray<TUid>& aDisabledSettings) const;
+	TBool AutomaticSizeSelectionChangeOn() const;	
+	void SetAutomaticSizeSelectionChangeOn(TBool aSetOn);	
+    void GetSupportedContinuousAutoFocusTimeoutsL(RArray<TInt>& aTimeouts, TValueInfo& aInfo) const;
+    TInt ContinuousAutoFocusTimeout() const; 
+    void SetContinuousAutoFocusTimeout(TInt aTimeout);
+	TInt SupportedStabilizationEffects() const;
+	CCamera::CCameraAdvancedSettings::TStabilizationEffect StabilizationEffect() const;
+    void SetStabilizationEffect(CCamera::CCameraAdvancedSettings::TStabilizationEffect aEffect);
+	TInt SupportedStabilizationComplexityValues() const;
+	CCamera::CCameraAdvancedSettings::TStabilizationAlgorithmComplexity StabilizationComplexity() const;
+	void SetStabilizationComplexity(CCamera::CCameraAdvancedSettings::TStabilizationAlgorithmComplexity aComplexity);
+    CCamera::CCameraAdvancedSettings::TWBUnits SupportedWBUnits() const;
+    void GetWBRgbValue(TRgb& aValue) const;
+    void SetWBRgbValue(const TRgb& aValue);
+  	void GetWBSupportedColorTemperaturesL(RArray<TInt>& aWBColorTemperatures, TValueInfo& aInfo) const;
+ 	TInt WBColorTemperature() const;   
+	void SetWBColorTemperature(TInt aWBColorTemperature);
+	
+	//from MCameraAdvancedSettings2
+	TInt IsFlashReady(TBool& aReady) const;
+	void GetCurrentFocusModeStepsL(RArray<TInt>& aFocusModeSteps, TValueInfo& aInfo) const;
+	
+	//from MCameraAdvancedSettings3
+	void GetSupportedISORateTypeL(TInt& aSupportedISORateTypes) const;
+	void SetISORate(CCamera::CCameraAdvancedSettings::TISORateType aISORateType, TInt aParam);
+	void GetISORateL(CCamera::CCameraAdvancedSettings::TISORateType& aISORateType, TInt& aParam, TInt& aISORate) const;
+	void SetReferenceScreen(CWsScreenDevice& aScreenDevice);
+	void GetDigitalZoomStepsForStillL(RArray<TInt>& aDigitalZoomSteps, TValueInfo& aInfo, TInt aSizeIndex, 
+					CCamera::TFormat aFormat, TBool& aIsInfluencePossible) const;
+	void GetDigitalZoomStepsForVideoL(RArray<TInt>& aDigitalZoomSteps, TValueInfo& aInfo, TInt aFrameRateIndex, 
+					TInt aSizeIndex, CCamera::TFormat aFormat, TBool& aIsInfluencePossible, CCamera::TExposure aExposure) const;
+	void GetPreCaptureWarningSupportedL(CCamera::CCameraAdvancedSettings::TCameraMode aCameraMode, TInt& aPreCaptureWarningSupported) const;
+	void SubscribeToPreCaptureWarningL(TInt aPreCaptureWarning);
+	void UnSubscribePreCaptureWarningL();
+	void GetPreCaptureWarningL(TInt& aPreCaptureWarning) const;
+	void GetSupportedAFAssistantLightL(TInt& aSupportedAFAssistantLight) const;
+	void GetAFAssistantLightL(CCamera::CCameraAdvancedSettings::TAFAssistantLight& aAFAssistantLight) const;
+	void SetAFAssistantLight(CCamera::CCameraAdvancedSettings::TAFAssistantLight aAFAssistantLight);
+
+private:
+	CWebCameraAdvSet(CWebCamera& aOwner);
+	void Init();
+	void ConstructL();
+	
+private:
+	CWebCamera& iOwner;
+	RArray<TInt> iSupportedISORates;
+	};
+
+#endif // TESTADVANCEDSETTINGS_H
--- a/mmplugins/cameraplugins/source/webcamera/ecamwebcamerabuffer.cpp	Thu Mar 25 11:21:36 2010 +0900
+++ b/mmplugins/cameraplugins/source/webcamera/ecamwebcamerabuffer.cpp	Tue Oct 19 11:48:59 2010 +0900
@@ -1,224 +1,224 @@
-/*
-* Copyright (c) 2010 ISB.
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of the "Symbian Foundation License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
-*
-* Initial Contributors:
-* ISB - Initial contribution
-*
-* Contributors:
-*
-* Description:
-*
-*/
-
-#include <fbs.h>
-#include "ecamwebcamerabuffer.h"
-
-
-// ---------------------------------------------------------------------------
-// NewL
-// Takes ownership of aData, but not aBitmap
-// ---------------------------------------------------------------------------
-//
-CWebCameraBuffer* CWebCameraBuffer::NewL(const CFbsBitmap& aBitmap, HBufC8* aData)
-	{
-	CWebCameraBuffer* self = CWebCameraBuffer::NewLC( aBitmap, aData );
-	CleanupStack::Pop( self );
-	return self;
-	}
-
-// ---------------------------------------------------------------------------
-// NewLC
-// Takes ownership of aData, but not aBitmap
-// ---------------------------------------------------------------------------
-//
-CWebCameraBuffer* CWebCameraBuffer::NewLC(const CFbsBitmap& aBitmap, HBufC8* aData)
-	{
-	CWebCameraBuffer* self = new (ELeave) CWebCameraBuffer;
-	CleanupStack::PushL( self );
-	self->ConstructL( aBitmap, aData );
-	return self;
-	}
-
-
-// ---------------------------------------------------------------------------
-// NewL
-// Takes ownership of both objects.
-// ---------------------------------------------------------------------------
-//
-CWebCameraBuffer* CWebCameraBuffer::NewL(CFbsBitmap* aBitmap, HBufC8* aData)
-	{
-	CWebCameraBuffer* self = CWebCameraBuffer::NewLC( aBitmap, aData );
-	CleanupStack::Pop( self );
-	return self;
-	}
-
-// ---------------------------------------------------------------------------
-// NewLC
-// Takes ownership of both objects.
-// ---------------------------------------------------------------------------
-//
-CWebCameraBuffer* CWebCameraBuffer::NewLC(CFbsBitmap* aBitmap, HBufC8* aData)
-	{
-	CWebCameraBuffer* self = new (ELeave) CWebCameraBuffer;
-	CleanupStack::PushL( self );
-	self->ConstructL( aBitmap, aData );
-	return self;
-	}
-
-// ---------------------------------------------------------------------------
-// Constructor
-//
-// ---------------------------------------------------------------------------
-//
-CWebCameraBuffer::CWebCameraBuffer()
-	: iBitmap(NULL),
-	  iImageData(NULL),
-	  iOwnBitmap(ETrue),
-	  iOwnData(ETrue)
-	{
-	}
-
-// ---------------------------------------------------------------------------
-// Destructor
-// *private, because Release() is supposed to be used.*
-// ---------------------------------------------------------------------------
-//
-CWebCameraBuffer::~CWebCameraBuffer()
-	{
-	iChunk.Close();
-	delete iBitmap;
-	delete iImageData;
-	}
-
-// ---------------------------------------------------------------------------
-// ConstructL
-//
-// ---------------------------------------------------------------------------
-//
-void CWebCameraBuffer::ConstructL(const CFbsBitmap& aBitmap, HBufC8* aData)
-	{
-	iBitmap = new (ELeave) CFbsBitmap;
-	TInt error = iBitmap->Duplicate( aBitmap.Handle() );
-
-	iImageData = aData;
-
-	User::LeaveIfError( error );
-	}
-
-// ---------------------------------------------------------------------------
-// ConstructL
-//
-// ---------------------------------------------------------------------------
-//
-void CWebCameraBuffer::ConstructL(CFbsBitmap* aBitmap, HBufC8* aData)
-	{
-	iImageData = aData;
-	iBitmap    = aBitmap;
-	}
-
-// ---------------------------------------------------------------------------
-// NumFrames
-//
-// Number of frames available in the buffer.
-// ---------------------------------------------------------------------------
-//
-TInt 
-CWebCameraBuffer::NumFrames()
-	{
-	return 1;
-	}
-
-
-// ---------------------------------------------------------------------------
-// DataL
-//
-// Frame data as descriptor.
-// *not supported here*
-// ---------------------------------------------------------------------------
-//
-TDesC8* CWebCameraBuffer::DataL(TInt aFrameIndex)
-	{
-	if( aFrameIndex != 0 || !iImageData )
-		{
-		User::Leave( KErrNotSupported );
-		}
-
-	return iImageData; 
-	}
-
-// ---------------------------------------------------------------------------
-// BitmapL
-//
-// Frame data as bitmap.
-// ---------------------------------------------------------------------------
-//
-CFbsBitmap& CWebCameraBuffer::BitmapL(TInt aFrameIndex)
-	{
-	if( aFrameIndex != 0 || !iBitmap )
-		{
-		User::Leave( KErrNotFound );
-		}
-
-	return *iBitmap;
-	}
-
-// ---------------------------------------------------------------------------
-// DataL
-//
-// Frame data as chunk.
-// *not supported here*
-// ---------------------------------------------------------------------------
-//
-RChunk& CWebCameraBuffer::ChunkL()
-	{
-	User::Leave( KErrNotSupported );
-
-	return iChunk;
-	}
-
-// ---------------------------------------------------------------------------
-// ChunkOffsetL
-//
-// Frame data offset in chunk.
-// *not supported here*
-// ---------------------------------------------------------------------------
-//
-TInt 
-CWebCameraBuffer::ChunkOffsetL(TInt /*aFrameIndex*/)
-	{
-	User::Leave( KErrNotSupported );
-
-	return 0;
-	}
-
-// ---------------------------------------------------------------------------
-// FrameSize
-//
-// Frame data size.
-// *not supported here, as only bitmap supported*
-// ---------------------------------------------------------------------------
-//
-TInt CWebCameraBuffer::FrameSize(TInt /*aFrameIndex*/)
-	{
-	return -1;
-	}
-
-// ---------------------------------------------------------------------------
-// Release
-//
-// Release this buffer.
-// Simply deletes this object.
-// ---------------------------------------------------------------------------
-//
-void CWebCameraBuffer::Release()
-	{
-	delete this;
-	}
-
-
-// end of file
+/*
+* Copyright (c) 2010 ISB.
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the "Symbian Foundation License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+*
+* Initial Contributors:
+* ISB - Initial contribution
+*
+* Contributors:
+*
+* Description:
+*
+*/
+
+#include <fbs.h>
+#include "ecamwebcamerabuffer.h"
+
+
+// ---------------------------------------------------------------------------
+// NewL
+// Takes ownership of aData, but not aBitmap
+// ---------------------------------------------------------------------------
+//
+CWebCameraBuffer* CWebCameraBuffer::NewL(const CFbsBitmap& aBitmap, HBufC8* aData)
+	{
+	CWebCameraBuffer* self = CWebCameraBuffer::NewLC( aBitmap, aData );
+	CleanupStack::Pop( self );
+	return self;
+	}
+
+// ---------------------------------------------------------------------------
+// NewLC
+// Takes ownership of aData, but not aBitmap
+// ---------------------------------------------------------------------------
+//
+CWebCameraBuffer* CWebCameraBuffer::NewLC(const CFbsBitmap& aBitmap, HBufC8* aData)
+	{
+	CWebCameraBuffer* self = new (ELeave) CWebCameraBuffer;
+	CleanupStack::PushL( self );
+	self->ConstructL( aBitmap, aData );
+	return self;
+	}
+
+
+// ---------------------------------------------------------------------------
+// NewL
+// Takes ownership of both objects.
+// ---------------------------------------------------------------------------
+//
+CWebCameraBuffer* CWebCameraBuffer::NewL(CFbsBitmap* aBitmap, HBufC8* aData)
+	{
+	CWebCameraBuffer* self = CWebCameraBuffer::NewLC( aBitmap, aData );
+	CleanupStack::Pop( self );
+	return self;
+	}
+
+// ---------------------------------------------------------------------------
+// NewLC
+// Takes ownership of both objects.
+// ---------------------------------------------------------------------------
+//
+CWebCameraBuffer* CWebCameraBuffer::NewLC(CFbsBitmap* aBitmap, HBufC8* aData)
+	{
+	CWebCameraBuffer* self = new (ELeave) CWebCameraBuffer;
+	CleanupStack::PushL( self );
+	self->ConstructL( aBitmap, aData );
+	return self;
+	}
+
+// ---------------------------------------------------------------------------
+// Constructor
+//
+// ---------------------------------------------------------------------------
+//
+CWebCameraBuffer::CWebCameraBuffer()
+	: iBitmap(NULL),
+	  iImageData(NULL),
+	  iOwnBitmap(ETrue),
+	  iOwnData(ETrue)
+	{
+	}
+
+// ---------------------------------------------------------------------------
+// Destructor
+// *private, because Release() is supposed to be used.*
+// ---------------------------------------------------------------------------
+//
+CWebCameraBuffer::~CWebCameraBuffer()
+	{
+	iChunk.Close();
+	delete iBitmap;
+	delete iImageData;
+	}
+
+// ---------------------------------------------------------------------------
+// ConstructL
+//
+// ---------------------------------------------------------------------------
+//
+void CWebCameraBuffer::ConstructL(const CFbsBitmap& aBitmap, HBufC8* aData)
+	{
+	iBitmap = new (ELeave) CFbsBitmap;
+	TInt error = iBitmap->Duplicate( aBitmap.Handle() );
+
+	iImageData = aData;
+
+	User::LeaveIfError( error );
+	}
+
+// ---------------------------------------------------------------------------
+// ConstructL
+//
+// ---------------------------------------------------------------------------
+//
+void CWebCameraBuffer::ConstructL(CFbsBitmap* aBitmap, HBufC8* aData)
+	{
+	iImageData = aData;
+	iBitmap    = aBitmap;
+	}
+
+// ---------------------------------------------------------------------------
+// NumFrames
+//
+// Number of frames available in the buffer.
+// ---------------------------------------------------------------------------
+//
+TInt 
+CWebCameraBuffer::NumFrames()
+	{
+	return 1;
+	}
+
+
+// ---------------------------------------------------------------------------
+// DataL
+//
+// Frame data as descriptor.
+// *not supported here*
+// ---------------------------------------------------------------------------
+//
+TDesC8* CWebCameraBuffer::DataL(TInt aFrameIndex)
+	{
+	if( aFrameIndex != 0 || !iImageData )
+		{
+		User::Leave( KErrNotSupported );
+		}
+
+	return iImageData; 
+	}
+
+// ---------------------------------------------------------------------------
+// BitmapL
+//
+// Frame data as bitmap.
+// ---------------------------------------------------------------------------
+//
+CFbsBitmap& CWebCameraBuffer::BitmapL(TInt aFrameIndex)
+	{
+	if( aFrameIndex != 0 || !iBitmap )
+		{
+		User::Leave( KErrNotFound );
+		}
+
+	return *iBitmap;
+	}
+
+// ---------------------------------------------------------------------------
+// DataL
+//
+// Frame data as chunk.
+// *not supported here*
+// ---------------------------------------------------------------------------
+//
+RChunk& CWebCameraBuffer::ChunkL()
+	{
+	User::Leave( KErrNotSupported );
+
+	return iChunk;
+	}
+
+// ---------------------------------------------------------------------------
+// ChunkOffsetL
+//
+// Frame data offset in chunk.
+// *not supported here*
+// ---------------------------------------------------------------------------
+//
+TInt 
+CWebCameraBuffer::ChunkOffsetL(TInt /*aFrameIndex*/)
+	{
+	User::Leave( KErrNotSupported );
+
+	return 0;
+	}
+
+// ---------------------------------------------------------------------------
+// FrameSize
+//
+// Frame data size.
+// *not supported here, as only bitmap supported*
+// ---------------------------------------------------------------------------
+//
+TInt CWebCameraBuffer::FrameSize(TInt /*aFrameIndex*/)
+	{
+	return -1;
+	}
+
+// ---------------------------------------------------------------------------
+// Release
+//
+// Release this buffer.
+// Simply deletes this object.
+// ---------------------------------------------------------------------------
+//
+void CWebCameraBuffer::Release()
+	{
+	delete this;
+	}
+
+
+// end of file
--- a/mmplugins/cameraplugins/source/webcamera/ecamwebcamerabuffer.h	Thu Mar 25 11:21:36 2010 +0900
+++ b/mmplugins/cameraplugins/source/webcamera/ecamwebcamerabuffer.h	Tue Oct 19 11:48:59 2010 +0900
@@ -1,59 +1,59 @@
-/*
-* Copyright (c) 2010 ISB.
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of the "Symbian Foundation License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
-*
-* Initial Contributors:
-* ISB - Initial contribution
-*
-* Contributors:
-*
-* Description:
-*
-*/
-
-#ifndef ECAMWEBCAMERABUFFER_H
-#define ECAMWEBCAMERABUFFER_H
-
-#include <e32base.h>
-#include <ecam.h>
-
-
-class CFbsBitmap;
-class CWebCameraBuffer : public CBase
-					   , public MCameraBuffer
-	{
-public:
-	static CWebCameraBuffer* NewL(const CFbsBitmap& aBitmap, HBufC8* aData);
-	static CWebCameraBuffer* NewLC(const CFbsBitmap& aBitmap, HBufC8* aData);
-	static CWebCameraBuffer* NewL(CFbsBitmap* aBitmap, HBufC8* aData);
-	static CWebCameraBuffer* NewLC(CFbsBitmap* aBitmap, HBufC8* aData);
-
-public:
-	virtual TInt NumFrames();
-	virtual TDesC8* DataL( TInt aFrameIndex );
-	virtual CFbsBitmap& BitmapL( TInt aFrameIndex );
-	virtual RChunk& ChunkL();
-	virtual TInt ChunkOffsetL( TInt aFrameIndex );
-	virtual TInt FrameSize( TInt aFrameIndex );
-	virtual void Release();
-    ~CWebCameraBuffer();
-
-private:
-	void ConstructL(const CFbsBitmap& aBitmap, HBufC8* aData);
-	void ConstructL(CFbsBitmap* aBitmap, HBufC8* aData);
-    CWebCameraBuffer();
-
-private:
-	CFbsBitmap* iBitmap;
-	HBufC8*     iImageData;
-	RChunk      iChunk;
-
-	TBool iOwnBitmap;
-	TBool iOwnData;
-	};  
-
-#endif // ECAMWEBCAMERABUFFER_H
+/*
+* Copyright (c) 2010 ISB.
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the "Symbian Foundation License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+*
+* Initial Contributors:
+* ISB - Initial contribution
+*
+* Contributors:
+*
+* Description:
+*
+*/
+
+#ifndef ECAMWEBCAMERABUFFER_H
+#define ECAMWEBCAMERABUFFER_H
+
+#include <e32base.h>
+#include <ecam.h>
+
+
+class CFbsBitmap;
+class CWebCameraBuffer : public CBase
+					   , public MCameraBuffer
+	{
+public:
+	static CWebCameraBuffer* NewL(const CFbsBitmap& aBitmap, HBufC8* aData);
+	static CWebCameraBuffer* NewLC(const CFbsBitmap& aBitmap, HBufC8* aData);
+	static CWebCameraBuffer* NewL(CFbsBitmap* aBitmap, HBufC8* aData);
+	static CWebCameraBuffer* NewLC(CFbsBitmap* aBitmap, HBufC8* aData);
+
+public:
+	virtual TInt NumFrames();
+	virtual TDesC8* DataL( TInt aFrameIndex );
+	virtual CFbsBitmap& BitmapL( TInt aFrameIndex );
+	virtual RChunk& ChunkL();
+	virtual TInt ChunkOffsetL( TInt aFrameIndex );
+	virtual TInt FrameSize( TInt aFrameIndex );
+	virtual void Release();
+    ~CWebCameraBuffer();
+
+private:
+	void ConstructL(const CFbsBitmap& aBitmap, HBufC8* aData);
+	void ConstructL(CFbsBitmap* aBitmap, HBufC8* aData);
+    CWebCameraBuffer();
+
+private:
+	CFbsBitmap* iBitmap;
+	HBufC8*     iImageData;
+	RChunk      iChunk;
+
+	TBool iOwnBitmap;
+	TBool iOwnData;
+	};  
+
+#endif // ECAMWEBCAMERABUFFER_H
--- a/mmplugins/cameraplugins/source/webcamera/ecamwebcameraplugin.cpp	Thu Mar 25 11:21:36 2010 +0900
+++ b/mmplugins/cameraplugins/source/webcamera/ecamwebcameraplugin.cpp	Tue Oct 19 11:48:59 2010 +0900
@@ -1,1332 +1,1303 @@
-/*
-* Copyright (c) 2010 ISB.
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of the "Symbian Foundation License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
-*
-* Initial Contributors:
-* ISB - Initial contribution
-*
-* Contributors:
-*
-* Description:
-*
-*/
-
-#include <ecom/ecom.h>
-#include <ecom/implementationproxy.h>
-#include <ecamuids.hrh>
-#include <ecam.h>
-#include "ecamwebcameraplugin.h"
-#include "ecamwebcamerapluginuids.hrh"
-#include "ecamwebcamerabuffer.h"
-#include "ecamwebcameraadvset.h"
-#include "ecamwebcameraactive.h"
-#include "ecamwebcameravfactive.h"
-
-
-_LIT(KCameraDriverPddName, "webcamera.pdd");
-_LIT(KCameraDriverLddName, "ewebcamera.ldd");
-
-const TInt KCaptureWidth     = 160;					// Capture image width
-const TInt KCaptureHeight    = 120;					// Capture image height
-const TInt KCaptureLineBytes = KCaptureWidth * 3;	// bytes of one line
-
-//
-// CWebCamera class
-//
-
-CWebCamera::CWebCamera():
-	iCaptureBufPtr(NULL, 0)
-	{
-	iInfo.iHardwareVersion.iMajor = 0;
-	iInfo.iHardwareVersion.iMinor = 0;
-	iInfo.iHardwareVersion.iBuild = 0;
-	iInfo.iSoftwareVersion.iMajor = 0;
-	iInfo.iSoftwareVersion.iMinor = 0;
-	iInfo.iSoftwareVersion.iBuild = 0;
-	iInfo.iOrientation = TCameraInfo::EOrientationOutwards;
-
-	iInfo.iOptionsSupported = 0;
-	iInfo.iOptionsSupported |= TCameraInfo::EViewFinderDirectSupported;
-	iInfo.iOptionsSupported |= TCameraInfo::EViewFinderBitmapsSupported;
-	iInfo.iOptionsSupported |= TCameraInfo::EImageCaptureSupported;
-	iInfo.iOptionsSupported |= TCameraInfo::EVideoCaptureSupported;
-	iInfo.iOptionsSupported |= TCameraInfo::EContrastSupported;
-	iInfo.iOptionsSupported |= TCameraInfo::EBrightnessSupported;
-	iInfo.iOptionsSupported |= TCameraInfo::EViewFinderClippingSupported;
-
-	iInfo.iFlashModesSupported 			= 0; // Bitfield of TFlash values
-	iInfo.iExposureModesSupported		= 0; // Bitfield of TExposure values
-	iInfo.iWhiteBalanceModesSupported	= 0; // Bitfield of TWhiteBalance values
-
-	iInfo.iMinZoom = KMinTestCameraZoom;
-	// KMinTestCameraZoom is zero or negative
-	// note the algorithm for creating of zoom factor
-	iInfo.iMinZoomFactor = TReal32(1)/TReal32(1 << -KMinTestCameraZoom);
-	iInfo.iMaxZoom = KMaxTestCameraZoom;
-	iInfo.iMaxZoomFactor = 1 << KMaxTestCameraZoom;
-
-	iInfo.iMaxDigitalZoom = KMaxTestCameraDigitalZoom;
-	iInfo.iMaxDigitalZoomFactor = KMaxTestCameraDigitalZoomFactor;
-
-	iInfo.iImageFormatsSupported = 0;
-	iInfo.iImageFormatsSupported |= EFormatExif;
-	iInfo.iImageFormatsSupported |= EFormatFbsBitmapColor4K;
-	iInfo.iImageFormatsSupported |= EFormatFbsBitmapColor64K;
-	iInfo.iImageFormatsSupported |= EFormatFbsBitmapColor16M;
-
-	iInfo.iVideoFrameFormatsSupported = 0;
-	iInfo.iVideoFrameFormatsSupported |= EFormatFbsBitmapColor4K;
-	iInfo.iVideoFrameFormatsSupported |= EFormatFbsBitmapColor64K;
-	iInfo.iVideoFrameFormatsSupported |= EFormatFbsBitmapColor16M;
-	iInfo.iMaxFramesPerBufferSupported = 1;
-	iInfo.iMaxBuffersSupported = 2;
-	}
-	
-CWebCamera::~CWebCamera()
-	{
-	delete iCaptureBuf;
-	delete iAdvSettingsImpl;
-	delete iVfActive;
-	delete iActive;
-	iImageSizes.Close();
-	iDriver.Close();
-	}
-	
-CWebCamera* CWebCamera::NewL()
-	{
-	CWebCamera* self = new(ELeave) CWebCamera;
-	CleanupStack::PushL(self);
-	self->ConstructL();
-	CleanupStack::Pop(self);
-
-	return self;
-	}
-
-void CWebCamera::ConstructL()
-	{
-	RDebug::Print(_L("CWebCamera::ConstructL_S"));
-	// Open drivers.
-	TInt err;
-
-	err = User::LoadPhysicalDevice(KCameraDriverPddName);
-	RDebug::Print(_L("CWebCamera::ConstructL LoadPhysicalDevice[%d]"), err);
-
-	if (err != KErrNone && err != KErrAlreadyExists)
-		{
-		User::Leave(err);
-		}
-
-	err = User::LoadLogicalDevice(KCameraDriverLddName);
-	RDebug::Print(_L("CWebCamera::ConstructL LoadLogicalDevice[%d]"), err);
-
-	if (err != KErrNone && err != KErrAlreadyExists)
-		{
-		User::Leave(err);
-		}
-
-	RDebug::Print(_L("CWebCamera::ConstructL iDriver.Open()"));
-	iDriver.Open();
-
-	iActive = CWebCameraActive::NewL(this, iDriver);
-	iVfActive = CWebCameraVfActive::NewL(this, iDriver);
-
-	User::LeaveIfError(iImageSizes.Append(TSize(640, 480)));	// VGA
-	User::LeaveIfError(iImageSizes.Append(TSize(160, 120)));	// QQVGA
-	iInfo.iNumImageSizesSupported = iImageSizes.Count();
-
-	RDebug::Print(_L("CWebCamera::ConstructL_E"));
-	}
-
-/** 
-from CCameraPlugin
-
-A call to one of the factory functions firstly loads the plugin, followed by a
-call to this function to complete construction.
-
-Creates an object representing a camera.
-
-@param  aObserver
-        Reference to class derived from MCameraObserver2 designed to receive
-        notification of asynchronous event completion.
-@param	aCameraIndex
-        Index from 0 to CamerasAvailable()-1 inclusive specifying the
-        camera device to use.
-@return Pointer to a fully constructed CCamera object. Ownership is passed
-        to the caller.
-
-@leave  May leave with KErrNoMemory or KErrNotSupported if aCameraIndex is
-        out of range.	
-*/
-void CWebCamera::Construct2L(MCameraObserver& aObserver,TInt aCameraIndex)
-	{
-	iObserver = &aObserver;
-	iCameraIndex = aCameraIndex;
-	}
-
-/** 
-from CCameraPlugin
-
-A call to one of the factory functions firstly loads the plugin, followed by a
-call to this function to complete construction.
-
-Duplicates the original camera object for use by, for example, multimedia systems.
-
-May leave with KErrNoMemory or KErrNotFound if aCameraHandle is not valid.
-
-@param  aObserver
-        Reference to an observer.
-@param  aCameraHandle Handle of an existing camera object.
-
-@return Duplicate of the original camera object. 
-*/
-void CWebCamera::Construct2DupL(MCameraObserver& aObserver,TInt aCameraHandle)
-	{
-	iObserver = &aObserver;
-	iCameraHandle = aCameraHandle;
-	}
-
- /** 
-from CCameraPlugin
-
- A call to one of the factory functions firstly loads the plugin, followed by a
-call to this function to complete construction.
- 
-Creates an object representing a camera.
-
-@param  aObserver
-        Reference to class derived from MCameraObserver2 designed to receive
-        notification of asynchronous event completion.
-@param	aCameraIndex
-        Index from 0 to CamerasAvailable()-1 inclusive specifying the
-        camera device to use.
-@param	aPriority
-        Value from -100 to 100 indicating relative priority of client to
-        use camera.
-
-@return Pointer to a fully constructed CCamera object. Ownership is passed
-        to the caller.
-
-@leave  May leave with KErrNoMemory or KErrNotSupported if aCameraIndex is
-        out of range.
-*/
-void CWebCamera::Construct2L(MCameraObserver2& aObserver,TInt aCameraIndex,TInt aPriority)
-	{
-	iObserver2 = &aObserver;
-	iCameraIndex = aCameraIndex;
-	iPriority = aPriority;
-	}
-	
-/** 
-from CCameraPlugin
-
-Duplicates the original camera object for use by, for example, multimedia systems.
-
-@leave  KErrNoMemory if out of memory.
-@leave  KErrNotFound if aCameraHandle is not valid.	   
-@leave  KErrPermissionDenied if the application does not have
-        the UserEnvironment capability.
-
-@param  aObserver
-        Reference to an observer.
-@param  aCameraHandle Handle of an existing camera object.
-
-@return Duplicate of the original camera object. 
-
-@capability	UserEnvironment
-			An application that creates a CCamera object must have
-			the UserEnvironment capability.
-			
-@note   Applications using this method to create camera object may not receive enums/uids added in future(after being baselined). 
-		To receive them, they should rather use New2L() or NewDuplicate2L(), in which case, they should prepare 
-		themselves to receive unrecognised values.
-*/
-void CWebCamera::Construct2DupL(MCameraObserver2& aObserver,TInt aCameraHandle)
-	{
-	iObserver2 = &aObserver;
-	iCameraHandle = aCameraHandle;
-	}
-
-//
-// virtual functions
-//
-
-/**
-from CCamera
-
-Gets information about the camera device.
-
-@param  aInfo 
-        On return, information about the camera device. See TCameraInfo. 
-*/
-void CWebCamera::CameraInfo(TCameraInfo& aInfo) const
-	{
-	aInfo = iInfo;
-	}
-
-/** 
-from CCamera
-
-Asynchronous function that performs any required initialisation and reserves
-the camera for exclusive use.
-
-Calls MCameraObserver:: ReserveComplete() when complete. 
-*/
-void CWebCamera::Reserve()
-	{
-	iActive->Reserve();
-	}
-
-/** 
-from CCamera
-
-De-initialises the camera, allowing it to be used by other clients. 
-*/
-void CWebCamera::Release()
-	{
-	StopViewFinder();
-	iReserved = EFalse;
-	}
-
-/** 
-from CCamera
-
-Asynchronous method to switch on camera power.
-
-User must have successfully called Reserve() prior to calling this function.
-
-Calls MCameraObserver::PowerOnComplete() when power on is complete. 
-*/
-void CWebCamera::PowerOn()
-	{
-	iActive->PowerOn();
-	}
-
-/** 
-from CCamera
-
-Synchronous function for switching off camera power. 
-*/
-void CWebCamera::PowerOff()
-	{
-	StopViewFinder();
-	iPowerOn = EFalse;
-	}
-
-/**
-from CCamera
-
-Gets the device-unique handle of this camera object.
-
-@return  The device-unique handle of this camera object. 
-*/
-TInt CWebCamera::Handle()
-	{
-	return 0;
-	}
-
-/** 
-from CCamera
-
-Sets the zoom factor.
-
-This must be in the range of TCameraInfo::iMinZoom to TCameraInfo::iMaxZoom
-inclusive. May leave with KErrNotSupported if the specified zoom factor is
-out of range.
-
-@param aZoomFactor 
-       Required zoom factor.
-*/
-void CWebCamera::SetZoomFactorL(TInt /*aZoomFactor = 0*/)
-	{
-	}
-
-/** 
-from CCamera
-
-Gets the currently set zoom factor.
-
-@return  The currently set zoom factor.
-*/
-TInt CWebCamera::ZoomFactor() const
-	{
-	return 0;
-	}
-
-/** 
-from CCamera
-
-Sets the digital zoom factor.
-
-This must be in the range of 0 to TCameraInfo::iMaxDigitalZoom inclusive.
-
-May leave with KErrNotSupported if the zoom factor is out of range.
-
-@param  aDigitalZoomFactor
-        The required digital zoom factor. 
-*/
-void CWebCamera::SetDigitalZoomFactorL(TInt /*aDigitalZoomFactor = 0*/)
-	{
-	}
-
-/** 
-from CCamera
-
-Gets the currently set digital zoom factor.
-
-@return  The currently set digital zoom factor. 
-*/
-TInt CWebCamera::DigitalZoomFactor() const
-	{
-	return 0;
-	}
-
-/**
-from CCamera
-
-Sets the contrast adjustment of the device.
-
-This must be in the range of -100 to +100 or EContrastAuto. May leave with
-KErrNotSupported if the specified contrast value is out of range.
-
-@param  aContrast 
-        Required contrast value. See TCameraInfo::iContrastSupported 
-*/
-void CWebCamera::SetContrastL(TInt /*aContrast*/)
-	{
-	}
-
-/** 
-from CCamera
-
-Gets the currently set contrast value.
-
-@return  The currently set contrast value.
-*/
-TInt CWebCamera::Contrast() const
-	{
-	return 0;
-	}
-
-/** 
-from CCamera
-
-Sets the brightness adjustment of the device.
-
-No effect if this is not supported, see TCameraInfo::iBrightnessSupported.
-
-This must be in the range of -100 to +100 or EBrightnessAuto. May leave
-with KErrNotSupported if the brightness adjustment is out of range.
-
-@param  aBrightness
-        The required brightness adjustment. 
-*/
-void CWebCamera::SetBrightnessL(TInt /*aBrightness*/)
-	{
-	}
-
-/** 
-from CCamera
-
-Gets the currently set brightness adjustment value.
-
-@return  The currently set brightness adjustment value. 
-*/
-TInt CWebCamera::Brightness() const
-	{
-	return 0;
-	}
-
-/** 
-from CCamera
-
-Sets the flash mode.
-
-No effect if this is not supported, see TCameraInfo::iFlashModesSupported.
-
-May leave with KErrNotSupported if the specified flash mode is invalid.
-
-@param  aFlash
-        The required flash mode. 
-*/
-void CWebCamera::SetFlashL(TFlash /*aFlash = EFlashNone*/)
-	{
-	}
-
-/** 
-from CCamera
-
-Gets the currently set flash mode.
-
-@return  The currently set flash mode. 
-@note	if CCamera::New2L() or CCamera::NewDuplicate2L() is not used to create CCamera object, it is assumed that 
-application is not prepared to receive extra added enum values (unrecognised). So, any extra enum value(unrecognised)
-(set in the ECAM implementation because of sharing clients) should not be returned from the ECAM implementation.
-To receive extra added enum values, application should rather use CCamera::New2L() or CCamera::NewDuplicate2L() 
-to create camera object. ECAM implementation, after verifying this,(by checking version no.) may send new values, if set.
-In this case, application is assumed to be prepared to receive unrecognised enum values.
-
-@see CCamera::CCameraAdvancedSettings::FlashMode()	
-*/
-CCamera::TFlash CWebCamera::Flash() const
-	{
-	return EFlashNone;
-	}
-
-/** 
-from CCamera
-
-Sets the exposure adjustment of the device.
-
-No effect if this is not supported, see CameraInfo::iExposureModesSupported.
-
-May leave with KErrNotSupported if the specified exposure adjustment is invalid.
-
-@param  aExposure
-        The required exposure adjustment. 
-*/
-void CWebCamera::SetExposureL(TExposure /*aExposure = EExposureAuto*/)
-	{
-	}
-
-/** 
-from CCamera
-
-Gets the currently set exposure setting value.
-
-@return  The currently set exposure setting value. 
-*/
-CCamera::TExposure CWebCamera::Exposure() const
-	{
-	return EExposureAuto;
-	}
-
-/** 
-from CCamera
-
-Sets the white balance adjustment of the device.
-
-No effect if this is not supported, see TCameraInfo::iWhiteBalanceModesSupported.
-
-@param  aWhiteBalance
-        The required white balance adjustment.
-
-@leave  KErrNotSupported if the specified white balance adjustment
-        is invalid.
-*/
-void CWebCamera::SetWhiteBalanceL(TWhiteBalance /*aWhiteBalance = EWBAuto*/)
-	{
-	}
-
-/** 
-from CCamera
-
-Gets the currently set white balance adjustment value.
-
-@return  The currently set white balance adjustment value.
-
-@note	if CCamera::New2L() or CCamera::NewDuplicate2L() is not used to create CCamera object, it is assumed that 
-application is not prepared to receive extra added enum values (unrecognised). So, any extra enum value(unrecognised)
-(set in the ECAM implementation because of sharing clients) should not be returned from the ECAM implementation.
-To receive extra added enum values, application should rather use CCamera::New2L() or CCamera::NewDuplicate2L() 
-to create camera object. ECAM implementation, after verifying this,(by checking version no.) may send new values, if set.
-In this case, application is assumed to be prepared to receive unrecognised enum values.
-Refer  CCamera::CCameraAdvancedSettings::WhiteBalanceMode() implementation
-
-@see CCamera::CCameraAdvancedSettings::WhiteBalanceMode()
-*/
-CCamera::TWhiteBalance CWebCamera::WhiteBalance() const
-	{
-	return EWBAuto;
-	}
-
-/** 
-from CCamera
-
-Starts transfer of view finder data to the given portion of the screen using
-direct screen access.
-
-The aScreenRect parameter is in screen co-ordinates and may be modified if,
-eg, the camera requires the destination to have a certain byte alignment, etc.
-
-@param  aWs 
-        Window server session.
-@param  aScreenDevice 
-        Screen device.
-@param  aWindow 
-        Displayable window.
-@param  aScreenRect 
-        Portion of the screen to which view finder data is to be
-        transferred. This is in screen co-ordinates and may be modified if, for example,
-        the camera requires the destination to have a certain byte alignment.
-
-@leave  KErrNotReady if PowerOn() has either not
-        been called, or has not yet completed.
-
-@note   This method is assumed to be meant for default display only. KECamDefaultViewFinderHandle should be used to 
-		refer viewfinders started using CCamera methods. 
-
-@see	CCamera::CCameraV2DirectViewFinder
-*/
-void CWebCamera::StartViewFinderDirectL(RWsSession& aWs, CWsScreenDevice& aScreenDevice, RWindowBase& aWindow, TRect& aScreenRect)
-	{
-	RDebug::Print(_L("CWebCamera::StartViewFinderDirectL"));
-	TRect emptyRect;
-	StartViewFinderDirectL(aWs, aScreenDevice, aWindow, aScreenRect, emptyRect);
-	}
-
-/** 
-from CCamera
-
-Starts transfer of view finder data to the given portion of the screen using
-direct screen access and also clips to the specified portion of the screen.
-
-The view finder has the same size and position as aScreenRect but is only
-visible in the intersection of aScreenRect and aClipRect. May leave with KErrNotSupported
-or KErrNotReady if Reserve() has not been called, or has not yet completed.
-
-@param  aWs 
-        Window server session.
-@param  aScreenDevice 
-        Screen device.
-@param  aWindow 
-        Displayable window.
-@param  aScreenRect 
-        Portion of the screen to which view finder data is to be
-        transferred. This is in screen co-ordinates and may be modified if, for example,
-        the camera requires the destination to have a certain byte alignment.
-@param  aClipRect
-        The rectangle to which the screen will be clipped.
-
-@leave  KErrNotReady if PowerOn() hasn't been called successfully. 
-
-@note   This method is assumed to be meant for default display only. KECamDefaultViewFinderHandle should be used to 
-		refer viewfinders started using CCamera methods.
-
-@see	CCamera::CCameraClientViewFinder
-*/
-void CWebCamera::StartViewFinderDirectL(RWsSession& aWs, CWsScreenDevice& aScreenDevice, RWindowBase& aWindow, TRect& aScreenRect, TRect& aClipRect)
-	{
-	RDebug::Print(_L("CWebCamera::StartViewFinderDirectL'"));
-	iVfActive->StartViewFinderDirectL(aWs, aScreenDevice, aWindow, aScreenRect, aClipRect);
-	}
-
-/** 
-from CCamera
-
-Starts transfer of view finder data.
-
-Bitmaps are returned by MCameraObserver::ViewFinderFrameReady().
-
-@param  aSize 
-        On return, the size used.
-@leave  KErrNotReady if PowerOn() has not been called, or has not yet completed.
-
-@note   This method is assumed to be meant for default display only. 
-
-@see	CCamera::CCameraClientViewFinder 
-*/
-void CWebCamera::StartViewFinderBitmapsL(TSize& /*aSize*/)
-	{
-	}
-	
-/** 
-from CCamera
-
-Starts transfer of view finder data and clips the bitmap to the specified clip
-rectangle.
-
-The bitmap is the size of the intersection of aSize and aClipRect, not simply
-aSize padded with white space.
-
-@param  aSize
-        On return, the size used.
-@param  aClipRect 
-        Required clip rectangle. May be modified if, for example,
-        the camera only supports certain byte alignments.
-
-@leave  KErrInUse if Reserve() hasn't been called successfully.
-@leave  KErrNotReady if PowerOn() hasn't been called successfully.
-
-@note   This method is assumed to be meant for default display only. 
-
-@see	CCamera::CCameraClientViewFinder
-*/
-void CWebCamera::StartViewFinderBitmapsL(TSize& /*aSize*/,TRect& /*aClipRect*/)
-	{
-	}
-
-/** 
-from CCamera
-
-Starts transfer of view finder data.
-
-Picture data is returned by MCameraObserver2::ViewFinderReady().
-
-@param  aImageFormat 
-        The image format requested by the client.
-@param  aSize 
-        On return, the size used.
-@leave  KErrNotSupported 
-@leave  KErrNotReady if Reserve() has not been
-        called, or has not yet completed. 
-
-@note   This method is assumed to be meant for default display only. KECamDefaultViewFinderHandle should be used to 
-		refer viewfinders started using CCamera methods.
-
-@see	CCamera::CCameraClientViewFinder
-*/
-void CWebCamera::StartViewFinderL(TFormat /*aImageFormat*/,TSize& /*aSize*/)
-	{
-	}
-
-/** 
-from CCamera
-
-Starts transfer of view finder data and clips the picture to the specified clip
-rectangle. Picture data is returned by MCameraObserver2::ViewFinderReady().
-
-The picture is the size of the intersection of aSize and aClipRect, not simply
-aSize padded with white space.
-
-@param  aImageFormat 
-        The image format.
-@param  aSize
-        On return, the size used.
-@param  aClipRect 
-        Required clip rectangle. May be modified if, for example,
-        the camera only supports certain byte alignments.
-
-@leave  KErrInUse if Reserve() hasn't been called successfully,
-@leave  KErrNotReady if PowerOn() hasn't been called successfully.
-
-@note   This method is assumed to be meant for default display only. KECamDefaultViewFinderHandle should be used to 
-		refer viewfinders started using CCamera methods.
-
-@see	CCamera::CCameraClientViewFinder
-*/
-void CWebCamera::StartViewFinderL(TFormat /*aImageFormat*/,TSize& /*aSize*/,TRect& /*aClipRect*/)
-	{
-	}
-
-/** 
-Stops transfer of view finder data to the screen. 
-
-@note   This method is assumed to be meant for default display only. KECamDefaultViewFinderHandle should be used to 
-		refer viewfinders started using CCamera methods.
-
-@see	CCamera::CCameraV2DirectViewFinder
-@see	CCamera::CCameraClientViewFinder
-*/
-void CWebCamera::StopViewFinder()
-	{
-	iVfActive->StopViewFinder();
-	}
-
-/** 
-from CCamera
-
-Queries whether the view finder is active.
-
-@return  ETrue if the view finder is active. EFalse if the view finder is not
-         active. 
-         
-@note   This method is assumed to be meant for default display only. KECamDefaultViewFinderHandle should be used to 
-		refer viewfinders started using CCamera methods.
-
-@see	CCamera::CCameraV2DirectViewFinder
-@see	CCamera::CCameraClientViewFinder
-*/
-TBool CWebCamera::ViewFinderActive() const
-	{
-	return iVfActive->ViewFinderActive();
-	}
-
-/** 
-from CCamera
-
-Sets whether view finder mirroring is on.
-
-Used to switch between what the camera sees and what you would see if the
-device were a mirror.
-
-@param  aMirror 
-        ETrue to set mirroring on, EFalse to set mirroring off.
-
-@leave  KErrNotSupported.
-
-@note   This method is assumed to be meant for default display only. KECamDefaultViewFinderHandle should be used to 
-		refer viewfinders started using CCamera methods.
-
-@see	CCamera::CCameraV2DirectViewFinder
-@see	CCamera::CCameraClientViewFinder
-*/
-void CWebCamera::SetViewFinderMirrorL(TBool /*aMirror*/)
-	{
-	}
-
-/** 
-from CCamera
-
-Gets whether view finder mirroring is active.
-
-@return  ETrue if mirroring is set, EFalse if mirroring is not set. 
-
-@note   This method is assumed to be meant for default display only. KECamDefaultViewFinderHandle should be used to 
-		refer viewfinders started using CCamera methods.
-
-@see	CCamera::CCameraV2DirectViewFinder
-@see	CCamera::CCameraClientViewFinder
-*/
-TBool CWebCamera::ViewFinderMirror() const
-	{
-	return EFalse;
-	}
-
-/** 
-from CCamera
-
-Performs setup and allocation of memory.
-
-Called prior to calling CaptureImage() to keep the latency of that function
-to a minimum.
-
-Needs to be called only once for multiple CaptureImage() calls. May leave
-with KErrNotSupported or KErrNoMemory or KErrInUse or KErrNotReady.
-
-The specified image format must be one of the formats supported
-(see TCameraInfo::iImageFormatsSupported).
-
-The specified size index must be in the range of 0 to TCameraInfo::iNumImageSizesSupported-1
-inclusive.
-
-@param  aImageFormat 
-        The image format.
-@param  aSizeIndex 
-        Size index.
-
-@leave  KErrNotSupported
-@leave  KErrNoMemory
-@leave  KErrNotReady if PowerOn() hasn't been called successfully.
-
-@see 	CCamera::CCameraPreImageCaptureControl::PrepareImageCapture(TPrepareImageParameters aPrepareImageParameters)
-*/
-void CWebCamera::PrepareImageCaptureL(TFormat /*aImageFormat*/,TInt /*aSizeIndex*/)
-	{
-	}
-
-/** 
-from CCamera
-
-Performs setup and allocation of memory and clips the image to the specified
-rectangle.
-
-No effect unless TCameraInfo::iImageClippingSupported is set to ETrue. The
-image captured is the intersection of aClipRect and the rectangle from (0,0)
-to aSize. Needs to be called only once for multiple CaptureImage() calls.
-May leave with KErrNotSupported or KErrNoMemory.
-
-The specified image format must be one of the formats supported (see TCameraInfo::iImageFormatsSupported).
-
-The specified size index must be in the range of 0 to TCameraInfo::iNumImageSizesSupported-1
-inclusive.
-
-@param  aImageFormat 
-        The image format.
-@param  aSizeIndex 
-        Size index.
-@param  aClipRect
-        The rectangle to which the image is to be clipped.
-
-@leave   KErrNotSupported
-@leave   KErrNoMemory
-@leave   KErrInUse if Reserve() hasn't been called successfully
-@leave   KErrNotReady if PowerOn()
-         hasn't been called successfully.
-
-@see 	CCamera::CCameraPreImageCaptureControl::PrepareImageCapture(TPrepareImageParameters aPrepareImageParameters)
-*/
-void CWebCamera::PrepareImageCaptureL(TFormat /*aImageFormat*/,TInt /*aSizeIndex*/,const TRect& /*aClipRect*/)
-	{
-	}
-
-/** 
-from CCamera
-
-Asynchronously performs still image capture.
-
-Calls MCameraObserver::ImageReady() when complete. 
-
-@see CCamera::CCameraImageCapture
-@see CCamera::CCameraPreImageCaptureControl
-*/
-void CWebCamera::CaptureImage()
-	{
-	delete iCaptureBuf;
-	iCaptureBuf = NULL;
-
-	iCaptureBuf = HBufC8::NewL(KMaxBufSize);
-	iCaptureBufPtr.Set(iCaptureBuf->Des());
-	iCaptureBufPtr.SetLength(0);
-
-	iActive->ImageCapture(iCaptureBufPtr);
-
-	iImageCaptureActive = ETrue;
-	}
-
-/** 
-from CCamera
-
-Cancels the asynchronous still image capture. 
-
-@see CCamera::CCameraImageCapture
-*/
-void CWebCamera::CancelCaptureImage()
-	{
-	iImageCaptureActive = EFalse;
-	}
-
-/** 
-from CCamera
-
-Enumerates through the available image capture sizes, based on the specified
-size index and format
-
-The size index must be in the range 0 to TCameraInfo::iNumImageSizesSupported-1
-inclusive.
-
-@param  aSize 
-        Image size.
-@param  aSizeIndex 
-        Size index.
-@param  aFormat 
-        The image format.
-*/
-void CWebCamera::EnumerateCaptureSizes(TSize& aSize, TInt aSizeIndex, TFormat aFormat) const
-	{
-	if (aSizeIndex < 0 || aSizeIndex >= iInfo.iNumImageSizesSupported ||
-		!(aFormat & iInfo.iImageFormatsSupported) )
-		{
-		aSize = TSize(0,0);
-		}
-	else
-		{
-		aSize = iImageSizes[aSizeIndex];
-		}
-	}
-
-/** 
-from CCamera
-
-Prepares for video capture.
-
-Performs setup and allocation of memory prior to calling StartVideoCapture()
-to keep the latency of that function to a minimum.
-
-May leave with KErrNotSupported or KErrNoMemory.
-
-@param  aFormat 
-        Format must be one of the video frame formats supported (see
-        TCameraInfo::iVideoFrameFormatsSupported).
-@param  aSizeIndex 
-        Size index  must be in the range 0 to TCameraInfo::iNumVideoFrameSizesSupported-1
-        inclusive.
-@param  aRateIndex 
-        The rate must be in the range 0 to TCameraInfo::iNumVideoFrameRatesSupported-1
-        inclusive.
-@param  aBuffersToUse 
-        The number of discrete buffers to use.
-@param  aFramesPerBuffer 
-        How large the buffers are to be. Must be less than
-        or equal to TCameraInfo::iMaxFramesPerBufferSupported. One buffer is returned
-        to MCameraObserver::FrameBufferReady() at a time.
-
-@leave  May leave with KErrNotSupported, KErrNoMemory, or KErrNotReady if PowerOn() 
-		hasn't been called successfully.
-
-@see 	CCamera::CCameraVideoCaptureControl::PrepareVideoCapture(const TPrepareVideoParameters& aPrepareVideoParameters)
-*/
-void CWebCamera::PrepareVideoCaptureL(TFormat /*aFormat*/,TInt /*aSizeIndex*/,TInt /*aRateIndex*/,TInt /*aBuffersToUse*/,TInt /*aFramesPerBuffer*/)
-	{
-	}
-
-/** 
-from CCamera
-
-Prepares for video capture and clips the frames to the given rectangle.
-
-Performs setup and allocation of memory prior to calling StartVideoCapture()
-to keep the latency of that function to a minimum.
-
-May leave with KErrNotSupported or KErrNoMemory.
-
-@param  aFormat 
-        Format must be one of the video frame formats supported (see
-        TCameraInfo::iVideoFrameFormatsSupported).
-@param  aSizeIndex 
-        Size index must be in the range 0 to TCameraInfo::iNumVideoFrameSizesSupported-1
-        inclusive.
-@param  aRateIndex 
-        The rate must be in the range 0 to TCameraInfo::iNumVideoFrameRatesSupported-1
-        inclusive.
-@param  aBuffersToUse 
-        The number of discrete buffers to use.
-@param  aFramesPerBuffer 
-        How large the buffers are to be. Must be less than
-        or equal to TCameraInfo::iMaxFramesPerBufferSupported. One buffer is returned
-        to MCameraObserver::FrameBufferReady() at a time.
-@param  aClipRect 
-        The rectangle to which the image is to be clipped.
-@leave  KErrNotSupported
-@leave  KErrNoMemory, 
-@leave  KErrInUse if Reserve() hasn't been called successfully
-@leave  KErrNotReady if PowerOn() hasn't been called successfully.
-
-@see 	CCamera::CCameraVideoCaptureControl::PrepareVideoCapture(const TPrepareVideoParameters& aPrepareVideoParameters)
-*/
-void CWebCamera::PrepareVideoCaptureL(TFormat /*aFormat*/,TInt /*aSizeIndex*/,TInt /*aRateIndex*/,TInt /*aBuffersToUse*/,TInt /*aFramesPerBuffer*/,const TRect& /*aClipRect*/)
-	{
-	}
-
-/** 
-from CCamera
-
-Starts capturing video.
-
-Calls MCameraObserver::FrameBufferReady() when each buffer has been filled
-with the required number of frames, as set by PrepareVideoCaptureL(). 
-*/
-void CWebCamera::StartVideoCapture()
-	{
-	}
-
-/** 
-from CCamera
-
-Stops video capture. 
-*/
-void CWebCamera::StopVideoCapture()
-	{
-	}
-
-/** 
-from CCamera
-
-Tests whether video capture is active.
-
-@return  ETrue if video capture is active. EFalse if video capture is not active 
-*/
-TBool CWebCamera::VideoCaptureActive() const
-	{
-	return EFalse;
-	}
-
-/** 
-from CCamera
-
-Enumerates through the available video frame sizes, based on the specified
-size index and format.
-
-@param  aSize 
-        On return the available video frame sizes. Sizes should be returned
-        in order, largest first, so clients do not have to iterate through every one.
-@param  aSizeIndex 
-        Size index. Must be in the range 0 to TCameraInfo::iNumVideoFrameSizesSupported-1
-        inclusive
-@param  aFormat 
-        Image format. 
-*/
-void CWebCamera::EnumerateVideoFrameSizes(TSize& /*aSize*/,TInt /*aSizeIndex*/,TFormat /*aFormat*/) const
-	{
-	}
-
-/** 
-from CCamera
-
-Enumerates through the available video frame rates, based on the specified
-rate index, video frame format, size index and exposure mode.
-
-@param  aRate 
-        On return, the available video frame rates. Some rates may not
-        be available due to, for example, current flash mode setting. In those cases
-        a rate of 0 will be returned. Rates should be returned in order, highest first,
-        so clients do not have to iterate through every one.
-@param  aRateIndex 
-        The rate index. Must be in the range 0 to TCameraInfo::iNumVideoFrameRatesSupported-1
-        inclusive.
-@param  aFormat 
-        The format.
-@param  aSizeIndex 
-        The size index.
-@param  aExposure 
-        The exposure mode. 
-*/
-void CWebCamera::EnumerateVideoFrameRates(TReal32& /*aRate*/,TInt /*aRateIndex*/,TFormat /*aFormat*/,TInt /*aSizeIndex*/,TExposure /*aExposure = EExposureAuto*/) const
-	{
-	}
-
-/** 
-from CCamera
-
-Gets the frame size currently in use.
-
-@param  aSize 
-        The frame size currently in use. 
-*/
-void CWebCamera::GetFrameSize(TSize& /*aSize*/) const
-	{
-	}
-
-/** 
-from CCamera
-
-Gets the frame rate currently in use.
-
-@return  The frame rate currently in use. 
-*/
-TReal32 CWebCamera::FrameRate() const
-	{
-	return 0.0;
-	}
-
-/** 
-from CCamera
-
-Gets the number of buffers currently in use.
-
-@return  The number of buffers currently in use. 
-*/
-TInt CWebCamera::BuffersInUse() const
-	{
-	return 0;
-	}
-
-/** 
-from CCamera
-
-Gets the number of frames per buffer currently in use.
-
-@return  The number of frames per buffer currently in use. 
-*/
-TInt CWebCamera::FramesPerBuffer() const
-	{
-	return 0;
-	}
-
-/** 
-from CCamera
-
-Sets the quality value to use if jpeg is a supported image for video format.
-
-Ignored if jpeg is not a supported image for video format.
-
-@param  aQuality
-        The quality value to use, clamped to the range 1 to 100.
-        
-@see	CCamera::CCameraPreImageCaptureControl::TPrepareImageParameters::iImageMaxMemorySize
-*/
-void CWebCamera::SetJpegQuality(TInt /*aQuality*/)
-	{
-	}
-
-/**
-from CCamera
-
-Gets the currently set jpeg quality value.
-
-Returns 0 if not supported.
-
-@return The currently set jpeg quality value.
-
-@see    CCamera::CCameraPreImageCaptureControl::GetImageMaxMemorySizeL(TUint& aMemorySize)
-*/
-TInt CWebCamera::JpegQuality() const
-	{
-	return 0;
-	}
-
-/**
-from CCamera
-
-Gets a custom interface. The client has to cast the returned pointer
-to the appropriate type.
-
-@param aInterface
-	   The Uid of the particular interface function required.
-
-@return Custom interface pointer. NULL if the requested interface is not supported.
-*/
-TAny* CWebCamera::CustomInterface(TUid aInterface)
-	{
-	switch(aInterface.iUid)
-		{
-	// advanced settings interface pointers
-	case KECamMCameraAdvancedSettingsUidValue:
-		iAdvSettingsImpl = CWebCameraAdvSet::NewL(*this);
-		return static_cast<MCameraAdvancedSettings*>(iAdvSettingsImpl);
-
-	case KECamMCameraAdvancedSettings2UidValue:
-		iAdvSettingsImpl = CWebCameraAdvSet::NewL(*this);
-		return static_cast<MCameraAdvancedSettings2*>(iAdvSettingsImpl);
-
-	case KECamMCameraAdvancedSettings3UidValue:
-		iAdvSettingsImpl = CWebCameraAdvSet::NewL(*this);
-		return static_cast<MCameraAdvancedSettings3*>(iAdvSettingsImpl);
-
-	default:
-		return NULL;
-		}
-	}
-
-/**
-from MWebCameraActiveCallBack
-
-CallBack function of the Reserve
-*/
-void CWebCamera::ReserveCallBack(TInt aError)
-	{
-	RDebug::Print(_L("CWebCamera::ReserveCallBack"));
-
-	if (iObserver)
-		{
-		iObserver->ReserveComplete(aError);
-		}
-	else if (iObserver2)
-		{
-		const TECAMEvent wEvent(KUidECamEventReserveComplete, aError);
-		iObserver2->HandleEvent(wEvent);
-		}
-	}
-
-/**
-from MWebCameraActiveCallBack
-
-CallBack function of the PowerOn
-*/
-void CWebCamera::PowerOnCallBack(TInt aError)
-	{
-	RDebug::Print(_L("CWebCamera::PowerOnCallBack"));
-
-	if (iObserver)
-		{
-		iObserver->PowerOnComplete(aError);
-		}
-	else if (iObserver2)
-		{
-		const TECAMEvent wEvent(KUidECamEventPowerOnComplete, aError);
-		iObserver2->HandleEvent(wEvent);
-		}
-	}
-
-/**
-from MWebCameraActiveCallBack
-
-CallBack function of the ImageCapture
-*/
-void CWebCamera::ImageCaptureCallBackL(TInt aError)
-	{
-	RDebug::Print(_L("CWebCamera::ImageCaptureCallBack_S"));
-
-	iImageCaptureActive = EFalse;
-
-	iCaptureBitmap = NULL;
-	CFbsBitmap* image = new (ELeave) CFbsBitmap();
-	CleanupStack::PushL(image);
-	User::LeaveIfError(image->Create(TSize(KCaptureWidth, KCaptureHeight), EColor16M));
-	CleanupStack::Pop(image);
-	iCaptureBitmap = image;
-
-////////////////////////////////////////////////////////////////////////////////////////
-// output receive data log
-//	RDebug::Print(_L("CWebCameraVfActive::ImageCaptureCallBack iCaptureBufPtr[%d]"), iCaptureBufPtr.Length());
-//	TBuf<256> hexBuf;
-//	for (TInt i = 0; i < iCaptureBufPtr.Length(); i++)
-//		{
-//		hexBuf.AppendFormat(_L("%02X "), iCaptureBufPtr[i]);
-//		if ((i % 16) == 15)
-//			{
-//			RDebug::Print(hexBuf);
-//			hexBuf = KNullDesC;
-//			}
-//		}
-//	RDebug::Print(hexBuf);
-////////////////////////////////////////////////////////////////////////////////////////
-
-	RDebug::Print(_L("CWebCamera::ImageCaptureCallBack start setscanline_S"));
-	for (TInt height=0; height<KCaptureHeight; height++)
-		{
-		TInt pos = height * KCaptureLineBytes;
-		TPtrC8 posptr = iCaptureBuf->Mid(pos, KCaptureLineBytes);
-		TBuf8<KCaptureLineBytes>  buf;
-		buf.Copy(posptr);
-		iCaptureBitmap->SetScanLine(buf, ((KCaptureHeight-1)-height));
-		}
-	RDebug::Print(_L("CWebCamera::ImageCaptureCallBack start setscanline_E"));
-
-	if (iObserver)
-		{
-		iObserver->ImageReady(iCaptureBitmap, iCaptureBuf, aError);
-		}
-	else if (iObserver2)
-		{
-		iObserver2->ImageBufferReady(*iCaptureCameraBuf, aError);
-		}
-
-	RDebug::Print(_L("CWebCamera::ImageCaptureCallBack_E"));
-	}
-
-//from MWebCameraVfActiveCallBack
-void CWebCamera::ViewFinderCallBack(TInt /*aError*/)
-	{
-	RDebug::Print(_L("CWebCamera::ViewFinderCallBack"));
-	}
-
-
-//
-// CWebCameraInfo class
-//
-
-CWebCameraInfo::CWebCameraInfo()
-	{
-	}
-	
-CWebCameraInfo::~CWebCameraInfo()
-	{
-	}
-	
-CWebCameraInfo* CWebCameraInfo::NewL()
-	{
-	return new (ELeave) CWebCameraInfo;
-	}
-
-/** 
-from CCameraInfoPlugin
-
-Determines the number of cameras on the device.
-
-@return Count of cameras present on the device.
-*/
-TInt CWebCameraInfo::CamerasAvailable()
-	{
-	return 1;
-	}
-
-
-// __________________________________________________________________________
-// Exported proxy for instantiation method resolution
-// Define the interface UIDs
-const TImplementationProxy ImplementationTable[] = 
-	{
-		IMPLEMENTATION_PROXY_ENTRY(KUidOnboardWebCameraPlugin,	CWebCamera::NewL),
-		IMPLEMENTATION_PROXY_ENTRY(KUidOnboardWebCameraInfo,	CWebCameraInfo::NewL)
-	};
-
-EXPORT_C const TImplementationProxy* ImplementationGroupProxy(TInt& aTableCount)
-	{
-	aTableCount = sizeof(ImplementationTable) / sizeof(TImplementationProxy);
-
-	return ImplementationTable;
-	}
+/*
+* Copyright (c) 2010 ISB.
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the "Symbian Foundation License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+*
+* Initial Contributors:
+* ISB - Initial contribution
+*
+* Contributors:
+*
+* Description:
+*
+*/
+
+#include <ecom/ecom.h>
+#include <ecom/implementationproxy.h>
+#include <ecamuids.hrh>
+#include <ecam.h>
+#include "ecamwebcameraplugin.h"
+#include "ecamwebcamerapluginuids.hrh"
+#include "ecamwebcamerabuffer.h"
+#include "ecamwebcameraadvset.h"
+#include "ecamwebcameraactive.h"
+#include "ecamwebcameravfactive.h"
+
+
+_LIT(KCameraDriverPddName, "webcamera.pdd");
+_LIT(KCameraDriverLddName, "ewebcamera.ldd");
+
+const TInt KCaptureWidth     = 640;					// Capture image width
+const TInt KCaptureHeight    = 480;					// Capture image height
+
+const TInt KCaptureLineBytes = KCaptureWidth * 3;	// bytes of one line
+
+//
+// CWebCamera class
+//
+
+CWebCamera::CWebCamera():
+	iCaptureBufPtr(NULL, 0)
+	{
+	
+	iInfo.iHardwareVersion.iMajor = 0;
+	iInfo.iHardwareVersion.iMinor = 0;
+	iInfo.iHardwareVersion.iBuild = 0;
+	iInfo.iSoftwareVersion.iMajor = 0;
+	iInfo.iSoftwareVersion.iMinor = 0;
+	iInfo.iSoftwareVersion.iBuild = 0;
+	iInfo.iOrientation = TCameraInfo::EOrientationOutwards;
+
+	iInfo.iOptionsSupported = 0;
+	iInfo.iOptionsSupported |= TCameraInfo::EViewFinderDirectSupported;
+	iInfo.iOptionsSupported |= TCameraInfo::EViewFinderBitmapsSupported;
+	iInfo.iOptionsSupported |= TCameraInfo::EImageCaptureSupported;
+	iInfo.iOptionsSupported |= TCameraInfo::EVideoCaptureSupported;
+	iInfo.iOptionsSupported |= TCameraInfo::EContrastSupported;
+	iInfo.iOptionsSupported |= TCameraInfo::EBrightnessSupported;
+	iInfo.iOptionsSupported |= TCameraInfo::EViewFinderClippingSupported;
+
+	iInfo.iFlashModesSupported 			= 0; // Bitfield of TFlash values
+	iInfo.iExposureModesSupported		= 0; // Bitfield of TExposure values
+	iInfo.iWhiteBalanceModesSupported	= 0; // Bitfield of TWhiteBalance values
+
+	iInfo.iMinZoom = KMinTestCameraZoom;
+	// KMinTestCameraZoom is zero or negative
+	// note the algorithm for creating of zoom factor
+	iInfo.iMinZoomFactor = TReal32(1)/TReal32(1 << -KMinTestCameraZoom);
+	iInfo.iMaxZoom = KMaxTestCameraZoom;
+	iInfo.iMaxZoomFactor = 1 << KMaxTestCameraZoom;
+
+	iInfo.iMaxDigitalZoom = KMaxTestCameraDigitalZoom;
+	iInfo.iMaxDigitalZoomFactor = KMaxTestCameraDigitalZoomFactor;
+
+	iInfo.iImageFormatsSupported = 0;
+	iInfo.iImageFormatsSupported |= EFormatExif;
+	iInfo.iImageFormatsSupported |= EFormatFbsBitmapColor4K;
+	iInfo.iImageFormatsSupported |= EFormatFbsBitmapColor64K;
+	iInfo.iImageFormatsSupported |= EFormatFbsBitmapColor16M;
+
+	iInfo.iVideoFrameFormatsSupported = 0;
+	iInfo.iVideoFrameFormatsSupported |= EFormatFbsBitmapColor4K;
+	iInfo.iVideoFrameFormatsSupported |= EFormatFbsBitmapColor64K;
+	iInfo.iVideoFrameFormatsSupported |= EFormatFbsBitmapColor16M;
+	iInfo.iMaxFramesPerBufferSupported = 1;
+	iInfo.iMaxBuffersSupported = 2;
+	}
+	
+CWebCamera::~CWebCamera()
+	{
+	delete iCaptureBuf;
+	delete iAdvSettingsImpl;
+	delete iVfActive;
+	delete iActive;
+	delete iCaptureBitmap;
+	iChunk.Close();
+	iImageSizes.Close();
+	iDriver.Close();
+	}
+	
+CWebCamera* CWebCamera::NewL()
+	{
+	CWebCamera* self = new(ELeave) CWebCamera;
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	CleanupStack::Pop(self);
+
+	return self;
+	}
+
+void CWebCamera::ConstructL()
+	{
+	// Open drivers.
+	TInt err;
+
+	err = User::LoadPhysicalDevice(KCameraDriverPddName);
+
+	if (err != KErrNone && err != KErrAlreadyExists)
+		{
+		User::Leave(err);
+		}
+
+	err = User::LoadLogicalDevice(KCameraDriverLddName);
+
+	if (err != KErrNone && err != KErrAlreadyExists)
+		{
+		User::Leave(err);
+		}
+
+	iDriver.Open();
+
+	iActive = CWebCameraActive::NewL(this, iDriver);
+	iVfActive = CWebCameraVfActive::NewL(this, iDriver);
+
+	User::LeaveIfError(iImageSizes.Append(TSize(640, 480)));	// VGA
+	User::LeaveIfError(iImageSizes.Append(TSize(160, 120)));	// QQVGA
+	iInfo.iNumImageSizesSupported = iImageSizes.Count();
+	
+	// Open chunk
+	err = iDriver.OpenSharedChunks(iChunk, iChunkInfo);
+	if (err != KErrNone)
+		{
+		User::Leave(err);
+		}
+	iChuckBase=iChunk.Base();
+	}
+
+/** 
+from CCameraPlugin
+
+A call to one of the factory functions firstly loads the plugin, followed by a
+call to this function to complete construction.
+
+Creates an object representing a camera.
+
+@param  aObserver
+        Reference to class derived from MCameraObserver2 designed to receive
+        notification of asynchronous event completion.
+@param	aCameraIndex
+        Index from 0 to CamerasAvailable()-1 inclusive specifying the
+        camera device to use.
+@return Pointer to a fully constructed CCamera object. Ownership is passed
+        to the caller.
+
+@leave  May leave with KErrNoMemory or KErrNotSupported if aCameraIndex is
+        out of range.	
+*/
+void CWebCamera::Construct2L(MCameraObserver& aObserver,TInt aCameraIndex)
+	{
+	iObserver = &aObserver;
+	iCameraIndex = aCameraIndex;
+	}
+
+/** 
+from CCameraPlugin
+
+A call to one of the factory functions firstly loads the plugin, followed by a
+call to this function to complete construction.
+
+Duplicates the original camera object for use by, for example, multimedia systems.
+
+May leave with KErrNoMemory or KErrNotFound if aCameraHandle is not valid.
+
+@param  aObserver 					Reference to an observer.
+@param  aCameraHandle Handle of an existing camera object.
+@return Duplicate of the original camera object. 
+*/
+void CWebCamera::Construct2DupL(MCameraObserver& aObserver,TInt aCameraHandle)
+	{
+	iObserver = &aObserver;
+	iCameraHandle = aCameraHandle;
+	}
+
+ /** 
+from CCameraPlugin
+
+ A call to one of the factory functions firstly loads the plugin, followed by a
+call to this function to complete construction.
+ 
+Creates an object representing a camera.
+
+@param  aObserver
+        Reference to class derived from MCameraObserver2 designed to receive
+        notification of asynchronous event completion.
+@param	aCameraIndex
+        Index from 0 to CamerasAvailable()-1 inclusive specifying the
+        camera device to use.
+@param	aPriority
+        Value from -100 to 100 indicating relative priority of client to
+        use camera.
+@return Pointer to a fully constructed CCamera object. Ownership is passed
+        to the caller.
+@leave  May leave with KErrNoMemory or KErrNotSupported if aCameraIndex is
+        out of range.
+*/
+void CWebCamera::Construct2L(MCameraObserver2& aObserver,TInt aCameraIndex,TInt aPriority)
+	{
+	iObserver2 = &aObserver;
+	iCameraIndex = aCameraIndex;
+	iPriority = aPriority;
+	}
+	
+/** 
+from CCameraPlugin
+
+Duplicates the original camera object for use by, for example, multimedia systems.
+
+@leave  KErrNoMemory if out of memory.
+@leave  KErrNotFound if aCameraHandle is not valid.	   
+@leave  KErrPermissionDenied if the application does not have
+        the UserEnvironment capability.
+
+@param  aObserver
+        Reference to an observer.
+@param  aCameraHandle Handle of an existing camera object.
+
+@return Duplicate of the original camera object. 
+
+@capability	UserEnvironment
+			An application that creates a CCamera object must have
+			the UserEnvironment capability.
+			
+@note   Applications using this method to create camera object may not receive enums/uids added in future(after being baselined). 
+		To receive them, they should rather use New2L() or NewDuplicate2L(), in which case, they should prepare 
+		themselves to receive unrecognised values.
+*/
+void CWebCamera::Construct2DupL(MCameraObserver2& aObserver,TInt aCameraHandle)
+	{
+	iObserver2 = &aObserver;
+	iCameraHandle = aCameraHandle;
+	}
+
+//
+// virtual functions
+//
+
+/**
+from CCamera		Gets information about the camera device.
+@param  aInfo 		On return, information about the camera device. See TCameraInfo. 
+*/
+void CWebCamera::CameraInfo(TCameraInfo& aInfo) const
+	{
+	aInfo = iInfo;
+	}
+
+/** 
+from CCamera
+
+Asynchronous function that performs any required initialisation and reserves
+the camera for exclusive use.
+
+Calls MCameraObserver:: ReserveComplete() when complete. 
+*/
+void CWebCamera::Reserve()
+	{
+	iActive->Reserve();
+	}
+
+/** 
+from CCamera
+
+De-initialises the camera, allowing it to be used by other clients. 
+*/
+void CWebCamera::Release()
+	{
+	StopViewFinder();
+	iReserved = EFalse;
+	}
+
+/** 
+from CCamera
+Asynchronous method to switch on camera power.
+User must have successfully called Reserve() prior to calling this function.
+Calls MCameraObserver::PowerOnComplete() when power on is complete. 
+*/
+void CWebCamera::PowerOn()
+	{
+	iActive->PowerOn();
+	}
+
+/** 
+from CCamera
+
+Synchronous function for switching off camera power. 
+*/
+void CWebCamera::PowerOff()
+	{
+	StopViewFinder();
+	iPowerOn = EFalse;
+	}
+
+/**
+from CCamera
+
+Gets the device-unique handle of this camera object.
+
+@return  The device-unique handle of this camera object. 
+*/
+TInt CWebCamera::Handle()
+	{
+	return 0;
+	}
+
+/** 
+from CCamera
+
+Sets the zoom factor.
+
+This must be in the range of TCameraInfo::iMinZoom to TCameraInfo::iMaxZoom
+inclusive. May leave with KErrNotSupported if the specified zoom factor is
+out of range.
+
+@param aZoomFactor 
+       Required zoom factor.
+*/
+void CWebCamera::SetZoomFactorL(TInt /*aZoomFactor = 0*/)
+	{
+	}
+
+/** 
+from CCamera
+
+Gets the currently set zoom factor.
+
+@return  The currently set zoom factor.
+*/
+TInt CWebCamera::ZoomFactor() const
+	{
+	return 0;
+	}
+
+/** 
+from CCamera
+
+Sets the digital zoom factor.
+
+This must be in the range of 0 to TCameraInfo::iMaxDigitalZoom inclusive.
+
+May leave with KErrNotSupported if the zoom factor is out of range.
+@param  aDigitalZoomFactor
+        The required digital zoom factor. 
+*/
+void CWebCamera::SetDigitalZoomFactorL(TInt /*aDigitalZoomFactor = 0*/)
+	{
+	}
+
+/** 
+from CCamera
+
+Gets the currently set digital zoom factor.
+
+@return  The currently set digital zoom factor. 
+*/
+TInt CWebCamera::DigitalZoomFactor() const
+	{
+	return 0;
+	}
+
+/**
+from CCamera
+
+Sets the contrast adjustment of the device.
+
+This must be in the range of -100 to +100 or EContrastAuto. May leave with
+KErrNotSupported if the specified contrast value is out of range.
+
+@param  aContrast 
+        Required contrast value. See TCameraInfo::iContrastSupported 
+*/
+void CWebCamera::SetContrastL(TInt /*aContrast*/)
+	{
+	}
+
+/** 
+from CCamera
+
+Gets the currently set contrast value.
+
+@return  The currently set contrast value.
+*/
+TInt CWebCamera::Contrast() const
+	{
+	return 0;
+	}
+
+/** 
+from CCamera
+
+Sets the brightness adjustment of the device.
+
+No effect if this is not supported, see TCameraInfo::iBrightnessSupported.
+
+This must be in the range of -100 to +100 or EBrightnessAuto. May leave
+with KErrNotSupported if the brightness adjustment is out of range.
+
+@param  aBrightness
+        The required brightness adjustment. 
+*/
+void CWebCamera::SetBrightnessL(TInt /*aBrightness*/)
+	{
+	}
+
+/** 
+from CCamera
+
+Gets the currently set brightness adjustment value.
+
+@return  The currently set brightness adjustment value. 
+*/
+TInt CWebCamera::Brightness() const
+	{
+	return 0;
+	}
+
+/** 
+from CCamera
+
+Sets the flash mode.
+No effect if this is not supported, see TCameraInfo::iFlashModesSupported.
+May leave with KErrNotSupported if the specified flash mode is invalid.
+@param  aFlash
+        The required flash mode. 
+*/
+void CWebCamera::SetFlashL(TFlash /*aFlash = EFlashNone*/)
+	{
+	}
+
+/** 
+from CCamera
+
+Gets the currently set flash mode.
+@return  The currently set flash mode. 
+@note	if CCamera::New2L() or CCamera::NewDuplicate2L() is not used to create CCamera object, it is assumed that 
+application is not prepared to receive extra added enum values (unrecognised). So, any extra enum value(unrecognised)
+(set in the ECAM implementation because of sharing clients) should not be returned from the ECAM implementation.
+To receive extra added enum values, application should rather use CCamera::New2L() or CCamera::NewDuplicate2L() 
+to create camera object. ECAM implementation, after verifying this,(by checking version no.) may send new values, if set.
+In this case, application is assumed to be prepared to receive unrecognised enum values.
+
+@see CCamera::CCameraAdvancedSettings::FlashMode()	
+*/
+CCamera::TFlash CWebCamera::Flash() const
+	{
+	return EFlashNone;
+	}
+
+/** 
+from CCamera
+
+Sets the exposure adjustment of the device.
+
+No effect if this is not supported, see CameraInfo::iExposureModesSupported.
+
+May leave with KErrNotSupported if the specified exposure adjustment is invalid.
+
+@param  aExposure
+        The required exposure adjustment. 
+*/
+void CWebCamera::SetExposureL(TExposure /*aExposure = EExposureAuto*/)
+	{
+	}
+
+/** 
+from CCamera
+
+Gets the currently set exposure setting value.
+
+@return  The currently set exposure setting value. 
+*/
+CCamera::TExposure CWebCamera::Exposure() const
+	{
+	return EExposureAuto;
+	}
+
+/** 
+from CCamera
+
+Sets the white balance adjustment of the device.
+
+No effect if this is not supported, see TCameraInfo::iWhiteBalanceModesSupported.
+
+@param  aWhiteBalance
+        The required white balance adjustment.
+
+@leave  KErrNotSupported if the specified white balance adjustment
+        is invalid.
+*/
+void CWebCamera::SetWhiteBalanceL(TWhiteBalance /*aWhiteBalance = EWBAuto*/)
+	{
+	}
+
+/** 
+from CCamera
+
+Gets the currently set white balance adjustment value.
+
+@return  The currently set white balance adjustment value.
+
+@note	if CCamera::New2L() or CCamera::NewDuplicate2L() is not used to create CCamera object, it is assumed that 
+application is not prepared to receive extra added enum values (unrecognised). So, any extra enum value(unrecognised)
+(set in the ECAM implementation because of sharing clients) should not be returned from the ECAM implementation.
+To receive extra added enum values, application should rather use CCamera::New2L() or CCamera::NewDuplicate2L() 
+to create camera object. ECAM implementation, after verifying this,(by checking version no.) may send new values, if set.
+In this case, application is assumed to be prepared to receive unrecognised enum values.
+Refer  CCamera::CCameraAdvancedSettings::WhiteBalanceMode() implementation
+
+@see CCamera::CCameraAdvancedSettings::WhiteBalanceMode()
+*/
+CCamera::TWhiteBalance CWebCamera::WhiteBalance() const
+	{
+	return EWBAuto;
+	}
+
+/** 
+from CCamera
+
+Starts transfer of view finder data to the given portion of the screen using
+direct screen access.
+
+The aScreenRect parameter is in screen co-ordinates and may be modified if,
+eg, the camera requires the destination to have a certain byte alignment, etc.
+
+@param  aWs 
+        Window server session.
+@param  aScreenDevice 
+        Screen device.
+@param  aWindow 
+        Displayable window.
+@param  aScreenRect 
+        Portion of the screen to which view finder data is to be
+        transferred. This is in screen co-ordinates and may be modified if, for example,
+        the camera requires the destination to have a certain byte alignment.
+
+@leave  KErrNotReady if PowerOn() has either not
+        been called, or has not yet completed.
+
+@note   This method is assumed to be meant for default display only. KECamDefaultViewFinderHandle should be used to 
+		refer viewfinders started using CCamera methods. 
+
+@see	CCamera::CCameraV2DirectViewFinder
+*/
+void CWebCamera::StartViewFinderDirectL(RWsSession& aWs, CWsScreenDevice& aScreenDevice, RWindowBase& aWindow, TRect& aScreenRect)
+	{
+	TRect emptyRect;
+	StartViewFinderDirectL(aWs, aScreenDevice, aWindow, aScreenRect, emptyRect);
+	}
+
+/** 
+from CCamera
+
+Starts transfer of view finder data to the given portion of the screen using
+direct screen access and also clips to the specified portion of the screen.
+
+The view finder has the same size and position as aScreenRect but is only
+visible in the intersection of aScreenRect and aClipRect. May leave with KErrNotSupported
+or KErrNotReady if Reserve() has not been called, or has not yet completed.
+
+@param  aWs 
+        Window server session.
+@param  aScreenDevice 
+        Screen device.
+@param  aWindow 
+        Displayable window.
+@param  aScreenRect 
+        Portion of the screen to which view finder data is to be
+        transferred. This is in screen co-ordinates and may be modified if, for example,
+        the camera requires the destination to have a certain byte alignment.
+@param  aClipRect
+        The rectangle to which the screen will be clipped.
+
+@leave  KErrNotReady if PowerOn() hasn't been called successfully. 
+
+@note   This method is assumed to be meant for default display only. KECamDefaultViewFinderHandle should be used to 
+		refer viewfinders started using CCamera methods.
+
+@see	CCamera::CCameraClientViewFinder
+*/
+void CWebCamera::StartViewFinderDirectL(RWsSession& aWs, CWsScreenDevice& aScreenDevice, RWindowBase& aWindow, TRect& aScreenRect, TRect& aClipRect)
+	{
+	iVfActive->StartViewFinderDirectL(aWs, aScreenDevice, aWindow, aScreenRect, aClipRect, iChuckBase, iChunkRemSize);
+	}
+
+/** 
+from CCamera
+
+Starts transfer of view finder data.
+
+Bitmaps are returned by MCameraObserver::ViewFinderFrameReady().
+
+@param  aSize 
+        On return, the size used.
+@leave  KErrNotReady if PowerOn() has not been called, or has not yet completed.
+
+@note   This method is assumed to be meant for default display only. 
+
+@see	CCamera::CCameraClientViewFinder 
+*/
+void CWebCamera::StartViewFinderBitmapsL(TSize& /*aSize*/)
+	{
+	}
+	
+/** 
+from CCamera
+
+Starts transfer of view finder data and clips the bitmap to the specified clip
+rectangle.
+
+The bitmap is the size of the intersection of aSize and aClipRect, not simply
+aSize padded with white space.
+
+@param  aSize
+        On return, the size used.
+@param  aClipRect 
+        Required clip rectangle. May be modified if, for example,
+        the camera only supports certain byte alignments.
+
+@leave  KErrInUse if Reserve() hasn't been called successfully.
+@leave  KErrNotReady if PowerOn() hasn't been called successfully.
+
+@note   This method is assumed to be meant for default display only. 
+
+@see	CCamera::CCameraClientViewFinder
+*/
+void CWebCamera::StartViewFinderBitmapsL(TSize& /*aSize*/,TRect& /*aClipRect*/)
+	{
+	}
+
+/** 
+from CCamera
+
+Starts transfer of view finder data.
+
+Picture data is returned by MCameraObserver2::ViewFinderReady().
+
+@param  aImageFormat 
+        The image format requested by the client.
+@param  aSize 
+        On return, the size used.
+@leave  KErrNotSupported 
+@leave  KErrNotReady if Reserve() has not been
+        called, or has not yet completed. 
+
+@note   This method is assumed to be meant for default display only. KECamDefaultViewFinderHandle should be used to 
+		refer viewfinders started using CCamera methods.
+
+@see	CCamera::CCameraClientViewFinder
+*/
+void CWebCamera::StartViewFinderL(TFormat /*aImageFormat*/,TSize& /*aSize*/)
+	{
+	}
+
+/** 
+from CCamera
+
+Starts transfer of view finder data and clips the picture to the specified clip
+rectangle. Picture data is returned by MCameraObserver2::ViewFinderReady().
+
+The picture is the size of the intersection of aSize and aClipRect, not simply
+aSize padded with white space.
+
+@param  aImageFormat 
+        The image format.
+@param  aSize
+        On return, the size used.
+@param  aClipRect 
+        Required clip rectangle. May be modified if, for example,
+        the camera only supports certain byte alignments.
+
+@leave  KErrInUse if Reserve() hasn't been called successfully,
+@leave  KErrNotReady if PowerOn() hasn't been called successfully.
+
+@note   This method is assumed to be meant for default display only. KECamDefaultViewFinderHandle should be used to 
+		refer viewfinders started using CCamera methods.
+
+@see	CCamera::CCameraClientViewFinder
+*/
+void CWebCamera::StartViewFinderL(TFormat /*aImageFormat*/,TSize& /*aSize*/,TRect& /*aClipRect*/)
+	{
+	}
+
+/** 
+Stops transfer of view finder data to the screen. 
+
+@note   This method is assumed to be meant for default display only. KECamDefaultViewFinderHandle should be used to 
+		refer viewfinders started using CCamera methods.
+
+@see	CCamera::CCameraV2DirectViewFinder
+@see	CCamera::CCameraClientViewFinder
+*/
+void CWebCamera::StopViewFinder()
+	{
+	iVfActive->StopViewFinder();
+	}
+
+/** 
+from CCamera
+
+Queries whether the view finder is active.
+
+@return  ETrue if the view finder is active. EFalse if the view finder is not
+         active. 
+@note   This method is assumed to be meant for default display only. KECamDefaultViewFinderHandle should be used to 
+		refer viewfinders started using CCamera methods.
+@see	CCamera::CCameraV2DirectViewFinder
+@see	CCamera::CCameraClientViewFinder
+*/
+TBool CWebCamera::ViewFinderActive() const
+	{
+	return iVfActive->ViewFinderActive();
+	}
+
+/** 
+from CCamera
+
+Sets whether view finder mirroring is on.
+
+Used to switch between what the camera sees and what you would see if the
+device were a mirror.
+
+@param  aMirror 
+        ETrue to set mirroring on, EFalse to set mirroring off.
+@leave  KErrNotSupported.
+
+@note   This method is assumed to be meant for default display only. KECamDefaultViewFinderHandle should be used to 
+		refer viewfinders started using CCamera methods.
+
+@see	CCamera::CCameraV2DirectViewFinder
+@see	CCamera::CCameraClientViewFinder
+*/
+void CWebCamera::SetViewFinderMirrorL(TBool /*aMirror*/)
+	{
+	}
+
+/** 
+from CCamera
+
+Gets whether view finder mirroring is active.
+
+@return  ETrue if mirroring is set, EFalse if mirroring is not set. 
+
+@note   This method is assumed to be meant for default display only. KECamDefaultViewFinderHandle should be used to 
+		refer viewfinders started using CCamera methods.
+
+@see	CCamera::CCameraV2DirectViewFinder
+@see	CCamera::CCameraClientViewFinder
+*/
+TBool CWebCamera::ViewFinderMirror() const
+	{
+	return EFalse;
+	}
+
+/** 
+from CCamera
+
+Performs setup and allocation of memory.
+
+Called prior to calling CaptureImage() to keep the latency of that function
+to a minimum.
+
+Needs to be called only once for multiple CaptureImage() calls. May leave
+with KErrNotSupported or KErrNoMemory or KErrInUse or KErrNotReady.
+
+The specified image format must be one of the formats supported
+(see TCameraInfo::iImageFormatsSupported).
+
+The specified size index must be in the range of 0 to TCameraInfo::iNumImageSizesSupported-1
+inclusive.
+
+@param  aImageFormat 
+        The image format.
+@param  aSizeIndex 
+        Size index.
+
+@leave  KErrNotSupported
+@leave  KErrNoMemory
+@leave  KErrNotReady if PowerOn() hasn't been called successfully.
+
+@see 	CCamera::CCameraPreImageCaptureControl::PrepareImageCapture(TPrepareImageParameters aPrepareImageParameters)
+*/
+void CWebCamera::PrepareImageCaptureL(TFormat /*aImageFormat*/,TInt /*aSizeIndex*/)
+	{
+	}
+
+/** 
+from CCamera
+
+Performs setup and allocation of memory and clips the image to the specified
+rectangle.
+
+No effect unless TCameraInfo::iImageClippingSupported is set to ETrue. The
+image captured is the intersection of aClipRect and the rectangle from (0,0)
+to aSize. Needs to be called only once for multiple CaptureImage() calls.
+May leave with KErrNotSupported or KErrNoMemory.
+
+The specified image format must be one of the formats supported (see TCameraInfo::iImageFormatsSupported).
+
+The specified size index must be in the range of 0 to TCameraInfo::iNumImageSizesSupported-1
+inclusive.
+
+@param  aImageFormat 
+        The image format.
+@param  aSizeIndex 
+        Size index.
+@param  aClipRect
+        The rectangle to which the image is to be clipped.
+
+@leave   KErrNotSupported
+@leave   KErrNoMemory
+@leave   KErrInUse if Reserve() hasn't been called successfully
+@leave   KErrNotReady if PowerOn()
+         hasn't been called successfully.
+
+@see 	CCamera::CCameraPreImageCaptureControl::PrepareImageCapture(TPrepareImageParameters aPrepareImageParameters)
+*/
+void CWebCamera::PrepareImageCaptureL(TFormat /*aImageFormat*/,TInt /*aSizeIndex*/,const TRect& /*aClipRect*/)
+	{
+	}
+
+/** 
+from CCamera
+
+Asynchronously performs still image capture.
+
+Calls MCameraObserver::ImageReady() when complete. 
+
+@see CCamera::CCameraImageCapture
+@see CCamera::CCameraPreImageCaptureControl
+*/
+void CWebCamera::CaptureImage()
+	{
+	delete iCaptureBuf;
+	iCaptureBuf = NULL;
+
+	iCaptureBuf = HBufC8::NewL(KMaxBufSize);
+	iCaptureBufPtr.Set(iCaptureBuf->Des());
+	iCaptureBufPtr.SetLength(0);
+
+	iActive->ImageCapture(iChunkRemSize);
+
+	iImageCaptureActive = ETrue;
+	}
+
+/** 
+from CCamera
+
+Cancels the asynchronous still image capture. 
+
+@see CCamera::CCameraImageCapture
+*/
+void CWebCamera::CancelCaptureImage()
+	{
+	iImageCaptureActive = EFalse;
+	}
+
+/** 
+from CCamera
+
+Enumerates through the available image capture sizes, based on the specified
+size index and format
+
+The size index must be in the range 0 to TCameraInfo::iNumImageSizesSupported-1
+inclusive.
+
+@param  aSize 
+        Image size.
+@param  aSizeIndex 
+        Size index.
+@param  aFormat 
+        The image format.
+*/
+void CWebCamera::EnumerateCaptureSizes(TSize& aSize, TInt aSizeIndex, TFormat aFormat) const
+	{
+	if (aSizeIndex < 0 || aSizeIndex >= iInfo.iNumImageSizesSupported ||
+		!(aFormat & iInfo.iImageFormatsSupported) )
+		{
+		aSize = TSize(0,0);
+		}
+	else
+		{
+		aSize = iImageSizes[aSizeIndex];
+		}
+	}
+
+/** 
+from CCamera
+
+Prepares for video capture.
+
+Performs setup and allocation of memory prior to calling StartVideoCapture()
+to keep the latency of that function to a minimum.
+
+May leave with KErrNotSupported or KErrNoMemory.
+
+@param  aFormat 
+        Format must be one of the video frame formats supported (see
+        TCameraInfo::iVideoFrameFormatsSupported).
+@param  aSizeIndex 
+        Size index  must be in the range 0 to TCameraInfo::iNumVideoFrameSizesSupported-1
+        inclusive.
+@param  aRateIndex 
+        The rate must be in the range 0 to TCameraInfo::iNumVideoFrameRatesSupported-1
+        inclusive.
+@param  aBuffersToUse 
+        The number of discrete buffers to use.
+@param  aFramesPerBuffer 
+        How large the buffers are to be. Must be less than
+        or equal to TCameraInfo::iMaxFramesPerBufferSupported. One buffer is returned
+        to MCameraObserver::FrameBufferReady() at a time.
+
+@leave  May leave with KErrNotSupported, KErrNoMemory, or KErrNotReady if PowerOn() 
+		hasn't been called successfully.
+
+@see 	CCamera::CCameraVideoCaptureControl::PrepareVideoCapture(const TPrepareVideoParameters& aPrepareVideoParameters)
+*/
+void CWebCamera::PrepareVideoCaptureL(TFormat /*aFormat*/,TInt /*aSizeIndex*/,TInt /*aRateIndex*/,TInt /*aBuffersToUse*/,TInt /*aFramesPerBuffer*/)
+	{
+	}
+
+/** 
+from CCamera
+
+Prepares for video capture and clips the frames to the given rectangle.
+
+Performs setup and allocation of memory prior to calling StartVideoCapture()
+to keep the latency of that function to a minimum.
+
+May leave with KErrNotSupported or KErrNoMemory.
+
+@param  aFormat 
+        Format must be one of the video frame formats supported (see
+        TCameraInfo::iVideoFrameFormatsSupported).
+@param  aSizeIndex 
+        Size index must be in the range 0 to TCameraInfo::iNumVideoFrameSizesSupported-1
+        inclusive.
+@param  aRateIndex 
+        The rate must be in the range 0 to TCameraInfo::iNumVideoFrameRatesSupported-1
+        inclusive.
+@param  aBuffersToUse 
+        The number of discrete buffers to use.
+@param  aFramesPerBuffer 
+        How large the buffers are to be. Must be less than
+        or equal to TCameraInfo::iMaxFramesPerBufferSupported. One buffer is returned
+        to MCameraObserver::FrameBufferReady() at a time.
+@param  aClipRect 
+        The rectangle to which the image is to be clipped.
+@leave  KErrNotSupported
+@leave  KErrNoMemory, 
+@leave  KErrInUse if Reserve() hasn't been called successfully
+@leave  KErrNotReady if PowerOn() hasn't been called successfully.
+
+@see 	CCamera::CCameraVideoCaptureControl::PrepareVideoCapture(const TPrepareVideoParameters& aPrepareVideoParameters)
+*/
+void CWebCamera::PrepareVideoCaptureL(TFormat /*aFormat*/,TInt /*aSizeIndex*/,TInt /*aRateIndex*/,TInt /*aBuffersToUse*/,TInt /*aFramesPerBuffer*/,const TRect& /*aClipRect*/)
+	{
+	}
+
+/** 
+from CCamera
+
+Starts capturing video.
+
+Calls MCameraObserver::FrameBufferReady() when each buffer has been filled
+with the required number of frames, as set by PrepareVideoCaptureL(). 
+*/
+void CWebCamera::StartVideoCapture()
+	{
+	}
+
+/** 
+from CCamera
+
+Stops video capture. 
+*/
+void CWebCamera::StopVideoCapture()
+	{
+	}
+
+/** 
+from CCamera
+
+Tests whether video capture is active.
+
+@return  ETrue if video capture is active. EFalse if video capture is not active 
+*/
+TBool CWebCamera::VideoCaptureActive() const
+	{
+	return EFalse;
+	}
+
+/** 
+from CCamera
+
+Enumerates through the available video frame sizes, based on the specified
+size index and format.
+
+@param  aSize 
+        On return the available video frame sizes. Sizes should be returned
+        in order, largest first, so clients do not have to iterate through every one.
+@param  aSizeIndex 
+        Size index. Must be in the range 0 to TCameraInfo::iNumVideoFrameSizesSupported-1
+        inclusive
+@param  aFormat 
+        Image format. 
+*/
+void CWebCamera::EnumerateVideoFrameSizes(TSize& /*aSize*/,TInt /*aSizeIndex*/,TFormat /*aFormat*/) const
+	{
+	}
+
+/** 
+from CCamera
+
+Enumerates through the available video frame rates, based on the specified
+rate index, video frame format, size index and exposure mode.
+
+@param  aRate 
+        On return, the available video frame rates. Some rates may not
+        be available due to, for example, current flash mode setting. In those cases
+        a rate of 0 will be returned. Rates should be returned in order, highest first,
+        so clients do not have to iterate through every one.
+@param  aRateIndex 
+        The rate index. Must be in the range 0 to TCameraInfo::iNumVideoFrameRatesSupported-1
+        inclusive.
+@param  aFormat 
+        The format.
+@param  aSizeIndex 
+        The size index.
+@param  aExposure 
+        The exposure mode. 
+*/
+void CWebCamera::EnumerateVideoFrameRates(TReal32& /*aRate*/,TInt /*aRateIndex*/,TFormat /*aFormat*/,TInt /*aSizeIndex*/,TExposure /*aExposure = EExposureAuto*/) const
+	{
+	}
+
+/** 
+from CCamera
+
+Gets the frame size currently in use.
+
+@param  aSize 
+        The frame size currently in use. 
+*/
+void CWebCamera::GetFrameSize(TSize& /*aSize*/) const
+	{
+	}
+
+/** 
+from CCamera
+
+Gets the frame rate currently in use.
+
+@return  The frame rate currently in use. 
+*/
+TReal32 CWebCamera::FrameRate() const
+	{
+	return 0.0;
+	}
+
+/** 
+from CCamera
+
+Gets the number of buffers currently in use.
+
+@return  The number of buffers currently in use. 
+*/
+TInt CWebCamera::BuffersInUse() const
+	{
+	return 0;
+	}
+
+/** 
+from CCamera
+
+Gets the number of frames per buffer currently in use.
+
+@return  The number of frames per buffer currently in use. 
+*/
+TInt CWebCamera::FramesPerBuffer() const
+	{
+	return 0;
+	}
+
+/** 
+from CCamera
+
+Sets the quality value to use if jpeg is a supported image for video format.
+
+Ignored if jpeg is not a supported image for video format.
+
+@param  aQuality
+        The quality value to use, clamped to the range 1 to 100.
+        
+@see	CCamera::CCameraPreImageCaptureControl::TPrepareImageParameters::iImageMaxMemorySize
+*/
+void CWebCamera::SetJpegQuality(TInt /*aQuality*/)
+	{
+	}
+
+/**
+from CCamera
+
+Gets the currently set jpeg quality value.
+
+Returns 0 if not supported.
+@return The currently set jpeg quality value.
+@see    CCamera::CCameraPreImageCaptureControl::GetImageMaxMemorySizeL(TUint& aMemorySize)
+*/
+TInt CWebCamera::JpegQuality() const
+	{
+	return 0;
+	}
+
+/**
+from CCamera
+
+Gets a custom interface. The client has to cast the returned pointer
+to the appropriate type.
+
+@param aInterface
+	   The Uid of the particular interface function required.
+@return Custom interface pointer. NULL if the requested interface is not supported.
+*/
+TAny* CWebCamera::CustomInterface(TUid aInterface)
+	{
+	switch(aInterface.iUid)
+		{
+	// advanced settings interface pointers
+	case KECamMCameraAdvancedSettingsUidValue:
+		iAdvSettingsImpl = CWebCameraAdvSet::NewL(*this);
+		return static_cast<MCameraAdvancedSettings*>(iAdvSettingsImpl);
+
+	case KECamMCameraAdvancedSettings2UidValue:
+		iAdvSettingsImpl = CWebCameraAdvSet::NewL(*this);
+		return static_cast<MCameraAdvancedSettings2*>(iAdvSettingsImpl);
+
+	case KECamMCameraAdvancedSettings3UidValue:
+		iAdvSettingsImpl = CWebCameraAdvSet::NewL(*this);
+		return static_cast<MCameraAdvancedSettings3*>(iAdvSettingsImpl);
+
+	default:
+		return NULL;
+		}
+	}
+
+/**
+from MWebCameraActiveCallBack
+CallBack function of the Reserve
+*/
+void CWebCamera::ReserveCallBack(TInt aError)
+	{
+
+	if (iObserver)
+		{
+		iObserver->ReserveComplete(aError);
+		}
+	else if (iObserver2)
+		{
+		const TECAMEvent wEvent(KUidECamEventReserveComplete, aError);
+		iObserver2->HandleEvent(wEvent);
+		}
+	}
+
+/**
+from MWebCameraActiveCallBack
+CallBack function of the PowerOn
+*/
+void CWebCamera::PowerOnCallBack(TInt aError)
+	{
+
+	if (iObserver)
+		{
+		iObserver->PowerOnComplete(aError);
+		}
+	else if (iObserver2)
+		{
+		const TECAMEvent wEvent(KUidECamEventPowerOnComplete, aError);
+		iObserver2->HandleEvent(wEvent);
+		}
+	}
+
+/**
+from MWebCameraActiveCallBack
+
+CallBack function of the ImageCapture
+*/
+void CWebCamera::ImageCaptureCallBackL(TInt aError)
+	{
+	iImageCaptureActive = EFalse;
+	if (!iCaptureBitmap)
+		{
+		CFbsBitmap* image = new (ELeave) CFbsBitmap();
+		CleanupStack::PushL(image);
+		User::LeaveIfError(image->Create(TSize(KCaptureWidth, KCaptureHeight), EColor16M));
+		CleanupStack::Pop(image);
+		iCaptureBitmap = image;
+		}
+
+	iCaptureBufPtr.Copy(iChuckBase,iChunkRemSize);
+
+////////////////////////////////////////////////////////////////////////////////////////
+// output receive data log
+//	RDebug::Print(_L("CWebCameraVfActive::ImageCaptureCallBack iCaptureBufPtr[%d]"), iCaptureBufPtr.Length());
+//	TBuf<256> hexBuf;
+//	for (TInt i = 0; i < iCaptureBufPtr.Length(); i++)
+//		{
+//		hexBuf.AppendFormat(_L("%02X "), iCaptureBufPtr[i]);
+//		if ((i % 16) == 15)
+//			{
+//			RDebug::Print(hexBuf);
+//			hexBuf = KNullDesC;
+//			}
+//		}
+//	RDebug::Print(hexBuf);
+////////////////////////////////////////////////////////////////////////////////////////
+
+	if (iObserver)
+		{
+		TUint32 *wData = iCaptureBitmap->DataAddress();
+		Mem::Copy(wData, iCaptureBufPtr.Ptr(), (KCaptureHeight * KCaptureLineBytes));
+
+		iObserver->ImageReady(iCaptureBitmap, iCaptureBuf, aError);
+		delete iCaptureBitmap;
+		iCaptureBitmap = NULL;
+		}
+	else if (iObserver2)
+		{
+		iObserver2->ImageBufferReady(*iCaptureCameraBuf, aError);
+		}
+
+	}
+
+//from MWebCameraVfActiveCallBack
+void CWebCamera::ViewFinderCallBack(TInt /*aError*/)
+	{
+	}
+
+
+//
+// CWebCameraInfo class
+//
+
+CWebCameraInfo::CWebCameraInfo()
+	{
+	}
+	
+CWebCameraInfo::~CWebCameraInfo()
+	{
+	}
+	
+CWebCameraInfo* CWebCameraInfo::NewL()
+	{
+	return new (ELeave) CWebCameraInfo;
+	}
+
+/** 
+from CCameraInfoPlugin
+
+Determines the number of cameras on the device.
+
+@return Count of cameras present on the device.
+*/
+TInt CWebCameraInfo::CamerasAvailable()
+	{
+	return 1;
+	}
+
+
+// __________________________________________________________________________
+// Exported proxy for instantiation method resolution
+// Define the interface UIDs
+const TImplementationProxy ImplementationTable[] = 
+	{
+		IMPLEMENTATION_PROXY_ENTRY(KUidOnboardWebCameraPlugin,	CWebCamera::NewL),
+		IMPLEMENTATION_PROXY_ENTRY(KUidOnboardWebCameraInfo,	CWebCameraInfo::NewL)
+	};
+
+EXPORT_C const TImplementationProxy* ImplementationGroupProxy(TInt& aTableCount)
+	{
+	aTableCount = sizeof(ImplementationTable) / sizeof(TImplementationProxy);
+
+	return ImplementationTable;
+	}
--- a/mmplugins/cameraplugins/source/webcamera/ecamwebcameraplugin.h	Thu Mar 25 11:21:36 2010 +0900
+++ b/mmplugins/cameraplugins/source/webcamera/ecamwebcameraplugin.h	Tue Oct 19 11:48:59 2010 +0900
@@ -1,1027 +1,1032 @@
-/*
-* Copyright (c) 2010 ISB.
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of the "Symbian Foundation License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
-*
-* Initial Contributors:
-* ISB - Initial contribution
-*
-* Contributors:
-*
-* Description:
-*
-*/
-
-#ifndef ECAMWEBCAMERAPLUGIN_H
-#define ECAMWEBCAMERAPLUGIN_H
-
-#include <w32std.h>
-#include <bitdev.h>
-#include <ecam/ecamplugin.h>
-#include <ecam/ecaminfoplugin.h>
-#include <webcamera_driver.h>
-
-
-class CWebCameraBuffer;
-class CWebCameraActive;
-class CWebCameraVfActive;
-class CWebCameraAdvSet;
-
-/**  Min of Camera Zoom */
-const TInt KMinTestCameraZoom = -3;
-/**  Max of Camera Zoom */
-const TInt KMaxTestCameraZoom = 3;
-/**  Max of Camera Digital Zoom Factor */
-const TReal32 KMaxTestCameraDigitalZoomFactor = 1.0;
-/**  Max of Camera Digital Zoom */
-const TInt KMaxTestCameraDigitalZoom = 0;
-/**  Size of Viewfinder buffer, Capture buffer */
-const TInt KMaxBufSize = 1024 * 100;
-
-
-// Callback Class of WebCameraActive
-class MWebCameraActiveCallBack
-	{
-public:
-	virtual void ReserveCallBack(TInt aError) = 0;
-	virtual void PowerOnCallBack(TInt aError) = 0;
-	virtual void ImageCaptureCallBackL(TInt aError) = 0;
-	};
-
-// Callback Class of WebCameraVfActive
-class MWebCameraVfActiveCallBack
-	{
-public:
-	virtual void ViewFinderCallBack(TInt aError) = 0;
-	};
-
-/**
- *  Perform WebCamera function.
- */
-class CWebCamera : public CCameraPlugin
-				 , public MWebCameraActiveCallBack
-				 , public MWebCameraVfActiveCallBack
-	{
-public:
-	static CWebCamera* NewL();
-	~CWebCamera();
-	
-protected:
-
-	//from CCameraPlugin
-	/** 
-	from CCameraPlugin
-	
-	A call to one of the factory functions firstly loads the plugin, followed by a
-	call to this function to complete construction.
-	
-	Creates an object representing a camera.
-	
-	@param  aObserver
-	        Reference to class derived from MCameraObserver2 designed to receive
-	        notification of asynchronous event completion.
-	@param	aCameraIndex
-	        Index from 0 to CamerasAvailable()-1 inclusive specifying the
-	        camera device to use.
-	@return Pointer to a fully constructed CCamera object. Ownership is passed
-	        to the caller.
-
-	@leave  May leave with KErrNoMemory or KErrNotSupported if aCameraIndex is
-	        out of range.	
-	*/
-	void Construct2L(MCameraObserver& aObserver,TInt aCameraIndex);
-
-	/** 
-	from CCameraPlugin
-
-	A call to one of the factory functions firstly loads the plugin, followed by a
-	call to this function to complete construction.
-	
-	Duplicates the original camera object for use by, for example, multimedia systems.
-
-	May leave with KErrNoMemory or KErrNotFound if aCameraHandle is not valid.
-
-	@param  aObserver
-	        Reference to an observer.
-	@param  aCameraHandle Handle of an existing camera object.
-
-	@return Duplicate of the original camera object. 
-	*/
-	void Construct2DupL(MCameraObserver& aObserver,TInt aCameraHandle);
-
-    /** 
-	from CCameraPlugin
-
-    A call to one of the factory functions firstly loads the plugin, followed by a
-	call to this function to complete construction.
-    
-	Creates an object representing a camera.
-	
-	@param  aObserver
-	        Reference to class derived from MCameraObserver2 designed to receive
-	        notification of asynchronous event completion.
-	@param	aCameraIndex
-	        Index from 0 to CamerasAvailable()-1 inclusive specifying the
-	        camera device to use.
-	@param	aPriority
-	        Value from -100 to 100 indicating relative priority of client to
-	        use camera.
-
-	@return Pointer to a fully constructed CCamera object. Ownership is passed
-	        to the caller.
-
-	@leave  May leave with KErrNoMemory or KErrNotSupported if aCameraIndex is
-	        out of range.
-	*/
-	void Construct2L(MCameraObserver2& aObserver,TInt aCameraIndex,TInt aPriority);
-
-	/** 
-	from CCameraPlugin
-
-	Duplicates the original camera object for use by, for example, multimedia systems.
-
-	@leave  KErrNoMemory if out of memory.
-	@leave  KErrNotFound if aCameraHandle is not valid.	   
-	@leave  KErrPermissionDenied if the application does not have
-	        the UserEnvironment capability.
-
-	@param  aObserver
-	        Reference to an observer.
-	@param  aCameraHandle Handle of an existing camera object.
-
-	@return Duplicate of the original camera object. 
-	
-	@capability	UserEnvironment
-				An application that creates a CCamera object must have
-				the UserEnvironment capability.
-				
-	@note   Applications using this method to create camera object may not receive enums/uids added in future(after being baselined). 
-			To receive them, they should rather use New2L() or NewDuplicate2L(), in which case, they should prepare 
-			themselves to receive unrecognised values.
-	*/
-	void Construct2DupL(MCameraObserver2& aObserver,TInt aCameraHandle);
-
-	// from CCamera
-	/**
-	from CCamera
-	
-	Gets information about the camera device.
-
-	@param  aInfo 
-	        On return, information about the camera device. See TCameraInfo. 
-	*/
-	void CameraInfo(TCameraInfo& aInfo) const;
-	
-	/** 
-	from CCamera
-
-	Asynchronous function that performs any required initialisation and reserves
-	the camera for exclusive use.
-
-	Calls MCameraObserver:: ReserveComplete() when complete. 
-	*/
-	void Reserve();
-
-	/** 
-	from CCamera
-
-	De-initialises the camera, allowing it to be used by other clients. 
-	*/
-	void Release();
-
-
-	/** 
-	from CCamera
-
-	Asynchronous method to switch on camera power.
-
-	User must have successfully called Reserve() prior to calling this function.
-
-	Calls MCameraObserver::PowerOnComplete() when power on is complete. 
-	*/
-	void PowerOn();
-
-	/** 
-	from CCamera
-
-	Synchronous function for switching off camera power. 
-	*/
-	void PowerOff();
-
-
-	/**
-	from CCamera
-
-	Gets the device-unique handle of this camera object.
-
-	@return  The device-unique handle of this camera object. 
-	*/
-	TInt Handle();
-
-
-	/** 
-	from CCamera
-
-	Sets the zoom factor.
-
-	This must be in the range of TCameraInfo::iMinZoom to TCameraInfo::iMaxZoom
-	inclusive. May leave with KErrNotSupported if the specified zoom factor is
-	out of range.
-
-	@param aZoomFactor 
-	       Required zoom factor.
-	*/
-	void SetZoomFactorL(TInt aZoomFactor = 0);
-
-
-	/** 
-	from CCamera
-
-	Gets the currently set zoom factor.
-
-	@return  The currently set zoom factor.
-	*/
-	TInt ZoomFactor() const;
-
-	/** 
-	from CCamera
-
-	Sets the digital zoom factor.
-
-	This must be in the range of 0 to TCameraInfo::iMaxDigitalZoom inclusive.
-
-	May leave with KErrNotSupported if the zoom factor is out of range.
-
-	@param  aDigitalZoomFactor
-	        The required digital zoom factor. 
-	*/
-	void SetDigitalZoomFactorL(TInt aDigitalZoomFactor = 0);
-
-
-	/** 
-	from CCamera
-
-	Gets the currently set digital zoom factor.
-
-	@return  The currently set digital zoom factor. 
-	*/
-	TInt DigitalZoomFactor() const;
-
-
-	/**
-	from CCamera
-
-	Sets the contrast adjustment of the device.
-
-	This must be in the range of -100 to +100 or EContrastAuto. May leave with
-	KErrNotSupported if the specified contrast value is out of range.
-
-	@param  aContrast 
-	        Required contrast value. See TCameraInfo::iContrastSupported 
-	*/
-	void SetContrastL(TInt aContrast);
-
-
-	/** 
-	from CCamera
-
-	Gets the currently set contrast value.
-
-	@return  The currently set contrast value.
-	*/
-	TInt Contrast() const;
-
-	/** 
-	from CCamera
-
-	Sets the brightness adjustment of the device.
-
-	No effect if this is not supported, see TCameraInfo::iBrightnessSupported.
-
-	This must be in the range of -100 to +100 or EBrightnessAuto. May leave
-	with KErrNotSupported if the brightness adjustment is out of range.
-
-	@param  aBrightness
-	        The required brightness adjustment. 
-	*/
-	void SetBrightnessL(TInt aBrightness);
-
-	/** 
-	from CCamera
-
-	Gets the currently set brightness adjustment value.
-
-	@return  The currently set brightness adjustment value. 
-	*/
-	TInt Brightness() const;
-
-	/** 
-	from CCamera
-
-	Sets the flash mode.
-
-	No effect if this is not supported, see TCameraInfo::iFlashModesSupported.
-
-	May leave with KErrNotSupported if the specified flash mode is invalid.
-
-	@param  aFlash
-	        The required flash mode. 
-	*/
-	void SetFlashL(TFlash aFlash = EFlashNone);
-
-	/** 
-	from CCamera
-
-	Gets the currently set flash mode.
-
-	@return  The currently set flash mode. 
-	@note	if CCamera::New2L() or CCamera::NewDuplicate2L() is not used to create CCamera object, it is assumed that 
-    application is not prepared to receive extra added enum values (unrecognised). So, any extra enum value(unrecognised)
-    (set in the ECAM implementation because of sharing clients) should not be returned from the ECAM implementation.
-    To receive extra added enum values, application should rather use CCamera::New2L() or CCamera::NewDuplicate2L() 
-    to create camera object. ECAM implementation, after verifying this,(by checking version no.) may send new values, if set.
-    In this case, application is assumed to be prepared to receive unrecognised enum values.
-    
-    @see CCamera::CCameraAdvancedSettings::FlashMode()	
-	*/
-	TFlash Flash() const;
-
-	/** 
-	from CCamera
-
-	Sets the exposure adjustment of the device.
-
-	No effect if this is not supported, see CameraInfo::iExposureModesSupported.
-
-	May leave with KErrNotSupported if the specified exposure adjustment is invalid.
-
-	@param  aExposure
-	        The required exposure adjustment. 
-	*/
-	void SetExposureL(TExposure aExposure = EExposureAuto);
-
-	/** 
-	from CCamera
-
-	Gets the currently set exposure setting value.
-
-	@return  The currently set exposure setting value. 
-	*/
-	TExposure Exposure() const;
-
-	/** 
-	from CCamera
-
-	Sets the white balance adjustment of the device.
-
-	No effect if this is not supported, see TCameraInfo::iWhiteBalanceModesSupported.
-
-	@param  aWhiteBalance
-	        The required white balance adjustment.
-
-	@leave  KErrNotSupported if the specified white balance adjustment
-	        is invalid.
-	*/
-	void SetWhiteBalanceL(TWhiteBalance aWhiteBalance = EWBAuto);
-
-	/** 
-	from CCamera
-
-	Gets the currently set white balance adjustment value.
-
-	@return  The currently set white balance adjustment value.
-	
-	@note	if CCamera::New2L() or CCamera::NewDuplicate2L() is not used to create CCamera object, it is assumed that 
-    application is not prepared to receive extra added enum values (unrecognised). So, any extra enum value(unrecognised)
-    (set in the ECAM implementation because of sharing clients) should not be returned from the ECAM implementation.
-    To receive extra added enum values, application should rather use CCamera::New2L() or CCamera::NewDuplicate2L() 
-    to create camera object. ECAM implementation, after verifying this,(by checking version no.) may send new values, if set.
-    In this case, application is assumed to be prepared to receive unrecognised enum values.
-    Refer  CCamera::CCameraAdvancedSettings::WhiteBalanceMode() implementation
-    
-    @see CCamera::CCameraAdvancedSettings::WhiteBalanceMode()
-    */
-	TWhiteBalance WhiteBalance() const;
-
-	/** 
-	from CCamera
-
-	Starts transfer of view finder data to the given portion of the screen using
-	direct screen access.
-
-	The aScreenRect parameter is in screen co-ordinates and may be modified if,
-	eg, the camera requires the destination to have a certain byte alignment, etc.
-
-    @param  aWs 
-	        Window server session.
-	@param  aScreenDevice 
-	        Screen device.
-	@param  aWindow 
-	        Displayable window.
-	@param  aScreenRect 
-	        Portion of the screen to which view finder data is to be
-	        transferred. This is in screen co-ordinates and may be modified if, for example,
-	        the camera requires the destination to have a certain byte alignment.
-
-	@leave  KErrNotReady if PowerOn() has either not
-	        been called, or has not yet completed.
-	
-	@note   This method is assumed to be meant for default display only. KECamDefaultViewFinderHandle should be used to 
-			refer viewfinders started using CCamera methods. 
-	
-	@see	CCamera::CCameraV2DirectViewFinder
-	*/
-	void StartViewFinderDirectL(RWsSession& aWs,CWsScreenDevice& aScreenDevice,RWindowBase& aWindow,TRect& aScreenRect);
-
-	/** 
-	from CCamera
-
-	Starts transfer of view finder data to the given portion of the screen using
-	direct screen access and also clips to the specified portion of the screen.
-
-	The view finder has the same size and position as aScreenRect but is only
-	visible in the intersection of aScreenRect and aClipRect. May leave with KErrNotSupported
-	or KErrNotReady if Reserve() has not been called, or has not yet completed.
-
-	@param  aWs 
-	        Window server session.
-	@param  aScreenDevice 
-	        Screen device.
-	@param  aWindow 
-	        Displayable window.
-	@param  aScreenRect 
-	        Portion of the screen to which view finder data is to be
-	        transferred. This is in screen co-ordinates and may be modified if, for example,
-	        the camera requires the destination to have a certain byte alignment.
-	@param  aClipRect
-	        The rectangle to which the screen will be clipped.
-
-    @leave  KErrNotReady if PowerOn() hasn't been called successfully. 
-    
-    @note   This method is assumed to be meant for default display only. KECamDefaultViewFinderHandle should be used to 
-    		refer viewfinders started using CCamera methods.
-	
-	@see	CCamera::CCameraClientViewFinder
-	*/
-	void StartViewFinderDirectL(RWsSession& aWs,CWsScreenDevice& aScreenDevice,RWindowBase& aWindow,TRect& aScreenRect,TRect& aClipRect);
-
-	/** 
-	from CCamera
-
-	Starts transfer of view finder data.
-
-	Bitmaps are returned by MCameraObserver::ViewFinderFrameReady().
-
-	@param  aSize 
-	        On return, the size used.
-	@leave  KErrNotReady if PowerOn() has not been called, or has not yet completed.
-	
-	@note   This method is assumed to be meant for default display only. 
-	
-	@see	CCamera::CCameraClientViewFinder 
-	*/
-	void StartViewFinderBitmapsL(TSize& aSize);	
-
-	/** 
-	from CCamera
-
-	Starts transfer of view finder data and clips the bitmap to the specified clip
-	rectangle.
-
-	The bitmap is the size of the intersection of aSize and aClipRect, not simply
-	aSize padded with white space.
-
-	@param  aSize
-	        On return, the size used.
-	@param  aClipRect 
-	        Required clip rectangle. May be modified if, for example,
-	        the camera only supports certain byte alignments.
-
-	@leave  KErrInUse if Reserve() hasn't been called successfully.
-	@leave  KErrNotReady if PowerOn() hasn't been called successfully.
-	
-	@note   This method is assumed to be meant for default display only. 
-	
-	@see	CCamera::CCameraClientViewFinder
-	*/
-	void StartViewFinderBitmapsL(TSize& aSize,TRect& aClipRect);
-
-	/** 
-	from CCamera
-
-	Starts transfer of view finder data.
-
-	Picture data is returned by MCameraObserver2::ViewFinderReady().
-
-	@param  aImageFormat 
-	        The image format requested by the client.
-	@param  aSize 
-	        On return, the size used.
-	@leave  KErrNotSupported 
-	@leave  KErrNotReady if Reserve() has not been
-	        called, or has not yet completed. 
-	
-	@note   This method is assumed to be meant for default display only. KECamDefaultViewFinderHandle should be used to 
-			refer viewfinders started using CCamera methods.
-	
-	@see	CCamera::CCameraClientViewFinder
-	*/
-	void StartViewFinderL(TFormat aImageFormat,TSize& aSize);
-
-	/** 
-	from CCamera
-
-	Starts transfer of view finder data and clips the picture to the specified clip
-	rectangle. Picture data is returned by MCameraObserver2::ViewFinderReady().
-
-	The picture is the size of the intersection of aSize and aClipRect, not simply
-	aSize padded with white space.
-
-	@param  aImageFormat 
-	        The image format.
-	@param  aSize
-	        On return, the size used.
-	@param  aClipRect 
-	        Required clip rectangle. May be modified if, for example,
-	        the camera only supports certain byte alignments.
-
-	@leave  KErrInUse if Reserve() hasn't been called successfully,
-	@leave  KErrNotReady if PowerOn() hasn't been called successfully.
-	
-	@note   This method is assumed to be meant for default display only. KECamDefaultViewFinderHandle should be used to 
-			refer viewfinders started using CCamera methods.
-	
-	@see	CCamera::CCameraClientViewFinder
-	*/
-	void StartViewFinderL(TFormat aImageFormat,TSize& aSize,TRect& aClipRect);
-
-	/** 
-	Stops transfer of view finder data to the screen. 
-	
-	@note   This method is assumed to be meant for default display only. KECamDefaultViewFinderHandle should be used to 
-			refer viewfinders started using CCamera methods.
-	
-	@see	CCamera::CCameraV2DirectViewFinder
-	@see	CCamera::CCameraClientViewFinder
-	*/
-	void StopViewFinder();
-
-	/** 
-	from CCamera
-
-	Queries whether the view finder is active.
-
-	@return  ETrue if the view finder is active. EFalse if the view finder is not
-	         active. 
-	         
-	@note   This method is assumed to be meant for default display only. KECamDefaultViewFinderHandle should be used to 
-			refer viewfinders started using CCamera methods.
-	
-	@see	CCamera::CCameraV2DirectViewFinder
-	@see	CCamera::CCameraClientViewFinder
-	*/
-	TBool ViewFinderActive() const;
-
-	/** 
-	from CCamera
-
-	Sets whether view finder mirroring is on.
-
-	Used to switch between what the camera sees and what you would see if the
-	device were a mirror.
-
-	@param  aMirror 
-	        ETrue to set mirroring on, EFalse to set mirroring off.
-
-	@leave  KErrNotSupported.
-	
-	@note   This method is assumed to be meant for default display only. KECamDefaultViewFinderHandle should be used to 
-			refer viewfinders started using CCamera methods.
-	
-	@see	CCamera::CCameraV2DirectViewFinder
-	@see	CCamera::CCameraClientViewFinder
-	*/
-	void SetViewFinderMirrorL(TBool aMirror);
-
-	/** 
-	from CCamera
-
-	Gets whether view finder mirroring is active.
-
-	@return  ETrue if mirroring is set, EFalse if mirroring is not set. 
-	
-	@note   This method is assumed to be meant for default display only. KECamDefaultViewFinderHandle should be used to 
-			refer viewfinders started using CCamera methods.
-	
-	@see	CCamera::CCameraV2DirectViewFinder
-	@see	CCamera::CCameraClientViewFinder
-	*/
-	TBool ViewFinderMirror() const;
-
-	/** 
-	from CCamera
-
-	Performs setup and allocation of memory.
-
-	Called prior to calling CaptureImage() to keep the latency of that function
-	to a minimum.
-
-	Needs to be called only once for multiple CaptureImage() calls. May leave
-	with KErrNotSupported or KErrNoMemory or KErrInUse or KErrNotReady.
-
-	The specified image format must be one of the formats supported
-	(see TCameraInfo::iImageFormatsSupported).
-
-	The specified size index must be in the range of 0 to TCameraInfo::iNumImageSizesSupported-1
-	inclusive.
-
-	@param  aImageFormat 
-	        The image format.
-	@param  aSizeIndex 
-	        Size index.
-
-	@leave  KErrNotSupported
-	@leave  KErrNoMemory
-	@leave  KErrNotReady if PowerOn() hasn't been called successfully.
-	
-	@see 	CCamera::CCameraPreImageCaptureControl::PrepareImageCapture(TPrepareImageParameters aPrepareImageParameters)
-	*/
-	void PrepareImageCaptureL(TFormat aImageFormat,TInt aSizeIndex);
-
-	/** 
-	from CCamera
-
-	Performs setup and allocation of memory and clips the image to the specified
-	rectangle.
-
-	No effect unless TCameraInfo::iImageClippingSupported is set to ETrue. The
-	image captured is the intersection of aClipRect and the rectangle from (0,0)
-	to aSize. Needs to be called only once for multiple CaptureImage() calls.
-	May leave with KErrNotSupported or KErrNoMemory.
-
-	The specified image format must be one of the formats supported (see TCameraInfo::iImageFormatsSupported).
-
-	The specified size index must be in the range of 0 to TCameraInfo::iNumImageSizesSupported-1
-	inclusive.
-
-	@param  aImageFormat 
-	        The image format.
-	@param  aSizeIndex 
-	        Size index.
-	@param  aClipRect
-	        The rectangle to which the image is to be clipped.
-
-	@leave   KErrNotSupported
-	@leave   KErrNoMemory
-	@leave   KErrInUse if Reserve() hasn't been called successfully
-	@leave   KErrNotReady if PowerOn()
-	         hasn't been called successfully.
-	
-	@see 	CCamera::CCameraPreImageCaptureControl::PrepareImageCapture(TPrepareImageParameters aPrepareImageParameters)
-	*/
-	void PrepareImageCaptureL(TFormat aImageFormat,TInt aSizeIndex,const TRect& aClipRect);
-
-	/** 
-	from CCamera
-
-	Asynchronously performs still image capture.
-
-	Calls MCameraObserver::ImageReady() when complete. 
-	
-	@see CCamera::CCameraImageCapture
-	@see CCamera::CCameraPreImageCaptureControl
-	*/
-	void CaptureImage();
-
-	/** 
-	from CCamera
-
-	Cancels the asynchronous still image capture. 
-	
-	@see CCamera::CCameraImageCapture
-	*/
-	void CancelCaptureImage();
-
-	/** 
-	from CCamera
-
-	Enumerates through the available image capture sizes, based on the specified
-	size index and format
-
-	The size index must be in the range 0 to TCameraInfo::iNumImageSizesSupported-1
-	inclusive.
-
-	@param  aSize 
-	        Image size.
-	@param  aSizeIndex 
-	        Size index.
-	@param  aFormat 
-	        The image format.
-	*/
-	void EnumerateCaptureSizes(TSize& aSize,TInt aSizeIndex,TFormat aFormat) const;
-
-	/** 
-	from CCamera
-
-	Prepares for video capture.
-
-	Performs setup and allocation of memory prior to calling StartVideoCapture()
-	to keep the latency of that function to a minimum.
-
-	May leave with KErrNotSupported or KErrNoMemory.
-
-	@param  aFormat 
-	        Format must be one of the video frame formats supported (see
-	        TCameraInfo::iVideoFrameFormatsSupported).
-	@param  aSizeIndex 
-	        Size index  must be in the range 0 to TCameraInfo::iNumVideoFrameSizesSupported-1
-	        inclusive.
-	@param  aRateIndex 
-	        The rate must be in the range 0 to TCameraInfo::iNumVideoFrameRatesSupported-1
-	        inclusive.
-	@param  aBuffersToUse 
-	        The number of discrete buffers to use.
-	@param  aFramesPerBuffer 
-	        How large the buffers are to be. Must be less than
-	        or equal to TCameraInfo::iMaxFramesPerBufferSupported. One buffer is returned
-	        to MCameraObserver::FrameBufferReady() at a time.
-
-	@leave  May leave with KErrNotSupported, KErrNoMemory, or KErrNotReady if PowerOn() 
-			hasn't been called successfully.
-	
-	@see 	CCamera::CCameraVideoCaptureControl::PrepareVideoCapture(const TPrepareVideoParameters& aPrepareVideoParameters)
-	*/
-	void PrepareVideoCaptureL(TFormat aFormat,TInt aSizeIndex,TInt aRateIndex,TInt aBuffersToUse,TInt aFramesPerBuffer);
-
-	/** 
-	from CCamera
-
-	Prepares for video capture and clips the frames to the given rectangle.
-
-	Performs setup and allocation of memory prior to calling StartVideoCapture()
-	to keep the latency of that function to a minimum.
-
-	May leave with KErrNotSupported or KErrNoMemory.
-
-	@param  aFormat 
-	        Format must be one of the video frame formats supported (see
-	        TCameraInfo::iVideoFrameFormatsSupported).
-	@param  aSizeIndex 
-	        Size index must be in the range 0 to TCameraInfo::iNumVideoFrameSizesSupported-1
-	        inclusive.
-	@param  aRateIndex 
-	        The rate must be in the range 0 to TCameraInfo::iNumVideoFrameRatesSupported-1
-	        inclusive.
-	@param  aBuffersToUse 
-	        The number of discrete buffers to use.
-	@param  aFramesPerBuffer 
-	        How large the buffers are to be. Must be less than
-	        or equal to TCameraInfo::iMaxFramesPerBufferSupported. One buffer is returned
-	        to MCameraObserver::FrameBufferReady() at a time.
-	@param  aClipRect 
-	        The rectangle to which the image is to be clipped.
-	@leave  KErrNotSupported
-	@leave  KErrNoMemory, 
-	@leave  KErrInUse if Reserve() hasn't been called successfully
-	@leave  KErrNotReady if PowerOn() hasn't been called successfully.
-
-	@see 	CCamera::CCameraVideoCaptureControl::PrepareVideoCapture(const TPrepareVideoParameters& aPrepareVideoParameters)
-	*/
-	void PrepareVideoCaptureL(TFormat aFormat,TInt aSizeIndex,TInt aRateIndex,TInt aBuffersToUse,TInt aFramesPerBuffer,const TRect& aClipRect);
-
-	/** 
-	from CCamera
-
-	Starts capturing video.
-
-	Calls MCameraObserver::FrameBufferReady() when each buffer has been filled
-	with the required number of frames, as set by PrepareVideoCaptureL(). 
-	*/
-	void StartVideoCapture();
-
-	/** 
-	from CCamera
-
-	Stops video capture. 
-	*/
-	void StopVideoCapture();
-
-	/** 
-	from CCamera
-
-	Tests whether video capture is active.
-
-	@return  ETrue if video capture is active. EFalse if video capture is not active 
-	*/
-	TBool VideoCaptureActive() const;
-
-	/** 
-	from CCamera
-
-	Enumerates through the available video frame sizes, based on the specified
-	size index and format.
-
-	@param  aSize 
-	        On return the available video frame sizes. Sizes should be returned
-	        in order, largest first, so clients do not have to iterate through every one.
-	@param  aSizeIndex 
-	        Size index. Must be in the range 0 to TCameraInfo::iNumVideoFrameSizesSupported-1
-	        inclusive
-	@param  aFormat 
-	        Image format. 
-	*/
-	void EnumerateVideoFrameSizes(TSize& aSize,TInt aSizeIndex,TFormat aFormat) const;
-
-	/** 
-	from CCamera
-
-	Enumerates through the available video frame rates, based on the specified
-	rate index, video frame format, size index and exposure mode.
-
-	@param  aRate 
-	        On return, the available video frame rates. Some rates may not
-	        be available due to, for example, current flash mode setting. In those cases
-	        a rate of 0 will be returned. Rates should be returned in order, highest first,
-	        so clients do not have to iterate through every one.
-	@param  aRateIndex 
-	        The rate index. Must be in the range 0 to TCameraInfo::iNumVideoFrameRatesSupported-1
-	        inclusive.
-	@param  aFormat 
-	        The format.
-	@param  aSizeIndex 
-	        The size index.
-	@param  aExposure 
-	        The exposure mode. 
-	*/
-	void EnumerateVideoFrameRates(TReal32& aRate,TInt aRateIndex,TFormat aFormat,TInt aSizeIndex,TExposure aExposure = EExposureAuto) const;
-
-	/** 
-	from CCamera
-
-	Gets the frame size currently in use.
-
-	@param  aSize 
-	        The frame size currently in use. 
-	*/
-	void GetFrameSize(TSize& aSize) const;
-
-	/** 
-	from CCamera
-
-	Gets the frame rate currently in use.
-
-	@return  The frame rate currently in use. 
-	*/
-	TReal32 FrameRate() const;
-
-	/** 
-	from CCamera
-
-	Gets the number of buffers currently in use.
-
-	@return  The number of buffers currently in use. 
-	*/
-	TInt BuffersInUse() const;
-
-	/** 
-	from CCamera
-
-	Gets the number of frames per buffer currently in use.
-
-	@return  The number of frames per buffer currently in use. 
-	*/
-	TInt FramesPerBuffer() const;
-
-	/** 
-	from CCamera
-
-	Sets the quality value to use if jpeg is a supported image for video format.
-
-	Ignored if jpeg is not a supported image for video format.
-
-	@param  aQuality
-	        The quality value to use, clamped to the range 1 to 100.
-	        
-	@see	CCamera::CCameraPreImageCaptureControl::TPrepareImageParameters::iImageMaxMemorySize
-	*/
-	void SetJpegQuality(TInt aQuality);
-
-	/**
-	from CCamera
-
-	Gets the currently set jpeg quality value.
-
-	Returns 0 if not supported.
-
-	@return The currently set jpeg quality value.
-	
-	@see    CCamera::CCameraPreImageCaptureControl::GetImageMaxMemorySizeL(TUint& aMemorySize)
-	*/
-	TInt JpegQuality() const;
-
-    /**
-	from CCamera
-
-	Gets a custom interface. The client has to cast the returned pointer
-	to the appropriate type.
-
-	@param aInterface
-		   The Uid of the particular interface function required.
-
-	@return Custom interface pointer. NULL if the requested interface is not supported.
-	*/
-	TAny* CustomInterface(TUid aInterface);
-
-private:
-	CWebCamera();
-	void ConstructL();
-
-private: // from MWebCameraActiveCallBack
-	/**
-	from MWebCameraActiveCallBack
-	
-	CallBack function of the Reserve
-	*/
-	virtual void ReserveCallBack(TInt aError);
-
-	/**
-	from MWebCameraActiveCallBack
-	
-	CallBack function of the PowerOn
-	*/
-	virtual void PowerOnCallBack(TInt aError);
-
-	/**
-	from MWebCameraActiveCallBack
-	
-	CallBack function of the ImageCapture
-	*/
-	virtual void ImageCaptureCallBackL(TInt aError);
-
-private: // from MWebCameraActiveCallBack
-	/**
-	from MWebCameraActiveCallBack
-	
-	CallBack function of the ViewFinder
-	*/
-	virtual void ViewFinderCallBack(TInt aError);
-
-private:
-	
-	RWebcameraDevice		iDriver;			///< Camera driver.
-	MCameraObserver*		iObserver;			///< The callback 'notify' party
-	MCameraObserver2*		iObserver2;			///< The callback 'notify' party(V2).
-	CWebCameraActive*		iActive;			///< For async demand.
-	CWebCameraVfActive*		iVfActive;			///< For viewfinder.
-	CWebCameraAdvSet* 		iAdvSettingsImpl;	///< Expansion setting class.
-
-	TCameraInfo				iInfo;				///< Camera Information.
-	TInt					iCameraIndex;		///< Camera Index.
-	TInt					iCameraHandle;		///< Camera handle.
-	TInt					iPriority;			///< priority.
-
-	TBool					iReserved;			///< Reserved Flag.
-	TBool					iPowerOn;			///< PowerOn Flag.
-	TBool					iImageCaptureActive;///< Flag during the still image .
-
-	CWebCameraBuffer*		iCaptureCameraBuf;	///< Camera buffer for capture.
-	CFbsBitmap*				iCaptureBitmap;		///< Bitmap Data for capture.
-	HBufC8*					iCaptureBuf;		///< Data buffer for capture.
-	TPtr8					iCaptureBufPtr;		///< pointer to Data buffer for capture.
-
-	RArray<TSize>			iImageSizes;		///< Image size.
-	};
-
-
-class CWebCameraInfo : public CCameraInfoPlugin
-	{
-public:
-
-    /**
-     * Two-phased constructor.
-     */
-	static CWebCameraInfo* NewL();
-	
-	/**> Destructor */
-	~CWebCameraInfo();
-
-// from CCameraInfoPlugin
-public:
-	/** 
-	from CCameraInfoPlugin
-	
-	Determines the number of cameras on the device.
-
-    @return Count of cameras present on the device.
-	*/
-	TInt CamerasAvailable();
-
-private:
-	CWebCameraInfo();
-	};
-
-
-#endif // ECAMWEBCAMERAPLUGIN_H
+/*
+* Copyright (c) 2010 ISB.
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the "Symbian Foundation License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+*
+* Initial Contributors:
+* ISB - Initial contribution
+*
+* Contributors:
+*
+* Description:
+*
+*/
+
+#ifndef ECAMWEBCAMERAPLUGIN_H
+#define ECAMWEBCAMERAPLUGIN_H
+
+#include <w32std.h>
+#include <bitdev.h>
+#include <ecam/ecamplugin.h>
+#include <ecam/ecaminfoplugin.h>
+#include <webcamera_driver.h>
+
+
+class CWebCameraBuffer;
+class CWebCameraActive;
+class CWebCameraVfActive;
+class CWebCameraAdvSet;
+
+/**  Min of Camera Zoom */
+const TInt KMinTestCameraZoom = -3;
+/**  Max of Camera Zoom */
+const TInt KMaxTestCameraZoom = 3;
+/**  Max of Camera Digital Zoom Factor */
+const TReal32 KMaxTestCameraDigitalZoomFactor = 1.0;
+/**  Max of Camera Digital Zoom */
+const TInt KMaxTestCameraDigitalZoom = 0;
+/**  Size of Viewfinder buffer, Capture buffer */
+
+const TInt KMaxBufSize = 900 * 1024;
+
+
+// Callback Class of WebCameraActive
+class MWebCameraActiveCallBack
+	{
+public:
+	virtual void ReserveCallBack(TInt aError) = 0;
+	virtual void PowerOnCallBack(TInt aError) = 0;
+	virtual void ImageCaptureCallBackL(TInt aError) = 0;
+	};
+
+// Callback Class of WebCameraVfActive
+class MWebCameraVfActiveCallBack
+	{
+public:
+	virtual void ViewFinderCallBack(TInt aError) = 0;
+	};
+
+/**
+ *  Perform WebCamera function.
+ */
+class CWebCamera : public CCameraPlugin
+				 , public MWebCameraActiveCallBack
+				 , public MWebCameraVfActiveCallBack
+	{
+public:
+	static CWebCamera* NewL();
+	~CWebCamera();
+	
+protected:
+
+	//from CCameraPlugin
+	/** 
+	from CCameraPlugin
+	
+	A call to one of the factory functions firstly loads the plugin, followed by a
+	call to this function to complete construction.
+	
+	Creates an object representing a camera.
+	
+	@param  aObserver
+	        Reference to class derived from MCameraObserver2 designed to receive
+	        notification of asynchronous event completion.
+	@param	aCameraIndex
+	        Index from 0 to CamerasAvailable()-1 inclusive specifying the
+	        camera device to use.
+	@return Pointer to a fully constructed CCamera object. Ownership is passed
+	        to the caller.
+
+	@leave  May leave with KErrNoMemory or KErrNotSupported if aCameraIndex is
+	        out of range.	
+	*/
+	void Construct2L(MCameraObserver& aObserver,TInt aCameraIndex);
+
+	/** 
+	from CCameraPlugin
+
+	A call to one of the factory functions firstly loads the plugin, followed by a
+	call to this function to complete construction.
+	
+	Duplicates the original camera object for use by, for example, multimedia systems.
+
+	May leave with KErrNoMemory or KErrNotFound if aCameraHandle is not valid.
+
+	@param  aObserver
+	        Reference to an observer.
+	@param  aCameraHandle Handle of an existing camera object.
+
+	@return Duplicate of the original camera object. 
+	*/
+	void Construct2DupL(MCameraObserver& aObserver,TInt aCameraHandle);
+
+    /** 
+	from CCameraPlugin
+
+    A call to one of the factory functions firstly loads the plugin, followed by a
+	call to this function to complete construction.
+    
+	Creates an object representing a camera.
+	
+	@param  aObserver
+	        Reference to class derived from MCameraObserver2 designed to receive
+	        notification of asynchronous event completion.
+	@param	aCameraIndex
+	        Index from 0 to CamerasAvailable()-1 inclusive specifying the
+	        camera device to use.
+	@param	aPriority
+	        Value from -100 to 100 indicating relative priority of client to
+	        use camera.
+
+	@return Pointer to a fully constructed CCamera object. Ownership is passed
+	        to the caller.
+
+	@leave  May leave with KErrNoMemory or KErrNotSupported if aCameraIndex is
+	        out of range.
+	*/
+	void Construct2L(MCameraObserver2& aObserver,TInt aCameraIndex,TInt aPriority);
+
+	/** 
+	from CCameraPlugin
+
+	Duplicates the original camera object for use by, for example, multimedia systems.
+
+	@leave  KErrNoMemory if out of memory.
+	@leave  KErrNotFound if aCameraHandle is not valid.	   
+	@leave  KErrPermissionDenied if the application does not have
+	        the UserEnvironment capability.
+
+	@param  aObserver
+	        Reference to an observer.
+	@param  aCameraHandle Handle of an existing camera object.
+
+	@return Duplicate of the original camera object. 
+	
+	@capability	UserEnvironment
+				An application that creates a CCamera object must have
+				the UserEnvironment capability.
+				
+	@note   Applications using this method to create camera object may not receive enums/uids added in future(after being baselined). 
+			To receive them, they should rather use New2L() or NewDuplicate2L(), in which case, they should prepare 
+			themselves to receive unrecognised values.
+	*/
+	void Construct2DupL(MCameraObserver2& aObserver,TInt aCameraHandle);
+
+	// from CCamera
+	/**
+	from CCamera
+	
+	Gets information about the camera device.
+
+	@param  aInfo 
+	        On return, information about the camera device. See TCameraInfo. 
+	*/
+	void CameraInfo(TCameraInfo& aInfo) const;
+	
+	/** 
+	from CCamera
+
+	Asynchronous function that performs any required initialisation and reserves
+	the camera for exclusive use.
+
+	Calls MCameraObserver:: ReserveComplete() when complete. 
+	*/
+	void Reserve();
+
+	/** 
+	from CCamera
+
+	De-initialises the camera, allowing it to be used by other clients. 
+	*/
+	void Release();
+
+
+	/** 
+	from CCamera
+
+	Asynchronous method to switch on camera power.
+
+	User must have successfully called Reserve() prior to calling this function.
+
+	Calls MCameraObserver::PowerOnComplete() when power on is complete. 
+	*/
+	void PowerOn();
+
+	/** 
+	from CCamera
+
+	Synchronous function for switching off camera power. 
+	*/
+	void PowerOff();
+
+
+	/**
+	from CCamera
+
+	Gets the device-unique handle of this camera object.
+
+	@return  The device-unique handle of this camera object. 
+	*/
+	TInt Handle();
+
+
+	/** 
+	from CCamera
+
+	Sets the zoom factor.
+
+	This must be in the range of TCameraInfo::iMinZoom to TCameraInfo::iMaxZoom
+	inclusive. May leave with KErrNotSupported if the specified zoom factor is
+	out of range.
+
+	@param aZoomFactor 
+	       Required zoom factor.
+	*/
+	void SetZoomFactorL(TInt aZoomFactor = 0);
+
+
+	/** 
+	from CCamera
+
+	Gets the currently set zoom factor.
+
+	@return  The currently set zoom factor.
+	*/
+	TInt ZoomFactor() const;
+
+	/** 
+	from CCamera
+
+	Sets the digital zoom factor.
+
+	This must be in the range of 0 to TCameraInfo::iMaxDigitalZoom inclusive.
+
+	May leave with KErrNotSupported if the zoom factor is out of range.
+
+	@param  aDigitalZoomFactor
+	        The required digital zoom factor. 
+	*/
+	void SetDigitalZoomFactorL(TInt aDigitalZoomFactor = 0);
+
+
+	/** 
+	from CCamera
+
+	Gets the currently set digital zoom factor.
+
+	@return  The currently set digital zoom factor. 
+	*/
+	TInt DigitalZoomFactor() const;
+
+
+	/**
+	from CCamera
+
+	Sets the contrast adjustment of the device.
+
+	This must be in the range of -100 to +100 or EContrastAuto. May leave with
+	KErrNotSupported if the specified contrast value is out of range.
+
+	@param  aContrast 
+	        Required contrast value. See TCameraInfo::iContrastSupported 
+	*/
+	void SetContrastL(TInt aContrast);
+
+
+	/** 
+	from CCamera
+
+	Gets the currently set contrast value.
+
+	@return  The currently set contrast value.
+	*/
+	TInt Contrast() const;
+
+	/** 
+	from CCamera
+
+	Sets the brightness adjustment of the device.
+
+	No effect if this is not supported, see TCameraInfo::iBrightnessSupported.
+
+	This must be in the range of -100 to +100 or EBrightnessAuto. May leave
+	with KErrNotSupported if the brightness adjustment is out of range.
+
+	@param  aBrightness
+	        The required brightness adjustment. 
+	*/
+	void SetBrightnessL(TInt aBrightness);
+
+	/** 
+	from CCamera
+
+	Gets the currently set brightness adjustment value.
+
+	@return  The currently set brightness adjustment value. 
+	*/
+	TInt Brightness() const;
+
+	/** 
+	from CCamera
+
+	Sets the flash mode.
+
+	No effect if this is not supported, see TCameraInfo::iFlashModesSupported.
+
+	May leave with KErrNotSupported if the specified flash mode is invalid.
+
+	@param  aFlash
+	        The required flash mode. 
+	*/
+	void SetFlashL(TFlash aFlash = EFlashNone);
+
+	/** 
+	from CCamera
+
+	Gets the currently set flash mode.
+
+	@return  The currently set flash mode. 
+	@note	if CCamera::New2L() or CCamera::NewDuplicate2L() is not used to create CCamera object, it is assumed that 
+    application is not prepared to receive extra added enum values (unrecognised). So, any extra enum value(unrecognised)
+    (set in the ECAM implementation because of sharing clients) should not be returned from the ECAM implementation.
+    To receive extra added enum values, application should rather use CCamera::New2L() or CCamera::NewDuplicate2L() 
+    to create camera object. ECAM implementation, after verifying this,(by checking version no.) may send new values, if set.
+    In this case, application is assumed to be prepared to receive unrecognised enum values.
+    
+    @see CCamera::CCameraAdvancedSettings::FlashMode()	
+	*/
+	TFlash Flash() const;
+
+	/** 
+	from CCamera
+
+	Sets the exposure adjustment of the device.
+
+	No effect if this is not supported, see CameraInfo::iExposureModesSupported.
+
+	May leave with KErrNotSupported if the specified exposure adjustment is invalid.
+
+	@param  aExposure
+	        The required exposure adjustment. 
+	*/
+	void SetExposureL(TExposure aExposure = EExposureAuto);
+
+	/** 
+	from CCamera
+
+	Gets the currently set exposure setting value.
+
+	@return  The currently set exposure setting value. 
+	*/
+	TExposure Exposure() const;
+
+	/** 
+	from CCamera
+
+	Sets the white balance adjustment of the device.
+
+	No effect if this is not supported, see TCameraInfo::iWhiteBalanceModesSupported.
+
+	@param  aWhiteBalance
+	        The required white balance adjustment.
+
+	@leave  KErrNotSupported if the specified white balance adjustment
+	        is invalid.
+	*/
+	void SetWhiteBalanceL(TWhiteBalance aWhiteBalance = EWBAuto);
+
+	/** 
+	from CCamera
+
+	Gets the currently set white balance adjustment value.
+
+	@return  The currently set white balance adjustment value.
+	
+	@note	if CCamera::New2L() or CCamera::NewDuplicate2L() is not used to create CCamera object, it is assumed that 
+    application is not prepared to receive extra added enum values (unrecognised). So, any extra enum value(unrecognised)
+    (set in the ECAM implementation because of sharing clients) should not be returned from the ECAM implementation.
+    To receive extra added enum values, application should rather use CCamera::New2L() or CCamera::NewDuplicate2L() 
+    to create camera object. ECAM implementation, after verifying this,(by checking version no.) may send new values, if set.
+    In this case, application is assumed to be prepared to receive unrecognised enum values.
+    Refer  CCamera::CCameraAdvancedSettings::WhiteBalanceMode() implementation
+    
+    @see CCamera::CCameraAdvancedSettings::WhiteBalanceMode()
+    */
+	TWhiteBalance WhiteBalance() const;
+
+	/** 
+	from CCamera
+
+	Starts transfer of view finder data to the given portion of the screen using
+	direct screen access.
+
+	The aScreenRect parameter is in screen co-ordinates and may be modified if,
+	eg, the camera requires the destination to have a certain byte alignment, etc.
+
+    @param  aWs 
+	        Window server session.
+	@param  aScreenDevice 
+	        Screen device.
+	@param  aWindow 
+	        Displayable window.
+	@param  aScreenRect 
+	        Portion of the screen to which view finder data is to be
+	        transferred. This is in screen co-ordinates and may be modified if, for example,
+	        the camera requires the destination to have a certain byte alignment.
+
+	@leave  KErrNotReady if PowerOn() has either not
+	        been called, or has not yet completed.
+	
+	@note   This method is assumed to be meant for default display only. KECamDefaultViewFinderHandle should be used to 
+			refer viewfinders started using CCamera methods. 
+	
+	@see	CCamera::CCameraV2DirectViewFinder
+	*/
+	void StartViewFinderDirectL(RWsSession& aWs,CWsScreenDevice& aScreenDevice,RWindowBase& aWindow,TRect& aScreenRect);
+
+	/** 
+	from CCamera
+
+	Starts transfer of view finder data to the given portion of the screen using
+	direct screen access and also clips to the specified portion of the screen.
+
+	The view finder has the same size and position as aScreenRect but is only
+	visible in the intersection of aScreenRect and aClipRect. May leave with KErrNotSupported
+	or KErrNotReady if Reserve() has not been called, or has not yet completed.
+
+	@param  aWs 
+	        Window server session.
+	@param  aScreenDevice 
+	        Screen device.
+	@param  aWindow 
+	        Displayable window.
+	@param  aScreenRect 
+	        Portion of the screen to which view finder data is to be
+	        transferred. This is in screen co-ordinates and may be modified if, for example,
+	        the camera requires the destination to have a certain byte alignment.
+	@param  aClipRect
+	        The rectangle to which the screen will be clipped.
+
+    @leave  KErrNotReady if PowerOn() hasn't been called successfully. 
+    
+    @note   This method is assumed to be meant for default display only. KECamDefaultViewFinderHandle should be used to 
+    		refer viewfinders started using CCamera methods.
+	
+	@see	CCamera::CCameraClientViewFinder
+	*/
+	void StartViewFinderDirectL(RWsSession& aWs,CWsScreenDevice& aScreenDevice,RWindowBase& aWindow,TRect& aScreenRect,TRect& aClipRect);
+
+	/** 
+	from CCamera
+
+	Starts transfer of view finder data.
+
+	Bitmaps are returned by MCameraObserver::ViewFinderFrameReady().
+
+	@param  aSize 
+	        On return, the size used.
+	@leave  KErrNotReady if PowerOn() has not been called, or has not yet completed.
+	
+	@note   This method is assumed to be meant for default display only. 
+	
+	@see	CCamera::CCameraClientViewFinder 
+	*/
+	void StartViewFinderBitmapsL(TSize& aSize);	
+
+	/** 
+	from CCamera
+
+	Starts transfer of view finder data and clips the bitmap to the specified clip
+	rectangle.
+
+	The bitmap is the size of the intersection of aSize and aClipRect, not simply
+	aSize padded with white space.
+
+	@param  aSize
+	        On return, the size used.
+	@param  aClipRect 
+	        Required clip rectangle. May be modified if, for example,
+	        the camera only supports certain byte alignments.
+
+	@leave  KErrInUse if Reserve() hasn't been called successfully.
+	@leave  KErrNotReady if PowerOn() hasn't been called successfully.
+	
+	@note   This method is assumed to be meant for default display only. 
+	
+	@see	CCamera::CCameraClientViewFinder
+	*/
+	void StartViewFinderBitmapsL(TSize& aSize,TRect& aClipRect);
+
+	/** 
+	from CCamera
+
+	Starts transfer of view finder data.
+
+	Picture data is returned by MCameraObserver2::ViewFinderReady().
+
+	@param  aImageFormat 
+	        The image format requested by the client.
+	@param  aSize 
+	        On return, the size used.
+	@leave  KErrNotSupported 
+	@leave  KErrNotReady if Reserve() has not been
+	        called, or has not yet completed. 
+	
+	@note   This method is assumed to be meant for default display only. KECamDefaultViewFinderHandle should be used to 
+			refer viewfinders started using CCamera methods.
+	
+	@see	CCamera::CCameraClientViewFinder
+	*/
+	void StartViewFinderL(TFormat aImageFormat,TSize& aSize);
+
+	/** 
+	from CCamera
+
+	Starts transfer of view finder data and clips the picture to the specified clip
+	rectangle. Picture data is returned by MCameraObserver2::ViewFinderReady().
+
+	The picture is the size of the intersection of aSize and aClipRect, not simply
+	aSize padded with white space.
+
+	@param  aImageFormat 
+	        The image format.
+	@param  aSize
+	        On return, the size used.
+	@param  aClipRect 
+	        Required clip rectangle. May be modified if, for example,
+	        the camera only supports certain byte alignments.
+
+	@leave  KErrInUse if Reserve() hasn't been called successfully,
+	@leave  KErrNotReady if PowerOn() hasn't been called successfully.
+	
+	@note   This method is assumed to be meant for default display only. KECamDefaultViewFinderHandle should be used to 
+			refer viewfinders started using CCamera methods.
+	
+	@see	CCamera::CCameraClientViewFinder
+	*/
+	void StartViewFinderL(TFormat aImageFormat,TSize& aSize,TRect& aClipRect);
+
+	/** 
+	Stops transfer of view finder data to the screen. 
+	
+	@note   This method is assumed to be meant for default display only. KECamDefaultViewFinderHandle should be used to 
+			refer viewfinders started using CCamera methods.
+	
+	@see	CCamera::CCameraV2DirectViewFinder
+	@see	CCamera::CCameraClientViewFinder
+	*/
+	void StopViewFinder();
+
+	/** 
+	from CCamera
+
+	Queries whether the view finder is active.
+
+	@return  ETrue if the view finder is active. EFalse if the view finder is not
+	         active. 
+	         
+	@note   This method is assumed to be meant for default display only. KECamDefaultViewFinderHandle should be used to 
+			refer viewfinders started using CCamera methods.
+	
+	@see	CCamera::CCameraV2DirectViewFinder
+	@see	CCamera::CCameraClientViewFinder
+	*/
+	TBool ViewFinderActive() const;
+
+	/** 
+	from CCamera
+
+	Sets whether view finder mirroring is on.
+
+	Used to switch between what the camera sees and what you would see if the
+	device were a mirror.
+
+	@param  aMirror 
+	        ETrue to set mirroring on, EFalse to set mirroring off.
+
+	@leave  KErrNotSupported.
+	
+	@note   This method is assumed to be meant for default display only. KECamDefaultViewFinderHandle should be used to 
+			refer viewfinders started using CCamera methods.
+	
+	@see	CCamera::CCameraV2DirectViewFinder
+	@see	CCamera::CCameraClientViewFinder
+	*/
+	void SetViewFinderMirrorL(TBool aMirror);
+
+	/** 
+	from CCamera
+
+	Gets whether view finder mirroring is active.
+
+	@return  ETrue if mirroring is set, EFalse if mirroring is not set. 
+	
+	@note   This method is assumed to be meant for default display only. KECamDefaultViewFinderHandle should be used to 
+			refer viewfinders started using CCamera methods.
+	
+	@see	CCamera::CCameraV2DirectViewFinder
+	@see	CCamera::CCameraClientViewFinder
+	*/
+	TBool ViewFinderMirror() const;
+
+	/** 
+	from CCamera
+
+	Performs setup and allocation of memory.
+
+	Called prior to calling CaptureImage() to keep the latency of that function
+	to a minimum.
+
+	Needs to be called only once for multiple CaptureImage() calls. May leave
+	with KErrNotSupported or KErrNoMemory or KErrInUse or KErrNotReady.
+
+	The specified image format must be one of the formats supported
+	(see TCameraInfo::iImageFormatsSupported).
+
+	The specified size index must be in the range of 0 to TCameraInfo::iNumImageSizesSupported-1
+	inclusive.
+
+	@param  aImageFormat 
+	        The image format.
+	@param  aSizeIndex 
+	        Size index.
+
+	@leave  KErrNotSupported
+	@leave  KErrNoMemory
+	@leave  KErrNotReady if PowerOn() hasn't been called successfully.
+	
+	@see 	CCamera::CCameraPreImageCaptureControl::PrepareImageCapture(TPrepareImageParameters aPrepareImageParameters)
+	*/
+	void PrepareImageCaptureL(TFormat aImageFormat,TInt aSizeIndex);
+
+	/** 
+	from CCamera
+
+	Performs setup and allocation of memory and clips the image to the specified
+	rectangle.
+
+	No effect unless TCameraInfo::iImageClippingSupported is set to ETrue. The
+	image captured is the intersection of aClipRect and the rectangle from (0,0)
+	to aSize. Needs to be called only once for multiple CaptureImage() calls.
+	May leave with KErrNotSupported or KErrNoMemory.
+
+	The specified image format must be one of the formats supported (see TCameraInfo::iImageFormatsSupported).
+
+	The specified size index must be in the range of 0 to TCameraInfo::iNumImageSizesSupported-1
+	inclusive.
+
+	@param  aImageFormat 
+	        The image format.
+	@param  aSizeIndex 
+	        Size index.
+	@param  aClipRect
+	        The rectangle to which the image is to be clipped.
+
+	@leave   KErrNotSupported
+	@leave   KErrNoMemory
+	@leave   KErrInUse if Reserve() hasn't been called successfully
+	@leave   KErrNotReady if PowerOn()
+	         hasn't been called successfully.
+	
+	@see 	CCamera::CCameraPreImageCaptureControl::PrepareImageCapture(TPrepareImageParameters aPrepareImageParameters)
+	*/
+	void PrepareImageCaptureL(TFormat aImageFormat,TInt aSizeIndex,const TRect& aClipRect);
+
+	/** 
+	from CCamera
+
+	Asynchronously performs still image capture.
+
+	Calls MCameraObserver::ImageReady() when complete. 
+	
+	@see CCamera::CCameraImageCapture
+	@see CCamera::CCameraPreImageCaptureControl
+	*/
+	void CaptureImage();
+
+	/** 
+	from CCamera
+
+	Cancels the asynchronous still image capture. 
+	
+	@see CCamera::CCameraImageCapture
+	*/
+	void CancelCaptureImage();
+
+	/** 
+	from CCamera
+
+	Enumerates through the available image capture sizes, based on the specified
+	size index and format
+
+	The size index must be in the range 0 to TCameraInfo::iNumImageSizesSupported-1
+	inclusive.
+
+	@param  aSize 
+	        Image size.
+	@param  aSizeIndex 
+	        Size index.
+	@param  aFormat 
+	        The image format.
+	*/
+	void EnumerateCaptureSizes(TSize& aSize,TInt aSizeIndex,TFormat aFormat) const;
+
+	/** 
+	from CCamera
+
+	Prepares for video capture.
+
+	Performs setup and allocation of memory prior to calling StartVideoCapture()
+	to keep the latency of that function to a minimum.
+
+	May leave with KErrNotSupported or KErrNoMemory.
+
+	@param  aFormat 
+	        Format must be one of the video frame formats supported (see
+	        TCameraInfo::iVideoFrameFormatsSupported).
+	@param  aSizeIndex 
+	        Size index  must be in the range 0 to TCameraInfo::iNumVideoFrameSizesSupported-1
+	        inclusive.
+	@param  aRateIndex 
+	        The rate must be in the range 0 to TCameraInfo::iNumVideoFrameRatesSupported-1
+	        inclusive.
+	@param  aBuffersToUse 
+	        The number of discrete buffers to use.
+	@param  aFramesPerBuffer 
+	        How large the buffers are to be. Must be less than
+	        or equal to TCameraInfo::iMaxFramesPerBufferSupported. One buffer is returned
+	        to MCameraObserver::FrameBufferReady() at a time.
+
+	@leave  May leave with KErrNotSupported, KErrNoMemory, or KErrNotReady if PowerOn() 
+			hasn't been called successfully.
+	
+	@see 	CCamera::CCameraVideoCaptureControl::PrepareVideoCapture(const TPrepareVideoParameters& aPrepareVideoParameters)
+	*/
+	void PrepareVideoCaptureL(TFormat aFormat,TInt aSizeIndex,TInt aRateIndex,TInt aBuffersToUse,TInt aFramesPerBuffer);
+
+	/** 
+	from CCamera
+
+	Prepares for video capture and clips the frames to the given rectangle.
+
+	Performs setup and allocation of memory prior to calling StartVideoCapture()
+	to keep the latency of that function to a minimum.
+
+	May leave with KErrNotSupported or KErrNoMemory.
+
+	@param  aFormat 
+	        Format must be one of the video frame formats supported (see
+	        TCameraInfo::iVideoFrameFormatsSupported).
+	@param  aSizeIndex 
+	        Size index must be in the range 0 to TCameraInfo::iNumVideoFrameSizesSupported-1
+	        inclusive.
+	@param  aRateIndex 
+	        The rate must be in the range 0 to TCameraInfo::iNumVideoFrameRatesSupported-1
+	        inclusive.
+	@param  aBuffersToUse 
+	        The number of discrete buffers to use.
+	@param  aFramesPerBuffer 
+	        How large the buffers are to be. Must be less than
+	        or equal to TCameraInfo::iMaxFramesPerBufferSupported. One buffer is returned
+	        to MCameraObserver::FrameBufferReady() at a time.
+	@param  aClipRect 
+	        The rectangle to which the image is to be clipped.
+	@leave  KErrNotSupported
+	@leave  KErrNoMemory, 
+	@leave  KErrInUse if Reserve() hasn't been called successfully
+	@leave  KErrNotReady if PowerOn() hasn't been called successfully.
+
+	@see 	CCamera::CCameraVideoCaptureControl::PrepareVideoCapture(const TPrepareVideoParameters& aPrepareVideoParameters)
+	*/
+	void PrepareVideoCaptureL(TFormat aFormat,TInt aSizeIndex,TInt aRateIndex,TInt aBuffersToUse,TInt aFramesPerBuffer,const TRect& aClipRect);
+
+	/** 
+	from CCamera
+
+	Starts capturing video.
+
+	Calls MCameraObserver::FrameBufferReady() when each buffer has been filled
+	with the required number of frames, as set by PrepareVideoCaptureL(). 
+	*/
+	void StartVideoCapture();
+
+	/** 
+	from CCamera
+	Stops video capture. 
+	*/
+	void StopVideoCapture();
+
+	/** 
+	from CCamera
+
+	Tests whether video capture is active.
+	@return  ETrue if video capture is active. EFalse if video capture is not active 
+	*/
+	TBool VideoCaptureActive() const;
+
+	/** 
+	from CCamera
+
+	Enumerates through the available video frame sizes, based on the specified
+	size index and format.
+
+	@param  aSize 
+	        On return the available video frame sizes. Sizes should be returned
+	        in order, largest first, so clients do not have to iterate through every one.
+	@param  aSizeIndex 
+	        Size index. Must be in the range 0 to TCameraInfo::iNumVideoFrameSizesSupported-1
+	        inclusive
+	@param  aFormat 
+	        Image format. 
+	*/
+	void EnumerateVideoFrameSizes(TSize& aSize,TInt aSizeIndex,TFormat aFormat) const;
+
+	/** 
+	from CCamera
+
+	Enumerates through the available video frame rates, based on the specified
+	rate index, video frame format, size index and exposure mode.
+
+	@param  aRate 
+	        On return, the available video frame rates. Some rates may not
+	        be available due to, for example, current flash mode setting. In those cases
+	        a rate of 0 will be returned. Rates should be returned in order, highest first,
+	        so clients do not have to iterate through every one.
+	@param  aRateIndex 
+	        The rate index. Must be in the range 0 to TCameraInfo::iNumVideoFrameRatesSupported-1
+	        inclusive.
+	@param  aFormat 
+	        The format.
+	@param  aSizeIndex 
+	        The size index.
+	@param  aExposure 
+	        The exposure mode. 
+	*/
+	void EnumerateVideoFrameRates(TReal32& aRate,TInt aRateIndex,TFormat aFormat,TInt aSizeIndex,TExposure aExposure = EExposureAuto) const;
+
+	/** 
+	from CCamera
+
+	Gets the frame size currently in use.
+
+	@param  aSize 
+	        The frame size currently in use. 
+	*/
+	void GetFrameSize(TSize& aSize) const;
+
+	/** 
+	from CCamera
+
+	Gets the frame rate currently in use.
+
+	@return  The frame rate currently in use. 
+	*/
+	TReal32 FrameRate() const;
+
+	/** 
+	from CCamera
+
+	Gets the number of buffers currently in use.
+
+	@return  The number of buffers currently in use. 
+	*/
+	TInt BuffersInUse() const;
+
+	/** 
+	from CCamera
+
+	Gets the number of frames per buffer currently in use.
+
+	@return  The number of frames per buffer currently in use. 
+	*/
+	TInt FramesPerBuffer() const;
+
+	/** 
+	from CCamera
+
+	Sets the quality value to use if jpeg is a supported image for video format.
+
+	Ignored if jpeg is not a supported image for video format.
+
+	@param  aQuality
+	        The quality value to use, clamped to the range 1 to 100.
+	        
+	@see	CCamera::CCameraPreImageCaptureControl::TPrepareImageParameters::iImageMaxMemorySize
+	*/
+	void SetJpegQuality(TInt aQuality);
+
+	/**
+	from CCamera
+
+	Gets the currently set jpeg quality value.
+
+	Returns 0 if not supported.
+
+	@return The currently set jpeg quality value.
+	
+	@see    CCamera::CCameraPreImageCaptureControl::GetImageMaxMemorySizeL(TUint& aMemorySize)
+	*/
+	TInt JpegQuality() const;
+
+    /**
+	from CCamera
+
+	Gets a custom interface. The client has to cast the returned pointer
+	to the appropriate type.
+
+	@param aInterface
+		   The Uid of the particular interface function required.
+
+	@return Custom interface pointer. NULL if the requested interface is not supported.
+	*/
+	TAny* CustomInterface(TUid aInterface);
+
+
+private:
+	CWebCamera();
+	void ConstructL();
+
+private: // from MWebCameraActiveCallBack
+	/**
+	from MWebCameraActiveCallBack
+	
+	CallBack function of the Reserve
+	*/
+	virtual void ReserveCallBack(TInt aError);
+
+	/**
+	from MWebCameraActiveCallBack
+	
+	CallBack function of the PowerOn
+	*/
+	virtual void PowerOnCallBack(TInt aError);
+
+	/**
+	from MWebCameraActiveCallBack
+	
+	CallBack function of the ImageCapture
+	*/
+	virtual void ImageCaptureCallBackL(TInt aError);
+
+private: // from MWebCameraActiveCallBack
+	/**
+	from MWebCameraActiveCallBack
+	
+	CallBack function of the ViewFinder
+	*/
+	virtual void ViewFinderCallBack(TInt aError);
+
+private:
+	
+	RWebcameraDevice		iDriver;			///< Camera driver.
+	MCameraObserver*		iObserver;			///< The callback 'notify' party
+	MCameraObserver2*		iObserver2;			///< The callback 'notify' party(V2).
+	CWebCameraActive*		iActive;			///< For async demand.
+	CWebCameraVfActive*		iVfActive;			///< For viewfinder.
+	CWebCameraAdvSet* 		iAdvSettingsImpl;	///< Expansion setting class.
+
+	TCameraInfo				iInfo;				///< Camera Information.
+	TInt					iCameraIndex;		///< Camera Index.
+	TInt					iCameraHandle;		///< Camera handle.
+	TInt					iPriority;			///< priority.
+
+	TBool					iReserved;			///< Reserved Flag.
+	TBool					iPowerOn;			///< PowerOn Flag.
+	TBool					iImageCaptureActive;///< Flag during the still image .
+
+	CWebCameraBuffer*		iCaptureCameraBuf;	///< Camera buffer for capture.
+	CFbsBitmap*				iCaptureBitmap;		///< Bitmap Data for capture.
+	HBufC8*					iCaptureBuf;		///< Data buffer for capture.
+	TPtr8					iCaptureBufPtr;		///< pointer to Data buffer for capture.
+
+	RArray<TSize>			iImageSizes;		///< Image size.
+	
+	RChunk 					iChunk;				///< For Chunk process .
+	RWebcameraDevice::TChunkInfo	iChunkInfo;	///< Chunk Information.
+	TUint8*					iChuckBase;
+	TInt 					iChunkRemSize;			///< Chunk size.
+	};
+
+
+class CWebCameraInfo : public CCameraInfoPlugin
+	{
+public:
+
+    /**
+     * Two-phased constructor.
+     */
+	static CWebCameraInfo* NewL();
+	
+	/**> Destructor */
+	~CWebCameraInfo();
+
+// from CCameraInfoPlugin
+public:
+	/** 
+	from CCameraInfoPlugin
+	
+	Determines the number of cameras on the device.
+
+    @return Count of cameras present on the device.
+	*/
+	TInt CamerasAvailable();
+
+private:
+	CWebCameraInfo();
+	};
+
+
+#endif // ECAMWEBCAMERAPLUGIN_H
--- a/mmplugins/cameraplugins/source/webcamera/ecamwebcamerapluginuids.hrh	Thu Mar 25 11:21:36 2010 +0900
+++ b/mmplugins/cameraplugins/source/webcamera/ecamwebcamerapluginuids.hrh	Tue Oct 19 11:48:59 2010 +0900
@@ -1,26 +1,26 @@
-/*
-* Copyright (c) 2010 ISB.
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of the "Symbian Foundation License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
-*
-* Initial Contributors:
-* ISB - Initial contribution
-*
-* Contributors:
-*
-* Description:
-*
-*/
-
-#ifndef ECAMWEBCAMERAUIDS_HRH
-#define ECAMWEBCAMERAUIDS_HRH
-
-
-#define KUidOnboardWebCameraDll		0x10000001
-#define KUidOnboardWebCameraPlugin	0x10000002
-#define KUidOnboardWebCameraInfo	0x10000003
-
-#endif // ECAMWEBCAMERAUIDS_HRH
+/*
+* Copyright (c) 2010 ISB.
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the "Symbian Foundation License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+*
+* Initial Contributors:
+* ISB - Initial contribution
+*
+* Contributors:
+*
+* Description:
+*
+*/
+
+#ifndef ECAMWEBCAMERAUIDS_HRH
+#define ECAMWEBCAMERAUIDS_HRH
+
+
+#define KUidOnboardWebCameraDll		0x10000001
+#define KUidOnboardWebCameraPlugin	0x10000002
+#define KUidOnboardWebCameraInfo	0x10000003
+
+#endif // ECAMWEBCAMERAUIDS_HRH
--- a/mmplugins/cameraplugins/source/webcamera/ecamwebcameravfactive.cpp	Thu Mar 25 11:21:36 2010 +0900
+++ b/mmplugins/cameraplugins/source/webcamera/ecamwebcameravfactive.cpp	Tue Oct 19 11:48:59 2010 +0900
@@ -1,246 +1,245 @@
-/*
-* Copyright (c) 2010 ISB.
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of the "Symbian Foundation License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
-*
-* Initial Contributors:
-* ISB - Initial contribution
-*
-* Contributors:
-*
-* Description:
-*
-*/
-
-#include "ecamwebcameravfactive.h"
-
-const TInt KVfWidth     = 160;			// viewfinder image width
-const TInt KVfHeight    = 120;			// viewfinder image height
-const TInt KVfLineBytes = KVfWidth * 3;	// bytes of one line
-
-//
-// CWebCameraVfActive
-//
-CWebCameraVfActive* CWebCameraVfActive::NewL(MWebCameraVfActiveCallBack* aOwner, RWebcameraDevice& aDriver)
-	{
-	CWebCameraVfActive* self = new(ELeave) CWebCameraVfActive(aOwner, aDriver);
-	CleanupStack::PushL(self);
-	self->ConstructL();
-	CleanupStack::Pop(self);
-
-	return self;
-	}
-
-CWebCameraVfActive::CWebCameraVfActive(MWebCameraVfActiveCallBack* aOwner, RWebcameraDevice& aDriver)
-				   :CActive(CActive::EPriorityStandard),
-				    iOwner(aOwner),
-				    iDriver(aDriver),
-				    iVfBufPtr(NULL, 0)
-	{
-	CActiveScheduler::Add(this);
-	}
-
-CWebCameraVfActive::~CWebCameraVfActive()
-	{
-	delete iVfBitmap;
-	delete iDSA;
-	delete iVfBuf;
-	}
-
-void CWebCameraVfActive::ConstructL()
-	{
-	}
-
-/**
-* RunL.
-*/
-void CWebCameraVfActive::RunL()
-	{
-	TInt wError = iStatus.Int();
-	RDebug::Print(_L("CWebCameraVfActive::RunL wError = %d"), wError);
-
-	if (iViewFinderActive)
-		{
-		//The whole view finder start repeats screen update and the data acquisition.
-		UpdateViewL();
-		Start();
-		}
-	}
-
-void CWebCameraVfActive::DoCancel()
-	{
-	iDriver.StopViewFinder();
-	}
-
-/** 
-Starts transfer of view finder data to the given portion of the screen using
-direct screen access.
-
-The aScreenRect parameter is in screen co-ordinates and may be modified if,
-eg, the camera requires the destination to have a certain byte alignment, etc.
-
-@param  aWs 
-        Window server session.
-@param  aScreenDevice 
-        Screen device.
-@param  aWindow 
-        Displayable window.
-@param  aScreenRect 
-        Portion of the screen to which view finder data is to be
-        transferred. This is in screen co-ordinates and may be modified if, for example,
-        the camera requires the destination to have a certain byte alignment.
-*/
-void CWebCameraVfActive::StartViewFinderDirectL(RWsSession& aWs, CWsScreenDevice& aScreenDevice, RWindowBase& aWindow, TRect& aScreenRect, TRect& aClipRect)
-	{
-	iScreenRect = aScreenRect;
-	iClipRect = aClipRect;
-
-	// create buffer for view finder data
-	iVfBuf = HBufC8::NewL(KMaxBufSize);
-
-	// create DirectScreenAccess
-	delete iDSA;
-	iDSA = NULL;
-	iViewFinderActive = EFalse;
-	iDSA = CDirectScreenAccess::NewL(aWs, aScreenDevice, aWindow, *this);
-	iDSA->StartL();
-	iViewFinderActive = ETrue;
-
-	iDSA->Gc()->SetOrigin();
-	if (!iClipRect.IsEmpty())
-		{
-		iDSA->Gc()->SetClippingRect(iClipRect);
-		}
-
-	// start view finder
-	// The division transfer is going to support in the next version. 
-	Start();
-	}
-
-/** 
-Stops transfer of view finder data to the screen. 
-*/
-void CWebCameraVfActive::StopViewFinder()
-	{
-	if (!iViewFinderActive)
-		{
-		return;
-		}
-
-	iViewFinderActive = EFalse;
-
-	delete iDSA;
-	iDSA = NULL;
-
-	delete iVfBuf;
-	iVfBuf = NULL;
-
-	//Stop view finder
-	iDriver.StopViewFinder();
-	Cancel();
-	}
-
-/** 
-Queries whether the view finder is active.
-
-@return  ETrue if the view finder is active. EFalse if the view finder is not
-         active. 
-*/
-TBool CWebCameraVfActive::ViewFinderActive()
-	{
-	return iViewFinderActive;
-	}
-
-/** 
-Start viewfinder process.
-*/
-void CWebCameraVfActive::Start()
-	{
-	RDebug::Print(_L("CWebCameraVfActive::Start"));
-
-	iVfBufPtr.Set(iVfBuf->Des());
-	iVfBufPtr.SetLength(0);
-	//Start view finder
-	iDriver.StartViewFinder(iStatus, iVfBufPtr);
-
-	SetActive();
-	}
-
-/** 
-Draw the image of the view finder on screen.
-*/
-void CWebCameraVfActive::UpdateViewL()
-	{
-	RDebug::Print(_L("CWebCameraVfActive::UpdateViewL"));
-
-	delete iVfBitmap;
-	iVfBitmap = NULL;
-
-	CFbsBitmap* image = new (ELeave) CFbsBitmap();
-	CleanupStack::PushL(image);
-	User::LeaveIfError(image->Create(TSize(KVfWidth, KVfHeight), EColor16M));
-	CleanupStack::Pop(image);
-
-	iVfBitmap = image;
-
-// output received data log
-//	RDebug::Print(_L("CWebCameraVfActive::UpdateView iVfBufLength[%d]"), iVfBufPtr.Length());
-//	TBuf<256> hexBuf;
-//	for (TInt i = 0; i < iVfBufPtr.Length(); i++)
-//		{
-//		hexBuf.AppendFormat(_L("%02X "), iVfBufPtr[i]);
-//		if ((i % 16) == 15)
-//			{
-//			RDebug::Print(hexBuf);
-//			hexBuf = KNullDesC;
-//			}
-//		}
-//	RDebug::Print(hexBuf);
-
-	// convert buffer data to Bitmap
-	for (TInt height=0; height<KVfHeight; height++)
-		{
-		TInt pos = height * KVfLineBytes;
-		TPtrC8 posptr = iVfBuf->Mid(pos, KVfLineBytes);
-		TBuf8<KVfLineBytes>  buf;
-		buf.Copy(posptr);
-		iVfBitmap->SetScanLine(buf, (KVfHeight-1)-height);
-		}
-
-	// view position setting for test application
-	iScreenRect.iTl.iY = 50;
-	iScreenRect.iBr.iY = 169;
-
-	// update view
-	iDSA->Gc()->DrawBitmap(iScreenRect, iVfBitmap);
-	iDSA->ScreenDevice()->Update();
-	}
-
-/** 
-from MAbortDirectScreenAccess
-
-This function is called by the window server when direct screen access must stop
-(for example because a dialogue is moved in front of the area where direct screen access is taking place).
-
-@param  aScreenDevice 
-		The reason why direct screen access was terminated. 
-*/
-void CWebCameraVfActive::AbortNow(RDirectScreenAccess::TTerminationReasons /*aReason*/)
-	{
-	}
-
-/** 
-from 	from MDirectScreenAccess
-
-This function is called by the window server as soon as direct screen access can resume.
-
-@param  aScreenDevice 
-		Provides the reason why direct screen access was terminated. 
-*/
-void CWebCameraVfActive::Restart(RDirectScreenAccess::TTerminationReasons /*aReason*/)
-	{
-	}
-
+/*
+* Copyright (c) 2010 ISB.
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the "Symbian Foundation License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+*
+* Initial Contributors:
+* ISB - Initial contribution
+*
+* Contributors:
+*
+* Description:
+*
+*/
+
+#include "ecamwebcameravfactive.h"
+
+
+//
+// CWebCameraVfActive
+//
+CWebCameraVfActive* CWebCameraVfActive::NewL(MWebCameraVfActiveCallBack* aOwner, RWebcameraDevice& aDriver)
+	{
+	CWebCameraVfActive* self = new(ELeave) CWebCameraVfActive(aOwner, aDriver);
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	CleanupStack::Pop(self);
+
+	return self;
+	}
+
+CWebCameraVfActive::CWebCameraVfActive(MWebCameraVfActiveCallBack* aOwner, RWebcameraDevice& aDriver)
+				   :CActive(CActive::EPriorityStandard),
+				    iOwner(aOwner),
+				    iDriver(aDriver),
+				    iVfBufPtr(NULL, 0)
+	{
+	CActiveScheduler::Add(this);
+	}
+
+CWebCameraVfActive::~CWebCameraVfActive()
+	{
+	delete iVfBitmap;
+	delete iDSA;
+	delete iVfBuf;
+	}
+
+void CWebCameraVfActive::ConstructL()
+	{
+	}
+
+/**
+* RunL.
+*/
+void CWebCameraVfActive::RunL()
+	{
+	TInt wError = iStatus.Int();
+
+	if (iViewFinderActive)
+		{
+		//The whole view finder start repeats screen update and the data acquisition.
+		UpdateViewL();
+		Start();
+		}
+	}
+
+void CWebCameraVfActive::DoCancel()
+	{
+	iDriver.StopViewFinder();
+	}
+
+	/** 
+	*/
+TInt CWebCameraVfActive::InitViewFinder()
+	{
+	return iDriver.InitViewFinder();
+	}
+
+/** 
+Starts transfer of view finder data to the given portion of the screen using
+direct screen access.
+
+The aScreenRect parameter is in screen co-ordinates and may be modified if,
+eg, the camera requires the destination to have a certain byte alignment, etc.
+
+@param  aWs 
+        Window server session.
+@param  aScreenDevice 
+        Screen device.
+@param  aWindow 
+        Displayable window.
+@param  aScreenRect 
+        Portion of the screen to which view finder data is to be
+        transferred. This is in screen co-ordinates and may be modified if, for example,
+        the camera requires the destination to have a certain byte alignment.
+@leave  KErrGeneral Init error.
+*/
+void CWebCameraVfActive::StartViewFinderDirectL(RWsSession& aWs, CWsScreenDevice& aScreenDevice, RWindowBase& aWindow, TRect& aScreenRect, TRect& aClipRect, TUint8* aChunkBase, TInt& aChunkSize)
+	{
+
+	iScreenRect = aScreenRect;
+	iClipRect = aClipRect;
+	iChuckBase = aChunkBase;
+	
+	// create buffer for view finder data
+	iVfBuf = HBufC8::NewL(KMaxBufSize);
+	
+	// create DirectScreenAccess
+	delete iDSA;
+	iDSA = NULL;
+	iViewFinderActive = EFalse;
+	iDSA = CDirectScreenAccess::NewL(aWs, aScreenDevice, aWindow, *this);
+	iDSA->StartL();
+	iViewFinderActive = ETrue;
+
+	iDSA->Gc()->SetOrigin();
+	if (!iClipRect.IsEmpty())
+		{
+		iDSA->Gc()->SetClippingRect(iClipRect);
+		}
+
+	// init camera device.
+	if (InitViewFinder() != KErrNone)
+		{
+		//TODO The error value is examined.
+		User::Leave(KErrGeneral);
+		}
+	delete iVfBitmap;
+	iVfBitmap = NULL;
+
+	CFbsBitmap* image = new (ELeave) CFbsBitmap();
+	CleanupStack::PushL(image);
+	User::LeaveIfError(image->Create(TSize(KVfWidth, KVfHeight), EColor16M));
+	CleanupStack::Pop(image);
+
+	iVfBitmap = image;
+
+	// start view finder
+	// The division transfer is going to support in the next version. 
+	Start();
+	}
+
+/** 
+Stops transfer of view finder data to the screen. 
+*/
+void CWebCameraVfActive::StopViewFinder()
+	{
+	if (!iViewFinderActive)
+		{
+		return;
+		}
+
+	iViewFinderActive = EFalse;
+
+	delete iDSA;
+	iDSA = NULL;
+
+	delete iVfBuf;
+	iVfBuf = NULL;
+
+	//Stop view finder
+	iDriver.StopViewFinder();
+	Cancel();
+	}
+
+/** 
+Queries whether the view finder is active.
+
+@return  ETrue if the view finder is active. EFalse if the view finder is not
+         active. 
+*/
+TBool CWebCameraVfActive::ViewFinderActive()
+	{
+	return iViewFinderActive;
+	}
+
+/** 
+Start viewfinder process.
+*/
+void CWebCameraVfActive::Start()
+	{
+	iDriver.StartViewFinder(iStatus, iChuckRemSize);
+
+	SetActive();
+	}
+
+/** 
+Draw the image of the view finder on screen.
+*/
+void CWebCameraVfActive::UpdateViewL()
+	{
+	iVfBufPtr.Set(iVfBuf->Des());
+	iVfBufPtr.SetLength(0);
+	iVfBufPtr.Copy(iChuckBase,iChuckRemSize);
+	BitmapDataSet(iVfBufPtr, *iVfBitmap);
+
+	// view position setting for test application
+	iScreenRect.iTl.iY = 50;
+	iScreenRect.iBr.iY = 169;
+	// update view
+	iDSA->Gc()->DrawBitmap(iScreenRect, iVfBitmap);
+	iDSA->ScreenDevice()->Update();
+	}
+
+/**
+Bitmap data is set in CFbsBitmap.
+
+@param	aBitmap		[in]	Bitmap data.
+		aVfBitmap	[out]	After Bitmap data is set in CFbsBitmap.
+@return	KErrNone.
+*/
+TInt CWebCameraVfActive::BitmapDataSet(TDes8& aBitmap, CFbsBitmap& aVfBitmap)
+	{
+	TUint32 *wData = aVfBitmap.DataAddress();
+	Mem::Copy(wData, aBitmap.Ptr(), (KVfHeight * KVfLineBytes));
+	return KErrNone;
+	}
+
+/** 
+from MAbortDirectScreenAccess
+
+This function is called by the window server when direct screen access must stop
+(for example because a dialogue is moved in front of the area where direct screen access is taking place).
+
+@param  aScreenDevice 
+		The reason why direct screen access was terminated. 
+*/
+void CWebCameraVfActive::AbortNow(RDirectScreenAccess::TTerminationReasons /*aReason*/)
+	{
+	}
+
+/** 
+from 	from MDirectScreenAccess
+
+This function is called by the window server as soon as direct screen access can resume.
+
+@param  aScreenDevice 
+		Provides the reason why direct screen access was terminated. 
+*/
+void CWebCameraVfActive::Restart(RDirectScreenAccess::TTerminationReasons /*aReason*/)
+	{
+	}
+
--- a/mmplugins/cameraplugins/source/webcamera/ecamwebcameravfactive.h	Thu Mar 25 11:21:36 2010 +0900
+++ b/mmplugins/cameraplugins/source/webcamera/ecamwebcameravfactive.h	Tue Oct 19 11:48:59 2010 +0900
@@ -1,132 +1,152 @@
-/*
-* Copyright (c) 2010 ISB.
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of the "Symbian Foundation License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
-*
-* Initial Contributors:
-* ISB - Initial contribution
-*
-* Contributors:
-*
-* Description:
-*
-*/
-
-#ifndef ECAMWEBCAMERAVFACTIVE_H
-#define ECAMWEBCAMERAVFACTIVE_H
-
-#include "ecamwebcameraplugin.h"
-
-/**
- *  Perform a viewfinder function.
- */
-class CWebCameraVfActive : public CActive
-						 , public MDirectScreenAccess
-	{
-public:
-	 /**
-     * Two-phased constructor.
-     * @param aOwner pointer to callback object.
-     * @param aDriver reference to driver.
-     */
-	static CWebCameraVfActive* NewL(MWebCameraVfActiveCallBack* aOwner, RWebcameraDevice& aDriver);
-
-	CWebCameraVfActive(MWebCameraVfActiveCallBack* aOwner, RWebcameraDevice& aDriver);
-
-	/**> Destructor */
-	~CWebCameraVfActive();
-
-	/** 
-	Starts transfer of view finder data to the given portion of the screen using
-	direct screen access.
-
-	The aScreenRect parameter is in screen co-ordinates and may be modified if,
-	eg, the camera requires the destination to have a certain byte alignment, etc.
-
-    @param  aWs 
-	        Window server session.
-	@param  aScreenDevice 
-	        Screen device.
-	@param  aWindow 
-	        Displayable window.
-	@param  aScreenRect 
-	        Portion of the screen to which view finder data is to be
-	        transferred. This is in screen co-ordinates and may be modified if, for example,
-	        the camera requires the destination to have a certain byte alignment.
-	*/
-	void StartViewFinderDirectL(RWsSession& aWs, CWsScreenDevice& aScreenDevice, RWindowBase& aWindow, TRect& aScreenRect, TRect& aClipRect);
-
-	/** 
-	Stops transfer of view finder data to the screen. 
-	*/
-	void StopViewFinder();
-
-	/** 
-	Queries whether the view finder is active.
-
-	@return  ETrue if the view finder is active. EFalse if the view finder is not
-	         active. 
-	*/
-	TBool ViewFinderActive();
-
-private:
-	/** 
-	from MAbortDirectScreenAccess
-	
-	This function is called by the window server when direct screen access must stop
-	(for example because a dialogue is moved in front of the area where direct screen access is taking place).
-	
-	@param  aScreenDevice 
-			The reason why direct screen access was terminated. 
-	*/
-	virtual void AbortNow(RDirectScreenAccess::TTerminationReasons aReason);
-
-private: 
-	/** 
-	from 	from MDirectScreenAccess
-	
-	This function is called by the window server as soon as direct screen access can resume.
-	
-	@param  aScreenDevice 
-			Provides the reason why direct screen access was terminated. 
-	*/
-	virtual void Restart(RDirectScreenAccess::TTerminationReasons aReason);
-
-private:
-	void ConstructL();
-	
-	/** 
-	Start viewfinder process.
-	*/
-	void Start();
-	
-	/** 
-	Draw the image of the view finder on screen.
-	*/
-	void UpdateViewL();
-
-private:
-	void RunL();
-	void DoCancel();
-
-private:
-	MWebCameraVfActiveCallBack*		iOwner;				///< origin of start.
-	TBool							iViewFinderActive;	///< Status of viewfinder
-	RWebcameraDevice				iDriver;			///< Camera driver
-
-	CFbsBitmap*						iVfBitmap;			///< Bitmap data of viewfinder.
-	HBufC8*							iVfBuf;				///< Data buffer of viewfinder.
-	TPtr8							iVfBufPtr;			///< Pointer to data buffer of viewfinder.
-
-	CDirectScreenAccess*			iDSA;				///< DirectScreenAccess object.
-	TRect							iScreenRect;		///< The region to draw.
-	TRect							iClipRect;			///< The clipping region to draw.
-
-	TBool							iTestFlug;			///< for test
-	};
-
-
-#endif // ECAMWEBCAMERAPLUGIN_H
+/*
+* Copyright (c) 2010 ISB.
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the "Symbian Foundation License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+*
+* Initial Contributors:
+* ISB - Initial contribution
+*
+* Contributors:
+*
+* Description:
+*
+*/
+
+#ifndef ECAMWEBCAMERAVFACTIVE_H
+#define ECAMWEBCAMERAVFACTIVE_H
+
+#include "ecamwebcameraplugin.h"
+
+const TInt KVfWidth     = 640;			// viewfinder image width
+const TInt KVfHeight    = 480;			// viewfinder image height
+
+const TInt KVfLineBytes = KVfWidth * 3;	// bytes of one line
+
+/**
+ *  Perform a viewfinder function.
+ */
+class CWebCameraVfActive : public CActive
+						 , public MDirectScreenAccess
+	{
+public:
+	 /**
+     * Two-phased constructor.
+     * @param aOwner pointer to callback object.
+     * @param aDriver reference to driver.
+     */
+	static CWebCameraVfActive* NewL(MWebCameraVfActiveCallBack* aOwner, RWebcameraDevice& aDriver);
+
+	CWebCameraVfActive(MWebCameraVfActiveCallBack* aOwner, RWebcameraDevice& aDriver);
+
+	/**
+	Destructor
+	*/
+	~CWebCameraVfActive();
+
+	/** 
+	Init ViewFinder.
+	*/
+	TInt InitViewFinder();
+
+	/** 
+	Starts transfer of view finder data to the given portion of the screen using
+	direct screen access.
+
+	The aScreenRect parameter is in screen co-ordinates and may be modified if,
+	eg, the camera requires the destination to have a certain byte alignment, etc.
+
+    @param  aWs 
+	        Window server session.
+	@param  aScreenDevice 
+	        Screen device.
+	@param  aWindow 
+	        Displayable window.
+	@param  aScreenRect 
+	        Portion of the screen to which view finder data is to be
+	        transferred. This is in screen co-ordinates and may be modified if, for example,
+	        the camera requires the destination to have a certain byte alignment.
+	*/
+	void StartViewFinderDirectL(RWsSession& aWs, CWsScreenDevice& aScreenDevice, RWindowBase& aWindow, TRect& aScreenRect, TRect& aClipRect, TUint8* aChunkBase, TInt& aChunkSize);
+
+	/** 
+	Stops transfer of view finder data to the screen. 
+	*/
+	void StopViewFinder();
+
+	/** 
+	Queries whether the view finder is active.
+
+	@return  ETrue if the view finder is active. EFalse if the view finder is not
+	         active. 
+	*/
+	TBool ViewFinderActive();
+
+private:
+	/** 
+	from MAbortDirectScreenAccess
+	
+	This function is called by the window server when direct screen access must stop
+	(for example because a dialogue is moved in front of the area where direct screen access is taking place).
+	
+	@param  aScreenDevice 
+			The reason why direct screen access was terminated. 
+	*/
+	virtual void AbortNow(RDirectScreenAccess::TTerminationReasons aReason);
+
+private: 
+	/** 
+	from 	from MDirectScreenAccess
+	
+	This function is called by the window server as soon as direct screen access can resume.
+	
+	@param  aScreenDevice 
+			Provides the reason why direct screen access was terminated. 
+	*/
+	virtual void Restart(RDirectScreenAccess::TTerminationReasons aReason);
+
+private:
+	void ConstructL();
+	
+	/** 
+	Start viewfinder process.
+	*/
+	void Start();
+	
+	/** 
+	Draw the image of the view finder on screen.
+	*/
+	void UpdateViewL();
+
+	/** 
+	bitmap data set for CFbsBitmap.
+	*/
+	TInt BitmapDataSet(TDes8& aBitmap, CFbsBitmap& aVfBitmap);
+
+private:
+	void RunL();
+	void DoCancel();
+
+private:
+	MWebCameraVfActiveCallBack*		iOwner;				///< origin of start.
+	TBool							iViewFinderActive;	///< Status of viewfinder
+	RWebcameraDevice				iDriver;			///< Camera driver
+
+	CFbsBitmap*						iVfBitmap;			///< Bitmap data of viewfinder.
+	HBufC8*							iVfBuf;				///< Data buffer of viewfinder.
+	TPtr8							iVfBufPtr;			///< Pointer to data buffer of viewfinder.
+
+	CDirectScreenAccess*			iDSA;				///< DirectScreenAccess object.
+	TRect							iScreenRect;		///< The region to draw.
+	TRect							iClipRect;			///< The clipping region to draw.
+
+	TBool							iTestFlug;			///< for test
+	
+	TUint8*							iChuckBase;			///< 	
+	TInt							iChuckRemSize;		///< 
+	};
+
+
+#endif // ECAMWEBCAMERAPLUGIN_H
--- a/mmplugins/cameraplugins/testapp/testcameraapps60/group/BLD.INF	Thu Mar 25 11:21:36 2010 +0900
+++ b/mmplugins/cameraplugins/testapp/testcameraapps60/group/BLD.INF	Tue Oct 19 11:48:59 2010 +0900
@@ -1,28 +1,28 @@
-// Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
-// All rights reserved.
-// This component and the accompanying materials are made available
-// under the terms of the License "Symbian Foundation License v1.0"
-// which accompanies this distribution, and is available
-// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
-//
-// Initial Contributors:
-// Nokia Corporation - initial contribution.
-//
-// Contributors:
-//
-// Description:
-// On board camera API
-// 
-//
-
-
-
-/**
- @file
-*/
-
-PRJ_EXPORTS
-../group/TestCameraApp.iby	/epoc32/rom/include/TestCameraApp.iby
-
-PRJ_MMPFILES
-../group/TestCameraAppS60.mmp
+// Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of the License "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// On board camera API
+// 
+//
+
+
+
+/**
+ @file
+*/
+
+PRJ_EXPORTS
+../group/TestCameraApp.iby	/epoc32/rom/include/TestCameraApp.iby
+
+PRJ_MMPFILES
+../group/TestCameraAppS60.mmp
--- a/mmplugins/cameraplugins/testapp/testcameraapps60/group/TestCameraApp.iby	Thu Mar 25 11:21:36 2010 +0900
+++ b/mmplugins/cameraplugins/testapp/testcameraapps60/group/TestCameraApp.iby	Tue Oct 19 11:48:59 2010 +0900
@@ -1,28 +1,28 @@
-// Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies).
-// All rights reserved.
-// This component and the accompanying materials are made available
-// under the terms of the License "Symbian Foundation License v1.0"
-// which accompanies this distribution, and is available
-// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
-//
-// Initial Contributors:
-// Nokia Corporation - initial contribution.
-//
-// Contributors:
-//
-// Description:
-//
-
-#ifndef __TESTCAMERAAPP_IBY__
-#define __TESTCAMERAAPP_IBY__
-
-// Application
-S60_APP_EXE(TestCameraApp)
-
-// Resources (not localised)
-S60_APP_RESOURCE(TestCameraApp)
-
-// Application information files
-S60_APP_AIF_RSC(TestCameraApp)
-
-#endif
+// Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of the License "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+#ifndef __TESTCAMERAAPP_IBY__
+#define __TESTCAMERAAPP_IBY__
+
+// Application
+S60_APP_EXE(TestCameraApp)
+
+// Resources (not localised)
+S60_APP_RESOURCE(TestCameraApp)
+
+// Application information files
+S60_APP_AIF_RSC(TestCameraApp)
+
+#endif
--- a/mmplugins/cameraplugins/testapp/testcameraapps60/group/TestCameraAppS60.mmp	Thu Mar 25 11:21:36 2010 +0900
+++ b/mmplugins/cameraplugins/testapp/testcameraapps60/group/TestCameraAppS60.mmp	Tue Oct 19 11:48:59 2010 +0900
@@ -1,64 +1,65 @@
-// Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies).
-// All rights reserved.
-// This component and the accompanying materials are made available
-// under the terms of the License "Symbian Foundation License v1.0"
-// which accompanies this distribution, and is available
-// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
-//
-// Initial Contributors:
-// Nokia Corporation - initial contribution.
-//
-// Contributors:
-//
-// Description:
-//
-
-TARGET			TestCameraApp.exe
-TARGETTYPE		exe
-
-CAPABILITY		ALL -TCB
-//UID             0x100039CE 0x101F7D32
-UID             0x100039CE 0x101F857A
-VENDORID		0x70000001
-
-USERINCLUDE		../inc
-
-SYSTEMINCLUDE	/epoc32/include
-SYSTEMINCLUDE	/epoc32/include/mw
-SYSTEMINCLUDE	/epoc32/include/platform
-SYSTEMINCLUDE	/epoc32/include/platform/mw
-
-SOURCEPATH		../src
-SOURCE			TestCameraApp.cpp
-
-START RESOURCE	TestCameraApp.rss
-HEADER
-TARGETPATH		/resource/apps
-lang			sc
-END
-
-LIBRARY         euser.lib fbscli.lib
-LIBRARY         apparc.lib ws32.lib cone.lib 
-LIBRARY         avkon.lib
-LIBRARY         eikcore.lib
-LIBRARY         ecam.lib
-
-
-
-SOURCEPATH		../src
-START RESOURCE	testcameraapp_reg.rss
-TARGETPATH		/private/10003a3f/apps
-END
-   
-START RESOURCE	testcameraapp_loc.RSS
-TARGETPATH		/resource/apps
-lang sc
-END
-
-START BITMAP	TestCameraApp.mbm
-HEADER
-TARGETPATH		/resource/apps
-SOURCEPATH		../src
-SOURCE			c8 AP24.BMP AP24M.BMP AP32.BMP AP32M.BMP AP48.BMP AP48M.BMP
-END 
-
+// Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of the License "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+TARGET			TestCameraApp.exe
+TARGETTYPE		exe
+
+CAPABILITY		ALL -TCB
+//UID             0x100039CE 0x101F7D32
+UID             0x100039CE 0x101F857A
+VENDORID		0x70000001
+
+USERINCLUDE		../inc
+
+SYSTEMINCLUDE	/epoc32/include
+SYSTEMINCLUDE	/epoc32/include/mw
+SYSTEMINCLUDE	/epoc32/include/platform
+SYSTEMINCLUDE	/epoc32/include/platform/mw
+
+SOURCEPATH		../src
+SOURCE			TestCameraApp.cpp
+
+START RESOURCE	TestCameraApp.rss
+HEADER
+TARGETPATH		/resource/apps
+lang			sc
+END
+
+LIBRARY         euser.lib fbscli.lib
+LIBRARY         apparc.lib ws32.lib cone.lib 
+LIBRARY         avkon.lib
+LIBRARY         eikcore.lib
+LIBRARY         ecam.lib
+LIBRARY			bitgdi.lib
+
+
+SOURCEPATH		../src
+START RESOURCE	testcameraapp_reg.rss
+TARGETPATH		/private/10003a3f/apps
+END
+   
+START RESOURCE	testcameraapp_loc.RSS
+TARGETPATH		/resource/apps
+lang sc
+END
+
+START BITMAP	TestCameraApp.mbm
+HEADER
+TARGETPATH		/resource/apps
+SOURCEPATH		../src
+SOURCE			c8 AP24.BMP AP24M.BMP AP32.BMP AP32M.BMP AP48.BMP AP48M.BMP
+END 
+
+EPOCHEAPSIZE 0x1000 0x0400000
--- a/mmplugins/cameraplugins/testapp/testcameraapps60/inc/TestCameraApp.h	Thu Mar 25 11:21:36 2010 +0900
+++ b/mmplugins/cameraplugins/testapp/testcameraapps60/inc/TestCameraApp.h	Tue Oct 19 11:48:59 2010 +0900
@@ -1,92 +1,94 @@
-// Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies).
-// All rights reserved.
-// This component and the accompanying materials are made available
-// under the terms of the License "Symbian Foundation License v1.0"
-// which accompanies this distribution, and is available
-// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
-//
-// Initial Contributors:
-// Nokia Corporation - initial contribution.
-//
-// Contributors:
-//
-// Description:
-//
-
-#ifndef __TESTCAMERAAPP_H__
-#define __TESTCAMERAAPP_H__
-
-#include <coecntrl.h>
-#include <aknappui.h>
-#include <aknapp.h>
-#include <akndoc.h>
-
-#include <ECam.h>
-
-//const TUid KUidTestCameraApp={ 268450181 };
-//const TUid KUidTestCameraApp={ 270499122 };
-//const TUid KUidTestCameraApp={ 0x101F7D32 };
-#define KUidTestCameraApp 0x101F857A
-
-// class CTCamAppView
-
-class CTCamAppView : public CCoeControl
-    {
-public:
-	CTCamAppView();
-	~CTCamAppView();
-    void ConstructL(const TRect& aRect);
-	void DrawImage(CFbsBitmap* aImage) const;
-	TPoint DrawBorders(const TSize& aSize) const;
-private:
-	// from CCoeControl
-	void Draw(const TRect& /*aRect*/) const;
-    };
-
-// CTCamAppUi
-
-class CTCamAppUi : public CAknAppUi, public MCameraObserver
-    {
-public:
-    void ConstructL();
-	~CTCamAppUi();
-private:
-	// From CEikAppUi
-	virtual void HandleCommandL(TInt aCommand);
-	// New functions
-	void ViewFinderL();
-	void CaptureImageL();
-	void CaptureVideoL();
-	// From MCameraObserver
-	virtual void ReserveComplete(TInt aError);
-	virtual void PowerOnComplete(TInt aError);
-	virtual void ViewFinderFrameReady(CFbsBitmap& aFrame);
-	virtual void ImageReady(CFbsBitmap* aBitmap,HBufC8* aData,TInt aError);
-	virtual void FrameBufferReady(MFrameBuffer* aFrameBuffer,TInt aError);
-private:
-	CCamera* iCamera;
-    CTCamAppView* iAppView;
-    };
-
-// CTCamDocument
-
-class CTCamDocument : public CAknDocument
-	{
-public:
-	CTCamDocument(CEikApplication& aApp);
-private:
-	 // from CEikDocument
-	CEikAppUi* CreateAppUiL();
-	};
-
-// CTCamApp
-
-class CTCamApp : public CAknApplication
-	{
-private:
-	// from CApaApplication
-	CApaDocument* CreateDocumentL();
-	TUid AppDllUid() const;
-	};
-
-#endif
+// Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of the License "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+#ifndef __TESTCAMERAAPP_H__
+#define __TESTCAMERAAPP_H__
+
+#include <coecntrl.h>
+#include <aknappui.h>
+#include <aknapp.h>
+#include <akndoc.h>
+
+#include <ECam.h>
+
+//const TUid KUidTestCameraApp={ 268450181 };
+//const TUid KUidTestCameraApp={ 270499122 };
+//const TUid KUidTestCameraApp={ 0x101F7D32 };
+#define KUidTestCameraApp 0x101F857A
+
+// class CTCamAppView
+
+class CTCamAppView : public CCoeControl
+    {
+public:
+	CTCamAppView();
+	~CTCamAppView();
+    void ConstructL(const TRect& aRect);
+	void DrawImage(CFbsBitmap* aImage, TRect aScreenRect) const;
+	TPoint DrawBorders(const TSize& aSize) const;
+private:
+	// from CCoeControl
+	void Draw(const TRect& /*aRect*/) const;
+    };
+
+// CTCamAppUi
+
+class CTCamAppUi : public CAknAppUi, public MCameraObserver
+    {
+public:
+    void ConstructL();
+	~CTCamAppUi();
+public:
+    TRect iScreenRect;
+private:
+	// From CEikAppUi
+	virtual void HandleCommandL(TInt aCommand);
+	// New functions
+	void ViewFinderL();
+	void CaptureImageL();
+	void CaptureVideoL();
+	// From MCameraObserver
+	virtual void ReserveComplete(TInt aError);
+	virtual void PowerOnComplete(TInt aError);
+	virtual void ViewFinderFrameReady(CFbsBitmap& aFrame);
+	virtual void ImageReady(CFbsBitmap* aBitmap,HBufC8* aData,TInt aError);
+	virtual void FrameBufferReady(MFrameBuffer* aFrameBuffer,TInt aError);
+private:
+	CCamera* iCamera;
+    CTCamAppView* iAppView;
+    };
+
+// CTCamDocument
+
+class CTCamDocument : public CAknDocument
+	{
+public:
+	CTCamDocument(CEikApplication& aApp);
+private:
+	 // from CEikDocument
+	CEikAppUi* CreateAppUiL();
+	};
+
+// CTCamApp
+
+class CTCamApp : public CAknApplication
+	{
+private:
+	// from CApaApplication
+	CApaDocument* CreateDocumentL();
+	TUid AppDllUid() const;
+	};
+
+#endif
--- a/mmplugins/cameraplugins/testapp/testcameraapps60/inc/TestCameraApp.hrh	Thu Mar 25 11:21:36 2010 +0900
+++ b/mmplugins/cameraplugins/testapp/testcameraapps60/inc/TestCameraApp.hrh	Tue Oct 19 11:48:59 2010 +0900
@@ -1,29 +1,29 @@
-// Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies).
-// All rights reserved.
-// This component and the accompanying materials are made available
-// under the terms of the License "Symbian Foundation License v1.0"
-// which accompanies this distribution, and is available
-// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
-//
-// Initial Contributors:
-// Nokia Corporation - initial contribution.
-//
-// Contributors:
-//
-// Description:
-//
-
-enum
-	{
-	ETCamCmdPowerOn=1,
-	ETCamCmdPowerOff,
-	ETCamCmdViewFinder,
-	ETCamCmdCaptureImage,
-	ETCamCmdCaptureVideo,
-	ETCamCmdIncBrightness,
-	ETCamCmdIncContrast,
-	ETCamCmdDecBrightness,
-	ETCamCmdDecContrast,
-	ETCamCmdResetBrightness,
-	ETCamCmdResetContrast
-	};
+// Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of the License "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+enum
+	{
+	ETCamCmdPowerOn=1,
+	ETCamCmdPowerOff,
+	ETCamCmdViewFinder,
+	ETCamCmdCaptureImage,
+	ETCamCmdCaptureVideo,
+	ETCamCmdIncBrightness,
+	ETCamCmdIncContrast,
+	ETCamCmdDecBrightness,
+	ETCamCmdDecContrast,
+	ETCamCmdResetBrightness,
+	ETCamCmdResetContrast
+	};
--- a/mmplugins/cameraplugins/testapp/testcameraapps60/src/AIF.RSS	Thu Mar 25 11:21:36 2010 +0900
+++ b/mmplugins/cameraplugins/testapp/testcameraapps60/src/AIF.RSS	Tue Oct 19 11:48:59 2010 +0900
@@ -1,33 +1,33 @@
-// Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies).
-// All rights reserved.
-// This component and the accompanying materials are made available
-// under the terms of the License "Symbian Foundation License v1.0"
-// which accompanies this distribution, and is available
-// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
-//
-// Initial Contributors:
-// Nokia Corporation - initial contribution.
-//
-// Contributors:
-//
-// Description:
-//
-
-#include <aiftool.rh>
-
-RESOURCE AIF_DATA
-	{
-	caption_list=
-		{ 
-		CAPTION { code=ELangEnglish; caption="TestCameraApp"; }
-		};
-	//
-//	app_uid=268450181;
-	app_uid=0x101F857A;
-	//
-	num_icons=3;
-	//
-	hidden=KAppNotHidden;
-	embeddability=KAppNotEmbeddable;
-	newfile=KAppDoesNotSupportNewFile;
-	}
+// Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of the License "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+#include <aiftool.rh>
+
+RESOURCE AIF_DATA
+	{
+	caption_list=
+		{ 
+		CAPTION { code=ELangEnglish; caption="TestCameraApp"; }
+		};
+	//
+//	app_uid=268450181;
+	app_uid=0x101F857A;
+	//
+	num_icons=3;
+	//
+	hidden=KAppNotHidden;
+	embeddability=KAppNotEmbeddable;
+	newfile=KAppDoesNotSupportNewFile;
+	}
--- a/mmplugins/cameraplugins/testapp/testcameraapps60/src/TestCameraApp.cpp	Thu Mar 25 11:21:36 2010 +0900
+++ b/mmplugins/cameraplugins/testapp/testcameraapps60/src/TestCameraApp.cpp	Tue Oct 19 11:48:59 2010 +0900
@@ -1,389 +1,404 @@
-// Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies).
-// All rights reserved.
-// This component and the accompanying materials are made available
-// under the terms of the License "Symbian Foundation License v1.0"
-// which accompanies this distribution, and is available
-// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
-//
-// Initial Contributors:
-// Nokia Corporation - initial contribution.
-//
-// Contributors:
-//
-// Description:
-//
-
-#include <eikenv.h>
-#include <TestCameraApp.rsg>
-#include "TestCameraApp.h"
-#include "TestCameraApp.hrh"
-
-const TInt KMaxErrLength=50;
-_LIT(KErrorFormat,"Error - %d (%S)");
-
-//
-//  CTCamAppUi
-//
-
-void CTCamAppUi::ConstructL()
-	{
-	RDebug::Print(_L("CTCamAppUi::ConstructL()_S"));
-
-    BaseConstructL();
-	iAppView = new(ELeave) CTCamAppView;
-	iAppView->ConstructL(ClientRect());
-	AddToStackL(iAppView);
-
-	RDebug::Print(_L("CTCamAppUi::ConstructL() CCamera::NewL()_S"));
-	iCamera = CCamera::NewL(*this,0);
-	RDebug::Print(_L("CTCamAppUi::ConstructL() CCamera::NewL()_E"));
-
-	RDebug::Print(_L("CTCamAppUi::ConstructL() iCamera->Reserve()_S"));
-	iCamera->Reserve();
-	RDebug::Print(_L("CTCamAppUi::ConstructL() iCamera->Reserve()_E"));
-
-	RDebug::Print(_L("CTCamAppUi::ConstructL()_E"));
-	}
-
-CTCamAppUi::~CTCamAppUi()
-	{
-	RDebug::Print(_L("CTCamAppUi::~CTCamAppUi()_S"));
-
-	RDebug::Print(_L("CTCamAppUi::~CTCamAppUi() iCamera->Release()_S"));
-	iCamera->Release();
-	RDebug::Print(_L("CTCamAppUi::~CTCamAppUi() iCamera->Release()_E"));
-
-	RDebug::Print(_L("CTCamAppUi::~CTCamAppUi() delete iCamera_S"));
-	delete iCamera;
-	RDebug::Print(_L("CTCamAppUi::~CTCamAppUi() delete iCamera_E"));
-
-	if (iAppView)
-		{
-		RemoveFromStack(iAppView);
-		delete iAppView;
-		}
-	RDebug::Print(_L("CTCamAppUi::~CTCamAppUi()_E"));
-	}
-
-void CTCamAppUi::HandleCommandL(TInt aCommand)
-	{
-	switch (aCommand)
-		{
-	case ETCamCmdPowerOn:
-		RDebug::Print(_L("CTCamAppUi::HandleCommandL(ETCamCmdPowerOn)"));
-
-		RDebug::Print(_L("CTCamAppUi::HandleCommandL() iCamera->PowerOn()_S"));
-		iCamera->PowerOn();
-		RDebug::Print(_L("CTCamAppUi::HandleCommandL() iCamera->PowerOn()_E"));
-		break;
-
-	case ETCamCmdPowerOff:
-		RDebug::Print(_L("CTCamAppUi::HandleCommandL(ETCamCmdPowerOff)"));
-
-		RDebug::Print(_L("CTCamAppUi::HandleCommandL() iCamera->PowerOff()_S"));
-		iCamera->PowerOff();
-		RDebug::Print(_L("CTCamAppUi::HandleCommandL() iCamera->PowerOff()_E"));
-		break;
-
-	case ETCamCmdViewFinder:
-		RDebug::Print(_L("CTCamAppUi::HandleCommandL(ETCamCmdViewFinder)"));
-
-		ViewFinderL();
-		break;
-
-	case ETCamCmdCaptureImage:
-		RDebug::Print(_L("CTCamAppUi::HandleCommandL(ETCamCmdCaptureImage)"));
-
-		CaptureImageL();
-		break;
-
-	case ETCamCmdCaptureVideo:
-		RDebug::Print(_L("CTCamAppUi::HandleCommandL(ETCamCmdCaptureVideo)"));
-
-		CaptureVideoL();
-		break;
-
-	case ETCamCmdIncBrightness:
-		RDebug::Print(_L("CTCamAppUi::HandleCommandL(ETCamCmdIncBrightness)"));
-
-		RDebug::Print(_L("CTCamAppUi::HandleCommandL() iCamera->SetBrightnessL()_S"));
-		iCamera->SetBrightnessL(iCamera->Brightness() + 10);
-		RDebug::Print(_L("CTCamAppUi::HandleCommandL() iCamera->SetBrightnessL()_E"));
-		break;
-
-	case ETCamCmdIncContrast:
-		RDebug::Print(_L("CTCamAppUi::HandleCommandL(ETCamCmdIncContrast)"));
-
-		RDebug::Print(_L("CTCamAppUi::HandleCommandL() iCamera->SetContrastL()_S"));
-		iCamera->SetContrastL(iCamera->Contrast() + 10);
-		RDebug::Print(_L("CTCamAppUi::HandleCommandL() iCamera->SetContrastL()_E"));
-		break;
-
-	case ETCamCmdDecBrightness:
-		RDebug::Print(_L("CTCamAppUi::HandleCommandL(ETCamCmdDecBrightness)"));
-
-		RDebug::Print(_L("CTCamAppUi::HandleCommandL() iCamera->SetBrightnessL()_S"));
-		iCamera->SetBrightnessL(iCamera->Brightness() - 10);
-		RDebug::Print(_L("CTCamAppUi::HandleCommandL() iCamera->SetBrightnessL()_E"));
-		break;
-
-	case ETCamCmdDecContrast:
-		RDebug::Print(_L("CTCamAppUi::HandleCommandL(ETCamCmdDecContrast)"));
-
-		RDebug::Print(_L("CTCamAppUi::HandleCommandL() iCamera->SetContrastL()_S"));
-		iCamera->SetContrastL(iCamera->Contrast() - 10);
-		RDebug::Print(_L("CTCamAppUi::HandleCommandL() iCamera->SetContrastL()_E"));
-		break;
-
-	case ETCamCmdResetBrightness:
-		RDebug::Print(_L("CTCamAppUi::HandleCommandL(ETCamCmdResetBrightness)"));
-
-		RDebug::Print(_L("CTCamAppUi::HandleCommandL() iCamera->SetBrightnessL()_S"));
-		iCamera->SetBrightnessL(0);
-		RDebug::Print(_L("CTCamAppUi::HandleCommandL() iCamera->SetBrightnessL()_E"));
-		break;
-
-	case ETCamCmdResetContrast:
-		RDebug::Print(_L("CTCamAppUi::HandleCommandL(ETCamCmdResetContrast)"));
-
-		RDebug::Print(_L("CTCamAppUi::HandleCommandL() iCamera->SetContrastL()_S"));
-		iCamera->SetContrastL(0);
-		RDebug::Print(_L("CTCamAppUi::HandleCommandL() iCamera->SetContrastL()_E"));
-		break;
-
-	case EAknSoftkeyBack:
-		RDebug::Print(_L("CTCamAppUi::HandleCommandL(EAknSoftkeyBack)"));
-
-		Exit();
-		break;
-		}
-	}
-
-void CTCamAppUi::ViewFinderL()
-	{
-	TSize imageSize;
-
-	RDebug::Print(_L("CTCamAppUi::ViewFinderL() iCamera->EnumerateCaptureSizes()_S"));
-	iCamera->EnumerateCaptureSizes(imageSize,1,CCamera::EFormatFbsBitmapColor16M);
-	RDebug::Print(_L("CTCamAppUi::ViewFinderL() iCamera->EnumerateCaptureSizes()_E"));
-
-	const TPoint pos = iAppView->DrawBorders(imageSize);
-	TRect screenRect(pos,imageSize);
-	TRect clipRect;
-
-	if (!iCamera->ViewFinderActive())
-		{
-		RDebug::Print(_L("CTCamAppUi::ViewFinderL() iCamera->StartViewFinderDirectL()_S"));
-		iCamera->StartViewFinderDirectL(iCoeEnv->WsSession(),*iCoeEnv->ScreenDevice(),*iAppView->DrawableWindow(),screenRect,clipRect);
-		RDebug::Print(_L("CTCamAppUi::ViewFinderL() iCamera->StartViewFinderDirectL()_E"));
-		}
-	else
-		{
-		RDebug::Print(_L("CTCamAppUi::ViewFinderL() iCamera->StopViewFinder()_S"));
-		iCamera->StopViewFinder();
-		RDebug::Print(_L("CTCamAppUi::ViewFinderL() iCamera->StopViewFinder()_E"));
-		}
-	}
-
-void CTCamAppUi::CaptureImageL()
-	{
-	TSize size;
-	RDebug::Print(_L("CTCamAppUi::CaptureImageL() iCamera->EnumerateCaptureSizes()_S"));
-	iCamera->EnumerateCaptureSizes(size,1,CCamera::EFormatFbsBitmapColor16M);
-	RDebug::Print(_L("CTCamAppUi::CaptureImageL() iCamera->EnumerateCaptureSizes()_E"));
-
-	RDebug::Print(_L("CTCamAppUi::CaptureImageL() iCamera->PrepareImageCaptureL()_S"));
-	iCamera->PrepareImageCaptureL(CCamera::EFormatFbsBitmapColor16M,1);
-	RDebug::Print(_L("CTCamAppUi::CaptureImageL() iCamera->PrepareImageCaptureL()_E"));
-
-	RDebug::Print(_L("CTCamAppUi::CaptureImageL() iCamera->CaptureImage()_S"));
-	iCamera->CaptureImage();
-	RDebug::Print(_L("CTCamAppUi::CaptureImageL() iCamera->CaptureImage()_E"));
-	}
-
-void CTCamAppUi::CaptureVideoL()
-	{
-	if (!iCamera->VideoCaptureActive())
-		{
-		TSize size;
-		TReal32 rate = 0;
-		iCamera->EnumerateVideoFrameSizes(size,0,CCamera::EFormatFbsBitmapColor16M);
-		iCamera->EnumerateVideoFrameRates(rate,0,CCamera::EFormatFbsBitmapColor16M,0);
-		iCamera->PrepareVideoCaptureL(CCamera::EFormatFbsBitmapColor16M,0,0,2,1);
-		iCamera->StartVideoCapture();
-		}
-	else
-		iCamera->StopVideoCapture();
-	}
-
-void CTCamAppUi::ReserveComplete(TInt /*aError*/)
-	{
-	RDebug::Print(_L("CTCamAppUi::ReserveComplete()"));
-	}
-
-void CTCamAppUi::PowerOnComplete(TInt /*aError*/)
-	{
-	RDebug::Print(_L("CTCamAppUi::PowerOnComplete()"));
-	}
-
-void CTCamAppUi::ViewFinderFrameReady(CFbsBitmap& /*aFrame*/)
-	{
-	}
-
-void CTCamAppUi::ImageReady(CFbsBitmap* aBitmap,HBufC8* /*aData*/,TInt aError)
-	{
-	RDebug::Print(_L("CTCamAppUi::ImageReady()_S"));
-
-	TBuf<KMaxErrLength> msgBuffer;
-	_LIT(KErrMessage,"CTCamAppUi::ImageReady");
-	if (aBitmap)
-		{
-		iAppView->DrawImage(aBitmap);
-		delete aBitmap;
-		}
-	if (aError)
-		{
-		msgBuffer.Format(KErrorFormat,aError,&KErrMessage);
-		iEikonEnv->InfoMsg(msgBuffer);
-		}
-
-	RDebug::Print(_L("CTCamAppUi::ImageReady()_E"));
-	}
-
-void CTCamAppUi::FrameBufferReady(MFrameBuffer* aFrameBuffer,TInt aError)
-	{
-	RDebug::Print(_L("CTCamAppUi::FrameBufferReady()_S"));
-
-	TBuf<KMaxErrLength> msgBuffer;
-	_LIT(KErrMessage,"CTCamAppUi::FrameBufferReady");
-	if (aError)
-		{
-		msgBuffer.Format(KErrorFormat,aError,&KErrMessage);
-		iEikonEnv->InfoMsg(msgBuffer);
-		return;
-		}
-	TRAPD(error,iAppView->DrawImage(aFrameBuffer->FrameL(0)));
-	aFrameBuffer->Release();
-	if (error)
-		{
-		msgBuffer.Format(KErrorFormat,error,&KErrMessage);
-		iEikonEnv->InfoMsg(msgBuffer);
-		}
-
-	RDebug::Print(_L("CTCamAppUi::FrameBufferReady()_E"));
-	}
-
-//_LIT(KContrastDialogTitle,"Contrast");
-//_LIT(KBrightnessDialogTitle,"Brightness");
-
-//
-// CTCamAppView
-//
-
-CTCamAppView::CTCamAppView():
-	CCoeControl()
-	{}
-
-void CTCamAppView::ConstructL(const TRect& aRect)
-	{
-	CreateWindowL();
-    SetRect(aRect);
-	EnableDragEvents();
-	ActivateL();
-	}
-
-CTCamAppView::~CTCamAppView()
-	{}
-
-void CTCamAppView::DrawImage(CFbsBitmap* aImage) const
-	{
-	CWindowGc& gc = SystemGc();
-	gc.Activate(Window());
-	TRect drawRect(Rect());
-	TPoint pos;
-	pos.iX = (drawRect.iBr.iX - aImage->SizeInPixels().iWidth) / 2;
-//	pos.iY = (drawRect.iBr.iY - aImage->SizeInPixels().iHeight) / 2;
-	pos.iY = ((drawRect.iBr.iY + 122) - aImage->SizeInPixels().iHeight) / 2;
-	gc.BitBlt(pos,aImage);
-	gc.Deactivate();
-	iCoeEnv->WsSession().Flush();
-	}
-
-void CTCamAppView::Draw(const TRect& /*aRect*/) const
-	{
-	CWindowGc& gc = SystemGc();
-	TRect drawRect(Rect());
-	drawRect.Shrink(1,1);
-	gc.DrawRect(drawRect);
-	gc.Clear();
-	}
-
-TPoint CTCamAppView::DrawBorders(const TSize& aSize) const
-	{
-	CWindowGc& gc = SystemGc();
-	gc.Activate(Window());
-	TRect drawRect(Rect());
-	TPoint pos;
-	pos.iX = (drawRect.iBr.iX - aSize.iWidth) / 2;
-//	pos.iY = (drawRect.iBr.iY - aSize.iHeight) / 2;
-	pos.iY = ((drawRect.iBr.iY + 122) - aSize.iHeight) / 2;
-	TRect border(pos,aSize);
-	border.Grow(1,1);
-	gc.SetPenColor(KRgbBlack);
-	gc.DrawRect(border);
-	gc.Deactivate();
-	iCoeEnv->WsSession().Flush();
-	return pos;
-	}
-
-//
-// CTCamDocument
-//
-
-CTCamDocument::CTCamDocument(CEikApplication& aApp)
-		: CAknDocument(aApp)
-	{
-	}
-
-CEikAppUi* CTCamDocument::CreateAppUiL()
-	{
-	RDebug::Print(_L("CTCamDocument::CreateAppUiL()"));
-    return (static_cast<CEikAppUi*>(new (ELeave) CTCamAppUi));
-	}
-
-//
-// CTCamApp
-//
-
-TUid CTCamApp::AppDllUid() const
-	{
-	return TUid::Uid(KUidTestCameraApp);
-	}
-
-CApaDocument* CTCamApp::CreateDocumentL()
-	{
-//	return new(ELeave) CTCamDocument(*this);
-	RDebug::Print(_L("CTCamApp::CreateDocumentL()"));
-	return (static_cast<CApaDocument*>(new(ELeave) CTCamDocument(*this)));
-	}
-
-
-//
-// Base factory function
-//
-
-#include <eikstart.h>
-LOCAL_C CApaApplication* NewApplication()
-	{
-	RDebug::Print(_L("CApaApplication* NewApplication()"));
-	return new CTCamApp;
-	}
-
-//
-// EXE Entry point
-//
-
-GLDEF_C TInt E32Main()
-	{
-	return EikStart::RunApplication(NewApplication);
-	}
+// Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of the License "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+#include <eikenv.h>
+#include <TestCameraApp.rsg>
+#include "TestCameraApp.h"
+#include "TestCameraApp.hrh"
+
+const TInt KMaxErrLength=50;
+_LIT(KErrorFormat,"Error - %d (%S)");
+
+//
+//  CTCamAppUi
+//
+
+void CTCamAppUi::ConstructL()
+	{
+	RDebug::Print(_L("CTCamAppUi::ConstructL()_S"));
+
+    BaseConstructL();
+	iAppView = new(ELeave) CTCamAppView;
+	iAppView->ConstructL(ClientRect());
+	AddToStackL(iAppView);
+
+	RDebug::Print(_L("CTCamAppUi::ConstructL() CCamera::NewL()_S"));
+	iCamera = CCamera::NewL(*this,0);
+	RDebug::Print(_L("CTCamAppUi::ConstructL() CCamera::NewL()_E"));
+
+	RDebug::Print(_L("CTCamAppUi::ConstructL() iCamera->Reserve()_S"));
+	iCamera->Reserve();
+	RDebug::Print(_L("CTCamAppUi::ConstructL() iCamera->Reserve()_E"));
+
+	RDebug::Print(_L("CTCamAppUi::ConstructL()_E"));
+	}
+
+CTCamAppUi::~CTCamAppUi()
+	{
+	RDebug::Print(_L("CTCamAppUi::~CTCamAppUi()_S"));
+
+	RDebug::Print(_L("CTCamAppUi::~CTCamAppUi() iCamera->Release()_S"));
+	iCamera->Release();
+	RDebug::Print(_L("CTCamAppUi::~CTCamAppUi() iCamera->Release()_E"));
+
+	RDebug::Print(_L("CTCamAppUi::~CTCamAppUi() delete iCamera_S"));
+	delete iCamera;
+	RDebug::Print(_L("CTCamAppUi::~CTCamAppUi() delete iCamera_E"));
+
+	if (iAppView)
+		{
+		RemoveFromStack(iAppView);
+		delete iAppView;
+		}
+	RDebug::Print(_L("CTCamAppUi::~CTCamAppUi()_E"));
+	}
+
+void CTCamAppUi::HandleCommandL(TInt aCommand)
+	{
+	switch (aCommand)
+		{
+	case ETCamCmdPowerOn:
+		RDebug::Print(_L("CTCamAppUi::HandleCommandL(ETCamCmdPowerOn)"));
+
+		RDebug::Print(_L("CTCamAppUi::HandleCommandL() iCamera->PowerOn()_S"));
+		iCamera->PowerOn();
+		RDebug::Print(_L("CTCamAppUi::HandleCommandL() iCamera->PowerOn()_E"));
+		break;
+
+	case ETCamCmdPowerOff:
+		RDebug::Print(_L("CTCamAppUi::HandleCommandL(ETCamCmdPowerOff)"));
+
+		RDebug::Print(_L("CTCamAppUi::HandleCommandL() iCamera->PowerOff()_S"));
+		iCamera->PowerOff();
+		RDebug::Print(_L("CTCamAppUi::HandleCommandL() iCamera->PowerOff()_E"));
+		break;
+
+	case ETCamCmdViewFinder:
+		RDebug::Print(_L("CTCamAppUi::HandleCommandL(ETCamCmdViewFinder)"));
+
+		ViewFinderL();
+
+		break;
+
+	case ETCamCmdCaptureImage:
+		RDebug::Print(_L("CTCamAppUi::HandleCommandL(ETCamCmdCaptureImage)"));
+
+		CaptureImageL();
+		break;
+
+	case ETCamCmdCaptureVideo:
+		RDebug::Print(_L("CTCamAppUi::HandleCommandL(ETCamCmdCaptureVideo)"));
+
+		CaptureVideoL();
+		break;
+
+	case ETCamCmdIncBrightness:
+		RDebug::Print(_L("CTCamAppUi::HandleCommandL(ETCamCmdIncBrightness)"));
+
+		RDebug::Print(_L("CTCamAppUi::HandleCommandL() iCamera->SetBrightnessL()_S"));
+		iCamera->SetBrightnessL(iCamera->Brightness() + 10);
+		RDebug::Print(_L("CTCamAppUi::HandleCommandL() iCamera->SetBrightnessL()_E"));
+		break;
+
+	case ETCamCmdIncContrast:
+		RDebug::Print(_L("CTCamAppUi::HandleCommandL(ETCamCmdIncContrast)"));
+
+		RDebug::Print(_L("CTCamAppUi::HandleCommandL() iCamera->SetContrastL()_S"));
+		iCamera->SetContrastL(iCamera->Contrast() + 10);
+		RDebug::Print(_L("CTCamAppUi::HandleCommandL() iCamera->SetContrastL()_E"));
+		break;
+
+	case ETCamCmdDecBrightness:
+		RDebug::Print(_L("CTCamAppUi::HandleCommandL(ETCamCmdDecBrightness)"));
+
+		RDebug::Print(_L("CTCamAppUi::HandleCommandL() iCamera->SetBrightnessL()_S"));
+		iCamera->SetBrightnessL(iCamera->Brightness() - 10);
+		RDebug::Print(_L("CTCamAppUi::HandleCommandL() iCamera->SetBrightnessL()_E"));
+		break;
+
+	case ETCamCmdDecContrast:
+		RDebug::Print(_L("CTCamAppUi::HandleCommandL(ETCamCmdDecContrast)"));
+
+		RDebug::Print(_L("CTCamAppUi::HandleCommandL() iCamera->SetContrastL()_S"));
+		iCamera->SetContrastL(iCamera->Contrast() - 10);
+		RDebug::Print(_L("CTCamAppUi::HandleCommandL() iCamera->SetContrastL()_E"));
+		break;
+
+	case ETCamCmdResetBrightness:
+		RDebug::Print(_L("CTCamAppUi::HandleCommandL(ETCamCmdResetBrightness)"));
+
+		RDebug::Print(_L("CTCamAppUi::HandleCommandL() iCamera->SetBrightnessL()_S"));
+		iCamera->SetBrightnessL(0);
+		RDebug::Print(_L("CTCamAppUi::HandleCommandL() iCamera->SetBrightnessL()_E"));
+		break;
+
+	case ETCamCmdResetContrast:
+		RDebug::Print(_L("CTCamAppUi::HandleCommandL(ETCamCmdResetContrast)"));
+
+		RDebug::Print(_L("CTCamAppUi::HandleCommandL() iCamera->SetContrastL()_S"));
+		iCamera->SetContrastL(0);
+		RDebug::Print(_L("CTCamAppUi::HandleCommandL() iCamera->SetContrastL()_E"));
+		break;
+
+	case EAknSoftkeyBack:
+		RDebug::Print(_L("CTCamAppUi::HandleCommandL(EAknSoftkeyBack)"));
+
+		Exit();
+		break;
+		}
+	}
+
+void CTCamAppUi::ViewFinderL()
+	{
+	TSize imageSize;
+
+	RDebug::Print(_L("CTCamAppUi::ViewFinderL() iCamera->EnumerateCaptureSizes()_S"));
+	iCamera->EnumerateCaptureSizes(imageSize,1,CCamera::EFormatFbsBitmapColor16M);
+	RDebug::Print(_L("CTCamAppUi::ViewFinderL() iCamera->EnumerateCaptureSizes()_E"));
+
+	const TPoint pos = iAppView->DrawBorders(imageSize);
+	iScreenRect.SetRect(pos, imageSize);
+
+	TRect clipRect;
+
+	if (!iCamera->ViewFinderActive())
+		{
+		iCamera->StartViewFinderDirectL(iCoeEnv->WsSession(),*iCoeEnv->ScreenDevice(),*iAppView->DrawableWindow(),iScreenRect, clipRect);
+		}
+	else
+		{
+//		RDebug::Print(_L("CTCamAppUi::ViewFinderL() iCamera->StopViewFinder()_S"));
+//		iCamera->StopViewFinder();
+//		RDebug::Print(_L("CTCamAppUi::ViewFinderL() iCamera->StopViewFinder()_E"));
+		}
+	}
+
+void CTCamAppUi::CaptureImageL()
+	{
+	TSize size;
+	RDebug::Print(_L("CTCamAppUi::CaptureImageL() iCamera->EnumerateCaptureSizes()_S"));
+	iCamera->EnumerateCaptureSizes(size,1,CCamera::EFormatFbsBitmapColor16M);
+	RDebug::Print(_L("CTCamAppUi::CaptureImageL() iCamera->EnumerateCaptureSizes()_E"));
+
+	RDebug::Print(_L("CTCamAppUi::CaptureImageL() iCamera->PrepareImageCaptureL()_S"));
+	iCamera->PrepareImageCaptureL(CCamera::EFormatFbsBitmapColor16M,1);
+	RDebug::Print(_L("CTCamAppUi::CaptureImageL() iCamera->PrepareImageCaptureL()_E"));
+
+	RDebug::Print(_L("CTCamAppUi::CaptureImageL() iCamera->CaptureImage()_S"));
+	iCamera->CaptureImage();
+	RDebug::Print(_L("CTCamAppUi::CaptureImageL() iCamera->CaptureImage()_E"));
+	}
+
+void CTCamAppUi::CaptureVideoL()
+	{
+	if (!iCamera->VideoCaptureActive())
+		{
+		TSize size;
+		TReal32 rate = 0;
+		iCamera->EnumerateVideoFrameSizes(size,0,CCamera::EFormatFbsBitmapColor16M);
+		iCamera->EnumerateVideoFrameRates(rate,0,CCamera::EFormatFbsBitmapColor16M,0);
+		iCamera->PrepareVideoCaptureL(CCamera::EFormatFbsBitmapColor16M,0,0,2,1);
+		iCamera->StartVideoCapture();
+		}
+	else
+		iCamera->StopVideoCapture();
+	}
+
+void CTCamAppUi::ReserveComplete(TInt /*aError*/)
+	{
+	RDebug::Print(_L("CTCamAppUi::ReserveComplete()"));
+	}
+
+void CTCamAppUi::PowerOnComplete(TInt /*aError*/)
+	{
+	RDebug::Print(_L("CTCamAppUi::PowerOnComplete()"));
+	}
+
+void CTCamAppUi::ViewFinderFrameReady(CFbsBitmap& /*aFrame*/)
+	{
+	}
+
+void CTCamAppUi::ImageReady(CFbsBitmap* aBitmap,HBufC8* /*aData*/,TInt aError)
+	{
+	RDebug::Print(_L("CTCamAppUi::ImageReady()_S"));
+
+	TBuf<KMaxErrLength> msgBuffer;
+	_LIT(KErrMessage,"CTCamAppUi::ImageReady");
+	if (aBitmap)
+		{
+		iAppView->DrawImage(aBitmap, iScreenRect);
+		}
+	if (aError)
+		{
+		msgBuffer.Format(KErrorFormat,aError,&KErrMessage);
+		iEikonEnv->InfoMsg(msgBuffer);
+		}
+
+	RDebug::Print(_L("CTCamAppUi::ImageReady()_E"));
+	}
+
+void CTCamAppUi::FrameBufferReady(MFrameBuffer* aFrameBuffer,TInt aError)
+	{
+	RDebug::Print(_L("CTCamAppUi::FrameBufferReady()_S"));
+
+	TBuf<KMaxErrLength> msgBuffer;
+	_LIT(KErrMessage,"CTCamAppUi::FrameBufferReady");
+	if (aError)
+		{
+		msgBuffer.Format(KErrorFormat,aError,&KErrMessage);
+		iEikonEnv->InfoMsg(msgBuffer);
+		return;
+		}
+	TRAPD(error,iAppView->DrawImage(aFrameBuffer->FrameL(0), iScreenRect));
+	aFrameBuffer->Release();
+	if (error)
+		{
+		msgBuffer.Format(KErrorFormat,error,&KErrMessage);
+		iEikonEnv->InfoMsg(msgBuffer);
+		}
+
+	RDebug::Print(_L("CTCamAppUi::FrameBufferReady()_E"));
+	}
+
+//_LIT(KContrastDialogTitle,"Contrast");
+//_LIT(KBrightnessDialogTitle,"Brightness");
+
+//
+// CTCamAppView
+//
+
+CTCamAppView::CTCamAppView():
+	CCoeControl()
+	{}
+
+void CTCamAppView::ConstructL(const TRect& aRect)
+	{
+	CreateWindowL();
+    SetRect(aRect);
+	EnableDragEvents();
+	ActivateL();
+	}
+
+CTCamAppView::~CTCamAppView()
+	{}
+
+void CTCamAppView::DrawImage(CFbsBitmap* aImage, TRect aScreenRect) const
+	{
+	RDebug::Print(_L("aImage->DataAddress() = %d"),aImage->DataAddress());
+	// view position setting for test application
+	RDebug::Print(_L("Set view position_S"));
+	TRect wRect = aScreenRect;
+	wRect.iTl.iY = 123;
+	wRect.iBr.iY = 244;
+
+	RDebug::Print(_L("Set view position_E"));
+	// draw bitmap
+	CWindowGc& gc = SystemGc();
+	if (IsReadyToDraw())
+		{
+		gc.Activate(Window());
+		TBool back = IsBackedUp();
+		if (!back)
+			{
+			Window().Invalidate(wRect);
+			Window().BeginRedraw(wRect);
+			}
+		gc.DrawBitmap(wRect, aImage);
+		if (!back)
+			{
+			Window().EndRedraw();
+			}
+		gc.Deactivate();
+		}
+	iCoeEnv->WsSession().Flush();
+	}
+
+void CTCamAppView::Draw(const TRect& /*aRect*/) const
+	{
+	CWindowGc& gc = SystemGc();
+	TRect drawRect(Rect());
+	drawRect.Shrink(1,1);
+	gc.DrawRect(drawRect);
+	gc.Clear();
+	}
+
+TPoint CTCamAppView::DrawBorders(const TSize& aSize) const
+	{
+	CWindowGc& gc = SystemGc();
+	gc.Activate(Window());
+	TRect drawRect(Rect());
+	TPoint pos;
+	pos.iX = (drawRect.iBr.iX - aSize.iWidth) / 2;
+	pos.iY = ((drawRect.iBr.iY + 122) - aSize.iHeight) / 2;
+	TRect border(pos,aSize);
+	border.Grow(1,1);
+	gc.SetPenColor(KRgbBlack);
+	gc.DrawRect(border);
+	gc.Deactivate();
+	iCoeEnv->WsSession().Flush();
+	return pos;
+	}
+
+//
+// CTCamDocument
+//
+
+CTCamDocument::CTCamDocument(CEikApplication& aApp)
+		: CAknDocument(aApp)
+	{
+	}
+
+CEikAppUi* CTCamDocument::CreateAppUiL()
+	{
+	RDebug::Print(_L("CTCamDocument::CreateAppUiL()"));
+    return (static_cast<CEikAppUi*>(new (ELeave) CTCamAppUi));
+	}
+
+//
+// CTCamApp
+//
+
+TUid CTCamApp::AppDllUid() const
+	{
+	return TUid::Uid(KUidTestCameraApp);
+	}
+
+CApaDocument* CTCamApp::CreateDocumentL()
+	{
+//	return new(ELeave) CTCamDocument(*this);
+	RDebug::Print(_L("CTCamApp::CreateDocumentL()"));
+	return (static_cast<CApaDocument*>(new(ELeave) CTCamDocument(*this)));
+	}
+
+
+//
+// Base factory function
+//
+
+#include <eikstart.h>
+LOCAL_C CApaApplication* NewApplication()
+	{
+	RDebug::Print(_L("CApaApplication* NewApplication()"));
+	return new CTCamApp;
+	}
+
+//
+// EXE Entry point
+//
+
+GLDEF_C TInt E32Main()
+	{
+	return EikStart::RunApplication(NewApplication);
+	}
--- a/mmplugins/cameraplugins/testapp/testcameraapps60/src/TestCameraApp.rss	Thu Mar 25 11:21:36 2010 +0900
+++ b/mmplugins/cameraplugins/testapp/testcameraapps60/src/TestCameraApp.rss	Tue Oct 19 11:48:59 2010 +0900
@@ -1,75 +1,75 @@
-// Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies).
-// All rights reserved.
-// This component and the accompanying materials are made available
-// under the terms of the License "Symbian Foundation License v1.0"
-// which accompanies this distribution, and is available
-// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
-//
-// Initial Contributors:
-// Nokia Corporation - initial contribution.
-//
-// Contributors:
-//
-// Description:
-//
-
-NAME TCAM
-
-#include <eikon.rh>
-#include <avkon.rsg>
-#include <avkon.rh>
-#include <avkon.mbg>
-
-#include "TestCameraApp.hrh"
-
-RESOURCE RSS_SIGNATURE { }
-
-RESOURCE TBUF { buf=""; }
-
-RESOURCE EIK_APP_INFO
-	{
-	menubar=r_tcam_menubar;
-	cba=R_AVKON_SOFTKEYS_OPTIONS_BACK;
-	}
-
-RESOURCE MENU_BAR r_tcam_menubar
-	{
-	titles=
-		{
-		MENU_TITLE { menu_pane=r_tcam_main_menu; txt="Options"; }
-		};
-	}
-
-RESOURCE MENU_BAR r_tcam_main_menu
-	{
-	titles=
-		{
-		MENU_ITEM { cascade=r_tcam_control_menu; txt="Control"; },
-		MENU_ITEM { cascade=r_tcam_settings_menu; txt="Settings"; }
-		};
-	}
-
-RESOURCE MENU_PANE r_tcam_control_menu
-	{
-	items=
-		{
-		MENU_ITEM { command=ETCamCmdPowerOn; txt="Power on"; },
-		MENU_ITEM { command=ETCamCmdPowerOff; txt="Power off"; },
-		MENU_ITEM { command=ETCamCmdViewFinder; txt="View finder"; },
-		MENU_ITEM { command=ETCamCmdCaptureImage; txt="Capture image"; },
-		MENU_ITEM { command=ETCamCmdCaptureVideo; txt="Toggle video"; }
-		};
-	}
-
-RESOURCE MENU_PANE r_tcam_settings_menu
-	{
-	items=
-		{
-		MENU_ITEM { command=ETCamCmdIncContrast; txt="Contrast+"; },
-		MENU_ITEM { command=ETCamCmdDecContrast; txt="Contrast-"; },
-		MENU_ITEM { command=ETCamCmdResetContrast; txt="Reset contrast"; },
-		MENU_ITEM { command=ETCamCmdIncBrightness; txt="Brightness+"; },
-		MENU_ITEM { command=ETCamCmdDecBrightness; txt="Brightness-"; },
-		MENU_ITEM { command=ETCamCmdResetBrightness; txt="Reset brightness"; }
-		};
-	}
+// Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of the License "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+NAME TCAM
+
+#include <eikon.rh>
+#include <avkon.rsg>
+#include <avkon.rh>
+#include <avkon.mbg>
+
+#include "TestCameraApp.hrh"
+
+RESOURCE RSS_SIGNATURE { }
+
+RESOURCE TBUF { buf=""; }
+
+RESOURCE EIK_APP_INFO
+	{
+	menubar=r_tcam_menubar;
+	cba=R_AVKON_SOFTKEYS_OPTIONS_BACK;
+	}
+
+RESOURCE MENU_BAR r_tcam_menubar
+	{
+	titles=
+		{
+		MENU_TITLE { menu_pane=r_tcam_main_menu; txt="Options"; }
+		};
+	}
+
+RESOURCE MENU_BAR r_tcam_main_menu
+	{
+	titles=
+		{
+		MENU_ITEM { cascade=r_tcam_control_menu; txt="Control"; },
+		MENU_ITEM { cascade=r_tcam_settings_menu; txt="Settings"; }
+		};
+	}
+
+RESOURCE MENU_PANE r_tcam_control_menu
+	{
+	items=
+		{
+		MENU_ITEM { command=ETCamCmdPowerOn; txt="Power on"; },
+		MENU_ITEM { command=ETCamCmdPowerOff; txt="Power off"; },
+		MENU_ITEM { command=ETCamCmdViewFinder; txt="View finder"; },
+		MENU_ITEM { command=ETCamCmdCaptureImage; txt="Capture image"; },
+		MENU_ITEM { command=ETCamCmdCaptureVideo; txt="Toggle video"; }
+		};
+	}
+
+RESOURCE MENU_PANE r_tcam_settings_menu
+	{
+	items=
+		{
+		MENU_ITEM { command=ETCamCmdIncContrast; txt="Contrast+"; },
+		MENU_ITEM { command=ETCamCmdDecContrast; txt="Contrast-"; },
+		MENU_ITEM { command=ETCamCmdResetContrast; txt="Reset contrast"; },
+		MENU_ITEM { command=ETCamCmdIncBrightness; txt="Brightness+"; },
+		MENU_ITEM { command=ETCamCmdDecBrightness; txt="Brightness-"; },
+		MENU_ITEM { command=ETCamCmdResetBrightness; txt="Reset brightness"; }
+		};
+	}
--- a/mmplugins/cameraplugins/testapp/testcameraapps60/src/TestCameraApp_loc.RSS	Thu Mar 25 11:21:36 2010 +0900
+++ b/mmplugins/cameraplugins/testapp/testcameraapps60/src/TestCameraApp_loc.RSS	Tue Oct 19 11:48:59 2010 +0900
@@ -1,30 +1,30 @@
-// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
-// All rights reserved.
-// This component and the accompanying materials are made available
-// under the terms of the License "Symbian Foundation License v1.0"
-// which accompanies this distribution, and is available
-// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
-//
-// Initial Contributors:
-// Nokia Corporation - initial contribution.
-//
-// Contributors:
-//
-// Description:
-//
-
-#include <appinfo.rh>
-
-RESOURCE LOCALISABLE_APP_INFO
-	{
-	short_caption = "TestCamera";
-	caption_and_icon =
-		{
-		CAPTION_AND_ICON_INFO 
-			{
-			caption="TestCameraAPP";
-			number_of_icons=3;
-			icon_file="z:\\resource\\apps\\testcameraapp.mbm";
-			}
-		};
-	}
+// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of the License "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+#include <appinfo.rh>
+
+RESOURCE LOCALISABLE_APP_INFO
+	{
+	short_caption = "TestCamera";
+	caption_and_icon =
+		{
+		CAPTION_AND_ICON_INFO 
+			{
+			caption="TestCameraAPP";
+			number_of_icons=3;
+			icon_file="z:\\resource\\apps\\testcameraapp.mbm";
+			}
+		};
+	}
--- a/mmplugins/cameraplugins/testapp/testcameraapps60/src/TestCameraApp_reg.rss	Thu Mar 25 11:21:36 2010 +0900
+++ b/mmplugins/cameraplugins/testapp/testcameraapps60/src/TestCameraApp_reg.rss	Tue Oct 19 11:48:59 2010 +0900
@@ -1,34 +1,34 @@
-// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
-// All rights reserved.
-// This component and the accompanying materials are made available
-// under the terms of the License "Symbian Foundation License v1.0"
-// which accompanies this distribution, and is available
-// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
-//
-// Initial Contributors:
-// Nokia Corporation - initial contribution.
-//
-// Contributors:
-//
-// Description:
-// TestCameraApp application's registration resource file 
-// 
-//
-
-#include <appinfo.rh>
-#include <testcameraapp.rsg>
-
-UID2 KUidAppRegistrationResourceFile
-UID3 0x101F857A
-
-RESOURCE APP_REGISTRATION_INFO 
-	{
-	app_file="TestCameraApp";
-	//
-	localisable_resource_file="\\resource\\apps\\TestCameraApp_loc";
-    localisable_resource_id = 0x5bf50006;
-	//
-	hidden=KAppNotHidden;
-	embeddability=KAppNotEmbeddable;
-	newfile=KAppDoesNotSupportNewFile;
-	}
+// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of the License "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// TestCameraApp application's registration resource file 
+// 
+//
+
+#include <appinfo.rh>
+#include <testcameraapp.rsg>
+
+UID2 KUidAppRegistrationResourceFile
+UID3 0x101F857A
+
+RESOURCE APP_REGISTRATION_INFO 
+	{
+	app_file="TestCameraApp";
+	//
+	localisable_resource_file="\\resource\\apps\\TestCameraApp_loc";
+    localisable_resource_id = 0x5bf50006;
+	//
+	hidden=KAppNotHidden;
+	embeddability=KAppNotEmbeddable;
+	newfile=KAppDoesNotSupportNewFile;
+	}
Binary file mmplugins/cameraplugins/testapp/testcameraapps60/src/webcamapi.dll has changed