123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205 |
- /*
- * Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
- * All rights reserved.
- * This component and the accompanying materials are made available
- * under the terms of "Eclipse Public License v1.0"
- * which accompanies this distribution, and is available
- * at the URL "http://www.eclipse.org/legal/epl-v10.html".
- *
- * Initial Contributors:
- * Nokia Corporation - initial contribution.
- *
- * Contributors:
- *
- * Description: This Custom API provides use case hints to camera.
- * Application can use this custom interface to notify camera
- * which use case it's going to use before reserving camera.
- * Based on this information camera adaptation can optimize
- * resource allocation so that camera is able to start up faster
- * for the particular use case.
- *
- */
- #ifndef ECAMUSECASEHINTCUSTOMAPI_H
- #define ECAMUSECASEHINTCUSTOMAPI_H
- #include <e32base.h>
- #include <ecam.h>
- // CONSTANTS
- const TUid KCameraUseCaseHintUid = { 0x2002EA1A };
- // CLASS DECLARATION
- /**
- * Custom interface for providing use case hints to camera.
- */
- class MCameraUseCaseHint
- {
- public: // Enumerations
-
- /**
- * List of codecs for encoded video
- * @see HintDirectVideoCaptureL()
- */
- enum TVideoCodec
- {
- ECodecUnknown = 0,
- ECodecMpeg4,
- ECodecH263,
- ECodecH264,
- ECodecVC1,
- ECodecSorenson,
- ECodecOn2Vp6,
- ECodecOn2Vp7,
- };
-
- /**
- * List of profiles for encoded video
- * @see HintDirectVideoCaptureL()
- */
- enum TVideoProfile
- {
- EProfileUnknown = 0,
-
- EProfileMPEG4SpL0 = 0x1000,
- EProfileMPEG4SpL0b,
- EProfileMPEG4SpL1,
- EProfileMPEG4SpL2,
- EProfileMPEG4SpL3,
- EProfileMPEG4SpL4a,
- EProfileMPEG4SpL5,
- EProfileMPEG4SpL6,
-
- EProfileMPEG4AspL0,
- EProfileMPEG4AspL0b,
- EProfileMPEG4AspL1,
- EProfileMPEG4AspL2,
- EProfileMPEG4AspL3,
- EProfileMPEG4AspL3b,
- EProfileMPEG4AspL4,
- EProfileMPEG4AspL4a,
- EProfileMPEG4AspL5,
- EProfileMPEG4AspL6,
- EProfileH263P0L10 = 0x2000,
- EProfileH263P0L20,
- EProfileH263P0L30,
- EProfileH263P0L40,
- EProfileH263P0L45,
-
- EProfileH264BpL1 = 0x3000,
- EProfileH264BpL1b,
- EProfileH264BpL1_1,
- EProfileH264BpL1_2,
- EProfileH264BpL1_3,
- EProfileH264BpL2,
- EProfileH264BpL2_1,
- EProfileH264BpL2_2,
- EProfileH264BpL3,
- EProfileH264BpL3_1,
- EProfileH264BpL3_2,
- EProfileH264BpL4,
-
- EProfileH264MpL1,
- EProfileH264MpL1b,
- EProfileH264MpL1_1,
- EProfileH264MpL1_2,
- EProfileH264MpL1_3,
- EProfileH264MpL2,
- EProfileH264MpL2_1,
- EProfileH264MpL2_2,
- EProfileH264MpL3,
- EProfileH264MpL3_1,
- EProfileH264MpL3_2,
- EProfileH264MpL4,
-
- EProfileH264HpL1,
- EProfileH264HpL1b,
- EProfileH264HpL1_1,
- EProfileH264HpL1_2,
- EProfileH264HpL1_3,
- EProfileH264HpL2,
- EProfileH264HpL2_1,
- EProfileH264HpL2_2,
- EProfileH264HpL3,
- EProfileH264HpL3_1,
- EProfileH264HpL3_2,
- EProfileH264HpL4,
-
- EProfileVC1SpLL = 0x4000,
- EProfileVC1SpLM,
- EProfileVC1MpLL,
- EProfileVC1MpLM,
- EProfileVC1MpLH,
- EProfileVC1ApL0,
- EProfileVC1ApL1,
- EProfileVC1ApL2,
-
- EProfileSSGeneric = 0x5000,
-
- EProfileVP6Generic = 0x6000,
- };
-
- public: // Methods
- /**
- * Gives a hint to camera that client wants to capture encoded video.
- *
- * This method should be called after calling CCamera::New2L() and
- * before CCamera::Reserve().
- *
- * @param aCodec Codec of the encoded video.
- * @param aProfile Profile of the encoded video.
- * @param aResolution Resolution of the encoded video.
- * @leave KErrInUse if this method is not called at the right time.
- * @leave KErrNotSupported if given codec/profile/resolution is not
- * supported.
- */
- virtual void HintDirectVideoCaptureL(
- TVideoCodec aCodec,
- TVideoProfile aProfile,
- const TSize& aResolution ) = 0;
-
- /**
- * Gives a hint to camera that client wants to capture non-encoded video.
- *
- * This method should be called after calling CCamera::New2L() and
- * before CCamera::Reserve().
- *
- * @param aFormat Format. Must be one of the supported video frame formats
- (see TCameraInfo::iVideoFrameFormatsSupported).
- * @param aSizeIndex Size index. Must be in the range 0 to
- TCameraInfo::iNumVideoFrameSizesSupported-1 inclusive.
- * @param aRateIndex Rate index. Must be in the range 0 to
- TCameraInfo::iNumVideoFrameRatesSupported-1 inclusive.
- * @leave KErrInUse if this method is not called at the right time.
- * @leave KErrNotSupported if given format/size/rate is not supported.
- */
- virtual void HintVideoCaptureL(
- CCamera::TFormat aFormat,
- TInt aSizeIndex,
- TInt aRateIndex ) = 0;
-
- /**
- * Gives a hint to camera that client wants to capture still images.
- *
- * This method should be called after calling CCamera::New2L() and
- * before CCamera::Reserve().
- *
- * @param aFormat Format. Must be one of the supported still formats
- * (see TCameraInfo::iImageFormatsSupported).
- * @param aSizeIndex Size index. Must be in the range of 0 to
- * TCameraInfo::iNumImageSizesSupported-1 inclusive.
- * @leave KErrInUse if this method is not called at the right time.
- * @leave KErrNotSupported if given format/size/rate is not supported.
- */
- virtual void HintStillCaptureL(
- CCamera::TFormat aFormat,
- TInt aSizeIndex ) = 0;
- };
- #endif //ECAMUSECASEHINTCUSTOMAPI_H
|