mmplugins/lib3gpunittest/inc/tsu3gplibraryapi.h
changeset 0 40261b775718
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmplugins/lib3gpunittest/inc/tsu3gplibraryapi.h	Tue Feb 02 01:56:55 2010 +0200
@@ -0,0 +1,456 @@
+// 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 TSU3GPLIBRARYAPI_H
+#define TSU3GPLIBRARYAPI_H
+
+#include <test/testexecutestepbase.h>
+#include <c3gplibrary.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <stddef.h>
+#include <f32file.h>
+#include <sys/unistd.h>
+#include <badesca.h>
+
+_LIT( K3GPLibTestFilePath, "c:\\3gplibrary\\" );
+
+const TInt KBufferSize = 1024; // buffer size for read audio/video frames
+const TInt KNotLeave = 11;
+
+// define different test files
+_LIT(KEmptyFileString, "");
+_LIT(KInvalidFileString, "c:\3gplibrary\aaa.3gp"); // Non-existing file
+_LIT(KNoAudioNoVideo, "MP4-NO-A-V");
+_LIT(KSameLenAudioVideo, "3GP-SAME-LEN");
+_LIT(KAudioOnly, "3GP-AUDIO-ONLY");
+_LIT(KVideoOnly, "MP4-VIDEO-ONLY");
+_LIT(KAudioMore, "3GP-AUDIO-MORE");
+_LIT(KVideoMore, "3GP-VIDEO-MORE");
+_LIT(KSqcp, "3G2-H263-QCEL");
+_LIT(KEsds, "MP4-QCEL");
+_LIT(KWmaFile, "WMA");
+_LIT(KUnsupportedAudioCodec, "UNSUPORTED-AUDIO-CODEC");
+_LIT(KUnsupportedVideo, "UNSUPPORTED-VIDEO");
+_LIT(KUnsupportedAudioStream, "UNSUPORTED-AUDIO-STREAM");
+_LIT(KMisMatch, "MISMATCHED");
+_LIT(KMultiUdta, "USER-ATOM-ALL");
+
+// Base class used for most test cases to open and close parser, parse data from file
+class C3GPLibParser_base : public CTestStep
+	{
+public:
+	TVerdict doTestStepPreambleL();
+	TVerdict doTestStepPostambleL();
+	TInt CheckError(TInt aError, TInt aExpectError, const TDesC& aFunction);
+	void FileOpenL(TUint aFileMode = EFileRead | EFileShareReadersOnly);
+	void FileClose();
+	void FileOpen64L(TUint aFileMode = EFileRead | EFileShareReadersOnly);
+	void FileClose64();
+	void ParserOpenL(C3GPParse* aParser, TInt aExpectedError = KErrNone);	
+	void ParserOpenFileL(C3GPParse* aParser, TInt aExpectedError = KErrNone);
+	void ParserCompleteL(C3GPParse* aParser);
+	void ParserOpenFileHandleL(C3GPParse* aParser, TUint aFileMode = EFileRead | EFileShareReadersOnly, TInt aExpectedError = KErrNone);
+	void ParserCompleteHandleL(C3GPParse* aParser);
+	void ParserOpenFileHandle64L(C3GPParse* aParser, TUint aFileMode = EFileRead | EFileShareReadersOnly, TInt aExpectedError = KErrNone);
+	void ParserCompleteHandle64L(C3GPParse* aParser);
+	void ParserOpenCafLC(C3GPParse* aParser, TInt aExpectedError = KErrNone);
+	void ParserCompleteCafL(C3GPParse* aParser);
+	void InsertDataL(C3GPParse* aParse, RFile aFile, TInt aBufferSize, TInt aPos);
+	TInt ReadAudioVideoFrame(C3GPParse* aParse, TBool aRepeat = ETrue, TBool aReadAudio = EFalse);
+	TInt GetClipProperties(C3GPParse* aParse, TInt& videoError, TUint& videoLength, TUint& audioLength);
+	TInt ParserGetDecoderInfo(C3GPParse* aParser);
+	TInt CallUDTApi(C3GPParse* aParse, TUint32 aUdtType, TUint& aIndex, T3GPUdtaLocation aLocation = E3GPUdtaVideoTrak);
+protected:
+	void DoGetVideoAudioAttributesL(C3GPParse* aParser);
+	TInt DoReadFrame(C3GPParse* aParse);
+	void DoSeekTestL(C3GPParse* aParser);
+	void ReadFrameBufferModeL(C3GPParse* aParser);		
+protected:
+	RBuf iInputFile;
+	RBuf iTestSection;
+	RFs iFsSession;
+	RFile iSourceFile;
+	RFile64 iSourceFile64;
+	};
+
+// Base class for asynchronous read
+class C3GPLib_AsyncObserver : public C3GPLibParser_base, public M3GPParseCallback
+	{
+public:
+	C3GPLib_AsyncObserver::C3GPLib_AsyncObserver();
+	TVerdict doTestStepPreambleL();
+	TVerdict doTestStepPostambleL();
+	TInt ReadAudioVideoFrameAsync(C3GPParse* aParse, TBool aReadAudio = EFalse, TBool aCancel = EFalse);
+	
+	// from M3GPParseCallback
+	virtual void AudioFramesAvailable(TInt aError, TUint aReturnedFrames, 
+			TUint aTimeStampInMs, TUint aTimeStampInTimescale);		
+	virtual void  VideoFrameAvailable(TInt aError, TBool aKeyFrame, TUint 
+			aTimeStampInMs, TUint aTimeStampInTimescale);
+	
+protected:
+		TBool iWaitForNotification;
+		TBool iAsyncLastNotificationFromAudio;
+		CActiveSchedulerWait* iSchedulerWait;
+		TInt iAsyncError;
+		TUint iAsyncAudioTimeStampInMs; 
+		TUint iAsyncAudioReturnedFrames;
+		TUint iAsyncAudioTimestampInTimescale;
+		TUint iAsyncVideoTimeStampInMs; 
+		TBool iAsyncVideoKeyFrame;
+		TUint iAsyncVideoTimestampInTimescale;
+	};
+
+_LIT(KTestCase_0001, "MM-3GP-PARSE-U-0001-CP");
+class C3GPLibParser_0001 : public C3GPLibParser_base
+	{
+public:
+	C3GPLibParser_0001();
+	TVerdict doTestStepL();
+private:
+	void OpenCompleteL(C3GPParse* aParser);
+	};
+
+_LIT(KTestCase_0002, "MM-3GP-PARSE-U-0002-CP");
+class C3GPLibParser_0002 : public C3GPLibParser_base
+	{
+public:
+	C3GPLibParser_0002();
+	TVerdict doTestStepL();
+private:
+	void OpenCompleteBufferModeL(C3GPParse* aParser);
+	};
+
+_LIT(KTestCase_0003, "MM-3GP-PARSE-U-0003-CP");
+class C3GPLibParser_0003 : public C3GPLibParser_base
+	{
+public:
+	C3GPLibParser_0003();
+	TVerdict doTestStepL();
+private:
+	void OpenCompleteFileHandleL(C3GPParse* aParser);
+	};
+	
+_LIT(KTestCase_0004, "MM-3GP-PARSE-U-0004-CP");
+class C3GPLibParser_0004 : public C3GPLibParser_base
+	{
+public:
+	C3GPLibParser_0004();
+	TVerdict doTestStepL();
+	};
+
+_LIT(KTestCase_0005, "MM-3GP-PARSE-U-0005-CP");
+class C3GPLibParser_0005 : public C3GPLibParser_base
+	{
+public:
+	C3GPLibParser_0005();
+	TVerdict doTestStepL();
+private:
+	void GetVideoAudioAttributesL(C3GPParse* aParser);
+	};
+
+_LIT(KTestCase_0006, "MM-3GP-PARSE-U-0006-CP");
+class C3GPLibParser_0006 : public C3GPLibParser_base
+	{
+public:
+	C3GPLibParser_0006();
+	TVerdict doTestStepL();
+private:
+	enum TBufferModeTest
+		{
+		ENumBufferedBytes,
+		EClipProperties,
+		EDecoderInfo,
+		EVideoFrameProp,
+		};
+	
+	void VideoAudioAttributesBufferModeL(C3GPParse* aParser);
+	TInt CallTest(C3GPParse* aParse, TBufferModeTest aTest, TInt aExpectedNumBuffered = 0);
+	TInt GetVideoAudioAttributes(C3GPParse* aParse, TBufferModeTest aTest);
+	TInt GetVideoFramePropAndNumVideoFrame(C3GPParse* aParse, TBool aExpectPass);
+	};
+
+_LIT(KTestCase_0007, "MM-3GP-PARSE-U-0007-CP");
+class C3GPLibParser_0007 : public C3GPLibParser_base
+	{
+public:
+	C3GPLibParser_0007();
+	TVerdict doTestStepL();
+private:
+	void GetstreamableL(C3GPParse* aParser);
+	};
+	
+_LIT(KTestCase_0008, "MM-3GP-PARSE-U-0008-CP");
+class C3GPLibParser_0008 : public C3GPLibParser_base
+	{
+public:
+	C3GPLibParser_0008();
+	TVerdict doTestStepL();
+private:
+	void GetstreamableL(C3GPParse* aParser);
+	};
+		
+_LIT(KTestCase_0011, "MM-3GP-PARSE-U-0011-CP");
+class C3GPLibParser_0011 : public C3GPLibParser_base
+	{
+public:
+	C3GPLibParser_0011();
+	TVerdict doTestStepL();
+private:
+	void ReadFrameL(C3GPParse* aParse);
+	};
+
+_LIT(KTestCase_0014, "MM-3GP-PARSE-U-0014-CP");
+class C3GPLibParser_0014 : public C3GPLib_AsyncObserver
+	{
+public:
+	C3GPLibParser_0014();
+	TVerdict doTestStepL();
+	TVerdict doTestStepPreambleL();
+	TVerdict doTestStepPostambleL();
+private:
+	void ReadFrameAsyncL(C3GPParse* aParser);
+	TInt DoReadFrameAsync(C3GPParse* aParser, TBool aCancel = EFalse);
+private:
+	CActiveScheduler* iScheduler;
+	};
+
+_LIT(KTestCase_0015, "MM-3GP-PARSE-U-0015-CP");
+class C3GPLibParser_0015 : public C3GPLibParser_base
+	{
+public:
+	C3GPLibParser_0015();
+	TVerdict doTestStepL();
+private:
+	void ReadFrameL(C3GPParse* aParser);
+	};
+
+_LIT(KTestCase_0016, "MM-3GP-PARSE-U-0016-CP");
+class C3GPLibParser_0016 : public C3GPLibParser_base
+	{
+public:
+	C3GPLibParser_0016();
+	TVerdict doTestStepL();
+private:
+	void GetFrameTypeL(C3GPParse* aParser);
+	};
+	
+_LIT(KTestCase_0017, "MM-3GP-PARSE-U-0017-CP");
+class C3GPLibParser_0017 : public C3GPLibParser_base
+	{
+public:
+	C3GPLibParser_0017();
+	TVerdict doTestStepL();
+private:
+	void GetQcelModeL(C3GPParse* aParser);
+	};
+
+_LIT(KTestCase_0021, "MM-3GP-PARSE-U-0021-CP");
+class C3GPLibParser_0021 : public C3GPLibParser_base
+	{
+public:
+	C3GPLibParser_0021();
+	TVerdict doTestStepL();
+private:
+	void GetH263LevelL(C3GPParse* aParser);
+	};
+
+_LIT(KTestCase_0023, "MM-3GP-PARSE-U-0023-CP");
+class C3GPLibParser_0023 : public C3GPLibParser_base
+	{
+public:
+	C3GPLibParser_0023();
+	TVerdict doTestStepL();
+private:
+	void GetDecoderInfoL(C3GPParse* aParser);
+	};
+
+_LIT(KTestCase_0027, "MM-3GP-PARSE-U-0027-CP");
+class C3GPLibParser_0027 : public C3GPLibParser_base
+	{
+public:
+	C3GPLibParser_0027();
+	TVerdict doTestStepL();
+private:
+	void SeekTestL(C3GPParse* aParser);
+	TInt ParserSeek(C3GPParse* aParser, TInt aLen, TUint& aAudioPos, TUint& aVideoPos);
+	};
+		
+_LIT(KTestCase_0031, "MM-3GP-PARSE-U-0031-CP");
+class C3GPLibParser_0031 : public C3GPLibParser_base
+	{
+public:
+	C3GPLibParser_0031();
+	TVerdict doTestStepL();
+private:
+	void SeekTestL(C3GPParse* aParser);
+	};
+	
+_LIT(KTestCase_0032, "MM-3GP-PARSE-U-0032-CP");
+class C3GPLibParser_0032 : public C3GPLibParser_base
+	{
+public:
+	C3GPLibParser_0032();
+	TVerdict doTestStepL();
+private:
+	void GetFrameAvailabilityL(C3GPParse* aParser);
+	void DoGetFrameAvailabilityL(C3GPParse* aParser);
+	};
+
+_LIT(KTestCase_0033, "MM-3GP-PARSE-U-0033-CP");
+class C3GPLibParser_0033 : public C3GPLibParser_base
+	{
+public:
+	C3GPLibParser_0033();
+	TVerdict doTestStepL();
+private:
+	void VideoInfoL(C3GPParse* aParser);
+	};
+	
+_LIT(KTestCase_0034, "MM-3GP-PARSE-U-0034-CP");
+class C3GPLibParser_0034 : public C3GPLibParser_base
+	{
+public:
+	C3GPLibParser_0034();
+	TVerdict doTestStepL();
+private:
+	void VideoInfoBufferModeL(C3GPParse* aParser);
+	};
+	
+_LIT(KTestCase_0035, "MM-3GP-PARSE-U-0035-CP");
+class C3GPLibParser_0035 : public C3GPLibParser_base
+	{
+public:
+	C3GPLibParser_0035();
+	TVerdict doTestStepL();
+private:
+	void GetUserDataAtomL(C3GPParse* aParser);
+	};
+	
+_LIT(KTestCase_0036, "MM-3GP-PARSE-U-0036-CP");
+class C3GPLibParser_0036 : public C3GPLibParser_base
+	{
+public:
+	C3GPLibParser_0036();
+	TVerdict doTestStepL();
+private:
+	void GetUserDataAtomL(C3GPParse* aParser);
+	};
+
+_LIT(KTestCase_0037, "MM-3GP-PARSE-U-0037-CP");
+class C3GPLibParser_0037 : public C3GPLibParser_base
+	{
+public:
+	C3GPLibParser_0037();
+	TVerdict doTestStepL();
+private:
+	void VideoDependencyL(C3GPParse* aParser);
+	};
+
+_LIT(KTestCase_0038, "MM-3GP-PARSE-U-0038-CP");
+class C3GPLibParser_0038 : public C3GPLibParser_base
+	{
+public:
+	C3GPLibParser_0038();
+	TVerdict doTestStepL();
+private:
+	void VideoInfoL(C3GPParse* aParser);
+	};
+
+_LIT(KTestCase_0039, "MM-3GP-PARSE-U-0039-CP");
+class C3GPLibParser_0039 : public C3GPLibParser_base
+	{
+public:
+	C3GPLibParser_0039();
+	TVerdict doTestStepL();
+private:
+	void AudioAndVideoFrameL(C3GPParse* aParser);
+	};
+
+_LIT(KTestCase_0041, "MM-3GP-PARSE-U-0041-CP");
+class C3GPLibParser_0041 : public C3GPLibParser_base
+	{
+public:
+	C3GPLibParser_0041();
+	TVerdict doTestStepPreambleL();
+	TVerdict doTestStepPostambleL();
+	TVerdict doTestStepL();
+private:
+	void MultipleParserL(C3GPParse* aParser1, C3GPParse* aParser2, C3GPParse* aParser3);
+private:
+	RBuf iInputFile1;
+	RBuf iInputFile2;
+	};
+	
+_LIT(KTestCase_0043, "MM-3GP-PARSE-U-0043-CP");
+class C3GPLibParser_0043 : public C3GPLibParser_base
+	{
+public:
+	C3GPLibParser_0043();
+	TVerdict doTestStepL();
+private:
+	void SeekBufferModeL(C3GPParse* aParser);
+	};
+
+_LIT(KTestCase_0045, "MM-3GP-PARSE-U-0045-CP");
+class C3GPLibParser_0045 : public C3GPLib_AsyncObserver
+	{
+public:
+	C3GPLibParser_0045();
+	TVerdict doTestStepPreambleL();
+	TVerdict doTestStepL();
+	TVerdict doTestStepPostambleL();	
+private:
+	void TestParserWithLargeFileL(C3GPParse* aParser);
+	TInt DoReadFrameAsync(C3GPParse* aParser, TBool aCancel = EFalse);
+private:
+	CActiveScheduler* iScheduler;
+	};
+
+_LIT(KTestCase_0047, "MM-3GP-PARSE-U-0047-CP");
+class C3GPLibParser_0047 : public C3GPLibParser_base
+	{
+public:
+	C3GPLibParser_0047();
+	TVerdict doTestStepL();
+private:
+	void ReadFrameL(C3GPParse* aParser);
+	};
+
+_LIT(KTestUserDataAtomRetrieval, "UserDataAtomRetrieval");
+class C3GPUserDataAtomRetrieval : public CTestStep
+	{
+	public:
+		C3GPUserDataAtomRetrieval();
+		
+		TVerdict doTestStepL();		
+		TVerdict doTestStepPreambleL();
+		TVerdict doTestStepPostambleL();
+
+	private:
+		TInt 				iExpectedNumAtom;
+		TUint32 			iAtomType;	
+		RFs 				iFs;
+		RFile 				iInputFile;
+		CDesCArrayFlat* 	iAtomFileArray;
+		T3GPUdtaLocation    iAtomLocation;
+		TBool				iLargeFile;
+		RFile64 			iInputFile64;		
+	};
+
+#endif
+	
\ No newline at end of file