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