diff -r 951a5db380a0 -r e0b5df5c0969 videoeditorengine/vedengine/inc/vedqualitysettingsapi.h --- a/videoeditorengine/vedengine/inc/vedqualitysettingsapi.h Fri Jan 29 14:08:33 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,152 +0,0 @@ -/* -* Copyright (c) 2010 Ixonos Plc. -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of the "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: -* Ixonos Plc -* -* Description: -* -*/ - - -#ifndef __VEDQUALITYSETTINGSAPI_H__ -#define __VEDQUALITYSETTINGSAPI_H__ - -#include -#include "imagingconfigmanager.h" - - - -const TUint KQSMaxShortStringLength = 16; -const TUint KQSMaxLongStringLength = 256; - - - -/* - * Video quality set structure - */ -struct SVideoQualitySet - { - public: - // Video aspect ratio: normal means one of the standard resolutions like QCIF, QVGA, CIF, VGA, if something else, like 16:9 - TBool iVideoAspectRatioNormal; - // Video file format mime type, e.g. "video/3gpp" - TText8 iVideoFileMimeType[KQSMaxShortStringLength]; - // Video codec mime type, e.g. "video/mp4v-es" - TText8 iVideoCodecMimeType[KQSMaxLongStringLength]; - // Video picture width in pixels (luminance) - TInt iVideoWidth; - // Video picture height in pixels (luminance) - TInt iVideoHeight; - // Video framerate in fps - TReal iVideoFrameRate; - // Video bitrate in bps - TInt iVideoBitRate; - // Random access point rate, in pictures per second. For example, to request a random access point every ten seconds, set the value to 0.1 - TReal iRandomAccessRate; - // Audio codec FourCC, e.g. " AMR" - TText8 iAudioFourCCType[KQSMaxShortStringLength]; - // Audio bitrate in bps - TInt iAudioBitRate; - // Audio sampling rate in Hz - TInt iAudioSamplingRate; - // Number of audio channels; in practice mono(1) vs stereo(2) - TInt iAudioChannels; - }; - - -/* - * API class for getting a quality set for a given level or given resolution - */ -class CVideoQualitySelector : public CBase - { - public: - /* - * Enumeration for nominal video quality levels. Client must use these enumerations to get quality sets. - * However, if NumberOfQualityLevels() below indicates there are more than ENumberOfNominalLevels, client - * can use values in-between the nominal values to get set for some other quality level. - * It is however up to the implementation of the API to map such intermediate values to actual levels - */ - enum TVideoQualityLevels - { - // client can try asking values in between these but the class may round the values depending on the availability - EVideoQualityMin = 0, // if there are several MMS compatible settings, EVideoQualityMMS is not the lowest. However level cannot go below this value - EVideoQualityMMS = 10, // use this when MMS compatible settings are needed - EVideoQualityNormal = 20, // use this when normal quality settings are needed, i.e. typically higher quality than MMS, but possibly not the highest still - EVideoQualityHigh = 30, // use this when highest possible quality settings are needed - EVideoQualityNominalGranularity = 10, - ENumberOfNominalLevels = 3 - }; - - public: - /* - * Create new CVideoQualitySelector object - */ - static CVideoQualitySelector* NewL(); - - static CVideoQualitySelector* NewLC(); - - /* - * Destructor - */ - ~CVideoQualitySelector(); - - /* - * Get number of defined quality levels. This is always at least ENumberOfNominalLevels but can be higher - */ - TInt NumberOfQualityLevels(); - /* - * Get quality set associated with the given level. The level should be between EVideoQualityHigh and EVideoQualityMin. - * One the defined nominal levels should be used especially if NumberOfQualityLevels() == ENumberOfNominalLevels. - * If there is no set associated with given intermediate level, then set from a nearest level is returned. - */ - void GetVideoQualitySetL( SVideoQualitySet& aSet, TInt aLevel ); - /* - * Get quality set associated with the given level. Otherwise the same as above but if aAspectRatioWide == ETrue, - * tries to find 16:9 aspect ratio settings, otherwise returns a set from the normal aspect ratio as above. - */ - void GetVideoQualitySetL( SVideoQualitySet& aSet, TInt aLevel, TBool aAspectRatioWide ); - /* - * Get quality set associated with the given video resolution. Leaves if there is no defined set for the resolution. - * E.g. if product configuration prefers QVGA over CIF, but client asks for CIF, this function leaves. The CIF settings - * can then be requested using the MIME-type - */ - void GetVideoQualitySetL( SVideoQualitySet& aSet, const TSize& aVideoResolution ); - /* - * Get quality set associated with the given video codec MIME-type. Leaves if there is no defined set for the MIME-type. - */ - void GetVideoQualitySetL( SVideoQualitySet& aSet, const TPtrC8& aVideoCodecMimeType ); - - private: - /* - * Default constructor - */ - CVideoQualitySelector(); - - /* - * Actual constructor - */ - void ConstructL(); - - /* - * Copies the values from the source set to the target set - */ - void MapQualitySet( SVideoQualitySet& aTargetSet, TVideoQualitySet& aSourceSet ); - - private: // Data - - CImagingConfigManager* iConfigManager; - - CArrayFixFlat* iQualityLevels; - - }; - -#endif