diff -r 000000000000 -r 951a5db380a0 videoeditorengine/vedengine/inc/vedcodecchecker.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/videoeditorengine/vedengine/inc/vedcodecchecker.h Fri Jan 29 14:08:33 2010 +0200 @@ -0,0 +1,173 @@ +/* +* 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: +* Header for vedcodecchecker.cpp. +* +*/ + + +#ifndef __VEDCODECCHECKER_H__ +#define __VEDCODECCHECKER_H__ + + +// FORWARD DECLARATIONS +class CVedVideoClip; + +// CONSTANTS +//WVGA task +//const TInt KNumResolutions = 6; +//const TInt KNumCodecs = 14; +const TInt KNumResolutions = 7; +const TInt KNumCodecs = 18; + +enum TResolution + { + EResolutionSubQCIF = 0, + EResolutionQCIF, + EResolutionCIF, + EResolutionQVGA, + EResolutionVGA16By9, + EResolutionVGA, + EResolutionWVGA, + EResolutionUnsupported + }; + +enum TCodec + { + ECodecH263BPLevel10 = 0, + ECodecH263BPLevel45, + ECodecMPEG4VSPLevel0, + ECodecMPEG4VSPLevel0B, + ECodecMPEG4VSPLevel1, + ECodecMPEG4VSPLevel2, + ECodecMPEG4VSPLevel3, + ECodecMPEG4VSPLevel4, + ECodecAVCBPLevel1, + ECodecAVCBPLevel1B, + ECodecAVCBPLevel1_1, + ECodecAVCBPLevel1_2, + ECodecAVCBPLevel1_3, + ECodecAVCBPLevel2, + //WVGA task + ECodecAVCBPLevel2_1, + ECodecAVCBPLevel2_2, + ECodecAVCBPLevel3, + ECodecAVCBPLevel3_1, + ECodecUnsupported + }; + +class CVedCodecChecker : public CBase + { + +public: // New functions + + /* Constructors. */ + static CVedCodecChecker* NewL(); + static CVedCodecChecker* NewLC(); + + /* Destructor. */ + virtual ~CVedCodecChecker(); + + /** + * Returns whether the given input clip is supported, + * i.e. if it can be decoded or not + * + * @param aClip Video clip + * @return TBool Is supported ? + */ + TBool IsSupportedInputClipL(CVedVideoClip *aClip); + + /** + * Returns whether the given output format is supported, + * i.e. if it can be encoded or not + * + * @param aMimeType Codec MIME type + * @param aResolution Desired resolution + * @return TBool Is supported ? + */ + TBool IsSupportedOutputFormatL(const TPtrC8& aMimeType, TSize aResolution); + +private: // Private methods + + /** + * By default Symbian OS constructor is private. + */ + void ConstructL(); + + /** + * C++ default constructor + */ + CVedCodecChecker(); + + /** + * Determines supported input formats using CTRTranscoder + */ + void GetSupportedInputFormatsL(); + + /** + * Determines supported output formats using CTRTranscoder + */ + void GetSupportedOutputFormatsL(); + + /** + * Maps resolution from TSize to TResolution + * + * @param aResolution Resolution to map + * @return TResolution + */ + TResolution MapResolution(TSize aResolution); + + /** + * Maps profile-level-id to TCodec + * + * @param aProfileLevelId id to map + * @return TCodec Codec + */ + TCodec MapProfileLevelId(TInt aProfileLevelId); + + /** + * Parse codec MIME type + * + * @param aMimeType MIME to parse + * @param aResolution resolution to be used + * @return TCodec Codec + */ + TCodec ParseMimeType(const TPtrC8& aMimeType, TSize aResolution); + + /** + * Maps AVC level to TCodec + * + * @param aLevel Level to map + * @return TCodec Codec + */ + TCodec MapAVCLevel(TInt aLevel); + +private: // Data + + // table of supported input resolutions for each codec + TBool* iInputCodecsAndResolutions[KNumCodecs]; + + // table of supported output resolutions for each codec + TBool* iOutputCodecsAndResolutions[KNumCodecs]; + + // have output formats been checked ?? + TBool iOutputFormatsChecked; + +}; + +#endif // __VEDCODECCHECKER_H__ + + +// End of file