diff -r 61bc0f252b2b -r bac7acad7cb3 camerauis/cameraapp/generic/common/inc/camconfigurationtypes.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/camerauis/cameraapp/generic/common/inc/camconfigurationtypes.h Wed Sep 01 12:30:54 2010 +0100 @@ -0,0 +1,251 @@ +/* +* Copyright (c) 2007-2009 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: Types used by camera dynamic configuration. Previously +* defined separately for each product in camproductconstants.h +* +* +*/ + + +#ifndef CAMCONFIGURATIONTYPES_H +#define CAMCONFIGURATIONTYPES_H + + +// Video qualities +// Used to also index to the KVideoQualitySettings array. +// Make sure the CamUtility returns rigth count of +// supported video qualities. +enum TCamVideoQuality + { + EVideoHigh, + EVideoNormal, + EVideoMMS, + EVideoQualityLast + }; + + +enum TCamImageQuality + { + EImageQualityPrintHigh, + EImageQualityPrint, + EImageQualityPrintLow, + EImageQualityEmail, + EImageQualityMMS, + EImageQualitySecondary, + EImageQualityLast + }; + +enum TCamImageResolution + { + EImageResolutionMMS, // 0.3 MPix / MMS + EImageResolution0_8MP, // 0.8 MPix = XGA + EImageResolution1MP, // 1 MPix + EImageResolution1_3MP, // 1.3 MPix + EImageResolution2MP, // 2 MPix + EImageResolution3MP, // 3 MPix + EImageResolution5MP, // 5 MPix + EImageResolution8MP, // 8 MPix + EImageResolution12MP, // 12 MPix + EImageResolutionW6MP, // 6 MPix 16:9 + EImageResolutionW9MP, // 9 MPix 16:9 + EImageResolutionCIF, // CIF + EImageResolutionQVGA, // QVGA, for secondary camera + EImageResolutionWVGA, // WVGA + EImageResolutionLast // End marker + }; + +// Supported video resolutions +// Converted to TCamVideoResolution in MapVideoResolution +enum TVideoResolution + { + EVideoResolutionQCIF, + EVideoResolutionQVGA, + EVideoResolutionVGA, + EVideoResolutionNHD, + EVideoResolutionWVGA, + EVideoResolutionHD + }; + +// Image compression levels +enum TCamImageCompression + { + EPhotoQualitySuperFine = 99, + EPhotoQualityFine = 85, // 1:10 + EPhotoQualityStandard = 70, + EPhotoQualityBasic = 50, // 1:20 + EPhotoQualityMMS = 25 + }; + +// Image quality data +// typedef struct +struct TCamPhotoQualitySetting + { + TCamImageQuality iPhotoQualityId; + TCamImageResolution iPhotoResolution; + TInt iQualityLevel; // TCamImageCompression + }; // TCamPhotoQualitySetting; + +// Structure representing a video quality level +// The text pointers must be const, so no const_casts are needed +struct TVideoQualitySettings + { + TInt iQualityLevel; // identifier + TInt iVideoResolution; // resolution (ie CIF/QCIF) + TReal iVideoFrameRate; // video frame rate + TInt iVideoBitRate; // video bit rate + TInt iAudioBitRate; // audio bit rate + const TUint8* iVideoMimeType; // MIME type + const TUint16* iPreferredSupplier; // Supplier + const TUint8* iVideoCodec; // video codec + const TUint8* iAudioCodec; // audio codec + TInt iVideoFileType; // video file type (i.e mpeg4, H263) + TInt iVideoLength; // video length (max or short for sharing) + }; + + +// New dynamic configuration related types +// ----------------------------------------------------------------- + +// Settings slider and precapture quality icons +// Used for image and video quality data +struct TCamQualityIcons + { + TInt iSettingsIconId; + TInt iSettingsIconMask; + TInt iPrecapIconId; + TInt iPrecapIconMask; + }; + +// File type icon +struct TCamFileTypeIcons + { + TInt iIconId; + TInt iMask; + }; + +// Item types, used when appending data into integer arrays +enum TCamItemType + { + ECamItemSame, + ECamItemPhotoSize, + ECamItemPhotoQuality, + ECamItemSettingsIconId, + ECamItemPrecapIconId, + ECamItemSecondaryIconId, + ECamItemPhotoJpegSize, + ECamItemSeqPostProcSize + }; + +// Photo size. Used to create image size data (resolution+enums) constant array +struct TCamPhotoSize + { + TCamPhotoSizeId iSizeId; + TCamImageResolution iResolution; + TCamImageQualitySetting iQualitySettingId; + TInt iWidth; + TInt iHeight; + }; + +// Video size. Used to create video size data (resolution+enums) constant array +struct TCamVideoSize + { + TCamVideoResolution iCamVideoRes; + TVideoResolution iVideoRes; + TInt iWidth; + TInt iHeight; + }; + +// Image quality data structure, which contains all the +// information needed for each quality/size in the application +struct TCamImageQualityData + { + // This quality is for primary camera + TBool iPrimaryCamera; + + // Two different ways of representing the same image quality, + // used in different parts of the application + TCamPhotoSize iPhotoSize; + TCamPhotoQualitySetting iPhotoQualitySetting; + + // Description Id. Combination of size (5m/3m...), usage (print/email/...) + // and size (small/medium/large ). + TCamPhotoQualityDescription iDescription; + + // Quality icons + TCamQualityIcons iQualityIcons; + + // Estimated file size + TInt iFileSize; + }; + +struct TCamVideoQualityData + { + // Quality settings (resolution, bitrate, file type etc), which were + // previously in constant array KVideoQualitySettings + // iQualitySettings.iQuality level (0,1,...X) is used for indexing, last one is MMS + TVideoQualitySettings iQualitySettings; + + // Video resolution + TCamVideoResolution iVideoResolution; + + // High/(normal high)/normal/(normal low)/sharing + TCamVideoQualitySettings iQualitySetting; + + // Description ID for the quality + TCamVideoQualityDescription iDescription; + + // Icon IDs + TCamQualityIcons iQualityIcons; + + TCamFileTypeIcons iFileTypeIcons; + }; + +// Image type - small/medium/large +enum TCamImageType + { + ECamImageTypeSmall, + ECamImageTypeMedium, + ECamImageTypeLarge, + ECamImageTypeLast + }; + +// Photo description and matching quality (print/email/mms etc) +struct TCamImageQualityMapping + { + TCamPhotoQualityDescription iDesc; + TCamImageQuality iQuality; + }; + +// Mapping between CamcorderVisible value and video description +struct TCamVideoQualityMapping + { + TCamVideoQualityDescription iDesc; + TInt iCamcorderVisibleMin; + }; + +// Panics +enum TCamConfigurationPanics + { + ECamConfigPanicUnknownKey, + ECamConfigPanicUnknownType, + ECamConfigPanicNoQuality, + ECamConfigPanicNoDescription, + ECamConfigPanicNoVideoRes, + ECamConfigPanicNoVideoType, + ECamConfigPanicInvalidNumberOfQualities, + ECamConfigPanicInvalidItem + }; + +#endif // CAMCONFIGURATIONTYPES_H +