diff -r 951a5db380a0 -r d87d32eab1a9 videoeditorengine/vedengine/videoprocessor/inc/Parser.h --- a/videoeditorengine/vedengine/videoprocessor/inc/Parser.h Fri Jan 29 14:08:33 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,254 +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: -* Definition of an abstract base class for file format parsers. -* -*/ - - - -#ifndef __PARSER_H__ -#define __PARSER_H__ - -// INCLUDES -#ifndef __E32BASE_H__ -#include -#endif - -// CONSTANTS -// MACROS -// DATA TYPES -// FUNCTION PROTOTYPES -// FORWARD DECLARATIONS -// CLASS DECLARATION - -/** -* Base class for file format parser -* ?other_description_lines -*/ -class CParser : public CBase -{ - -public: // Constants - - enum TErrorCode - { - EInternalAssertionFailure = -2200, - EParserNotEnoughData = -2201, - EParserEndOfStream = -2202, - EParserBufferTooSmall = -2203, - EParserUnsupportedFormat = -2204, - EParserStreamCorrupted = -2205, - EParserFailure = -2206 - }; - - // file format - enum TFileFormat { - EFileFormatUnrecognized = 0, - EFileFormat3GP, - EFileFormatMP4 - }; - - // video format - enum TVideoFormat { - EVideoFormatNone = 0, - EVideoFormatH263Profile0Level10, - EVideoFormatH263Profile0Level45, - EVideoFormatMPEG4, - EVideoFormatAVCProfileBaseline, - EVideoFormatAVCProfileMain, - EVideoFormatAVCProfileExtended - }; - - // audio format - enum TAudioFormat - { - EAudioFormatNone = 0, - EAudioFormatAMR, - EAudioFormatAAC - }; - -#ifdef __VIDEOEDIT__ - enum TProcessingMode - { - EParseOnly = 1, - EParseAndDecode, - EDecodeOnly - }; -#endif - -public: // Data structures - - // common stream parameters - struct TStreamParameters - { - TBool iHaveVideo; // is there video in the stream ? - TBool iHaveAudio; // is there audio in the stream ? - TUint iNumDemuxChannels; // number of demux channels - TFileFormat iFileFormat; // file format - TVideoFormat iVideoFormat; // video format - TAudioFormat iAudioFormat; // audio format - - TUint iAudioFramesInSample; // audio frames per one sample (3GPP) - - TUint iVideoWidth; // width of a video frame - TUint iVideoHeight; // height of a video frame - TInt64 iVideoPicturePeriodNsec; // one PCF tick period in nanoseconds - TUint iVideoIntraFrequency; // intra frame frequency in stream - - TUint iStreamLength; // stream length in milliseconds - TUint iVideoLength; - TUint iAudioLength; - - TBool iCanSeek; // TRUE if seeking in file is possible - - TUint iStreamSize; // stream size in bytes - TUint iStreamBitrate; // stream average bitrate - - TUint iMaxPacketSize; // The maximum media packet size - TUint iLogicalChannelNumberVideo; // Logical channel number for video data - TUint iLogicalChannelNumberAudio; // Logical channel number for audio data - TUint iReferencePicturesNeeded; // Number of reference pictures - // the video decoder needs to store. - TUint iNumScalabilityLayers; // The number of different scalability layers used - TUint iLayerFrameRates[8]; // Picture rate for each layer - - TReal iFrameRate; - TUint iVideoTimeScale; - TUint iAudioTimeScale; - - }; - - public: // New functions - - /** - * Write a block of data to parser. - * @param aBlock Block to be written. - */ - virtual TInt WriteDataBlock(const TDes8& aBlock) = 0; - - /** - * Parses the stream header. - * @param aStreamParameters Stream parameters - */ - - virtual TInt ParseHeaderL(TStreamParameters& aStreamParameters) = 0; - - /** - * Resets the parser to initial state. - * => If input stream is in a file, rewinds it. - * => If input is written to parser, all buffered bytes are flushed - * @param aStreamParameters Stream parameters - */ - virtual TInt Reset() = 0; - - /** - * Gets the number of frames in the current clip - * - * @return Number of frames - */ - inline TInt GetNumberOfFramesInClip() { return iNumberOfFrames; } - - virtual TInt GetNumberOfVideoFrames() = 0; - - virtual TInt GetNumberOfFrames() = 0; - - /** - * Seeks to intra frame before given time - * - * @param aStartTime Time in microseconds to seek - * @param aIndex Index of the frame at aStartTime, if known. 0 otherwise - * - * @return Number of frames - */ - virtual TInt SeekOptimalIntraFrame(TTimeIntervalMicroSeconds aStartTime, TInt aIndex, TBool aFirstTime) = 0; - - /** - * Gets the size of video frame at given index - * - * @param aIndex Index of the frame - * - * @return Size of frame in bytes - */ - virtual TInt GetVideoFrameSize(TInt aIndex) = 0; - - /** - * Gets the timestamp of video frame at given index - * - * @param aIndex Index of the frame - * @param aTimeStamp Output: timestamp in ticks - * - * @return Timestamp in milliseconds - */ - virtual TInt GetVideoFrameStartTime(TInt aIndex, TInt* aTimeStampInTicks) = 0; - - /** - * Gets the type of video frame at given index - * - * @param aIndex Index of the frame - * - * @return Frame type: 1 = INTRA, 0 = INTER - */ - virtual TInt8 GetVideoFrameType(TInt aIndex) = 0; - - /** - * Gets the start frame index of the current clip - * - * @return Frame index - */ - inline TInt GetStartFrameIndex() { return iStartFrameIndex; } - - /** - * From CParser Parser the stream header. - * @param aAudioFrameSize average frame size of audio frame - */ - virtual TInt ParseAudioInfo(TInt& aAudioFrameSize) = 0; - - virtual TInt GetMP4SpecificSize() = 0; //Added for Mpeg-4 Support - - virtual TInt GetAudioBitrate(TInt& aBitrate) = 0; - - virtual TInt GetVideoFrameRate(TReal& aFrameRate) = 0; - - virtual TInt GetDecoderSpecificInfoSize() = 0; - - virtual TInt ReadAVCDecoderSpecificInfo(TDes8& aBuf) = 0; - - virtual TInt GetVideoDuration(TInt& aDurationInMs) = 0; - - - public: // Data - - // stream parameters - TStreamParameters iStreamParameters; - // ETrue if parsing this clip for the first time - TBool iFirstTimeClipParsing; - // number of frames in output clip - TInt iOutputNumberOfFrames; - - protected: // Data - - // current frame number - TInt iFrameNumber; - // number of frames in current clip - TInt iNumberOfFrames; - // index of the first included frame - TInt iStartFrameIndex; - - }; - -#endif // __PARSER_H__ - -// End of File