diff -r 61bc0f252b2b -r bac7acad7cb3 camerauis/cameraapp/generic/src/cameracontroller/CamCamera.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/camerauis/cameraapp/generic/src/cameracontroller/CamCamera.cpp Wed Sep 01 12:30:54 2010 +0100 @@ -0,0 +1,967 @@ +/* +* Copyright (c) 2007 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: +* +* +*/ + + + + +/* +* Refer CCamCamera.h +* Implementing the Interfaces defined in CCamCamera class duplicating the definitions +* for Emulator Ennvironment +*/ + +#include +#include "CamCamera.h" // Interface declarations +#include +#include "CamCamera.hrh" // Constants and Possible Events definitions +#include "camcameracontroller.pan" // Panic category and codes (use cameracontroller's) +#include "camcameracontrollertypes.h" +#include +#include +#include "CamCameraCallback.h" +#include "CameraappTestBitmapManager.h" + + +using namespace NCamCameraController; + +// --------------------------------------------------------------------------- +// NewL +// --------------------------------------------------------------------------- +// +CCamCamera* +CCamCamera::NewL( MCameraObserver2& aObserver, + TInt aCameraIndex, + TInt aPriority ) + { + CCamCamera* self = new (ELeave) CCamCamera + ( aObserver, + aCameraIndex, + aPriority + ); + CleanupStack::PushL( self ); + self->ConstructL(); + CleanupStack::Pop(); + return self; + } + +// --------------------------------------------------------------------------- +// New2L +// --------------------------------------------------------------------------- +// +CCamCamera* +CCamCamera::New2L( MCameraObserver2& aObserver, + TInt aCameraIndex, + TInt aPriority ) + { + return CCamCamera::NewL( aObserver, aCameraIndex, aPriority ); + } + +// --------------------------------------------------------------------------- +// NewL +// --------------------------------------------------------------------------- +// +CCamCamera* +CCamCamera::NewL( MCameraObserver& aObserver, + TInt aCameraIndex ) + { + CCamCamera* self = new (ELeave) CCamCamera( aObserver, aCameraIndex ); + CleanupStack::PushL( self ); + self->ConstructL(); + CleanupStack::Pop(); + return self; + } + +// --------------------------------------------------------------------------- +// New2L +// --------------------------------------------------------------------------- +// +CCamCamera* +CCamCamera::New2L( MCameraObserver& /*aObserver */, + TInt /*aCameraIndex*/ ) + { + // Also CCamera implementation rejects New2L + MCameraObserver(1) + User::Leave( KErrNotSupported ); + return NULL; + } + +// --------------------------------------------------------------------------- +// ~CCamCamera +// --------------------------------------------------------------------------- +// +/* +* CCamCamera::NewDuplicateL +*/ +CCamCamera* +CCamCamera::NewDuplicateL( MCameraObserver2& /*aObserver*/, + TInt /*aCameraHandle*/ ) + { + User::Leave( KErrNotSupported ); + return NULL; + } + +// --------------------------------------------------------------------------- +// NewDuplicate2L +// --------------------------------------------------------------------------- +// +CCamCamera* +CCamCamera::NewDuplicate2L( MCameraObserver2& /*aObserver*/, + TInt /*aCameraHandle*/ ) + { + User::Leave( KErrNotSupported ); + return NULL; + } + + +// --------------------------------------------------------------------------- +// NewDuplicateL +// --------------------------------------------------------------------------- +// +CCamCamera* +CCamCamera::NewDuplicateL( MCameraObserver& /*aObserver*/, + TInt /*aCameraHandle*/ ) + { + User::Leave( KErrNotSupported ); + return NULL; + } + +// --------------------------------------------------------------------------- +// NewDuplicate2L +// --------------------------------------------------------------------------- +// +CCamCamera* +CCamCamera::NewDuplicate2L( MCameraObserver& /*aObserver*/, + TInt /*aCameraHandle*/ ) + { + User::Leave( KErrNotSupported ); + return NULL; + } + +// --------------------------------------------------------------------------- +// ~CCamCamera +// --------------------------------------------------------------------------- +// +CCamCamera::~CCamCamera() + { + iPhotoResolutions.Reset(); + delete iCallBackActive; + delete iBitmapManager; + if( iVfPeriodic ) + { + iVfPeriodic->Cancel(); + delete iVfPeriodic; + } + } + + + + + +// --------------------------------------------------------------------------- +// CamerasAvailable +// --------------------------------------------------------------------------- +// +TInt +CCamCamera::CamerasAvailable() + { + return 2; + } + + +// --------------------------------------------------------------------------- +// Reserve +// --------------------------------------------------------------------------- +// +void +CCamCamera::Reserve() + { + TInt status = KErrNone; + if ( ECamIdle == iState ) + { + iState |= ECamReserved; + } + else + { + status = KErrInUse; + } + + User::After( KDelayReserve ); + + if ( iCallBackActive ) + { + iCallBackActive->ReserveCompleteRequest( status ); + } + } + + +// --------------------------------------------------------------------------- +// PowerOn +// --------------------------------------------------------------------------- +// +void +CCamCamera::PowerOn() + { + TInt status = KErrNone; + + if ( ECamIdle == iState ) status = KErrNotReady; + else if ( ECamReserved != iState ) status = KErrInUse; + else iState |= ECamPowerOn; + + User::After( KDelayPowerOn ); + + if ( iCallBackActive ) + { + iCallBackActive->PowerOnCompleteRequest( status ); + } + } + +// --------------------------------------------------------------------------- +// Release +// --------------------------------------------------------------------------- +// +void +CCamCamera::Release() + { + iState = ECamIdle; + } + +// --------------------------------------------------------------------------- +// PowerOff +// --------------------------------------------------------------------------- +// + void CCamCamera::PowerOff() + { + iState = ECamIdle | ECamReserved; + + User::After( KDelayPowerOff ); + } + + +// --------------------------------------------------------------------------- +// Handle +// --------------------------------------------------------------------------- +// +TInt +CCamCamera::Handle() + { + return KCameraHandle; + }; + +// --------------------------------------------------------------------------- +// SetZoomFactorL +// --------------------------------------------------------------------------- +// +void +CCamCamera::SetZoomFactorL( TInt aZoomFactor ) + { + if( Rng( iInfo.iMinZoom, aZoomFactor, iInfo.iMaxZoom ) ) + { + iZoomFactor = aZoomFactor; + } + else + { + User::Leave( KErrNotSupported ); + } + } + +// --------------------------------------------------------------------------- +// ZoomFactor +// --------------------------------------------------------------------------- +// +TInt +CCamCamera::ZoomFactor() const + { + return iZoomFactor; + } + +// --------------------------------------------------------------------------- +// SetDigitalZoomFactorL +// --------------------------------------------------------------------------- +// +void +CCamCamera::SetDigitalZoomFactorL( TInt aDigitalZoomFactor ) + { + if( Rng( 0, aDigitalZoomFactor, iInfo.iMaxDigitalZoom ) ) + { + iDigitalZoom = aDigitalZoomFactor; + } + else + { + User::Leave( KErrNotSupported ); + } + } + +// --------------------------------------------------------------------------- +// DigitalZoomFactor +// --------------------------------------------------------------------------- +// +TInt +CCamCamera::DigitalZoomFactor() const + { + return iDigitalZoom; + } + +// --------------------------------------------------------------------------- +// SetContrastL +// --------------------------------------------------------------------------- +// +void +CCamCamera::SetContrastL( TInt aContrast ) + { + if( EContrastAuto == aContrast ) + { + iContrast = EContrastAuto; + } + else if( Rng( -100, aContrast, 100 ) ) + { + iContrast = aContrast; + } + else + { + User::Leave( KErrNotSupported ); + } + } + +// --------------------------------------------------------------------------- +// Contrast +// --------------------------------------------------------------------------- +// +TInt +CCamCamera::Contrast() const + { + return iContrast; + } + + +// --------------------------------------------------------------------------- +// SetBrightnessL +// --------------------------------------------------------------------------- +// +void +CCamCamera::SetBrightnessL(TInt aBrightness) + { + if( EContrastAuto == aBrightness ) + { + iBrightness = EBrightnessAuto; + } + else if( Rng( -100, aBrightness, 100 ) ) + { + iBrightness = aBrightness; + } + else + { + User::Leave( KErrNotSupported ); + } + } + +// --------------------------------------------------------------------------- +// Brightness +// --------------------------------------------------------------------------- +// +TInt +CCamCamera::Brightness() const + { + return iBrightness; + } + +// --------------------------------------------------------------------------- +// SetFlashL +// --------------------------------------------------------------------------- +// +void +CCamCamera::SetFlashL( TFlash aFlash ) + { + if( CCamCamera::EFlashNone == aFlash // Zero, so need special attention + || KFlashModeSupport & aFlash ) iFlash = aFlash; + else User::Leave( KErrNotSupported ); + } + +// --------------------------------------------------------------------------- +// Flash +// --------------------------------------------------------------------------- +// +CCamCamera::TFlash +CCamCamera::Flash() const + { + return iFlash; + } + +// --------------------------------------------------------------------------- +// SetExposureL +// --------------------------------------------------------------------------- +// +void +CCamCamera::SetExposureL(TExposure aExposure ) + { + if( CCamCamera::EExposureAuto == aExposure + || KExposureSupport & aExposure ) iExposure = aExposure; + else User::Leave( KErrNotSupported ); + } + +// --------------------------------------------------------------------------- +// Exposure +// --------------------------------------------------------------------------- +// +CCamCamera::TExposure +CCamCamera::Exposure() const + { + return iExposure; + } + +// --------------------------------------------------------------------------- +// SetWhiteBalanceL +// --------------------------------------------------------------------------- +// +void +CCamCamera::SetWhiteBalanceL( TWhiteBalance aWhiteBalance ) + { + if( CCamCamera::EWBAuto == aWhiteBalance + || KWBSupport & aWhiteBalance ) iWhiteBalance = aWhiteBalance; + else User::Leave( KErrNotSupported ); + } + +// --------------------------------------------------------------------------- +// WhiteBalance +// --------------------------------------------------------------------------- +// +CCamCamera::TWhiteBalance +CCamCamera::WhiteBalance() const + { + return iWhiteBalance; + } + + +// --------------------------------------------------------------------------- +// StartViewFinderDirectL +// --------------------------------------------------------------------------- +// +void +CCamCamera::StartViewFinderDirectL( RWsSession& /*aWs*/, + CWsScreenDevice& /*aScreenDevice*/, + RWindowBase& /*aWindow*/, + TRect& /*aScreenRect*/ ) + { + User::Leave( KErrNotSupported ); + } + +// --------------------------------------------------------------------------- +// StartViewFinderDirectL +// --------------------------------------------------------------------------- +// +void +CCamCamera::StartViewFinderDirectL( RWsSession& /*aWs*/, + CWsScreenDevice& /*aScreenDevice*/, + RWindowBase& /*aWindow*/, + TRect& /*aScreenRect*/, + TRect& /*aClipRect*/ ) + { + User::Leave( KErrNotSupported ); + } + +// --------------------------------------------------------------------------- +// StartViewFinderBitmapsL +// --------------------------------------------------------------------------- +// +void +CCamCamera::StartViewFinderBitmapsL( TSize& aSize ) + { + iViewfinderSize = aSize; + + iVfPeriodic->Start( KVfFrameInterval, + KVfFrameInterval, + TCallBack( ViewfinderCallBack, this ) + ); + + iState |= ECamVFOn; + } + +// --------------------------------------------------------------------------- +// StartViewFinderBitmapsL +// --------------------------------------------------------------------------- +// +void +CCamCamera::StartViewFinderBitmapsL( TSize& aSize, + TRect& aClipRect ) + { + StartViewFinderBitmapsL( aSize ); + aSize = iViewfinderSize; + aClipRect = TRect( iViewfinderSize ); + } + +// --------------------------------------------------------------------------- +// StartViewFinderL +// --------------------------------------------------------------------------- +// +void +CCamCamera::StartViewFinderL( TFormat /*aImageFormat*/, + TSize& /*aSize*/ ) + { + User::Leave( KErrNotSupported ); + } + +// --------------------------------------------------------------------------- +// StartViewFinderL +// --------------------------------------------------------------------------- +// +void +CCamCamera::StartViewFinderL( TFormat /*aImageFormat*/, + TSize& /*aSize*/, + TRect& /*aClipRect*/ ) + { + User::Leave( KErrNotSupported ); + } + +// --------------------------------------------------------------------------- +// StopViewFinder +// --------------------------------------------------------------------------- +// +void +CCamCamera::StopViewFinder() + { + // Stop the viewfinder frames + iVfPeriodic->Cancel(); + + iState &= ~ECamVFOn; + } + +// --------------------------------------------------------------------------- +// ViewFinderActive +// --------------------------------------------------------------------------- +// +TBool +CCamCamera::ViewFinderActive() const + { + return ( iState & ECamVFOn ); + } + +// --------------------------------------------------------------------------- +// SetViewFinderMirrorL +// --------------------------------------------------------------------------- +// +void +CCamCamera::SetViewFinderMirrorL( TBool aMirror ) + { + iViewFinderMirror = aMirror; + } + +// --------------------------------------------------------------------------- +// ViewFinderMirror +// --------------------------------------------------------------------------- +// +TBool +CCamCamera::ViewFinderMirror() const + { + return iViewFinderMirror; + } + +// --------------------------------------------------------------------------- +// PrepareImageCaptureL +// --------------------------------------------------------------------------- +// + void +CCamCamera::PrepareImageCaptureL( TFormat aImageFormat, TInt aSizeIndex ) + { + TRect temp; + PrepareImageCaptureL( aImageFormat, aSizeIndex, temp ); + } + +// --------------------------------------------------------------------------- +// PrepareImageCaptureL +// --------------------------------------------------------------------------- +// +void +CCamCamera::PrepareImageCaptureL( TFormat aImageFormat, + TInt aSizeIndex, + const TRect& /*aClipRect*/ ) + { + if( ECamPowerOn & iState ) + { + TSize size; + EnumerateCaptureSizes( size, aSizeIndex, aImageFormat ); + iState |= ECamImageOn; + } + else + { + User::Leave( KErrNotReady ); + } + } + +// --------------------------------------------------------------------------- +// CaptureImage +// --------------------------------------------------------------------------- +// +void +CCamCamera::CaptureImage() + { + if ( iCallBackActive ) + { + iCallBackActive->RequestCaptureImage(); + } + } + +// --------------------------------------------------------------------------- +// CancelCaptureImage +// --------------------------------------------------------------------------- +// +void +CCamCamera::CancelCaptureImage() + { + + // In Wins we dont exactly start any async method + // to capture the image. + } + +// --------------------------------------------------------------------------- +// EnumerateCaptureSizes +// --------------------------------------------------------------------------- +/// +void +CCamCamera::EnumerateCaptureSizes( TSize& aSize, + TInt aSizeIndex, + TFormat aFormat ) const + { + switch( aFormat ) + { + // ----------------------------------------------------- + case EFormatJpeg: + // + // switch( aSizeIndex ) + // { + aSize = iPhotoResolutions[ aSizeIndex ]; + // case 0: aSize = KImageSizeJpegCam1; break; + // default: aSize = TSize(); break; + // } + break; + // ----------------------------------------------------- + case EFormatExif: + // switch( aSizeIndex ) + // { + aSize = iPhotoResolutions[ aSizeIndex ]; + // case 0: aSize = KImageSizeExifCam1; break; + // default: aSize = TSize(); break; + // } + break; + // ----------------------------------------------------- + default: + aSize = TSize(); + break; + // ----------------------------------------------------- + } + } + +// --------------------------------------------------------------------------- +// PrepareVideoCaptureL +// --------------------------------------------------------------------------- +// +void +CCamCamera::PrepareVideoCaptureL( TFormat /*aFormat*/, + TInt /*aSizeIndex*/, + TInt /*aRateIndex*/, + TInt /*aBuffersToUse*/, + TInt /*aFramesPerBuffer*/ ) + { + User::Leave( KErrNotSupported ); + } + +// --------------------------------------------------------------------------- +// PrepareVideoCaptureL +// --------------------------------------------------------------------------- +// +void +CCamCamera::PrepareVideoCaptureL( TFormat /*aFormat*/, + TInt /*aSizeIndex*/, + TInt /*aRateIndex*/, + TInt /*aBuffersToUse*/, + TInt /*aFramesPerBuffer*/, + const TRect& /*aClipRect*/ ) + { + User::Leave( KErrNotSupported ); + } + +// --------------------------------------------------------------------------- +// StartVideoCapture +// --------------------------------------------------------------------------- +// +void +CCamCamera::StartVideoCapture() + { + Panic( ECamCameraControllerUnsupported ); + } + +// --------------------------------------------------------------------------- +// StopVideoCapture +// --------------------------------------------------------------------------- +// +void +CCamCamera::StopVideoCapture() + { + Panic( ECamCameraControllerUnsupported ); + } + +// --------------------------------------------------------------------------- +// VideoCaptureActive +// --------------------------------------------------------------------------- +// +TBool +CCamCamera::VideoCaptureActive() const + { + return EFalse; + } + +// --------------------------------------------------------------------------- +// EnumerateVideoFrameSizes +// --------------------------------------------------------------------------- +// +void +CCamCamera::EnumerateVideoFrameSizes( TSize& /*aSize*/, + TInt /*aSizeIndex*/, + TFormat /*aFormat*/ ) const + { + // Video not supported + Panic( ECamCameraControllerUnsupported ); + } + +// --------------------------------------------------------------------------- +// EnumerateVideoFrameRates +// --------------------------------------------------------------------------- +// +void +CCamCamera::EnumerateVideoFrameRates( + TReal32& /*aRate*/, + TInt /*aRateIndex*/, + TFormat /*aFormat*/, + TInt /*aSizeIndex*/, + CCamCamera::TExposure /*aExposure*/ ) const + { + // Video not supported + Panic( ECamCameraControllerUnsupported ); + } + + +// --------------------------------------------------------------------------- +// GetFrameSize +// --------------------------------------------------------------------------- +// +void +CCamCamera::GetFrameSize( TSize& /*aSize*/ ) const + { + // Video not supported + Panic( ECamCameraControllerUnsupported ); + } + +// --------------------------------------------------------------------------- +// FrameRate +// --------------------------------------------------------------------------- +// +TReal32 +CCamCamera::FrameRate() const + { + // Video not supported + Panic( ECamCameraControllerUnsupported ); + + return 0; + } + +// --------------------------------------------------------------------------- +// BuffersInUse +// --------------------------------------------------------------------------- +// +TInt +CCamCamera::BuffersInUse() const + { + // Not sure + return 1; + } + +// --------------------------------------------------------------------------- +// FramesPerBuffer +// --------------------------------------------------------------------------- +// +TInt +CCamCamera::FramesPerBuffer() const + { + return 1; + } + +// --------------------------------------------------------------------------- +// SetJpegQuality +// --------------------------------------------------------------------------- +// +void +CCamCamera::SetJpegQuality( TInt aQuality ) + { + iQuality = Min( 100, Max( 0, aQuality ) ); + } + +// --------------------------------------------------------------------------- +// JpegQuality +// --------------------------------------------------------------------------- +// +TInt +CCamCamera::JpegQuality() const + { + return iQuality; + } + +// --------------------------------------------------------------------------- +// CustomInterface +// --------------------------------------------------------------------------- +// +TAny* +CCamCamera::CustomInterface( TUid /*aInterface*/ ) + { + return NULL; + } + +// --------------------------------------------------------------------------- +// CameraInfo +// --------------------------------------------------------------------------- +// +void +CCamCamera::CameraInfo( TCameraInfo& aInfo ) const + { + aInfo.iHardwareVersion = TVersion( 0, 0, 2007 ); /** Version number and name of camera hardware. */ + aInfo.iSoftwareVersion = TVersion( 0, 0, 2007 ); /** Version number and name of camera software (device driver). */ + aInfo.iOrientation = TCameraInfo::EOrientationUnknown; + aInfo.iOptionsSupported = KOptionsSupport; + aInfo.iFlashModesSupported = KFlashModeSupport; + aInfo.iExposureModesSupported = KExposureSupport; + aInfo.iWhiteBalanceModesSupported = KWBSupport; + aInfo.iMinZoom = 0; + aInfo.iMaxZoom = 100; + aInfo.iMaxDigitalZoom = 100; + aInfo.iMinZoomFactor = 1.0; + aInfo.iMaxZoomFactor = 10.0; + aInfo.iMaxDigitalZoomFactor = 10.0; + // aInfo.iNumImageSizesSupported = 1; + aInfo.iNumImageSizesSupported = iPhotoResolutions.Count(); + aInfo.iImageFormatsSupported = (iCameraIndex == 0)? KImageFormatSupportCAM1 : KImageFormatSupportCAM2;; + aInfo.iNumVideoFrameSizesSupported = 1; + aInfo.iNumVideoFrameRatesSupported = 1; + aInfo.iVideoFrameFormatsSupported = (iCameraIndex == 0)? KVideoFormatSupportCAM1 : KVideoFormatSupportCAM2;; + aInfo.iMaxFramesPerBufferSupported = 1; + aInfo.iMaxBuffersSupported = 2; + } + + +// --------------------------------------------------------------------------- +// InitPhotoResolutionsL +// --------------------------------------------------------------------------- +// +void CCamCamera::InitPhotoResolutionsL() + { + iPhotoResolutions.Append( TSize( 640, 480 ) ); // VGA + iPhotoResolutions.Append( TSize( 800, 600 ) ); // SVGA + iPhotoResolutions.Append( TSize( 1024, 768 ) ); // XGA + iPhotoResolutions.Append( TSize( 1152, 864 ) ); // 1 MP + iPhotoResolutions.Append( TSize( 1280, 960 ) ); // 1.3 MP + iPhotoResolutions.Append( TSize( 1600, 1200 ) ); // 2 MP + iPhotoResolutions.Append( TSize( 2048, 1536 ) ); // 3 MP + iPhotoResolutions.Append( TSize( 2592, 1944 ) ); // 5 MP + iPhotoResolutions.Append( TSize( 3264, 2448 ) ); // 8 MP + iPhotoResolutions.Append( TSize( 4000, 3000 ) ); // 12 MP + iPhotoResolutions.Append( TSize( 3264, 1832 ) ); // 6 MP 16:9 + iPhotoResolutions.Append( TSize( 4000, 2248 ) ); // 9 MP 16:9 + iPhotoResolutions.Append( TSize( 354, 288 ) ); // CIF + iPhotoResolutions.Append( TSize( 320, 240 ) ); // QVGA + } + + +// --------------------------------------------------------------------------- +// ViewfinderCallBack +// --------------------------------------------------------------------------- +// +TInt +CCamCamera::ViewfinderCallBack( TAny* aSelf ) + { + CCamCamera* self = static_cast( aSelf ); + if( self && self->iObserver ) + { + self->iObserver->ViewFinderFrameReady( self->iBitmapManager->NextBitmap() ); + } + return KErrNone; + } + +// =========================================================================== +// Constructors + + +// --------------------------------------------------------------------------- +// 2nd phase constructor +// --------------------------------------------------------------------------- +// +void CCamCamera::ConstructL() + { + InitPhotoResolutionsL(); + iBitmapManager = CCameraappTestBitmapManager::NewL(); + iVfPeriodic = CPeriodic::NewL( EPriorityLow ); + iCallBackActive = CCamCameraCallBack::NewL( *iObserver ); + + CameraInfo( iInfo ); + } + + +// --------------------------------------------------------------------------- +// 1st phase constructor +// CCamCamera::CCamCamera +// --------------------------------------------------------------------------- +// +CCamCamera::CCamCamera( MCameraObserver& aObserver, TInt aCameraIndex ) + : iObserver ( &aObserver ), + iState ( ECamIdle ), + iCameraIndex( aCameraIndex ) + { + } + +// --------------------------------------------------------------------------- +// CCamCamera::CCamCamera +// +// --------------------------------------------------------------------------- +// +CCamCamera::CCamCamera( MCameraObserver2& aObserver,TInt aCameraIndex, TInt aPriority ) + : iObserver2 ( &aObserver ), + iState ( ECamIdle ), + iCameraIndex( aCameraIndex ), + iPriority ( aPriority ) + { + } + + +void CCamCamera::Construct2L(MCameraObserver& /*aObserver*/, TInt /*aCameraIndex*/) + { + // not implemented + } + +void CCamCamera::Construct2DupL(MCameraObserver& /*aObserver*/, TInt /*aCameraHandle*/) + { + // not implemented + } + +void CCamCamera::Construct2L(MCameraObserver2& /*aObserver*/, TInt /*aCameraIndex*/, TInt /*aPriority*/) + { + // not implemented + } + +void CCamCamera::Construct2DupL(MCameraObserver2& /*aObserver*/, TInt /*aCameraHandle*/) + { + // not implemented + } + + +// end of file + +