diff -r e3cdd00b5ae3 -r 27fe719c32e6 camappengine/Engine/Inc/CaeVideoQualityLevels.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/camappengine/Engine/Inc/CaeVideoQualityLevels.h Wed Sep 01 12:23:23 2010 +0100 @@ -0,0 +1,231 @@ +/* +* Copyright (c) 2002 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: Camera Application Engine video quality level and container +* +*/ + + + +#ifndef CAEVIDEOQUALITYLEVELS_H +#define CAEVIDEOQUALITYLEVELS_H + +// INCLUDES +#include +#include +#include +#include "CaeSdKeys.h" +#include "CaeQualityLevels.h" + +// CONSTANTS + +const TInt KCaeMaxVideoStringParLength = 32; +const TInt KCaeMaxAudioTypeStringParLength = 4; + +const TInt KCaeMaxVideoQltyLevelCount = 6; + +const TInt KImgWidthSubQCIF = 128; +const TInt KImgHeightSubQCIF = 96; + +const TInt KImgWidthQCIF = 176; +const TInt KImgHeightQCIF = 144; + +const TInt KImgWidthCIF = 352; +const TInt KImgHeightCIF = 288; + +_LIT8(KVideoMimeType, "video/3gpp"); + +_LIT(KPreferredSupplier, "Nokia"); + +_LIT8(KVideoType, "video/H263-2000"); + +_LIT8(KAudioType, " AMR"); + + +// FORWARD DECLARATIONS +class CVideoQualityLevel; + + +// CLASS DECLARATION + +/** +* Camera Application Engine video recording quality levels container. +* +*/ +NONSHARABLE_CLASS( CCaeVideoQualityLevelsCont ) : public CCaeQualityLevelsCont + { + + public: // Constructors and destructor + + /** + * Destructor. + */ + virtual ~CCaeVideoQualityLevelsCont(); + + /** + * Two-phased constructor. + */ + static CCaeVideoQualityLevelsCont* NewL(); + + /** + * Initializes quality levels to hardcoded default values. + * @since 2.1 + * @return The count of quality levels initialized + */ + TInt InitDefaultsL(); + + /** + * Gets the quality level count. + * @since 2.1 + * @return Quality level count + */ + TInt Count() const; + + /** + * Gets the specified quality level. + * @since 2.1 + * @param aIndex Quality level index + * @return Video quality level + */ + CVideoQualityLevel& At( + TInt aIndex ) const; + + /** + * Gets the Shared Data key of specified quality level. + * @since 2.1 + * @param aIndex Quality level index + * @return Shared Data key + */ + const TDes& Key( + TInt aIndex ) const; + + private: + + /** + * C++ constructor. + */ + CCaeVideoQualityLevelsCont(); + + /** + * Symbian OS 2nd phase constructor that can leave. + */ + void ConstructL(); + + private: + + /** + * Resizes quality level array. + * @since 2.1 + * @param aQualityLevelCount Quality level count for the new array + * @return void + */ + void ResizeL( + TInt aQualityLevelCount ); + + /** + * Gets the quality level count Shared Data key. + * @since 2.1 + * @return Quality level count Shared Data key + */ + const TDesC& QltyLevelCountSdKey() const; + + private: // For Shared Data support. + + /** + * Creates quality level string for SharedData Camera ini file. + * @since 2.1 + * @param aIndex Quality level index + * @param aDefaultQualityLevel Output quality level string + * @return void + */ + void CreateQualityLevelString( + TInt aIndex, + TDes& aDefaultQualityLevel ); + + /** + * Parses quality level string to quality level object data. + * @since 2.1 + * @param aQualityLevelString Quality level string to parse + * @param aIndex Quality level index + * @return void + */ + void ParseQualityLevelFromStringL( + const TDesC& aQualityLevelString, + TInt aIndex ); + + private: + + // Supported video recording quality levels. + CArrayFixFlat* iQualityLevels; + + // Quality level count Shared Data key. + const TDesC& iQltyLevelCountSdKey; + }; + + + +// CLASS DECLARATION + +/** +* Camera Application Engine video recording quality level. +* +*/ +NONSHARABLE_CLASS( CVideoQualityLevel ) : public CQualityLevel + { + public: + + /** + * Constructor. + */ + CVideoQualityLevel(); + + /** + * Destructor. + */ + virtual ~CVideoQualityLevel(); + + public: + + // The video recording frame size. + TSize iFrameSize; + + // The video recording frame rate. + TReal32 iFrameRate; + + // The video recording bit rate. + TInt iBitRate; + + // A Boolean indicating if video recording audio is enabled or not. + TBool iAudioEnabled; + + // The video recording audio bit rate. + TInt iAudioBitRate; + + // The video MIME type (e.g. "video/3gpp"). + TBuf8 iMimeType; + + // The preferred supplier of video controller (e.g. "Company X"). + TBuf iPreferredSupplier; + + // The video type (e.g. "video/H263-2000"). + TBuf8 iVideoType; + + // The audio type expressed with four characters (e.g. " AMR"). + TBuf8 iAudioType; + + // The estimated video recording bit rate to storage (bits per second). + TInt iStorageRate; + }; + + +#endif // CAEVIDEOQUALITYLEVELS_H