diff -r 000000000000 -r 951a5db380a0 videoeditorengine/audioeditorengine/inc/AudCommon.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/videoeditorengine/audioeditorengine/inc/AudCommon.h Fri Jan 29 14:08:33 2010 +0200 @@ -0,0 +1,223 @@ +/* +* 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: +* Common definitions for audio. +* +*/ + + + +#ifndef __AUDCOMMON_H__ +#define __AUDCOMMON_H__ + +#include + + +const TInt KErrNoAudio = -400; +/** + * Enumeration for audio file formats. + */ +enum TAudFormat + { + EAudFormatUnrecognized = 100001, // should always be the first one + EAudFormat3GPP, + EAudFormatMP4, + EAudFormatAMR, + EAudFormatAMRWB, + EAudFormatMP3, + EAudFormatAAC_ADIF, + EAudFormatAAC_ADTS, + EAudFormatWAV, + EAudFormatLast // should always be the last one + }; + + +/** + * Enumeration for audio types (that is, codecs). + */ +enum TAudType + { + EAudTypeUnrecognized = 101001, // should always be the first one + EAudNoAudio, + EAudAMR, + EAudAMRWB, + EAudMP3, + EAudAAC_MPEG2, // EAudAAC_MPEG2 not used, all EAudAAC_MPEG is now 4 + EAudAAC_MPEG4, + EAudWAV, + EAudTypeLast // should always be the last one + }; + +/* + Purpose: MPEG-4 Audio object types. + Explanation: - */ +enum TAudAACObjectType +{ + EAudAACObjectTypeNone = -1, + EAudAACObjectTypeMain, + EAudAACObjectTypeLC, + EAudAACObjectTypeSSR, + EAudAACObjectTypeLTP, + EAudAACObjectTypeLast +}; + +/** + * Enumeration for audio extension types (AAC+) + */ +enum TAudExtensionType + { + EAudExtensionTypeNoExtension = 20000, + EAudExtensionTypeEnhancedAACPlus, + EAudExtensionTypeEnhancedAACPlusParametricStereo + + }; + +/** + * Constants for audio clip priorities. + */ +const TInt KAudClipPriorityHighest = 400; +const TInt KAudClipPriorityHigh = 300; +const TInt KAudClipPriorityNormal = 200; +const TInt KAudClipPriorityLow = 100; +const TInt KAudClipPriorityLowest = 0; + + + + + +/** + * Enumeration for channel modes + */ +enum TChannelMode + { + EAudChannelModeNotRecognized = 103001, + EAudStereo, + EAudDualChannel, + EAudSingleChannel, + EAudParametricStereoChannel + }; + +/** + * Enumeration for bitrate modes + */ +enum TBitrateMode + { + EAudBitrateModeNotRecognized = 103001, + EAudConstant, + EAudVariable + }; + +/** + * Class for storing dynamic level marks. + */ +class TAudDynamicLevelMark + { + +public: + + /** Mark time. */ + TTimeIntervalMicroSeconds iTime; + + /** Dynamic level (-63.5 ... +63.5) in dB:s + * one step represents 0.5 dB, hence values can be -127 ... +127 + */ + TInt8 iLevel; + + TAudDynamicLevelMark(TTimeIntervalMicroSeconds aTime, TInt aLevel) + { + iTime = aTime; + if ( aLevel < -127 ) + { + iLevel = -127; + } + else if (aLevel > 127 ) + { + iLevel = 127; + } + else + { + iLevel = TInt8(aLevel); + } + } + + TAudDynamicLevelMark(const TAudDynamicLevelMark& aMark) + { + iTime = aMark.iTime; + iLevel = aMark.iLevel; + } + }; + +/** + * Class for storing general properties about an audio file. + */ +class TAudFileProperties + { + +public: + + // File format + TAudFormat iFileFormat; + // Codec + TAudType iAudioType; + // Extension type + TAudExtensionType iAudioTypeExtension; + // Duration of the clip in microseconds + TTimeIntervalMicroSeconds iDuration; + // Sampling rate in Hertzes + TInt iSamplingRate; + // Bitrate in bits/s + TInt iBitrate; + // Channel mode + TChannelMode iChannelMode; + // Channel mode for extension + TChannelMode iChannelModeExtension; + // Bitrate mode (constant or variable) + TBitrateMode iBitrateMode; + // Number of bytes in a compressed frame + TInt32 iFrameLen; + // Is iFrameLen constant? + TBool iConstantFrameLength; + // Duration of decoded frame in microseconds + TTimeIntervalMicroSeconds iFrameDuration; + // Number of frames in the clip + TInt32 iFrameCount; +// TCodecMode iCodecMode; + // Number of frames in a sample (e.g. amr in mp4 has several) + TInt iNumFramesPerSample; + // Bitdepth in PCM data (usually 8, 16 or 24, only for PCM-data) + TInt iNumberOfBitsPerSample; + // Original field in MP3 fixed header + TBool iOriginal; + + // AAC object type + TAudAACObjectType iAACObjectType; + + TBool isCompatible(const TAudFileProperties /*&c2*/) const + { + + // Now that the clips can be decoded and encoded + // all the clips are "compatible" with each other + + return ETrue; + + + } + + }; + + + +#endif // __AUDCOMMON_H__ +