--- 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 <e32base.h>
-#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