multimediacommscontroller/mmccvideosourcesink/inc/mccvideosourcewrapper.h
changeset 0 1bce908db942
child 17 a5ac35ca6d81
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/multimediacommscontroller/mmccvideosourcesink/inc/mccvideosourcewrapper.h	Tue Feb 02 01:04:58 2010 +0200
@@ -0,0 +1,199 @@
+/*
+* Copyright (c) 2006 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:    
+*
+*/
+
+
+
+//  INCLUDES
+#ifndef MCCVIDEOSOURCEWRAPPER_H
+#define MCCVIDEOSOURCEWRAPPER_H
+
+#include <e32base.h>
+#include <f32file.h>
+#include <e32std.h>
+#include <mmf/server/mmfdatasource.h>
+#include <mmf/server/mmfdatasink.h>
+#include <3gplibrary/mp4lib.h>
+#include <CCMRMediaSink.h>
+#include <CCMRMediaRecorder.h>
+#include <CCMRMediaRecorderObserver.h>
+#include <mmf/devvideo/devvideobase.h>
+
+#include "mmcccodecinformation.h"
+
+class TMccCodecInfo;
+
+const TInt KIPULRandomAccessPeriod = 2; //Time in seconds between intra frames
+
+// CLASS DECLARATION
+
+/**
+*  
+*/
+class CMccVideoSourceWrapper: public CBase, public MCMRMediaSink, public MCMRMediaRecorderObserver
+    {
+
+    public: // Methods called internally or by the controller
+
+        /**
+        * Two-phased constructor.
+        */
+        static CMccVideoSourceWrapper* NewL(
+            MCMRMediaSink& aObserver, 
+            MCMRMediaRecorderObserver& aObserver2 );
+                                        		
+		virtual ~CMccVideoSourceWrapper();
+
+    public: // new
+            
+        void OpenL( MDataSource* aAudioSource,
+                    TInt aCameraHandle,
+                    const TDesC8& aVideoMimeType = KNullDesC8,
+                    TFourCC aAudioType = KFourCCNULL,
+                    TUid aEncoderUid = KNullUid );
+
+        void PlayL();
+        
+        void ResumeL();
+        
+        void PauseL();
+        
+        void StopL();
+
+	    void SetVideoBitrateL( TUint aVideoBitRate );
+	    
+	    void SetVideoFrameRateL( TReal32 aFramesPerSecond );
+
+        TUint GetVideoBitrateL();
+        
+        CCMRMediaRecorder::TRecorderState State();
+        
+        void SetVideoRateControlOptionsL( const TRateControlOptions& aOptions );
+
+        void GetVideoRateControlOptionsL( TRateControlOptions& aOptions );
+        
+    public: // from MCMRMediaSink
+
+        /**
+        * Write a buffer to sink
+        * @since 2.1
+        * @param CCMRMediaBuffer* aBuffer   The buffer to write
+        * @return TInt                      Error code
+        */
+        virtual void WriteBufferL(CCMRMediaBuffer* aBuffer);
+
+        /**
+        * Inform video frame size to sink
+        * @since 2.1
+        * @param TSize aSize    Video frame size
+        * @return TInt          Error code
+        */
+        virtual TInt SetVideoFrameSize(TSize aSize);
+
+        /**
+        * Inform average video bitrate to sink
+        * @since 2.1
+        * @param TInt aBitRate  Average video bitrate
+        * @return TInt          Error code
+        */
+        virtual TInt SetAverageVideoBitRate(TInt aBitRate);
+
+        /**
+        * Inform maximum video bitrate to sink
+        * @since 2.1
+        * @param TInt aBitRate  Maximum expected video bitrate
+        * @return TInt          Error code
+        */
+        virtual TInt SetMaxVideoBitRate(TInt aBitRate);
+
+        /**
+        * Inform average audio bitrate to sink
+        * @since 2.1
+        * @param TInt aBitRate  Average audio bitrate
+        * @return TInt          Error code
+        */
+        virtual TInt SetAverageAudioBitRate(TInt aBitRate);
+
+    public: // from MCMRMediaRecorderObserver
+
+        /**
+        * Informs the user that PrepareL() has been completed with or
+        * without errors. If aError != KErrNone, media recorder remains in 
+        * open state
+        * @since 2.1
+        * @param aError     Error code
+        * @return void
+        */
+        virtual void MmroPrepareComplete(TInt aError);    
+
+        /**
+        * Informs the user about a state change. 
+        * Useful to find out when a new prepare is needed after 
+        * a setting was changed
+        * @since 2.1
+        * @param aState     New state (CCMRMediaRecorder - TRecorderState)
+        * @param aError     Error code
+        * @return void
+        */
+        virtual void MmroStateChange(TInt aState, TInt aError);
+
+        /**
+        * Informs the user about a temporary runtime error. 
+        * Recording can't continue right now but it may
+        * be possible to continue later (e.g. audio HW was 
+        * taken by a higher priority application)
+        * @since 2.1
+        * @param aError     Error code
+        * @return void
+        */
+        virtual void MmroTemporaryError(TInt aError);    
+
+        /**
+        * Informs the user about a fatal runtime error (e.g. OOM). 
+        * MediaRecorder must be deleted and recreated.
+        * @since 2.1
+        * @param aError     Error code
+        * @return void
+        */
+        virtual void MmroFatalError(TInt aError);
+
+    private:
+
+		void ConstructL();
+
+		CMccVideoSourceWrapper(
+            MCMRMediaSink& aObserver, 
+            MCMRMediaRecorderObserver& aObserver2 );
+
+    private:
+    
+		CCMRMediaRecorder* iMediaRecorder;
+        MCMRMediaSink& iObserver;
+        MCMRMediaRecorderObserver& iObserver2;
+        
+        TBool iFatalErrorOccured;
+        		
+	private:
+		#ifdef TEST_EUNIT
+			friend class UT_CMccVideoSourceImpl;	
+   		#endif
+	};
+
+
+#endif 
+
+
+// End of file