videoeditorengine/vedengine/videoprocessor/inc/Parser.h
changeset 9 d87d32eab1a9
parent 0 951a5db380a0
--- 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