epoc32/include/ecam.h
branchSymbian3
changeset 4 837f303aceeb
parent 2 2fe1408b6811
equal deleted inserted replaced
3:e1b950c65cb4 4:837f303aceeb
     1 // Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies).
     1 // Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies).
     2 // All rights reserved.
     2 // All rights reserved.
     3 // This component and the accompanying materials are made available
     3 // This component and the accompanying materials are made available
     4 // under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
     4 // under the terms of "Eclipse Public License v1.0"
     5 // which accompanies this distribution, and is available
     5 // which accompanies this distribution, and is available
     6 // at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
     6 // at the URL "http://www.eclipse.org/legal/epl-v10.html".
     7 //
     7 //
     8 // Initial Contributors:
     8 // Initial Contributors:
     9 // Nokia Corporation - initial contribution.
     9 // Nokia Corporation - initial contribution.
    10 //
    10 //
    11 // Contributors:
    11 // Contributors:
    12 //
    12 //
    13 // Description:
    13 // Description:
    14 //
    14 //
    15 
    15 
    16 
       
    17 
       
    18 /**
    16 /**
    19  @file
    17  @file
    20  @publishedAll
    18  @publishedAll
    21  @released
    19  @released
    22 */
    20 */
    24 #define ECAM_H
    22 #define ECAM_H
    25 
    23 
    26 #include <e32base.h>
    24 #include <e32base.h>
    27 #include <ecamuids.hrh>
    25 #include <ecamuids.hrh>
    28 #include <e32property.h>
    26 #include <e32property.h>
       
    27 
       
    28 #ifndef SYMBIAN_ENABLE_SPLIT_HEADERS
       
    29 #include <ecamdef.h>
       
    30 #endif
    29 
    31 
    30 class MFrameBuffer;
    32 class MFrameBuffer;
    31 class RWsSession;
    33 class RWsSession;
    32 class CWsScreenDevice;
    34 class CWsScreenDevice;
    33 class RWindowBase;
    35 class RWindowBase;
   415 	frame in the buffer was captured. Always zero for still images.
   417 	frame in the buffer was captured. Always zero for still images.
   416 	*/
   418 	*/
   417 	TTimeIntervalMicroSeconds iElapsedTime;
   419 	TTimeIntervalMicroSeconds iElapsedTime;
   418 	};
   420 	};
   419 
   421 
   420 /**
       
   421 This class is used to provide extra buffer informations through a custom interface.
       
   422 
       
   423 @see MCameraImageBuffer
       
   424 
       
   425 @publishedPartner
       
   426 @prototype
       
   427 */
       
   428 class MCameraBuffer2 : public MCameraBuffer
       
   429 	{
       
   430 public:
       
   431 	/**
       
   432 	Retrieves an array of uids which represents the class identifier used for buffer extension.
       
   433 	
       
   434 	@param aInterfaceUids
       
   435 		   An array of uids which represents the class identifier.
       
   436 		   
       
   437 	@return The error code.
       
   438 	*/
       
   439 	virtual TInt GetInterfaceUids(RArray<TUid>& aInterfaceUids) = 0;
       
   440 	
       
   441 	/**
       
   442 	Gets a custom interface for extra buffer information. 
       
   443 
       
   444 	@param aInterface
       
   445 		   The Uid of the particular interface function required for buffer information.
       
   446 		   
       
   447 	@param aPtrInterface
       
   448 		   The client has to cast the custom interface pointer to the appropriate type.	
       
   449 
       
   450 	@return The error code.
       
   451 	*/
       
   452 	virtual TInt CustomInterface(TUid aInterface, TAny*& aPtrInterface) = 0;
       
   453 	};
       
   454 
       
   455 /** 
   422 /** 
   456 	Uid used to identify the event that the request to Reserve() has completed
   423 	Uid used to identify the event that the request to Reserve() has completed
   457 */
   424 */
   458 static const TUid  KUidECamEventReserveComplete = {0x101F7D3B};
   425 static const TUid  KUidECamEventReserveComplete = {0x101F7D3B};
   459 
   426 
   577 
   544 
   578 @note  TECAMEvent2::iParam represents bit field describing all PreCaptureWarnings currently issued.
   545 @note  TECAMEvent2::iParam represents bit field describing all PreCaptureWarnings currently issued.
   579 */
   546 */
   580 static const TUid  KUidECamEventCameraSettingPreCaptureWarning 	= {KUidECamEventCameraSettingPreCaptureWarningUidValue};
   547 static const TUid  KUidECamEventCameraSettingPreCaptureWarning 	= {KUidECamEventCameraSettingPreCaptureWarningUidValue};
   581 static const TUid  KUidECamEvent2CameraSettingPreCaptureWarning = {KUidECamEventCameraSettingPreCaptureWarningUidValue};
   548 static const TUid  KUidECamEvent2CameraSettingPreCaptureWarning = {KUidECamEventCameraSettingPreCaptureWarningUidValue};
   582 
       
   583 /** 
       
   584 Event indicating continuous zoom progess. This event is used for StartContinuousZoomL feature. This is a part of class 
       
   585 CCamera::CCameraAdvancedSettings. This event should be packed in TECAMEvent2 class. 
       
   586 
       
   587 This TUid is available from the following methods only to the API clients using CCamera::New2L() or CCamera::
       
   588 NewDuplicate2L():
       
   589 void CCamera::CCameraAdvancedSettings::GetSupportedSettingsL(RArray<TUid>& aSettings) const;
       
   590 void CCamera::CCameraAdvancedSettings::GetActiveSettingsL(RArray<TUid>& aActiveSettings) const;
       
   591 void CCamera::CCameraAdvancedSettings::GetDisabledSettingsL(RArray<TUid>& aDisabledSettings) const;
       
   592 
       
   593 Note: TECAMEvent2::iParam represents percentage continuous zoom completion.
       
   594 
       
   595 @note  If zoom direction is EZoomDirectionWide, percentage completion will target minimum possible value as 100%.
       
   596 @note  If zoom direction is EZoomDirectionTele, percentage completion will target maximum possible value as 100%.
       
   597 
       
   598 @publishedPartner
       
   599 @prototype
       
   600 */
       
   601 static const TUid  KUidECamEvent2CameraSettingContinuousZoomPercentageCompletion  = {KUidECamEvent2CameraSettingContinuousZoomPercentageCompletionUidValue};
       
   602 
       
   603 /**
       
   604 Notifies that unrequested feature changes have occurred. The method GetIndirectFeatureChangesL() is called to
       
   605 retrieve the list of unrequested feature changes. The unrequested feature changes are ECAM component wide.
       
   606 
       
   607 This TUid is available from the following methods only to the API clients using CCamera::New2L() or CCamera::NewDuplicate2L():
       
   608 void CCamera::CCameraAdvancedSettings::GetSupportedSettingsL(RArray<TUid>& aSettings) const;
       
   609 void CCamera::CCameraAdvancedSettings::GetActiveSettingsL(RArray<TUid>& aActiveSettings) const;
       
   610 void CCamera::CCameraAdvancedSettings::GetDisabledSettingsL(RArray<TUid>& aDisabledSettings) const;
       
   611 
       
   612 Note: TECAMEvent2::iParam represents the TInt used to obtain a uid which represents the requested feature change.
       
   613 
       
   614 @publishedPartner
       
   615 @prototype
       
   616 */
       
   617 static const TUid KUidECamEvent2IndirectFeatureChange  = {KUidECamEvent2IndirectFeatureChangeUidValue};
       
   618 
       
   619 
       
   620 /** 
       
   621 Viewfinder fading effect has been set.
       
   622 This event should be packed in TECAMEvent2 class.
       
   623 
       
   624 Note: TECAMEvent2::iParam represents viewfinder handle.
       
   625 
       
   626 @internalTechnology
       
   627 */
       
   628 static const TUid KUidECamEvent2ViewFinderFadingEffect = {KUidECamEvent2ViewFinderFadingEffectUidValue};
       
   629 				   
       
   630 /** 
       
   631 Event indicating auto aperture is being used. 
       
   632 This event should be packed in TECAMEvent2 class.
       
   633 
       
   634 This TUid is available from the following methods only to the API clients using CCamera::New2L() or CCamera::
       
   635 NewDuplicate2L():
       
   636 void CCamera::CCameraAdvancedSettings::GetSupportedSettingsL(RArray<TUid>& aSettings) const;
       
   637 void CCamera::CCameraAdvancedSettings::GetActiveSettingsL(RArray<TUid>& aActiveSettings) const;
       
   638 void CCamera::CCameraAdvancedSettings::GetDisabledSettingsL(RArray<TUid>& aDisabledSettings) const;
       
   639 
       
   640 Note: TECAMEvent2::iParam represents actual value of aperture being used if camera is capable of. Otherwise, KErrNotFound will be retrieved.
       
   641 
       
   642 @internalTechnology
       
   643 */
       
   644 static const TUid  KUidECamEvent2CameraSettingAutoAperture  = {KUidECamEvent2CameraSettingAutoApertureUidValue};
       
   645 
       
   646 /** 
       
   647 Event providing focussing feedback. The focussing feedback will be provided whenever the focussing state changes for the
       
   648 selected spot combination. 
       
   649 This event should be packed in TECAMEvent2 class.
       
   650 Note: TECAMEvent2::iParam represents bitfield of chosen spots which are in focus.
       
   651 Note: TECAMEvent2::iParam1 represents bitfield of chosen spots which are not in focus.
       
   652 
       
   653 @internalTechnology
       
   654 */
       
   655 static const TUid  KECamEvent2ImageCaptureControlFocussingInformation = {KECamEvent2ImageCaptureControlFocussingInformationUidValue};
       
   656 
       
   657 /** 
       
   658 Focussing spot combination. This event tells about completion of the setting operation for the spot combination.
       
   659 This event should be packed in TECAMEvent2 class.
       
   660 
       
   661 @note  static_cast<CCamera::CCameraAdvancedSettings::TFocusMode>(TECAMEvent2::iParam) represents the focus mode for 
       
   662 	   which the spot combination has to be set for receiving focussing feedback.
       
   663 
       
   664 @internalTechnology
       
   665 */
       
   666 static const TUid KUidECamEvent2ImageCaptureControlSpotCombination = {KUidECamEvent2ImageCaptureControlSpotCombinationUidValue};
       
   667 
       
   668 /** 
       
   669 Viewfinder magnification has been set.
       
   670 This event should be packed in TECAMEvent2 class.
       
   671 
       
   672 Note: TECAMEvent2::iParam represents viewfinder handle.
       
   673 
       
   674 @internalTechnology
       
   675 */
       
   676 static const TUid KUidECamEvent2ViewFinderMagnification = {KUidECamEvent2ViewFinderMagnificationUidValue};
       
   677 
       
   678 /**
       
   679 Notifies the current camera reserver that the camera control will be forcefully overtaken by another requesting client 
       
   680 after a specific time interval.
       
   681 
       
   682 This TUid is available from the following methods only to the API clients using CCamera::New2L() or CCamera::NewDuplicate2L():
       
   683 void CCamera::CCameraAdvancedSettings::GetSupportedSettingsL(RArray<TUid>& aSettings) const;
       
   684 void CCamera::CCameraAdvancedSettings::GetActiveSettingsL(RArray<TUid>& aActiveSettings) const;
       
   685 void CCamera::CCameraAdvancedSettings::GetDisabledSettingsL(RArray<TUid>& aDisabledSettings) const;
       
   686 
       
   687 @note   TTimeIntervalMicroSeconds32(TECAMEvent2::iParam) represents the maximum time to wait. 
       
   688 		TECAMEvent2::iParam needs to be passed as argument in order to construct the TTimeIntervalMicroSeconds32 object.
       
   689 
       
   690 Note: TECAMEvent2::iParam1 represents the priority of the requestor client to whom the camera control will be forcibly 
       
   691 passed after a specific time interval.
       
   692 
       
   693 @internalTechnology
       
   694 */
       
   695 static const TUid KUidECamEvent2CameraRequestForcedTimedTakeOver = {KUidECamEvent2CameraRequestForcedTimedTakeOverUidValue};
       
   696 
       
   697 /**
       
   698 Notifies the current camera reserver that another client is requesting for camera control in a specific time interval.
       
   699 
       
   700 This TUid is available from the following methods only to the API clients using CCamera::New2L() or CCamera::NewDuplicate2L():
       
   701 void CCamera::CCameraAdvancedSettings::GetSupportedSettingsL(RArray<TUid>& aSettings) const;
       
   702 void CCamera::CCameraAdvancedSettings::GetActiveSettingsL(RArray<TUid>& aActiveSettings) const;
       
   703 void CCamera::CCameraAdvancedSettings::GetDisabledSettingsL(RArray<TUid>& aDisabledSettings) const;
       
   704 
       
   705 @note   TTimeIntervalMicroSeconds32(TECAMEvent2::iParam) represents the maximum requested time within which the current 
       
   706 		reserver may release the camera if it wishes to do so.
       
   707 		TECAMEvent2::iParam needs to be passed as argument in order to construct the TTimeIntervalMicroSeconds32 object.
       
   708 
       
   709 Note: TECAMEvent2::iParam1 represents the priority of the requestor client to whom the camera control will be passed 
       
   710 should the current reserver wish to do so.
       
   711 
       
   712 @internalTechnology
       
   713 */
       
   714 static const TUid KUidECamEvent2CameraRequestTimedTakeOver = {KUidECamEvent2CameraRequestTimedTakeOverUidValue};
       
   715 
       
   716 /**
       
   717 Notifies the manual gain setting completion for the particular channel.
       
   718 
       
   719 This TUid is available from the following methods only to the API clients using CCamera::New2L() or CCamera::NewDuplicate2L():
       
   720 void CCamera::CCameraAdvancedSettings::GetSupportedSettingsL(RArray<TUid>& aSettings) const;
       
   721 void CCamera::CCameraAdvancedSettings::GetActiveSettingsL(RArray<TUid>& aActiveSettings) const;
       
   722 void CCamera::CCameraAdvancedSettings::GetDisabledSettingsL(RArray<TUid>& aDisabledSettings) const;
       
   723 
       
   724 Note: TECAMEvent2::iParam represents the specific channel for which the manual gain value has been set.
       
   725 
       
   726 @internalTechnology
       
   727 */
       
   728 static const TUid KUidECamEvent2CameraSettingManualGain = {KUidECamEvent2CameraSettingManualGainUidValue};
       
   729 
       
   730 /**
       
   731 Retrieves the optimal focussing feedback while using manual focus. This will be issued as a result of setting operation
       
   732 CCamera::CCameraAdvancedSettings::SetFocusDistance(TInt aDistance).
       
   733 
       
   734 This TUid is available from the following methods only to the API clients using CCamera::New2L() or CCamera::NewDuplicate2L():
       
   735 void CCamera::CCameraAdvancedSettings::GetSupportedSettingsL(RArray<TUid>& aSettings) const;
       
   736 void CCamera::CCameraAdvancedSettings::GetActiveSettingsL(RArray<TUid>& aActiveSettings) const;
       
   737 void CCamera::CCameraAdvancedSettings::GetDisabledSettingsL(RArray<TUid>& aDisabledSettings) const;
       
   738 
       
   739 @note   If TECAMEvent2::iParam > 1, information is unavailable; if TECAMEvent2::iParam < 0, error case. 
       
   740 		Otherwise, static_cast<TBool>(TECAMEvent2::iParam) retrieves whether optimal focussing has been achieved or not.
       
   741 
       
   742 @internalTechnology
       
   743 */
       
   744 static const TUid KUidECamEvent2CameraSettingFocusDistance = {KUidECamEvent2CameraSettingFocusDistanceUidValue};
       
   745 
       
   746 /**
       
   747 Instructs the client to change its priority in order to allow the legacy client to get hold of the camera. Client should
       
   748 restore their priority when they receive the notification 'KUidECamEventCameraSettingRestoreClientPriority'.
       
   749 
       
   750 This TUid is available from the following methods only to the API clients using CCamera::New2L() or CCamera::NewDuplicate2L():
       
   751 void CCamera::CCameraAdvancedSettings::GetSupportedSettingsL(RArray<TUid>& aSettings) const;
       
   752 void CCamera::CCameraAdvancedSettings::GetActiveSettingsL(RArray<TUid>& aActiveSettings) const;
       
   753 void CCamera::CCameraAdvancedSettings::GetDisabledSettingsL(RArray<TUid>& aDisabledSettings) const;
       
   754 
       
   755 Note: TECAMEvent2::iParam represents the target priority to which the client should set itself using the method SetClientPriorityL()
       
   756 
       
   757 @internalTechnology
       
   758 */
       
   759 static const TUid KUidECamEvent2CameraSettingChangeClientPriority  = {KUidECamEvent2CameraSettingChangeClientPriorityUidValue};
       
   760 
       
   761 /** 
       
   762 Event indicating image enhancement setting has been applied. 
       
   763 This event should be packed in TECAMEvent2 class.
       
   764 
       
   765 Note: TECAMEvent2::iParam represents viewfinder handle.
       
   766 
       
   767 @internalTechnology
       
   768 */
       
   769 static const TUid KUidECamEvent2ViewFinderImageEnhancement = {KUidECamEvent2ViewFinderImageEnhancementUidValue};
       
   770 
       
   771 /**
       
   772 Provides the various available schemes for event filtering. This will inform how the listed uids have to be interpreted 
       
   773 by the implementation for filtering the events.
       
   774 
       
   775 @see  CCamera::CCameraAdvancedSettings::RegisterEventsL(TECAMEventFilterScheme aEventFilter, const RArray<TUid>& aEvents);
       
   776 @see  CCamera::CCameraAdvancedSettings::GetRegisterEventsL(TECAMEventFilterScheme aEventFilter, RArray<TUid>& aEvents) const;
       
   777 
       
   778 @internalTechnology
       
   779 */	
       
   780 enum TECAMEventFilterScheme
       
   781 	{
       
   782 	/** Black listing will mean not to receive specific events */
       
   783 	EECAMEventFilterSchemeBlackList, 
       
   784 	/** White listing will mean to receive only specific events */
       
   785 	EECAMEventFilterSchemeWhiteList
       
   786 	};
       
   787 	
   549 	
   788 /**
   550 /**
   789 Special type of TECAMEvent class used to retrieve some extra information from particular events received
   551 Special type of TECAMEvent class used to retrieve some extra information from particular events received
   790 
   552 
   791 @publishedAll
   553 @publishedAll
   940 	class CCameraPreImageCaptureControl;
   702 	class CCameraPreImageCaptureControl;
   941 	class CCameraImageCapture;
   703 	class CCameraImageCapture;
   942 	class CCameraPostImageCaptureControl;
   704 	class CCameraPostImageCaptureControl;
   943 	class CCameraVideoCaptureControl;
   705 	class CCameraVideoCaptureControl;
   944     class CCameraDirectSnapshot;
   706     class CCameraDirectSnapshot;
       
   707     class CCameraContinuousZoom;
   945 
   708 
   946 public:
   709 public:
   947 	/** Possible still image and video frame formats
   710 	/** Possible still image and video frame formats
   948 
   711 
   949 	Formats are read from left to right, starting at the top of the image. YUV
   712 	Formats are read from left to right, starting at the top of the image. YUV
   975 		EFormatUserDefined			= 0x0200,
   738 		EFormatUserDefined			= 0x0200,
   976 		/** 4:2:0 format, 8 bits per sample, Y00Y01Y10Y11UV. */
   739 		/** 4:2:0 format, 8 bits per sample, Y00Y01Y10Y11UV. */
   977 		EFormatYUV420Interleaved	= 0x0400,
   740 		EFormatYUV420Interleaved	= 0x0400,
   978 		/** 4:2:0 format, 8 bits per sample, Y00Y01Y02Y03...U0...V0... */
   741 		/** 4:2:0 format, 8 bits per sample, Y00Y01Y02Y03...U0...V0... */
   979 		EFormatYUV420Planar			= 0x0800,
   742 		EFormatYUV420Planar			= 0x0800,
   980 		/** 4:2:2 format, 8 bits per sample, UY0VY1. */
   743 		/** 4:2:2 format, 8 bits per sample, UY0VY1.  Maps to Graphics' EUidPixelFormatYUV_422Interleaved in pixelformats.h. */
   981 		EFormatYUV422				= 0x1000,
   744 		EFormatYUV422				= 0x1000,
   982 		/** 4:2:2 format, 8 bits per sample, Y1VY0U. */
   745 		/** 4:2:2 format, 8 bits per sample, Y1VY0U.  Maps to Graphics' EUidPixelFormatYUV_422InterleavedReversed in pixelformats.h. */
   983 		EFormatYUV422Reversed		= 0x2000,
   746 		EFormatYUV422Reversed		= 0x2000,
   984 		/** 4:4:4 format, 8 bits per sample, Y00U00V00 Y01U01V01... */
   747 		/** 4:4:4 format, 8 bits per sample, Y00U00V00 Y01U01V01... */
   985 		EFormatYUV444				= 0x4000,
   748 		EFormatYUV444				= 0x4000,
   986 		/** 4:2:0 format, 8 bits per sample, Y00Y01Y02Y03...U0V0... */
   749 		/** 4:2:0 format, 8 bits per sample, Y00Y01Y02Y03...U0V0... */
   987 		EFormatYUV420SemiPlanar		= 0x8000,
   750 		EFormatYUV420SemiPlanar		= 0x8000,
   988 		/** CFbsBitmap object with display mode EColor16MU. */
   751 		/** CFbsBitmap object with display mode EColor16MU. */
   989 		EFormatFbsBitmapColor16MU 	= 0x00010000, 	
   752 		EFormatFbsBitmapColor16MU 	= 0x00010000,
   990 		/** Motion JPEG for video 
   753 		/** Motion JPEG for video 
   991 		@note This value is available only to the API clients using CCamera::New2L() or CCamera::NewDuplicate2L()
   754 		@note This value is available only to the API clients using CCamera::New2L() or CCamera::NewDuplicate2L().
   992 		
       
   993 		@internalTechnology
   755 		@internalTechnology
   994 		*/
   756 		*/
   995 		EFormatMJPEG				= 0x00020000,
   757 		EFormatMJPEG				= 0x00020000,
   996 		
   758 		
   997 		/** 
   759 		/** 
   998 		Compressed H264 video format. 
   760 		Compressed H264 video format. 
   999 		@note This value is available only to the API clients using CCamera::New2L() or CCamera::NewDuplicate2L().
   761 		@note This value is available only to the API clients using CCamera::New2L() or CCamera::NewDuplicate2L().
  1000 		
       
  1001 		@publishedPartner
       
  1002 		@prototype
   762 		@prototype
  1003 		*/
   763 		*/
  1004 		EFormatEncodedH264          = 0x00040000
   764 		EFormatEncodedH264          = 0x00040000,
       
   765 
       
   766 		/**
       
   767 		4:2:2 format, 8 bits per sample, Y0UY1V. Maps to Graphics' EUidPixelFormatYUV_422Reversed in pixelformats.h.
       
   768 		@note This value is available only to the API clients using CCamera::New2L() or CCamera::NewDuplicate2L().
       
   769 		@prototype
       
   770 		*/
       
   771 		EFormatYUV222ReversedV2		= 0x00080000
  1005 		};
   772 		};
  1006 		
   773 		
  1007 	/** Specifies whether contrast is set automatically. */
   774 	/** Specifies whether contrast is set automatically. */
  1008 	enum TContrast
   775 	enum TContrast
  1009 		{
   776 		{
  1041 		EFlashVideoLight    = 0x0080
   808 		EFlashVideoLight    = 0x0080
  1042 		};
   809 		};
  1043 	/** Specifies the type of exposure. - EExposureAuto is the default value. */
   810 	/** Specifies the type of exposure. - EExposureAuto is the default value. */
  1044 	enum TExposure
   811 	enum TExposure
  1045 		{
   812 		{
  1046 		/** Set exposure automatically. Default, always supported. */
   813 		/** Set exposure automatically. Default, always supported.
       
   814 		This may imply auto aperture so clients may receive a KUidEcamEvent2CameraSettingAutoAperture event notification some time later. */
  1047 		EExposureAuto		= 0x0000,
   815 		EExposureAuto		= 0x0000,
  1048 		/** Night-time setting for long exposures. */
   816 		/** Night-time setting for long exposures. */
  1049 		EExposureNight		= 0x0001,
   817 		EExposureNight		= 0x0001,
  1050 		/** Backlight setting for bright backgrounds. */
   818 		/** Backlight setting for bright backgrounds. */
  1051 		EExposureBacklight	= 0x0002,
   819 		EExposureBacklight	= 0x0002,
  1061 		EExposureBeach 		= 0x0040,
   829 		EExposureBeach 		= 0x0040,
  1062 		/** Programmed exposure setting. */
   830 		/** Programmed exposure setting. */
  1063 		EExposureProgram 	= 0x0080,
   831 		EExposureProgram 	= 0x0080,
  1064 		/** Aperture setting is given priority. */
   832 		/** Aperture setting is given priority. */
  1065 		EExposureAperturePriority 	= 0x0100,
   833 		EExposureAperturePriority 	= 0x0100,
  1066 		/** Shutter speed setting is given priority. */	
   834 		/** Shutter speed setting is given priority.
       
   835 		This may imply auto aperture so clients may receive a KUidEcamEvent2CameraSettingAutoAperture event notification some time later. */
  1067 		EExposureShutterPriority	= 0x0200,
   836 		EExposureShutterPriority	= 0x0200,
  1068 		/** User selectable exposure value setting. */	
   837 		/** User selectable exposure value setting. */	
  1069 		EExposureManual				= 0x0400,
   838 		EExposureManual				= 0x0400,
  1070 		/** Exposure night setting with colour removed to get rid of colour noise. */
   839 		/** Exposure night setting with colour removed to get rid of colour noise. */
  1071 		EExposureSuperNight			= 0x0800,
   840 		EExposureSuperNight			= 0x0800,
  1094 		EWBBeach 			= 0x0040,
   863 		EWBBeach 			= 0x0040,
  1095 		/** User configurable mode */
   864 		/** User configurable mode */
  1096 		EWBManual 			= 0x0080,
   865 		EWBManual 			= 0x0080,
  1097 		/** Shade */
   866 		/** Shade */
  1098  		EWBShade			= 0x0100,
   867  		EWBShade			= 0x0100,
  1099  		/** auto skin 
   868  		/** auto skin
  1100  		
   869 
  1101  		If New2L()/NewDuplicate2L() are not used to create camera object, this 
   870  		If New2L()/NewDuplicate2L() are not used to create camera object, this
  1102 		enum value would be considered as unrecognized and filtered out in 'supported' 
   871 		enum value would be considered as unrecognized and filtered out in 'supported'
  1103 		or 'getter' methods.
   872 		or 'getter' methods.
  1104  		*/
   873  		*/
  1105  		EWBAutoSkin			= 0x0200,
   874  		EWBAutoSkin			= 0x0200,
  1106  		/** horizon 
   875  		/** horizon
  1107  		
   876 
  1108  		If New2L()/NewDuplicate2L() are not used to create camera object, this 
   877  		If New2L()/NewDuplicate2L() are not used to create camera object, this
  1109 		enum value would be considered as unrecognized and filtered out in 'supported' 
   878 		enum value would be considered as unrecognized and filtered out in 'supported'
  1110 		or 'getter' methods.
   879 		or 'getter' methods.
  1111 		*/
   880 		*/
  1112  		EWBHorizon 			= 0x0400,
   881  		EWBHorizon 			= 0x0400,
  1113  		/** Daylight Under Water 
   882  		/** Daylight Under Water
  1114  		
   883 
  1115  		If New2L()/NewDuplicate2L() are not used to create camera object, this 
   884  		If New2L()/NewDuplicate2L() are not used to create camera object, this
  1116 		enum value would be considered as unrecognized and filtered out in 'supported' 
   885 		enum value would be considered as unrecognized and filtered out in 'supported'
  1117 		or 'getter' methods.
   886 		or 'getter' methods.
  1118 		*/
   887 		*/
  1119  		EWBDaylightUnderWater  = 0x0800
   888  		EWBDaylightUnderWater  = 0x0800
  1120 		};
   889 		};
  1121 				
   890 
  1122 public:
   891 public:
  1123 	/** 
   892 	/**
  1124 	Determines the number of cameras on the device.
   893 	Determines the number of cameras on the device.
  1125 
   894 
  1126     @return Count of cameras present on the device.
   895     @return Count of cameras present on the device.
  1127 	*/
   896 	*/
  1128 	IMPORT_C static TInt CamerasAvailable();
   897 	IMPORT_C static TInt CamerasAvailable();
  1129 
   898 
  1130     /** 
   899     /**
  1131     @deprecated Use static CCamera* New2L(MCameraObserver2& aObserver,TInt aCameraIndex,TInt aPriority);
   900     @deprecated Use static CCamera* New2L(MCameraObserver2& aObserver,TInt aCameraIndex,TInt aPriority);
  1132     
   901 
  1133 	Creates an object representing a camera.
   902 	Creates an object representing a camera.
  1134 	
   903 
  1135 	@param  aObserver
   904 	@param  aObserver
  1136 	        Reference to class derived from MCameraObserver2 designed to receive
   905 	        Reference to class derived from MCameraObserver2 designed to receive
  1137 	        notification of asynchronous event completion.
   906 	        notification of asynchronous event completion.
  1138 	@param	aCameraIndex
   907 	@param	aCameraIndex
  1139 	        Index from 0 to CamerasAvailable()-1 inclusive specifying the
   908 	        Index from 0 to CamerasAvailable()-1 inclusive specifying the
  1147 
   916 
  1148 	@leave  KErrNoMemory if out of memory.
   917 	@leave  KErrNoMemory if out of memory.
  1149 	@leave  KErrNotSupported if aCameraIndex is out of range.
   918 	@leave  KErrNotSupported if aCameraIndex is out of range.
  1150 	@leave  KErrPermissionDenied if the application does not have
   919 	@leave  KErrPermissionDenied if the application does not have
  1151 	        the UserEnvironment capability.
   920 	        the UserEnvironment capability.
  1152 	        
   921 
  1153 	@capability	UserEnvironment
   922 	@capability	UserEnvironment
  1154 			An application that creates a CCamera object must have
   923 			An application that creates a CCamera object must have
  1155 			the UserEnvironment capability.
   924 			the UserEnvironment capability.
  1156 
   925 
  1157     @capability MultimediaDD
   926     @capability MultimediaDD
  1158 	        A process requesting or using this method that has MultimediaDD capability will
   927 	        A process requesting or using this method that has MultimediaDD capability will
  1159 			always have precedence over a process that does not have MultimediaDD.	
   928 			always have precedence over a process that does not have MultimediaDD.
  1160 
   929 
  1161 	@note   Applications using this method to create camera object may not receive enums/uids added in future(after being baselined). 
   930 	@note   Applications using this method to create camera object may not receive enums/uids added in future(after being baselined).
  1162 			To receive them, they should rather use New2L() or NewDuplicate2L(), in which case, they should prepare 
   931 			To receive them, they should rather use New2L() or NewDuplicate2L(), in which case, they should prepare
  1163 			themselves to receive unrecognised values.
   932 			themselves to receive unrecognised values.
  1164 	*/
   933 	*/
  1165 	IMPORT_C static CCamera* NewL(MCameraObserver2& aObserver,TInt aCameraIndex,TInt aPriority);
   934 	IMPORT_C static CCamera* NewL(MCameraObserver2& aObserver,TInt aCameraIndex,TInt aPriority);
  1166 	
   935 
  1167 	/** 
   936 	/**
  1168 	Creates an object representing a camera. 
   937 	Creates an object representing a camera.
  1169 	Clients prepare themselves to receive unrecognised enum, uids etc. 
   938 	Clients prepare themselves to receive unrecognised enum, uids etc.
  1170 	
   939 
  1171 	@param  aObserver
   940 	@param  aObserver
  1172 	        Reference to class derived from MCameraObserver2 designed to receive
   941 	        Reference to class derived from MCameraObserver2 designed to receive
  1173 	        notification of asynchronous event completion.
   942 	        notification of asynchronous event completion.
  1174 	@param	aCameraIndex
   943 	@param	aCameraIndex
  1175 	        Index from 0 to CamerasAvailable()-1 inclusive specifying the
   944 	        Index from 0 to CamerasAvailable()-1 inclusive specifying the
  1183 
   952 
  1184 	@leave  KErrNoMemory if out of memory.
   953 	@leave  KErrNoMemory if out of memory.
  1185 	@leave  KErrNotSupported if aCameraIndex is out of range.
   954 	@leave  KErrNotSupported if aCameraIndex is out of range.
  1186 	@leave  KErrPermissionDenied if the application does not have
   955 	@leave  KErrPermissionDenied if the application does not have
  1187 	        the UserEnvironment capability.
   956 	        the UserEnvironment capability.
  1188 	        
   957 
  1189 	@capability	UserEnvironment
   958 	@capability	UserEnvironment
  1190 			An application that creates a CCamera object must have
   959 			An application that creates a CCamera object must have
  1191 			the UserEnvironment capability.
   960 			the UserEnvironment capability.
  1192 
   961 
  1193     @capability MultimediaDD
   962     @capability MultimediaDD
  1194 	        A process requesting or using this method that has MultimediaDD capability will
   963 	        A process requesting or using this method that has MultimediaDD capability will
  1195 			always have precedence over a process that does not have MultimediaDD.
   964 			always have precedence over a process that does not have MultimediaDD.
  1196 	
   965 
  1197 	@note   Clients using this creation method should prepare themselves to receive any unrecognised enum values, uids 
   966 	@note   Clients using this creation method should prepare themselves to receive any unrecognised enum values, uids
  1198 			from 'supported' or 'getter' methods
   967 			from 'supported' or 'getter' methods
  1199 	*/
   968 	*/
  1200 	IMPORT_C static CCamera* New2L(MCameraObserver2& aObserver,TInt aCameraIndex,TInt aPriority);
   969 	IMPORT_C static CCamera* New2L(MCameraObserver2& aObserver,TInt aCameraIndex,TInt aPriority);
  1201 	
   970 
  1202 	/** 
   971 	/**
  1203 	Creates an object representing a camera.
   972 	Creates an object representing a camera.
  1204 		
   973 
  1205 	@param  aObserver
   974 	@param  aObserver
  1206 	        Reference to class derived from MCameraObserver designed to receive
   975 	        Reference to class derived from MCameraObserver designed to receive
  1207 	        notification of asynchronous event completion.
   976 	        notification of asynchronous event completion.
  1208 	@param	aCameraIndex
   977 	@param	aCameraIndex
  1209 	        Index from 0 to CamerasAvailable()-1 inclusive specifying the
   978 	        Index from 0 to CamerasAvailable()-1 inclusive specifying the
  1211 
   980 
  1212 	@leave  KErrNoMemory if out of memory.
   981 	@leave  KErrNoMemory if out of memory.
  1213 	@leave  KErrNotSupported if aCameraIndex is out of range.
   982 	@leave  KErrNotSupported if aCameraIndex is out of range.
  1214 	@leave  KErrPermissionDenied if the application does not have
   983 	@leave  KErrPermissionDenied if the application does not have
  1215 	        the UserEnvironment capability.
   984 	        the UserEnvironment capability.
  1216 	        
   985 
  1217 	@return Pointer to a fully constructed CCamera object. Ownership is passed
   986 	@return Pointer to a fully constructed CCamera object. Ownership is passed
  1218 	        to the caller.
   987 	        to the caller.
  1219 	
   988 
  1220 	@capability	UserEnvironment
   989 	@capability	UserEnvironment
  1221 				An application that creates a CCamera object must have
   990 				An application that creates a CCamera object must have
  1222 				the UserEnvironment capability.
   991 				the UserEnvironment capability.
  1223 				
   992 
  1224 	@note   Applications using this method to create camera object may not receive enums/uids added in future(after being baselined). 
   993 	@note   Applications using this method to create camera object may not receive enums/uids added in future(after being baselined).
  1225 			To receive them, they should rather use New2L() or NewDuplicate2L(), in which case, they should prepare 
   994 			To receive them, they should rather use New2L() or NewDuplicate2L(), in which case, they should prepare
  1226 			themselves to receive unrecognised values.
   995 			themselves to receive unrecognised values.
  1227 	*/
   996 	*/
  1228 	IMPORT_C static CCamera* NewL(MCameraObserver& aObserver,TInt aCameraIndex);
   997 	IMPORT_C static CCamera* NewL(MCameraObserver& aObserver,TInt aCameraIndex);
  1229 	
   998 
  1230 	/** 
   999 	/**
  1231 	@deprecated Use static CCamera* NewDuplicate2L(MCameraObserver2& aObserver,TInt aCameraHandle);
  1000 	@deprecated Use static CCamera* NewDuplicate2L(MCameraObserver2& aObserver,TInt aCameraHandle);
  1232 	
  1001 
  1233 	Duplicates the original camera object for use by, for example, multimedia systems.
  1002 	Duplicates the original camera object for use by, for example, multimedia systems.
  1234 
  1003 
  1235 	May leave with KErrNoMemory or KErrNotFound if aCameraHandle is not valid.
  1004 	May leave with KErrNoMemory or KErrNotFound if aCameraHandle is not valid.
  1236 
  1005 
  1237 	@param  aObserver
  1006 	@param  aObserver
  1718 
  1487 
  1719 	@leave  KErrNotSupported
  1488 	@leave  KErrNotSupported
  1720 	@leave  KErrNoMemory
  1489 	@leave  KErrNoMemory
  1721 	@leave  KErrNotReady if PowerOn() hasn't been called successfully.
  1490 	@leave  KErrNotReady if PowerOn() hasn't been called successfully.
  1722 	
  1491 	
       
  1492 	@note  Depending on the ECAM implementation and underlying hardware, preparing both image capture and video capture
       
  1493 		   at the same time may not be possible. In this case, the recommendation is to unprepare video capture before preparing
       
  1494 		   image capture if PrepareVideoCaptureL() has already been called.
       
  1495 	
  1723 	@see 	CCamera::CCameraPreImageCaptureControl::PrepareImageCapture(TPrepareImageParameters aPrepareImageParameters)
  1496 	@see 	CCamera::CCameraPreImageCaptureControl::PrepareImageCapture(TPrepareImageParameters aPrepareImageParameters)
  1724 	*/
  1497 	*/
  1725 	virtual void PrepareImageCaptureL(TFormat aImageFormat,TInt aSizeIndex)=0;
  1498 	virtual void PrepareImageCaptureL(TFormat aImageFormat,TInt aSizeIndex)=0;
  1726 
  1499 
  1727 	/** 
  1500 	/** 
  1748 	@leave   KErrNotSupported
  1521 	@leave   KErrNotSupported
  1749 	@leave   KErrNoMemory
  1522 	@leave   KErrNoMemory
  1750 	@leave   KErrInUse if Reserve() hasn't been called successfully
  1523 	@leave   KErrInUse if Reserve() hasn't been called successfully
  1751 	@leave   KErrNotReady if PowerOn()
  1524 	@leave   KErrNotReady if PowerOn()
  1752 	         hasn't been called successfully.
  1525 	         hasn't been called successfully.
       
  1526 	
       
  1527 	@note  Depending on the ECAM implementation and underlying hardware, preparing both image capture and video capture
       
  1528 		   at the same time may not be possible. In this case, the recommendation is to unprepare video capture before preparing
       
  1529 		   image capture if PrepareVideoCaptureL() has already been called.
  1753 	
  1530 	
  1754 	@see 	CCamera::CCameraPreImageCaptureControl::PrepareImageCapture(TPrepareImageParameters aPrepareImageParameters)
  1531 	@see 	CCamera::CCameraPreImageCaptureControl::PrepareImageCapture(TPrepareImageParameters aPrepareImageParameters)
  1755 	*/
  1532 	*/
  1756 	virtual void PrepareImageCaptureL(TFormat aImageFormat,TInt aSizeIndex,const TRect& aClipRect)=0;
  1533 	virtual void PrepareImageCaptureL(TFormat aImageFormat,TInt aSizeIndex,const TRect& aClipRect)=0;
  1757 
  1534 
  1812 	        or equal to TCameraInfo::iMaxFramesPerBufferSupported. One buffer is returned
  1589 	        or equal to TCameraInfo::iMaxFramesPerBufferSupported. One buffer is returned
  1813 	        to MCameraObserver::FrameBufferReady() at a time.
  1590 	        to MCameraObserver::FrameBufferReady() at a time.
  1814 
  1591 
  1815 	@leave  May leave with KErrNotSupported, KErrNoMemory, or KErrNotReady if PowerOn() 
  1592 	@leave  May leave with KErrNotSupported, KErrNoMemory, or KErrNotReady if PowerOn() 
  1816 			hasn't been called successfully.
  1593 			hasn't been called successfully.
       
  1594 	
       
  1595 	@note  Depending on the ECAM implementation and underlying hardware, preparing both image capture and video capture
       
  1596 		   at the same time may not be possible. In this case, the recommendation is to unprepare image capture before preparing
       
  1597 		   video capture if PrepareImageCaptureL() has already been called.
  1817 	
  1598 	
  1818 	@see 	CCamera::CCameraVideoCaptureControl::PrepareVideoCapture(const TPrepareVideoParameters& aPrepareVideoParameters)
  1599 	@see 	CCamera::CCameraVideoCaptureControl::PrepareVideoCapture(const TPrepareVideoParameters& aPrepareVideoParameters)
  1819 	*/
  1600 	*/
  1820 	virtual void PrepareVideoCaptureL(TFormat aFormat,TInt aSizeIndex,TInt aRateIndex,TInt aBuffersToUse,TInt aFramesPerBuffer)=0;
  1601 	virtual void PrepareVideoCaptureL(TFormat aFormat,TInt aSizeIndex,TInt aRateIndex,TInt aBuffersToUse,TInt aFramesPerBuffer)=0;
  1821 
  1602 
  1846 	        The rectangle to which the image is to be clipped.
  1627 	        The rectangle to which the image is to be clipped.
  1847 	@leave  KErrNotSupported
  1628 	@leave  KErrNotSupported
  1848 	@leave  KErrNoMemory, 
  1629 	@leave  KErrNoMemory, 
  1849 	@leave  KErrInUse if Reserve() hasn't been called successfully
  1630 	@leave  KErrInUse if Reserve() hasn't been called successfully
  1850 	@leave  KErrNotReady if PowerOn() hasn't been called successfully.
  1631 	@leave  KErrNotReady if PowerOn() hasn't been called successfully.
       
  1632 	
       
  1633 	@note  Depending on the ECAM implementation and underlying hardware, preparing both image capture and video capture
       
  1634 		   at the same time may not be possible. In this case, the recommendation is to unprepare image capture before preparing
       
  1635 		   video capture if PrepareImageCaptureL() has already been called.
  1851 
  1636 
  1852 	@see 	CCamera::CCameraVideoCaptureControl::PrepareVideoCapture(const TPrepareVideoParameters& aPrepareVideoParameters)
  1637 	@see 	CCamera::CCameraVideoCaptureControl::PrepareVideoCapture(const TPrepareVideoParameters& aPrepareVideoParameters)
  1853 	*/
  1638 	*/
  1854 	virtual void PrepareVideoCaptureL(TFormat aFormat,TInt aSizeIndex,TInt aRateIndex,TInt aBuffersToUse,TInt aFramesPerBuffer,const TRect& aClipRect)=0;
  1639 	virtual void PrepareVideoCaptureL(TFormat aFormat,TInt aSizeIndex,TInt aRateIndex,TInt aBuffersToUse,TInt aFramesPerBuffer,const TRect& aClipRect)=0;
  1855 
  1640 
  1972 	*/
  1757 	*/
  1973 	virtual TAny* CustomInterface(TUid aInterface)=0;
  1758 	virtual TAny* CustomInterface(TUid aInterface)=0;
  1974 	
  1759 	
  1975 	/**
  1760 	/**
  1976 	@internalComponent
  1761 	@internalComponent
  1977 	
       
  1978 	Returns the camera API version no.
  1762 	Returns the camera API version no.
  1979 	*/
  1763 	*/
  1980 	IMPORT_C TInt CameraVersion();
  1764 	IMPORT_C TInt CameraVersion();
  1981 	
  1765 	
  1982 private:
  1766 private:
  2049 	frame in the buffer was captured. 
  1833 	frame in the buffer was captured. 
  2050 	*/
  1834 	*/
  2051 	TTimeIntervalMicroSeconds iElapsedTime;
  1835 	TTimeIntervalMicroSeconds iElapsedTime;
  2052 	};
  1836 	};
  2053 
  1837 
  2054 /** Specifies whether the camera is reserved or not.
  1838 #ifndef SYMBIAN_ENABLE_SPLIT_HEADERS
  2055 	The enumeration list may be extended in future.
  1839 #include <ecamconst.h>
  2056 	
  1840 #endif
  2057 @publishedPartner
  1841 
  2058 @prototype
  1842 class MReserveObserver;
  2059 */
  1843 
  2060 enum TECamReserveStatus
       
  2061 	{
       
  2062 	/** Camera Status unknown */
       
  2063 	ECameraStatusUnknown,
       
  2064 	/** Camera is reserved */
       
  2065 	ECameraReserved,
       
  2066 	/** Camera is unreserved */
       
  2067 	ECameraUnReserved
       
  2068 	};
       
  2069 
       
  2070 /** Mixin base class for camera clients to handle the notification of Reserve status.
       
  2071 
       
  2072 Client must implement MReserveObserver in order to handle the notifications and take appropriate steps accordingly. 
       
  2073 
       
  2074 @note  By the time client gets unreserved status via callback, the camera may be on its way getting reserved by another client who 
       
  2075 	   might be continuously polling for it.
       
  2076 	   So, there is no guarantee that the client will be able to reserve it. But it is guaranteed that the client will
       
  2077 	   receive the notification about change in reserve status. 
       
  2078 
       
  2079 @publishedPartner
       
  2080 @prototype
       
  2081 */
       
  2082 class MReserveObserver
       
  2083 	{
       
  2084 public:
       
  2085 	/**
       
  2086 	This notification is send to provide the reserve status for the camera. 
       
  2087 	
       
  2088 	@param aCameraIndex
       
  2089 		   The camera index for which the Reserve status has to be provided.
       
  2090 		   
       
  2091 	@param aReserveStatus
       
  2092 		   The reserve status for the camera.
       
  2093 		   
       
  2094 	@param aErrorCode
       
  2095 		   The error value. 
       
  2096 		   
       
  2097 	@note  If error is not KErrNone, then the client is expected to destroy the CCameraStatusWatch retrieved through 
       
  2098 		   TReservedInfo::SubscribeReserveInfoL and re-subscribe if desired.
       
  2099 	*/
       
  2100 	virtual void ReserveStatus(TInt iCameraIndex, TECamReserveStatus aReserveStatus, TInt aErrorCode) =0;
       
  2101 	};
       
  2102 
       
  2103 class CCameraStatusWatch;
       
  2104 
       
  2105 /**
       
  2106 @publishedPartner
       
  2107 @prototype
       
  2108 
       
  2109 Client uses it to asynchronously receive the reserve status of a camera index through MReserveObserver
       
  2110 */
       
  2111 class TReservedInfo
       
  2112 	{
       
  2113 public:
       
  2114 	IMPORT_C static void SubscribeReserveInfoL(MReserveObserver& aReserveObserver, TInt aCameraIndex, CCameraStatusWatch*& aCameraStatusWatch); 
       
  2115 	};
       
  2116 
  1844 
  2117 /**
  1845 /**
  2118 An active object class implemented by Symbian and used to subscribe for the updates in the Properties, retrieve the 
  1846 An active object class implemented by Symbian and used to subscribe for the updates in the Properties, retrieve the 
  2119 Properties and forward the notification to the client.
  1847 Properties and forward the notification to the client.
  2120 
  1848 
  2121 @note Serialized part of the ECam implementation is assumed to define the Properties and publish them whenever there is 
  1849 @note Serialized part of the ECam implementation is assumed to define the Properties and publish them whenever there is 
  2122 	  change in the reserve status.
  1850 	  change in the reserve status.
  2123 */
  1851 */
  2124 class CCameraStatusWatch : public CActive
  1852 class CCameraStatusWatch : public CActive
  2125 	{
  1853 	{
  2126 	friend void TReservedInfo::SubscribeReserveInfoL(MReserveObserver& aReserveObserver, TInt aCameraIndex, CCameraStatusWatch*& aCameraStatusWatch);
       
  2127 
       
  2128 public:
  1854 public:
  2129 	IMPORT_C ~CCameraStatusWatch();
  1855 	IMPORT_C ~CCameraStatusWatch();
  2130 
  1856 	static CCameraStatusWatch* NewL(MReserveObserver& aReserveObserver, TInt aCameraIndex, TInt aSecureId);
  2131 private:
  1857 private:
  2132 	static CCameraStatusWatch* NewL(MReserveObserver& aReserveObserver, TInt aCameraIndex, TInt aSecureId);
       
  2133 	
  1858 	
  2134 	CCameraStatusWatch(MReserveObserver& aReserveObserver, TInt aCameraIndex, TInt aSecureId);
  1859 	CCameraStatusWatch(MReserveObserver& aReserveObserver, TInt aCameraIndex, TInt aSecureId);
  2135 	void ConstructL();
  1860 	void ConstructL();
  2136 	void RunL();
  1861 	void RunL();
  2137 	void DoCancel();
  1862 	void DoCancel();
  2140 	RProperty iProperty;
  1865 	RProperty iProperty;
  2141 	MReserveObserver& iReserveObserver;
  1866 	MReserveObserver& iReserveObserver;
  2142 	TInt iCameraIndex;
  1867 	TInt iCameraIndex;
  2143 	TInt iSecureId;
  1868 	TInt iSecureId;
  2144 	};
  1869 	};
       
  1870 
  2145 	
  1871 	
  2146 #endif // ECAM_H
  1872 #endif // ECAM_H