--- a/epoc32/include/ecam.h Wed Mar 31 12:27:01 2010 +0100
+++ b/epoc32/include/ecam.h Wed Mar 31 12:33:34 2010 +0100
@@ -1,9 +1,9 @@
// Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies).
// All rights reserved.
// This component and the accompanying materials are made available
-// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
+// under the terms of "Eclipse Public License v1.0"
// which accompanies this distribution, and is available
-// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
//
// Initial Contributors:
// Nokia Corporation - initial contribution.
@@ -13,8 +13,6 @@
// Description:
//
-
-
/**
@file
@publishedAll
@@ -27,6 +25,10 @@
#include <ecamuids.hrh>
#include <e32property.h>
+#ifndef SYMBIAN_ENABLE_SPLIT_HEADERS
+#include <ecamdef.h>
+#endif
+
class MFrameBuffer;
class RWsSession;
class CWsScreenDevice;
@@ -417,41 +419,6 @@
TTimeIntervalMicroSeconds iElapsedTime;
};
-/**
-This class is used to provide extra buffer informations through a custom interface.
-
-@see MCameraImageBuffer
-
-@publishedPartner
-@prototype
-*/
-class MCameraBuffer2 : public MCameraBuffer
- {
-public:
- /**
- Retrieves an array of uids which represents the class identifier used for buffer extension.
-
- @param aInterfaceUids
- An array of uids which represents the class identifier.
-
- @return The error code.
- */
- virtual TInt GetInterfaceUids(RArray<TUid>& aInterfaceUids) = 0;
-
- /**
- Gets a custom interface for extra buffer information.
-
- @param aInterface
- The Uid of the particular interface function required for buffer information.
-
- @param aPtrInterface
- The client has to cast the custom interface pointer to the appropriate type.
-
- @return The error code.
- */
- virtual TInt CustomInterface(TUid aInterface, TAny*& aPtrInterface) = 0;
- };
-
/**
Uid used to identify the event that the request to Reserve() has completed
*/
@@ -579,211 +546,6 @@
*/
static const TUid KUidECamEventCameraSettingPreCaptureWarning = {KUidECamEventCameraSettingPreCaptureWarningUidValue};
static const TUid KUidECamEvent2CameraSettingPreCaptureWarning = {KUidECamEventCameraSettingPreCaptureWarningUidValue};
-
-/**
-Event indicating continuous zoom progess. This event is used for StartContinuousZoomL feature. This is a part of class
-CCamera::CCameraAdvancedSettings. This event should be packed in TECAMEvent2 class.
-
-This TUid is available from the following methods only to the API clients using CCamera::New2L() or CCamera::
-NewDuplicate2L():
-void CCamera::CCameraAdvancedSettings::GetSupportedSettingsL(RArray<TUid>& aSettings) const;
-void CCamera::CCameraAdvancedSettings::GetActiveSettingsL(RArray<TUid>& aActiveSettings) const;
-void CCamera::CCameraAdvancedSettings::GetDisabledSettingsL(RArray<TUid>& aDisabledSettings) const;
-
-Note: TECAMEvent2::iParam represents percentage continuous zoom completion.
-
-@note If zoom direction is EZoomDirectionWide, percentage completion will target minimum possible value as 100%.
-@note If zoom direction is EZoomDirectionTele, percentage completion will target maximum possible value as 100%.
-
-@publishedPartner
-@prototype
-*/
-static const TUid KUidECamEvent2CameraSettingContinuousZoomPercentageCompletion = {KUidECamEvent2CameraSettingContinuousZoomPercentageCompletionUidValue};
-
-/**
-Notifies that unrequested feature changes have occurred. The method GetIndirectFeatureChangesL() is called to
-retrieve the list of unrequested feature changes. The unrequested feature changes are ECAM component wide.
-
-This TUid is available from the following methods only to the API clients using CCamera::New2L() or CCamera::NewDuplicate2L():
-void CCamera::CCameraAdvancedSettings::GetSupportedSettingsL(RArray<TUid>& aSettings) const;
-void CCamera::CCameraAdvancedSettings::GetActiveSettingsL(RArray<TUid>& aActiveSettings) const;
-void CCamera::CCameraAdvancedSettings::GetDisabledSettingsL(RArray<TUid>& aDisabledSettings) const;
-
-Note: TECAMEvent2::iParam represents the TInt used to obtain a uid which represents the requested feature change.
-
-@publishedPartner
-@prototype
-*/
-static const TUid KUidECamEvent2IndirectFeatureChange = {KUidECamEvent2IndirectFeatureChangeUidValue};
-
-
-/**
-Viewfinder fading effect has been set.
-This event should be packed in TECAMEvent2 class.
-
-Note: TECAMEvent2::iParam represents viewfinder handle.
-
-@internalTechnology
-*/
-static const TUid KUidECamEvent2ViewFinderFadingEffect = {KUidECamEvent2ViewFinderFadingEffectUidValue};
-
-/**
-Event indicating auto aperture is being used.
-This event should be packed in TECAMEvent2 class.
-
-This TUid is available from the following methods only to the API clients using CCamera::New2L() or CCamera::
-NewDuplicate2L():
-void CCamera::CCameraAdvancedSettings::GetSupportedSettingsL(RArray<TUid>& aSettings) const;
-void CCamera::CCameraAdvancedSettings::GetActiveSettingsL(RArray<TUid>& aActiveSettings) const;
-void CCamera::CCameraAdvancedSettings::GetDisabledSettingsL(RArray<TUid>& aDisabledSettings) const;
-
-Note: TECAMEvent2::iParam represents actual value of aperture being used if camera is capable of. Otherwise, KErrNotFound will be retrieved.
-
-@internalTechnology
-*/
-static const TUid KUidECamEvent2CameraSettingAutoAperture = {KUidECamEvent2CameraSettingAutoApertureUidValue};
-
-/**
-Event providing focussing feedback. The focussing feedback will be provided whenever the focussing state changes for the
-selected spot combination.
-This event should be packed in TECAMEvent2 class.
-Note: TECAMEvent2::iParam represents bitfield of chosen spots which are in focus.
-Note: TECAMEvent2::iParam1 represents bitfield of chosen spots which are not in focus.
-
-@internalTechnology
-*/
-static const TUid KECamEvent2ImageCaptureControlFocussingInformation = {KECamEvent2ImageCaptureControlFocussingInformationUidValue};
-
-/**
-Focussing spot combination. This event tells about completion of the setting operation for the spot combination.
-This event should be packed in TECAMEvent2 class.
-
-@note static_cast<CCamera::CCameraAdvancedSettings::TFocusMode>(TECAMEvent2::iParam) represents the focus mode for
- which the spot combination has to be set for receiving focussing feedback.
-
-@internalTechnology
-*/
-static const TUid KUidECamEvent2ImageCaptureControlSpotCombination = {KUidECamEvent2ImageCaptureControlSpotCombinationUidValue};
-
-/**
-Viewfinder magnification has been set.
-This event should be packed in TECAMEvent2 class.
-
-Note: TECAMEvent2::iParam represents viewfinder handle.
-
-@internalTechnology
-*/
-static const TUid KUidECamEvent2ViewFinderMagnification = {KUidECamEvent2ViewFinderMagnificationUidValue};
-
-/**
-Notifies the current camera reserver that the camera control will be forcefully overtaken by another requesting client
-after a specific time interval.
-
-This TUid is available from the following methods only to the API clients using CCamera::New2L() or CCamera::NewDuplicate2L():
-void CCamera::CCameraAdvancedSettings::GetSupportedSettingsL(RArray<TUid>& aSettings) const;
-void CCamera::CCameraAdvancedSettings::GetActiveSettingsL(RArray<TUid>& aActiveSettings) const;
-void CCamera::CCameraAdvancedSettings::GetDisabledSettingsL(RArray<TUid>& aDisabledSettings) const;
-
-@note TTimeIntervalMicroSeconds32(TECAMEvent2::iParam) represents the maximum time to wait.
- TECAMEvent2::iParam needs to be passed as argument in order to construct the TTimeIntervalMicroSeconds32 object.
-
-Note: TECAMEvent2::iParam1 represents the priority of the requestor client to whom the camera control will be forcibly
-passed after a specific time interval.
-
-@internalTechnology
-*/
-static const TUid KUidECamEvent2CameraRequestForcedTimedTakeOver = {KUidECamEvent2CameraRequestForcedTimedTakeOverUidValue};
-
-/**
-Notifies the current camera reserver that another client is requesting for camera control in a specific time interval.
-
-This TUid is available from the following methods only to the API clients using CCamera::New2L() or CCamera::NewDuplicate2L():
-void CCamera::CCameraAdvancedSettings::GetSupportedSettingsL(RArray<TUid>& aSettings) const;
-void CCamera::CCameraAdvancedSettings::GetActiveSettingsL(RArray<TUid>& aActiveSettings) const;
-void CCamera::CCameraAdvancedSettings::GetDisabledSettingsL(RArray<TUid>& aDisabledSettings) const;
-
-@note TTimeIntervalMicroSeconds32(TECAMEvent2::iParam) represents the maximum requested time within which the current
- reserver may release the camera if it wishes to do so.
- TECAMEvent2::iParam needs to be passed as argument in order to construct the TTimeIntervalMicroSeconds32 object.
-
-Note: TECAMEvent2::iParam1 represents the priority of the requestor client to whom the camera control will be passed
-should the current reserver wish to do so.
-
-@internalTechnology
-*/
-static const TUid KUidECamEvent2CameraRequestTimedTakeOver = {KUidECamEvent2CameraRequestTimedTakeOverUidValue};
-
-/**
-Notifies the manual gain setting completion for the particular channel.
-
-This TUid is available from the following methods only to the API clients using CCamera::New2L() or CCamera::NewDuplicate2L():
-void CCamera::CCameraAdvancedSettings::GetSupportedSettingsL(RArray<TUid>& aSettings) const;
-void CCamera::CCameraAdvancedSettings::GetActiveSettingsL(RArray<TUid>& aActiveSettings) const;
-void CCamera::CCameraAdvancedSettings::GetDisabledSettingsL(RArray<TUid>& aDisabledSettings) const;
-
-Note: TECAMEvent2::iParam represents the specific channel for which the manual gain value has been set.
-
-@internalTechnology
-*/
-static const TUid KUidECamEvent2CameraSettingManualGain = {KUidECamEvent2CameraSettingManualGainUidValue};
-
-/**
-Retrieves the optimal focussing feedback while using manual focus. This will be issued as a result of setting operation
-CCamera::CCameraAdvancedSettings::SetFocusDistance(TInt aDistance).
-
-This TUid is available from the following methods only to the API clients using CCamera::New2L() or CCamera::NewDuplicate2L():
-void CCamera::CCameraAdvancedSettings::GetSupportedSettingsL(RArray<TUid>& aSettings) const;
-void CCamera::CCameraAdvancedSettings::GetActiveSettingsL(RArray<TUid>& aActiveSettings) const;
-void CCamera::CCameraAdvancedSettings::GetDisabledSettingsL(RArray<TUid>& aDisabledSettings) const;
-
-@note If TECAMEvent2::iParam > 1, information is unavailable; if TECAMEvent2::iParam < 0, error case.
- Otherwise, static_cast<TBool>(TECAMEvent2::iParam) retrieves whether optimal focussing has been achieved or not.
-
-@internalTechnology
-*/
-static const TUid KUidECamEvent2CameraSettingFocusDistance = {KUidECamEvent2CameraSettingFocusDistanceUidValue};
-
-/**
-Instructs the client to change its priority in order to allow the legacy client to get hold of the camera. Client should
-restore their priority when they receive the notification 'KUidECamEventCameraSettingRestoreClientPriority'.
-
-This TUid is available from the following methods only to the API clients using CCamera::New2L() or CCamera::NewDuplicate2L():
-void CCamera::CCameraAdvancedSettings::GetSupportedSettingsL(RArray<TUid>& aSettings) const;
-void CCamera::CCameraAdvancedSettings::GetActiveSettingsL(RArray<TUid>& aActiveSettings) const;
-void CCamera::CCameraAdvancedSettings::GetDisabledSettingsL(RArray<TUid>& aDisabledSettings) const;
-
-Note: TECAMEvent2::iParam represents the target priority to which the client should set itself using the method SetClientPriorityL()
-
-@internalTechnology
-*/
-static const TUid KUidECamEvent2CameraSettingChangeClientPriority = {KUidECamEvent2CameraSettingChangeClientPriorityUidValue};
-
-/**
-Event indicating image enhancement setting has been applied.
-This event should be packed in TECAMEvent2 class.
-
-Note: TECAMEvent2::iParam represents viewfinder handle.
-
-@internalTechnology
-*/
-static const TUid KUidECamEvent2ViewFinderImageEnhancement = {KUidECamEvent2ViewFinderImageEnhancementUidValue};
-
-/**
-Provides the various available schemes for event filtering. This will inform how the listed uids have to be interpreted
-by the implementation for filtering the events.
-
-@see CCamera::CCameraAdvancedSettings::RegisterEventsL(TECAMEventFilterScheme aEventFilter, const RArray<TUid>& aEvents);
-@see CCamera::CCameraAdvancedSettings::GetRegisterEventsL(TECAMEventFilterScheme aEventFilter, RArray<TUid>& aEvents) const;
-
-@internalTechnology
-*/
-enum TECAMEventFilterScheme
- {
- /** Black listing will mean not to receive specific events */
- EECAMEventFilterSchemeBlackList,
- /** White listing will mean to receive only specific events */
- EECAMEventFilterSchemeWhiteList
- };
/**
Special type of TECAMEvent class used to retrieve some extra information from particular events received
@@ -942,6 +704,7 @@
class CCameraPostImageCaptureControl;
class CCameraVideoCaptureControl;
class CCameraDirectSnapshot;
+ class CCameraContinuousZoom;
public:
/** Possible still image and video frame formats
@@ -977,19 +740,18 @@
EFormatYUV420Interleaved = 0x0400,
/** 4:2:0 format, 8 bits per sample, Y00Y01Y02Y03...U0...V0... */
EFormatYUV420Planar = 0x0800,
- /** 4:2:2 format, 8 bits per sample, UY0VY1. */
+ /** 4:2:2 format, 8 bits per sample, UY0VY1. Maps to Graphics' EUidPixelFormatYUV_422Interleaved in pixelformats.h. */
EFormatYUV422 = 0x1000,
- /** 4:2:2 format, 8 bits per sample, Y1VY0U. */
+ /** 4:2:2 format, 8 bits per sample, Y1VY0U. Maps to Graphics' EUidPixelFormatYUV_422InterleavedReversed in pixelformats.h. */
EFormatYUV422Reversed = 0x2000,
/** 4:4:4 format, 8 bits per sample, Y00U00V00 Y01U01V01... */
EFormatYUV444 = 0x4000,
/** 4:2:0 format, 8 bits per sample, Y00Y01Y02Y03...U0V0... */
EFormatYUV420SemiPlanar = 0x8000,
/** CFbsBitmap object with display mode EColor16MU. */
- EFormatFbsBitmapColor16MU = 0x00010000,
+ EFormatFbsBitmapColor16MU = 0x00010000,
/** Motion JPEG for video
- @note This value is available only to the API clients using CCamera::New2L() or CCamera::NewDuplicate2L()
-
+ @note This value is available only to the API clients using CCamera::New2L() or CCamera::NewDuplicate2L().
@internalTechnology
*/
EFormatMJPEG = 0x00020000,
@@ -997,11 +759,16 @@
/**
Compressed H264 video format.
@note This value is available only to the API clients using CCamera::New2L() or CCamera::NewDuplicate2L().
-
- @publishedPartner
@prototype
*/
- EFormatEncodedH264 = 0x00040000
+ EFormatEncodedH264 = 0x00040000,
+
+ /**
+ 4:2:2 format, 8 bits per sample, Y0UY1V. Maps to Graphics' EUidPixelFormatYUV_422Reversed in pixelformats.h.
+ @note This value is available only to the API clients using CCamera::New2L() or CCamera::NewDuplicate2L().
+ @prototype
+ */
+ EFormatYUV222ReversedV2 = 0x00080000
};
/** Specifies whether contrast is set automatically. */
@@ -1043,7 +810,8 @@
/** Specifies the type of exposure. - EExposureAuto is the default value. */
enum TExposure
{
- /** Set exposure automatically. Default, always supported. */
+ /** Set exposure automatically. Default, always supported.
+ This may imply auto aperture so clients may receive a KUidEcamEvent2CameraSettingAutoAperture event notification some time later. */
EExposureAuto = 0x0000,
/** Night-time setting for long exposures. */
EExposureNight = 0x0001,
@@ -1063,7 +831,8 @@
EExposureProgram = 0x0080,
/** Aperture setting is given priority. */
EExposureAperturePriority = 0x0100,
- /** Shutter speed setting is given priority. */
+ /** Shutter speed setting is given priority.
+ This may imply auto aperture so clients may receive a KUidEcamEvent2CameraSettingAutoAperture event notification some time later. */
EExposureShutterPriority = 0x0200,
/** User selectable exposure value setting. */
EExposureManual = 0x0400,
@@ -1096,42 +865,42 @@
EWBManual = 0x0080,
/** Shade */
EWBShade = 0x0100,
- /** auto skin
-
- If New2L()/NewDuplicate2L() are not used to create camera object, this
- enum value would be considered as unrecognized and filtered out in 'supported'
+ /** auto skin
+
+ If New2L()/NewDuplicate2L() are not used to create camera object, this
+ enum value would be considered as unrecognized and filtered out in 'supported'
or 'getter' methods.
*/
EWBAutoSkin = 0x0200,
- /** horizon
-
- If New2L()/NewDuplicate2L() are not used to create camera object, this
- enum value would be considered as unrecognized and filtered out in 'supported'
+ /** horizon
+
+ If New2L()/NewDuplicate2L() are not used to create camera object, this
+ enum value would be considered as unrecognized and filtered out in 'supported'
or 'getter' methods.
*/
EWBHorizon = 0x0400,
- /** Daylight Under Water
-
- If New2L()/NewDuplicate2L() are not used to create camera object, this
- enum value would be considered as unrecognized and filtered out in 'supported'
+ /** Daylight Under Water
+
+ If New2L()/NewDuplicate2L() are not used to create camera object, this
+ enum value would be considered as unrecognized and filtered out in 'supported'
or 'getter' methods.
*/
EWBDaylightUnderWater = 0x0800
};
-
+
public:
- /**
+ /**
Determines the number of cameras on the device.
@return Count of cameras present on the device.
*/
IMPORT_C static TInt CamerasAvailable();
- /**
+ /**
@deprecated Use static CCamera* New2L(MCameraObserver2& aObserver,TInt aCameraIndex,TInt aPriority);
-
+
Creates an object representing a camera.
-
+
@param aObserver
Reference to class derived from MCameraObserver2 designed to receive
notification of asynchronous event completion.
@@ -1149,25 +918,25 @@
@leave KErrNotSupported if aCameraIndex is out of range.
@leave KErrPermissionDenied if the application does not have
the UserEnvironment capability.
-
+
@capability UserEnvironment
An application that creates a CCamera object must have
the UserEnvironment capability.
@capability MultimediaDD
A process requesting or using this method that has MultimediaDD capability will
- always have precedence over a process that does not have MultimediaDD.
+ always have precedence over a process that does not have MultimediaDD.
- @note Applications using this method to create camera object may not receive enums/uids added in future(after being baselined).
- To receive them, they should rather use New2L() or NewDuplicate2L(), in which case, they should prepare
+ @note Applications using this method to create camera object may not receive enums/uids added in future(after being baselined).
+ To receive them, they should rather use New2L() or NewDuplicate2L(), in which case, they should prepare
themselves to receive unrecognised values.
*/
IMPORT_C static CCamera* NewL(MCameraObserver2& aObserver,TInt aCameraIndex,TInt aPriority);
-
- /**
- Creates an object representing a camera.
- Clients prepare themselves to receive unrecognised enum, uids etc.
-
+
+ /**
+ Creates an object representing a camera.
+ Clients prepare themselves to receive unrecognised enum, uids etc.
+
@param aObserver
Reference to class derived from MCameraObserver2 designed to receive
notification of asynchronous event completion.
@@ -1185,7 +954,7 @@
@leave KErrNotSupported if aCameraIndex is out of range.
@leave KErrPermissionDenied if the application does not have
the UserEnvironment capability.
-
+
@capability UserEnvironment
An application that creates a CCamera object must have
the UserEnvironment capability.
@@ -1193,15 +962,15 @@
@capability MultimediaDD
A process requesting or using this method that has MultimediaDD capability will
always have precedence over a process that does not have MultimediaDD.
-
- @note Clients using this creation method should prepare themselves to receive any unrecognised enum values, uids
+
+ @note Clients using this creation method should prepare themselves to receive any unrecognised enum values, uids
from 'supported' or 'getter' methods
*/
IMPORT_C static CCamera* New2L(MCameraObserver2& aObserver,TInt aCameraIndex,TInt aPriority);
-
- /**
+
+ /**
Creates an object representing a camera.
-
+
@param aObserver
Reference to class derived from MCameraObserver designed to receive
notification of asynchronous event completion.
@@ -1213,23 +982,23 @@
@leave KErrNotSupported if aCameraIndex is out of range.
@leave KErrPermissionDenied if the application does not have
the UserEnvironment capability.
-
+
@return Pointer to a fully constructed CCamera object. Ownership is passed
to the caller.
-
+
@capability UserEnvironment
An application that creates a CCamera object must have
the UserEnvironment capability.
-
- @note Applications using this method to create camera object may not receive enums/uids added in future(after being baselined).
- To receive them, they should rather use New2L() or NewDuplicate2L(), in which case, they should prepare
+
+ @note Applications using this method to create camera object may not receive enums/uids added in future(after being baselined).
+ To receive them, they should rather use New2L() or NewDuplicate2L(), in which case, they should prepare
themselves to receive unrecognised values.
*/
IMPORT_C static CCamera* NewL(MCameraObserver& aObserver,TInt aCameraIndex);
-
- /**
+
+ /**
@deprecated Use static CCamera* NewDuplicate2L(MCameraObserver2& aObserver,TInt aCameraHandle);
-
+
Duplicates the original camera object for use by, for example, multimedia systems.
May leave with KErrNoMemory or KErrNotFound if aCameraHandle is not valid.
@@ -1720,6 +1489,10 @@
@leave KErrNoMemory
@leave KErrNotReady if PowerOn() hasn't been called successfully.
+ @note Depending on the ECAM implementation and underlying hardware, preparing both image capture and video capture
+ at the same time may not be possible. In this case, the recommendation is to unprepare video capture before preparing
+ image capture if PrepareVideoCaptureL() has already been called.
+
@see CCamera::CCameraPreImageCaptureControl::PrepareImageCapture(TPrepareImageParameters aPrepareImageParameters)
*/
virtual void PrepareImageCaptureL(TFormat aImageFormat,TInt aSizeIndex)=0;
@@ -1751,6 +1524,10 @@
@leave KErrNotReady if PowerOn()
hasn't been called successfully.
+ @note Depending on the ECAM implementation and underlying hardware, preparing both image capture and video capture
+ at the same time may not be possible. In this case, the recommendation is to unprepare video capture before preparing
+ image capture if PrepareVideoCaptureL() has already been called.
+
@see CCamera::CCameraPreImageCaptureControl::PrepareImageCapture(TPrepareImageParameters aPrepareImageParameters)
*/
virtual void PrepareImageCaptureL(TFormat aImageFormat,TInt aSizeIndex,const TRect& aClipRect)=0;
@@ -1815,6 +1592,10 @@
@leave May leave with KErrNotSupported, KErrNoMemory, or KErrNotReady if PowerOn()
hasn't been called successfully.
+ @note Depending on the ECAM implementation and underlying hardware, preparing both image capture and video capture
+ at the same time may not be possible. In this case, the recommendation is to unprepare image capture before preparing
+ video capture if PrepareImageCaptureL() has already been called.
+
@see CCamera::CCameraVideoCaptureControl::PrepareVideoCapture(const TPrepareVideoParameters& aPrepareVideoParameters)
*/
virtual void PrepareVideoCaptureL(TFormat aFormat,TInt aSizeIndex,TInt aRateIndex,TInt aBuffersToUse,TInt aFramesPerBuffer)=0;
@@ -1848,6 +1629,10 @@
@leave KErrNoMemory,
@leave KErrInUse if Reserve() hasn't been called successfully
@leave KErrNotReady if PowerOn() hasn't been called successfully.
+
+ @note Depending on the ECAM implementation and underlying hardware, preparing both image capture and video capture
+ at the same time may not be possible. In this case, the recommendation is to unprepare image capture before preparing
+ video capture if PrepareImageCaptureL() has already been called.
@see CCamera::CCameraVideoCaptureControl::PrepareVideoCapture(const TPrepareVideoParameters& aPrepareVideoParameters)
*/
@@ -1974,7 +1759,6 @@
/**
@internalComponent
-
Returns the camera API version no.
*/
IMPORT_C TInt CameraVersion();
@@ -2051,68 +1835,12 @@
TTimeIntervalMicroSeconds iElapsedTime;
};
-/** Specifies whether the camera is reserved or not.
- The enumeration list may be extended in future.
-
-@publishedPartner
-@prototype
-*/
-enum TECamReserveStatus
- {
- /** Camera Status unknown */
- ECameraStatusUnknown,
- /** Camera is reserved */
- ECameraReserved,
- /** Camera is unreserved */
- ECameraUnReserved
- };
-
-/** Mixin base class for camera clients to handle the notification of Reserve status.
-
-Client must implement MReserveObserver in order to handle the notifications and take appropriate steps accordingly.
-
-@note By the time client gets unreserved status via callback, the camera may be on its way getting reserved by another client who
- might be continuously polling for it.
- So, there is no guarantee that the client will be able to reserve it. But it is guaranteed that the client will
- receive the notification about change in reserve status.
+#ifndef SYMBIAN_ENABLE_SPLIT_HEADERS
+#include <ecamconst.h>
+#endif
-@publishedPartner
-@prototype
-*/
-class MReserveObserver
- {
-public:
- /**
- This notification is send to provide the reserve status for the camera.
-
- @param aCameraIndex
- The camera index for which the Reserve status has to be provided.
-
- @param aReserveStatus
- The reserve status for the camera.
-
- @param aErrorCode
- The error value.
-
- @note If error is not KErrNone, then the client is expected to destroy the CCameraStatusWatch retrieved through
- TReservedInfo::SubscribeReserveInfoL and re-subscribe if desired.
- */
- virtual void ReserveStatus(TInt iCameraIndex, TECamReserveStatus aReserveStatus, TInt aErrorCode) =0;
- };
+class MReserveObserver;
-class CCameraStatusWatch;
-
-/**
-@publishedPartner
-@prototype
-
-Client uses it to asynchronously receive the reserve status of a camera index through MReserveObserver
-*/
-class TReservedInfo
- {
-public:
- IMPORT_C static void SubscribeReserveInfoL(MReserveObserver& aReserveObserver, TInt aCameraIndex, CCameraStatusWatch*& aCameraStatusWatch);
- };
/**
An active object class implemented by Symbian and used to subscribe for the updates in the Properties, retrieve the
@@ -2123,13 +1851,10 @@
*/
class CCameraStatusWatch : public CActive
{
- friend void TReservedInfo::SubscribeReserveInfoL(MReserveObserver& aReserveObserver, TInt aCameraIndex, CCameraStatusWatch*& aCameraStatusWatch);
-
public:
IMPORT_C ~CCameraStatusWatch();
-
+ static CCameraStatusWatch* NewL(MReserveObserver& aReserveObserver, TInt aCameraIndex, TInt aSecureId);
private:
- static CCameraStatusWatch* NewL(MReserveObserver& aReserveObserver, TInt aCameraIndex, TInt aSecureId);
CCameraStatusWatch(MReserveObserver& aReserveObserver, TInt aCameraIndex, TInt aSecureId);
void ConstructL();
@@ -2142,5 +1867,6 @@
TInt iCameraIndex;
TInt iSecureId;
};
+
#endif // ECAM_H