epoc32/include/ecam.h
branchSymbian3
changeset 4 837f303aceeb
parent 2 2fe1408b6811
     1.1 --- a/epoc32/include/ecam.h	Wed Mar 31 12:27:01 2010 +0100
     1.2 +++ b/epoc32/include/ecam.h	Wed Mar 31 12:33:34 2010 +0100
     1.3 @@ -1,9 +1,9 @@
     1.4  // Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies).
     1.5  // All rights reserved.
     1.6  // This component and the accompanying materials are made available
     1.7 -// 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
     1.8 +// under the terms of "Eclipse Public License v1.0"
     1.9  // which accompanies this distribution, and is available
    1.10 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
    1.11 +// at the URL "http://www.eclipse.org/legal/epl-v10.html".
    1.12  //
    1.13  // Initial Contributors:
    1.14  // Nokia Corporation - initial contribution.
    1.15 @@ -13,8 +13,6 @@
    1.16  // Description:
    1.17  //
    1.18  
    1.19 -
    1.20 -
    1.21  /**
    1.22   @file
    1.23   @publishedAll
    1.24 @@ -27,6 +25,10 @@
    1.25  #include <ecamuids.hrh>
    1.26  #include <e32property.h>
    1.27  
    1.28 +#ifndef SYMBIAN_ENABLE_SPLIT_HEADERS
    1.29 +#include <ecamdef.h>
    1.30 +#endif
    1.31 +
    1.32  class MFrameBuffer;
    1.33  class RWsSession;
    1.34  class CWsScreenDevice;
    1.35 @@ -417,41 +419,6 @@
    1.36  	TTimeIntervalMicroSeconds iElapsedTime;
    1.37  	};
    1.38  
    1.39 -/**
    1.40 -This class is used to provide extra buffer informations through a custom interface.
    1.41 -
    1.42 -@see MCameraImageBuffer
    1.43 -
    1.44 -@publishedPartner
    1.45 -@prototype
    1.46 -*/
    1.47 -class MCameraBuffer2 : public MCameraBuffer
    1.48 -	{
    1.49 -public:
    1.50 -	/**
    1.51 -	Retrieves an array of uids which represents the class identifier used for buffer extension.
    1.52 -	
    1.53 -	@param aInterfaceUids
    1.54 -		   An array of uids which represents the class identifier.
    1.55 -		   
    1.56 -	@return The error code.
    1.57 -	*/
    1.58 -	virtual TInt GetInterfaceUids(RArray<TUid>& aInterfaceUids) = 0;
    1.59 -	
    1.60 -	/**
    1.61 -	Gets a custom interface for extra buffer information. 
    1.62 -
    1.63 -	@param aInterface
    1.64 -		   The Uid of the particular interface function required for buffer information.
    1.65 -		   
    1.66 -	@param aPtrInterface
    1.67 -		   The client has to cast the custom interface pointer to the appropriate type.	
    1.68 -
    1.69 -	@return The error code.
    1.70 -	*/
    1.71 -	virtual TInt CustomInterface(TUid aInterface, TAny*& aPtrInterface) = 0;
    1.72 -	};
    1.73 -
    1.74  /** 
    1.75  	Uid used to identify the event that the request to Reserve() has completed
    1.76  */
    1.77 @@ -579,211 +546,6 @@
    1.78  */
    1.79  static const TUid  KUidECamEventCameraSettingPreCaptureWarning 	= {KUidECamEventCameraSettingPreCaptureWarningUidValue};
    1.80  static const TUid  KUidECamEvent2CameraSettingPreCaptureWarning = {KUidECamEventCameraSettingPreCaptureWarningUidValue};
    1.81 -
    1.82 -/** 
    1.83 -Event indicating continuous zoom progess. This event is used for StartContinuousZoomL feature. This is a part of class 
    1.84 -CCamera::CCameraAdvancedSettings. This event should be packed in TECAMEvent2 class. 
    1.85 -
    1.86 -This TUid is available from the following methods only to the API clients using CCamera::New2L() or CCamera::
    1.87 -NewDuplicate2L():
    1.88 -void CCamera::CCameraAdvancedSettings::GetSupportedSettingsL(RArray<TUid>& aSettings) const;
    1.89 -void CCamera::CCameraAdvancedSettings::GetActiveSettingsL(RArray<TUid>& aActiveSettings) const;
    1.90 -void CCamera::CCameraAdvancedSettings::GetDisabledSettingsL(RArray<TUid>& aDisabledSettings) const;
    1.91 -
    1.92 -Note: TECAMEvent2::iParam represents percentage continuous zoom completion.
    1.93 -
    1.94 -@note  If zoom direction is EZoomDirectionWide, percentage completion will target minimum possible value as 100%.
    1.95 -@note  If zoom direction is EZoomDirectionTele, percentage completion will target maximum possible value as 100%.
    1.96 -
    1.97 -@publishedPartner
    1.98 -@prototype
    1.99 -*/
   1.100 -static const TUid  KUidECamEvent2CameraSettingContinuousZoomPercentageCompletion  = {KUidECamEvent2CameraSettingContinuousZoomPercentageCompletionUidValue};
   1.101 -
   1.102 -/**
   1.103 -Notifies that unrequested feature changes have occurred. The method GetIndirectFeatureChangesL() is called to
   1.104 -retrieve the list of unrequested feature changes. The unrequested feature changes are ECAM component wide.
   1.105 -
   1.106 -This TUid is available from the following methods only to the API clients using CCamera::New2L() or CCamera::NewDuplicate2L():
   1.107 -void CCamera::CCameraAdvancedSettings::GetSupportedSettingsL(RArray<TUid>& aSettings) const;
   1.108 -void CCamera::CCameraAdvancedSettings::GetActiveSettingsL(RArray<TUid>& aActiveSettings) const;
   1.109 -void CCamera::CCameraAdvancedSettings::GetDisabledSettingsL(RArray<TUid>& aDisabledSettings) const;
   1.110 -
   1.111 -Note: TECAMEvent2::iParam represents the TInt used to obtain a uid which represents the requested feature change.
   1.112 -
   1.113 -@publishedPartner
   1.114 -@prototype
   1.115 -*/
   1.116 -static const TUid KUidECamEvent2IndirectFeatureChange  = {KUidECamEvent2IndirectFeatureChangeUidValue};
   1.117 -
   1.118 -
   1.119 -/** 
   1.120 -Viewfinder fading effect has been set.
   1.121 -This event should be packed in TECAMEvent2 class.
   1.122 -
   1.123 -Note: TECAMEvent2::iParam represents viewfinder handle.
   1.124 -
   1.125 -@internalTechnology
   1.126 -*/
   1.127 -static const TUid KUidECamEvent2ViewFinderFadingEffect = {KUidECamEvent2ViewFinderFadingEffectUidValue};
   1.128 -				   
   1.129 -/** 
   1.130 -Event indicating auto aperture is being used. 
   1.131 -This event should be packed in TECAMEvent2 class.
   1.132 -
   1.133 -This TUid is available from the following methods only to the API clients using CCamera::New2L() or CCamera::
   1.134 -NewDuplicate2L():
   1.135 -void CCamera::CCameraAdvancedSettings::GetSupportedSettingsL(RArray<TUid>& aSettings) const;
   1.136 -void CCamera::CCameraAdvancedSettings::GetActiveSettingsL(RArray<TUid>& aActiveSettings) const;
   1.137 -void CCamera::CCameraAdvancedSettings::GetDisabledSettingsL(RArray<TUid>& aDisabledSettings) const;
   1.138 -
   1.139 -Note: TECAMEvent2::iParam represents actual value of aperture being used if camera is capable of. Otherwise, KErrNotFound will be retrieved.
   1.140 -
   1.141 -@internalTechnology
   1.142 -*/
   1.143 -static const TUid  KUidECamEvent2CameraSettingAutoAperture  = {KUidECamEvent2CameraSettingAutoApertureUidValue};
   1.144 -
   1.145 -/** 
   1.146 -Event providing focussing feedback. The focussing feedback will be provided whenever the focussing state changes for the
   1.147 -selected spot combination. 
   1.148 -This event should be packed in TECAMEvent2 class.
   1.149 -Note: TECAMEvent2::iParam represents bitfield of chosen spots which are in focus.
   1.150 -Note: TECAMEvent2::iParam1 represents bitfield of chosen spots which are not in focus.
   1.151 -
   1.152 -@internalTechnology
   1.153 -*/
   1.154 -static const TUid  KECamEvent2ImageCaptureControlFocussingInformation = {KECamEvent2ImageCaptureControlFocussingInformationUidValue};
   1.155 -
   1.156 -/** 
   1.157 -Focussing spot combination. This event tells about completion of the setting operation for the spot combination.
   1.158 -This event should be packed in TECAMEvent2 class.
   1.159 -
   1.160 -@note  static_cast<CCamera::CCameraAdvancedSettings::TFocusMode>(TECAMEvent2::iParam) represents the focus mode for 
   1.161 -	   which the spot combination has to be set for receiving focussing feedback.
   1.162 -
   1.163 -@internalTechnology
   1.164 -*/
   1.165 -static const TUid KUidECamEvent2ImageCaptureControlSpotCombination = {KUidECamEvent2ImageCaptureControlSpotCombinationUidValue};
   1.166 -
   1.167 -/** 
   1.168 -Viewfinder magnification has been set.
   1.169 -This event should be packed in TECAMEvent2 class.
   1.170 -
   1.171 -Note: TECAMEvent2::iParam represents viewfinder handle.
   1.172 -
   1.173 -@internalTechnology
   1.174 -*/
   1.175 -static const TUid KUidECamEvent2ViewFinderMagnification = {KUidECamEvent2ViewFinderMagnificationUidValue};
   1.176 -
   1.177 -/**
   1.178 -Notifies the current camera reserver that the camera control will be forcefully overtaken by another requesting client 
   1.179 -after a specific time interval.
   1.180 -
   1.181 -This TUid is available from the following methods only to the API clients using CCamera::New2L() or CCamera::NewDuplicate2L():
   1.182 -void CCamera::CCameraAdvancedSettings::GetSupportedSettingsL(RArray<TUid>& aSettings) const;
   1.183 -void CCamera::CCameraAdvancedSettings::GetActiveSettingsL(RArray<TUid>& aActiveSettings) const;
   1.184 -void CCamera::CCameraAdvancedSettings::GetDisabledSettingsL(RArray<TUid>& aDisabledSettings) const;
   1.185 -
   1.186 -@note   TTimeIntervalMicroSeconds32(TECAMEvent2::iParam) represents the maximum time to wait. 
   1.187 -		TECAMEvent2::iParam needs to be passed as argument in order to construct the TTimeIntervalMicroSeconds32 object.
   1.188 -
   1.189 -Note: TECAMEvent2::iParam1 represents the priority of the requestor client to whom the camera control will be forcibly 
   1.190 -passed after a specific time interval.
   1.191 -
   1.192 -@internalTechnology
   1.193 -*/
   1.194 -static const TUid KUidECamEvent2CameraRequestForcedTimedTakeOver = {KUidECamEvent2CameraRequestForcedTimedTakeOverUidValue};
   1.195 -
   1.196 -/**
   1.197 -Notifies the current camera reserver that another client is requesting for camera control in a specific time interval.
   1.198 -
   1.199 -This TUid is available from the following methods only to the API clients using CCamera::New2L() or CCamera::NewDuplicate2L():
   1.200 -void CCamera::CCameraAdvancedSettings::GetSupportedSettingsL(RArray<TUid>& aSettings) const;
   1.201 -void CCamera::CCameraAdvancedSettings::GetActiveSettingsL(RArray<TUid>& aActiveSettings) const;
   1.202 -void CCamera::CCameraAdvancedSettings::GetDisabledSettingsL(RArray<TUid>& aDisabledSettings) const;
   1.203 -
   1.204 -@note   TTimeIntervalMicroSeconds32(TECAMEvent2::iParam) represents the maximum requested time within which the current 
   1.205 -		reserver may release the camera if it wishes to do so.
   1.206 -		TECAMEvent2::iParam needs to be passed as argument in order to construct the TTimeIntervalMicroSeconds32 object.
   1.207 -
   1.208 -Note: TECAMEvent2::iParam1 represents the priority of the requestor client to whom the camera control will be passed 
   1.209 -should the current reserver wish to do so.
   1.210 -
   1.211 -@internalTechnology
   1.212 -*/
   1.213 -static const TUid KUidECamEvent2CameraRequestTimedTakeOver = {KUidECamEvent2CameraRequestTimedTakeOverUidValue};
   1.214 -
   1.215 -/**
   1.216 -Notifies the manual gain setting completion for the particular channel.
   1.217 -
   1.218 -This TUid is available from the following methods only to the API clients using CCamera::New2L() or CCamera::NewDuplicate2L():
   1.219 -void CCamera::CCameraAdvancedSettings::GetSupportedSettingsL(RArray<TUid>& aSettings) const;
   1.220 -void CCamera::CCameraAdvancedSettings::GetActiveSettingsL(RArray<TUid>& aActiveSettings) const;
   1.221 -void CCamera::CCameraAdvancedSettings::GetDisabledSettingsL(RArray<TUid>& aDisabledSettings) const;
   1.222 -
   1.223 -Note: TECAMEvent2::iParam represents the specific channel for which the manual gain value has been set.
   1.224 -
   1.225 -@internalTechnology
   1.226 -*/
   1.227 -static const TUid KUidECamEvent2CameraSettingManualGain = {KUidECamEvent2CameraSettingManualGainUidValue};
   1.228 -
   1.229 -/**
   1.230 -Retrieves the optimal focussing feedback while using manual focus. This will be issued as a result of setting operation
   1.231 -CCamera::CCameraAdvancedSettings::SetFocusDistance(TInt aDistance).
   1.232 -
   1.233 -This TUid is available from the following methods only to the API clients using CCamera::New2L() or CCamera::NewDuplicate2L():
   1.234 -void CCamera::CCameraAdvancedSettings::GetSupportedSettingsL(RArray<TUid>& aSettings) const;
   1.235 -void CCamera::CCameraAdvancedSettings::GetActiveSettingsL(RArray<TUid>& aActiveSettings) const;
   1.236 -void CCamera::CCameraAdvancedSettings::GetDisabledSettingsL(RArray<TUid>& aDisabledSettings) const;
   1.237 -
   1.238 -@note   If TECAMEvent2::iParam > 1, information is unavailable; if TECAMEvent2::iParam < 0, error case. 
   1.239 -		Otherwise, static_cast<TBool>(TECAMEvent2::iParam) retrieves whether optimal focussing has been achieved or not.
   1.240 -
   1.241 -@internalTechnology
   1.242 -*/
   1.243 -static const TUid KUidECamEvent2CameraSettingFocusDistance = {KUidECamEvent2CameraSettingFocusDistanceUidValue};
   1.244 -
   1.245 -/**
   1.246 -Instructs the client to change its priority in order to allow the legacy client to get hold of the camera. Client should
   1.247 -restore their priority when they receive the notification 'KUidECamEventCameraSettingRestoreClientPriority'.
   1.248 -
   1.249 -This TUid is available from the following methods only to the API clients using CCamera::New2L() or CCamera::NewDuplicate2L():
   1.250 -void CCamera::CCameraAdvancedSettings::GetSupportedSettingsL(RArray<TUid>& aSettings) const;
   1.251 -void CCamera::CCameraAdvancedSettings::GetActiveSettingsL(RArray<TUid>& aActiveSettings) const;
   1.252 -void CCamera::CCameraAdvancedSettings::GetDisabledSettingsL(RArray<TUid>& aDisabledSettings) const;
   1.253 -
   1.254 -Note: TECAMEvent2::iParam represents the target priority to which the client should set itself using the method SetClientPriorityL()
   1.255 -
   1.256 -@internalTechnology
   1.257 -*/
   1.258 -static const TUid KUidECamEvent2CameraSettingChangeClientPriority  = {KUidECamEvent2CameraSettingChangeClientPriorityUidValue};
   1.259 -
   1.260 -/** 
   1.261 -Event indicating image enhancement setting has been applied. 
   1.262 -This event should be packed in TECAMEvent2 class.
   1.263 -
   1.264 -Note: TECAMEvent2::iParam represents viewfinder handle.
   1.265 -
   1.266 -@internalTechnology
   1.267 -*/
   1.268 -static const TUid KUidECamEvent2ViewFinderImageEnhancement = {KUidECamEvent2ViewFinderImageEnhancementUidValue};
   1.269 -
   1.270 -/**
   1.271 -Provides the various available schemes for event filtering. This will inform how the listed uids have to be interpreted 
   1.272 -by the implementation for filtering the events.
   1.273 -
   1.274 -@see  CCamera::CCameraAdvancedSettings::RegisterEventsL(TECAMEventFilterScheme aEventFilter, const RArray<TUid>& aEvents);
   1.275 -@see  CCamera::CCameraAdvancedSettings::GetRegisterEventsL(TECAMEventFilterScheme aEventFilter, RArray<TUid>& aEvents) const;
   1.276 -
   1.277 -@internalTechnology
   1.278 -*/	
   1.279 -enum TECAMEventFilterScheme
   1.280 -	{
   1.281 -	/** Black listing will mean not to receive specific events */
   1.282 -	EECAMEventFilterSchemeBlackList, 
   1.283 -	/** White listing will mean to receive only specific events */
   1.284 -	EECAMEventFilterSchemeWhiteList
   1.285 -	};
   1.286  	
   1.287  /**
   1.288  Special type of TECAMEvent class used to retrieve some extra information from particular events received
   1.289 @@ -942,6 +704,7 @@
   1.290  	class CCameraPostImageCaptureControl;
   1.291  	class CCameraVideoCaptureControl;
   1.292      class CCameraDirectSnapshot;
   1.293 +    class CCameraContinuousZoom;
   1.294  
   1.295  public:
   1.296  	/** Possible still image and video frame formats
   1.297 @@ -977,19 +740,18 @@
   1.298  		EFormatYUV420Interleaved	= 0x0400,
   1.299  		/** 4:2:0 format, 8 bits per sample, Y00Y01Y02Y03...U0...V0... */
   1.300  		EFormatYUV420Planar			= 0x0800,
   1.301 -		/** 4:2:2 format, 8 bits per sample, UY0VY1. */
   1.302 +		/** 4:2:2 format, 8 bits per sample, UY0VY1.  Maps to Graphics' EUidPixelFormatYUV_422Interleaved in pixelformats.h. */
   1.303  		EFormatYUV422				= 0x1000,
   1.304 -		/** 4:2:2 format, 8 bits per sample, Y1VY0U. */
   1.305 +		/** 4:2:2 format, 8 bits per sample, Y1VY0U.  Maps to Graphics' EUidPixelFormatYUV_422InterleavedReversed in pixelformats.h. */
   1.306  		EFormatYUV422Reversed		= 0x2000,
   1.307  		/** 4:4:4 format, 8 bits per sample, Y00U00V00 Y01U01V01... */
   1.308  		EFormatYUV444				= 0x4000,
   1.309  		/** 4:2:0 format, 8 bits per sample, Y00Y01Y02Y03...U0V0... */
   1.310  		EFormatYUV420SemiPlanar		= 0x8000,
   1.311  		/** CFbsBitmap object with display mode EColor16MU. */
   1.312 -		EFormatFbsBitmapColor16MU 	= 0x00010000, 	
   1.313 +		EFormatFbsBitmapColor16MU 	= 0x00010000,
   1.314  		/** Motion JPEG for video 
   1.315 -		@note This value is available only to the API clients using CCamera::New2L() or CCamera::NewDuplicate2L()
   1.316 -		
   1.317 +		@note This value is available only to the API clients using CCamera::New2L() or CCamera::NewDuplicate2L().
   1.318  		@internalTechnology
   1.319  		*/
   1.320  		EFormatMJPEG				= 0x00020000,
   1.321 @@ -997,11 +759,16 @@
   1.322  		/** 
   1.323  		Compressed H264 video format. 
   1.324  		@note This value is available only to the API clients using CCamera::New2L() or CCamera::NewDuplicate2L().
   1.325 -		
   1.326 -		@publishedPartner
   1.327  		@prototype
   1.328  		*/
   1.329 -		EFormatEncodedH264          = 0x00040000
   1.330 +		EFormatEncodedH264          = 0x00040000,
   1.331 +
   1.332 +		/**
   1.333 +		4:2:2 format, 8 bits per sample, Y0UY1V. Maps to Graphics' EUidPixelFormatYUV_422Reversed in pixelformats.h.
   1.334 +		@note This value is available only to the API clients using CCamera::New2L() or CCamera::NewDuplicate2L().
   1.335 +		@prototype
   1.336 +		*/
   1.337 +		EFormatYUV222ReversedV2		= 0x00080000
   1.338  		};
   1.339  		
   1.340  	/** Specifies whether contrast is set automatically. */
   1.341 @@ -1043,7 +810,8 @@
   1.342  	/** Specifies the type of exposure. - EExposureAuto is the default value. */
   1.343  	enum TExposure
   1.344  		{
   1.345 -		/** Set exposure automatically. Default, always supported. */
   1.346 +		/** Set exposure automatically. Default, always supported.
   1.347 +		This may imply auto aperture so clients may receive a KUidEcamEvent2CameraSettingAutoAperture event notification some time later. */
   1.348  		EExposureAuto		= 0x0000,
   1.349  		/** Night-time setting for long exposures. */
   1.350  		EExposureNight		= 0x0001,
   1.351 @@ -1063,7 +831,8 @@
   1.352  		EExposureProgram 	= 0x0080,
   1.353  		/** Aperture setting is given priority. */
   1.354  		EExposureAperturePriority 	= 0x0100,
   1.355 -		/** Shutter speed setting is given priority. */	
   1.356 +		/** Shutter speed setting is given priority.
   1.357 +		This may imply auto aperture so clients may receive a KUidEcamEvent2CameraSettingAutoAperture event notification some time later. */
   1.358  		EExposureShutterPriority	= 0x0200,
   1.359  		/** User selectable exposure value setting. */	
   1.360  		EExposureManual				= 0x0400,
   1.361 @@ -1096,42 +865,42 @@
   1.362  		EWBManual 			= 0x0080,
   1.363  		/** Shade */
   1.364   		EWBShade			= 0x0100,
   1.365 - 		/** auto skin 
   1.366 - 		
   1.367 - 		If New2L()/NewDuplicate2L() are not used to create camera object, this 
   1.368 -		enum value would be considered as unrecognized and filtered out in 'supported' 
   1.369 + 		/** auto skin
   1.370 +
   1.371 + 		If New2L()/NewDuplicate2L() are not used to create camera object, this
   1.372 +		enum value would be considered as unrecognized and filtered out in 'supported'
   1.373  		or 'getter' methods.
   1.374   		*/
   1.375   		EWBAutoSkin			= 0x0200,
   1.376 - 		/** horizon 
   1.377 - 		
   1.378 - 		If New2L()/NewDuplicate2L() are not used to create camera object, this 
   1.379 -		enum value would be considered as unrecognized and filtered out in 'supported' 
   1.380 + 		/** horizon
   1.381 +
   1.382 + 		If New2L()/NewDuplicate2L() are not used to create camera object, this
   1.383 +		enum value would be considered as unrecognized and filtered out in 'supported'
   1.384  		or 'getter' methods.
   1.385  		*/
   1.386   		EWBHorizon 			= 0x0400,
   1.387 - 		/** Daylight Under Water 
   1.388 - 		
   1.389 - 		If New2L()/NewDuplicate2L() are not used to create camera object, this 
   1.390 -		enum value would be considered as unrecognized and filtered out in 'supported' 
   1.391 + 		/** Daylight Under Water
   1.392 +
   1.393 + 		If New2L()/NewDuplicate2L() are not used to create camera object, this
   1.394 +		enum value would be considered as unrecognized and filtered out in 'supported'
   1.395  		or 'getter' methods.
   1.396  		*/
   1.397   		EWBDaylightUnderWater  = 0x0800
   1.398  		};
   1.399 -				
   1.400 +
   1.401  public:
   1.402 -	/** 
   1.403 +	/**
   1.404  	Determines the number of cameras on the device.
   1.405  
   1.406      @return Count of cameras present on the device.
   1.407  	*/
   1.408  	IMPORT_C static TInt CamerasAvailable();
   1.409  
   1.410 -    /** 
   1.411 +    /**
   1.412      @deprecated Use static CCamera* New2L(MCameraObserver2& aObserver,TInt aCameraIndex,TInt aPriority);
   1.413 -    
   1.414 +
   1.415  	Creates an object representing a camera.
   1.416 -	
   1.417 +
   1.418  	@param  aObserver
   1.419  	        Reference to class derived from MCameraObserver2 designed to receive
   1.420  	        notification of asynchronous event completion.
   1.421 @@ -1149,25 +918,25 @@
   1.422  	@leave  KErrNotSupported if aCameraIndex is out of range.
   1.423  	@leave  KErrPermissionDenied if the application does not have
   1.424  	        the UserEnvironment capability.
   1.425 -	        
   1.426 +
   1.427  	@capability	UserEnvironment
   1.428  			An application that creates a CCamera object must have
   1.429  			the UserEnvironment capability.
   1.430  
   1.431      @capability MultimediaDD
   1.432  	        A process requesting or using this method that has MultimediaDD capability will
   1.433 -			always have precedence over a process that does not have MultimediaDD.	
   1.434 +			always have precedence over a process that does not have MultimediaDD.
   1.435  
   1.436 -	@note   Applications using this method to create camera object may not receive enums/uids added in future(after being baselined). 
   1.437 -			To receive them, they should rather use New2L() or NewDuplicate2L(), in which case, they should prepare 
   1.438 +	@note   Applications using this method to create camera object may not receive enums/uids added in future(after being baselined).
   1.439 +			To receive them, they should rather use New2L() or NewDuplicate2L(), in which case, they should prepare
   1.440  			themselves to receive unrecognised values.
   1.441  	*/
   1.442  	IMPORT_C static CCamera* NewL(MCameraObserver2& aObserver,TInt aCameraIndex,TInt aPriority);
   1.443 -	
   1.444 -	/** 
   1.445 -	Creates an object representing a camera. 
   1.446 -	Clients prepare themselves to receive unrecognised enum, uids etc. 
   1.447 -	
   1.448 +
   1.449 +	/**
   1.450 +	Creates an object representing a camera.
   1.451 +	Clients prepare themselves to receive unrecognised enum, uids etc.
   1.452 +
   1.453  	@param  aObserver
   1.454  	        Reference to class derived from MCameraObserver2 designed to receive
   1.455  	        notification of asynchronous event completion.
   1.456 @@ -1185,7 +954,7 @@
   1.457  	@leave  KErrNotSupported if aCameraIndex is out of range.
   1.458  	@leave  KErrPermissionDenied if the application does not have
   1.459  	        the UserEnvironment capability.
   1.460 -	        
   1.461 +
   1.462  	@capability	UserEnvironment
   1.463  			An application that creates a CCamera object must have
   1.464  			the UserEnvironment capability.
   1.465 @@ -1193,15 +962,15 @@
   1.466      @capability MultimediaDD
   1.467  	        A process requesting or using this method that has MultimediaDD capability will
   1.468  			always have precedence over a process that does not have MultimediaDD.
   1.469 -	
   1.470 -	@note   Clients using this creation method should prepare themselves to receive any unrecognised enum values, uids 
   1.471 +
   1.472 +	@note   Clients using this creation method should prepare themselves to receive any unrecognised enum values, uids
   1.473  			from 'supported' or 'getter' methods
   1.474  	*/
   1.475  	IMPORT_C static CCamera* New2L(MCameraObserver2& aObserver,TInt aCameraIndex,TInt aPriority);
   1.476 -	
   1.477 -	/** 
   1.478 +
   1.479 +	/**
   1.480  	Creates an object representing a camera.
   1.481 -		
   1.482 +
   1.483  	@param  aObserver
   1.484  	        Reference to class derived from MCameraObserver designed to receive
   1.485  	        notification of asynchronous event completion.
   1.486 @@ -1213,23 +982,23 @@
   1.487  	@leave  KErrNotSupported if aCameraIndex is out of range.
   1.488  	@leave  KErrPermissionDenied if the application does not have
   1.489  	        the UserEnvironment capability.
   1.490 -	        
   1.491 +
   1.492  	@return Pointer to a fully constructed CCamera object. Ownership is passed
   1.493  	        to the caller.
   1.494 -	
   1.495 +
   1.496  	@capability	UserEnvironment
   1.497  				An application that creates a CCamera object must have
   1.498  				the UserEnvironment capability.
   1.499 -				
   1.500 -	@note   Applications using this method to create camera object may not receive enums/uids added in future(after being baselined). 
   1.501 -			To receive them, they should rather use New2L() or NewDuplicate2L(), in which case, they should prepare 
   1.502 +
   1.503 +	@note   Applications using this method to create camera object may not receive enums/uids added in future(after being baselined).
   1.504 +			To receive them, they should rather use New2L() or NewDuplicate2L(), in which case, they should prepare
   1.505  			themselves to receive unrecognised values.
   1.506  	*/
   1.507  	IMPORT_C static CCamera* NewL(MCameraObserver& aObserver,TInt aCameraIndex);
   1.508 -	
   1.509 -	/** 
   1.510 +
   1.511 +	/**
   1.512  	@deprecated Use static CCamera* NewDuplicate2L(MCameraObserver2& aObserver,TInt aCameraHandle);
   1.513 -	
   1.514 +
   1.515  	Duplicates the original camera object for use by, for example, multimedia systems.
   1.516  
   1.517  	May leave with KErrNoMemory or KErrNotFound if aCameraHandle is not valid.
   1.518 @@ -1720,6 +1489,10 @@
   1.519  	@leave  KErrNoMemory
   1.520  	@leave  KErrNotReady if PowerOn() hasn't been called successfully.
   1.521  	
   1.522 +	@note  Depending on the ECAM implementation and underlying hardware, preparing both image capture and video capture
   1.523 +		   at the same time may not be possible. In this case, the recommendation is to unprepare video capture before preparing
   1.524 +		   image capture if PrepareVideoCaptureL() has already been called.
   1.525 +	
   1.526  	@see 	CCamera::CCameraPreImageCaptureControl::PrepareImageCapture(TPrepareImageParameters aPrepareImageParameters)
   1.527  	*/
   1.528  	virtual void PrepareImageCaptureL(TFormat aImageFormat,TInt aSizeIndex)=0;
   1.529 @@ -1751,6 +1524,10 @@
   1.530  	@leave   KErrNotReady if PowerOn()
   1.531  	         hasn't been called successfully.
   1.532  	
   1.533 +	@note  Depending on the ECAM implementation and underlying hardware, preparing both image capture and video capture
   1.534 +		   at the same time may not be possible. In this case, the recommendation is to unprepare video capture before preparing
   1.535 +		   image capture if PrepareVideoCaptureL() has already been called.
   1.536 +	
   1.537  	@see 	CCamera::CCameraPreImageCaptureControl::PrepareImageCapture(TPrepareImageParameters aPrepareImageParameters)
   1.538  	*/
   1.539  	virtual void PrepareImageCaptureL(TFormat aImageFormat,TInt aSizeIndex,const TRect& aClipRect)=0;
   1.540 @@ -1815,6 +1592,10 @@
   1.541  	@leave  May leave with KErrNotSupported, KErrNoMemory, or KErrNotReady if PowerOn() 
   1.542  			hasn't been called successfully.
   1.543  	
   1.544 +	@note  Depending on the ECAM implementation and underlying hardware, preparing both image capture and video capture
   1.545 +		   at the same time may not be possible. In this case, the recommendation is to unprepare image capture before preparing
   1.546 +		   video capture if PrepareImageCaptureL() has already been called.
   1.547 +	
   1.548  	@see 	CCamera::CCameraVideoCaptureControl::PrepareVideoCapture(const TPrepareVideoParameters& aPrepareVideoParameters)
   1.549  	*/
   1.550  	virtual void PrepareVideoCaptureL(TFormat aFormat,TInt aSizeIndex,TInt aRateIndex,TInt aBuffersToUse,TInt aFramesPerBuffer)=0;
   1.551 @@ -1848,6 +1629,10 @@
   1.552  	@leave  KErrNoMemory, 
   1.553  	@leave  KErrInUse if Reserve() hasn't been called successfully
   1.554  	@leave  KErrNotReady if PowerOn() hasn't been called successfully.
   1.555 +	
   1.556 +	@note  Depending on the ECAM implementation and underlying hardware, preparing both image capture and video capture
   1.557 +		   at the same time may not be possible. In this case, the recommendation is to unprepare image capture before preparing
   1.558 +		   video capture if PrepareImageCaptureL() has already been called.
   1.559  
   1.560  	@see 	CCamera::CCameraVideoCaptureControl::PrepareVideoCapture(const TPrepareVideoParameters& aPrepareVideoParameters)
   1.561  	*/
   1.562 @@ -1974,7 +1759,6 @@
   1.563  	
   1.564  	/**
   1.565  	@internalComponent
   1.566 -	
   1.567  	Returns the camera API version no.
   1.568  	*/
   1.569  	IMPORT_C TInt CameraVersion();
   1.570 @@ -2051,68 +1835,12 @@
   1.571  	TTimeIntervalMicroSeconds iElapsedTime;
   1.572  	};
   1.573  
   1.574 -/** Specifies whether the camera is reserved or not.
   1.575 -	The enumeration list may be extended in future.
   1.576 -	
   1.577 -@publishedPartner
   1.578 -@prototype
   1.579 -*/
   1.580 -enum TECamReserveStatus
   1.581 -	{
   1.582 -	/** Camera Status unknown */
   1.583 -	ECameraStatusUnknown,
   1.584 -	/** Camera is reserved */
   1.585 -	ECameraReserved,
   1.586 -	/** Camera is unreserved */
   1.587 -	ECameraUnReserved
   1.588 -	};
   1.589 +#ifndef SYMBIAN_ENABLE_SPLIT_HEADERS
   1.590 +#include <ecamconst.h>
   1.591 +#endif
   1.592  
   1.593 -/** Mixin base class for camera clients to handle the notification of Reserve status.
   1.594 +class MReserveObserver;
   1.595  
   1.596 -Client must implement MReserveObserver in order to handle the notifications and take appropriate steps accordingly. 
   1.597 -
   1.598 -@note  By the time client gets unreserved status via callback, the camera may be on its way getting reserved by another client who 
   1.599 -	   might be continuously polling for it.
   1.600 -	   So, there is no guarantee that the client will be able to reserve it. But it is guaranteed that the client will
   1.601 -	   receive the notification about change in reserve status. 
   1.602 -
   1.603 -@publishedPartner
   1.604 -@prototype
   1.605 -*/
   1.606 -class MReserveObserver
   1.607 -	{
   1.608 -public:
   1.609 -	/**
   1.610 -	This notification is send to provide the reserve status for the camera. 
   1.611 -	
   1.612 -	@param aCameraIndex
   1.613 -		   The camera index for which the Reserve status has to be provided.
   1.614 -		   
   1.615 -	@param aReserveStatus
   1.616 -		   The reserve status for the camera.
   1.617 -		   
   1.618 -	@param aErrorCode
   1.619 -		   The error value. 
   1.620 -		   
   1.621 -	@note  If error is not KErrNone, then the client is expected to destroy the CCameraStatusWatch retrieved through 
   1.622 -		   TReservedInfo::SubscribeReserveInfoL and re-subscribe if desired.
   1.623 -	*/
   1.624 -	virtual void ReserveStatus(TInt iCameraIndex, TECamReserveStatus aReserveStatus, TInt aErrorCode) =0;
   1.625 -	};
   1.626 -
   1.627 -class CCameraStatusWatch;
   1.628 -
   1.629 -/**
   1.630 -@publishedPartner
   1.631 -@prototype
   1.632 -
   1.633 -Client uses it to asynchronously receive the reserve status of a camera index through MReserveObserver
   1.634 -*/
   1.635 -class TReservedInfo
   1.636 -	{
   1.637 -public:
   1.638 -	IMPORT_C static void SubscribeReserveInfoL(MReserveObserver& aReserveObserver, TInt aCameraIndex, CCameraStatusWatch*& aCameraStatusWatch); 
   1.639 -	};
   1.640  
   1.641  /**
   1.642  An active object class implemented by Symbian and used to subscribe for the updates in the Properties, retrieve the 
   1.643 @@ -2123,13 +1851,10 @@
   1.644  */
   1.645  class CCameraStatusWatch : public CActive
   1.646  	{
   1.647 -	friend void TReservedInfo::SubscribeReserveInfoL(MReserveObserver& aReserveObserver, TInt aCameraIndex, CCameraStatusWatch*& aCameraStatusWatch);
   1.648 -
   1.649  public:
   1.650  	IMPORT_C ~CCameraStatusWatch();
   1.651 -
   1.652 +	static CCameraStatusWatch* NewL(MReserveObserver& aReserveObserver, TInt aCameraIndex, TInt aSecureId);
   1.653  private:
   1.654 -	static CCameraStatusWatch* NewL(MReserveObserver& aReserveObserver, TInt aCameraIndex, TInt aSecureId);
   1.655  	
   1.656  	CCameraStatusWatch(MReserveObserver& aReserveObserver, TInt aCameraIndex, TInt aSecureId);
   1.657  	void ConstructL();
   1.658 @@ -2142,5 +1867,6 @@
   1.659  	TInt iCameraIndex;
   1.660  	TInt iSecureId;
   1.661  	};
   1.662 +
   1.663  	
   1.664  #endif // ECAM_H