--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmplugins/lib3gpunittest/inc/tsu_3gplibrary_parse_compose.h Tue Feb 02 01:56:55 2010 +0200
@@ -0,0 +1,106 @@
+// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "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:
+//
+// Description:
+//
+
+#ifndef TSU_3GPLIBRARY_PARSE_COMPOSER_H
+#define TSU_3GPLIBRARY_PARSE_COMPOSER_H
+
+#include <test/testexecutestepbase.h>
+#include <c3gplibrary.h>
+
+//
+// C3GPLibParseComposeFile takes a directory path specified by the test configuration and
+// parses the video & audio data within the single file inside the directory. Optionally,
+// this class can parse then use the data retrieved to compose a copy of the original file.
+// The output files will reside in a user-specificed output directory, using the same name as the
+// original file. An extra option is to compare the input & output files' video & audio data.
+//
+_LIT(K3GPParseComposeFile, "3GPParseComposeFile");
+class C3GPLibParseComposeFile : public CTestStep
+ {
+ public:
+ C3GPLibParseComposeFile();
+ TVerdict doTestStepPreambleL();
+ TVerdict doTestStepL();
+ TVerdict doTestStepPostambleL();
+
+ protected:
+ TInt ReadVideoFrame(C3GPParse& aParser,
+ RBuf8& aVideoBuffer,
+ TBool& aVideoKeyFrame,
+ TUint& aVideoTimestampInMS,
+ T3GPFrameDependencies& aDependencies);
+
+ TInt ReadAudioFrames(C3GPParse& aParser,
+ RBuf8& aBuffer,
+ TInt& aFramesInSample,
+ TUint& aTimestampInTS);
+
+ virtual void ParseFileL(const TDesC& aInputFile);
+
+ private:
+
+ // file properties
+ TInt ParseVideoProperties(C3GPParse& aParser,
+ RBuf8& aDecoderSpecificInfo,
+ T3GPVideoPropertiesBase*& aProperties,
+ TUint& aLengthInMs);
+ TInt ParseAudioProperties(C3GPParse& aParser,
+ RBuf8& aDecoderSpecificInfo,
+ T3GPAudioPropertiesBase*& aProperties,
+ TUint& aLengthInMs);
+ TInt GetAudioDecoderSpecificInfo(RBuf8& aBuffer);
+ TInt GetVideoDecoderSpecificInfo(RBuf8& aBuffer);
+
+ // video / audio data
+ void ReadWriteAudioVideoFramesL(const T3GPVideoPropertiesBase* aVideoProperties,
+ const T3GPAudioPropertiesBase* aAudioProperties,
+ TUint aVideoLengthInMs,
+ TUint aAudioLengthInMs);
+
+ TBool CompareInputOuputFileL(const TDesC& aInputFile);
+ TBool CompareVideoPropertiesL(C3GPParse& aParser1,
+ C3GPParse& aParser2);
+ TBool CompareAudioPropertiesL(C3GPParse& aParser1,
+ C3GPParse& aParser2);
+ TBool CompareAudioVideoData(C3GPParse& aParser1,
+ C3GPParse& aParser2);
+ TBool CompareAudioFrames(C3GPParse& aParser1,
+ C3GPParse& aParser2);
+ TBool CompareVideoFrame(C3GPParse& aParser1,
+ C3GPParse& aParser2);
+
+ private:
+ RBuf iOutputDir;
+ RBuf iInputDir;
+ RBuf iComposedFile;
+
+ TInt iFileFormat;
+ TInt iComposeFlag;
+ TBool iCompareOriginal;
+ TInt iExpectedNumberOfFailure;
+
+ CDir* iDirList;
+ C3GPCompose* iComposer;
+ C3GPParse* iParser;
+
+ RFs iFs;
+ CActiveScheduler* iScheduler;
+
+ TBool iLargeFile;
+ RFile64 iParsedFileHandle64;
+ RFile64 iComposedFileHandle64;
+ };
+
+#endif // TSU_3GPLIBRARY_PARSE_COMPOSER_H