multimediacommscontroller/mmccvideosourcesink/inc/mccvideosink.h
changeset 0 1bce908db942
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/multimediacommscontroller/mmccvideosourcesink/inc/mccvideosink.h	Tue Feb 02 01:04:58 2010 +0200
@@ -0,0 +1,287 @@
+/*
+* 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:    
+*
+*/
+
+
+
+
+
+#ifndef MCCVIDEOSINK_H
+#define MCCVIDEOSINK_H
+
+//  INCLUDES
+
+
+#include <e32std.h>
+#include <in_sock.h>
+#include <es_sock.h>
+#include <mmf/common/mmfcontrollerframeworkbase.h>
+#include <videoplayer.h>
+#include <mmf/server/mmfbuffer.h>
+#include "rtpdef.h"
+#include "mccdatasink.h"
+
+
+
+// CONSTANTS
+
+// MACROS
+
+// DATA TYPES
+
+// FUNCTION PROTOTYPES
+
+// FORWARD DECLARATIONS
+class MDataSource;
+class MVideoPlayerUtilityObserver;
+class CMccVideoSinkImpl;
+class CMMFDataBuffer;
+class TMccCodecInfo;
+
+// CLASS DECLARATION
+    
+/**
+*  
+*
+*  @lib 
+*  @since 
+*/
+class CMccVideoSink : public CMccDataSink
+    {
+    public:    // Constructors and destructor
+
+        /**
+        * Two-phased constructor. Virtual function from MDataSink
+        */
+        static MDataSink* NewSinkL( TUid aImplementationUid, 
+                                    const TDesC8& aInitData );
+   
+        /**
+        * Destructor.
+        */
+        virtual ~CMccVideoSink();
+        
+
+
+    public:    // New functions
+    
+        void EmptyVideoSinkBufferL( CMMFBuffer* aBuffer, 
+	                       MDataSource* aSupplier,
+	                       TMediaId aMediaId,
+	                       TRtpRecvHeader& aHeaderInfo );
+      
+        virtual void SetVideoCodecL( const TMccCodecInfo& aVideoCodec );       
+        
+        virtual void SetAudioCodecL( const TMccCodecInfo& aAudioCodec );  
+        
+        virtual void SetCurrentUser( MAsyncEventHandler* aEventHandler );
+       
+    public :   // New functions From MDataSink
+        
+     
+        /**
+        * From MDataSink. Pure virtual function that must be implemented.
+        *                  Out of usage. Leave KErrNotSupported.
+        * @since Series 60 3.0
+        * @param "aBuffer" Out of usage
+        * @param "aSupplier" Out of usage
+        * @param "aMediaId" Out of usage
+        * @return void
+        */
+        void EmptyBufferL( CMMFBuffer* aBuffer, 
+                           MDataSource* aSupplier, 
+                           TMediaId aMediaId );
+
+        /**
+        * From MDataSink Method to 'logon' the data source to 
+        *                 the same thread that source will be supplying data in.
+        * @since Series 60 3.0
+        * @param aEventHandler for send event to datasource when buffer is embtied. 
+        * @return KErrNone if successful, otherwise a system wide error code.
+        */
+        TInt SinkThreadLogon( MAsyncEventHandler& aEventHandler );
+
+        /**
+        * From MDataSink Method to 'logoff' the data source from 
+        *                 the same thread that source supplies data in.
+        * @since Series 60 3.0
+        * @param None
+        * @return void
+        */
+        void SinkThreadLogoff();
+
+        /**
+        * From MDataSink pure virtual function that must be implemented.
+        *                 Returns the data type as a fourCC code of the data sink.
+        * @since Series 60 3.0
+        * @param "aMediaId" This identifies the type of media eg audio and the stream id.
+        *                    This parameter is required in cases where the sink can accept data
+        *                    of more than one media type.
+        * @return the datatype code ( codec ).
+        */
+        TFourCC SinkDataTypeCode( TMediaId aMediaId );
+
+        /**
+        * From MDataSink pure virtual function that must be implemented.
+        *                 Sets the data type as a fourCC code for the data sink.
+        * @since Series 60 3.0
+        * @param "aSinkFourCC" This specifies the data type as a fourCC code to set the sink to
+        * @param "aMediaId" This identifies the type of media eg audio and the stream id.
+        * @return KErrNone if successful.
+        * @return KErrLocked if Sink thread locked. Codec must to be set before thread logon.
+        * @return KErrNotSupported if the sink does not support media type.
+        */
+        TInt SetSinkDataTypeCode( TFourCC aCodec, TMediaId aMedia );
+
+        /**
+        * From MDataSink pure virtual function that must be implemented. 
+        *                 Out of usage. Function leaves with KErrNotSupported.  
+        * @since    Series 60 3.0
+        * @param    "aCodec" Out of usage
+        * @param    aMedia    Out of usage
+        * @return    void
+        */
+        void BufferFilledL( CMMFBuffer* aBuffer );
+
+        /**
+        * From MDataSink pure virtual function that must be implemented.
+        * Method to indicate whether the data sink can create a buffer.
+        * @deprecated
+        *
+        * @since Series 60 3.0
+        * @param "aBuffer" Out of usage
+        * @return False
+        */
+        TBool CanCreateSinkBuffer();
+
+        /**
+        * From MDataSink pure virtual function that must be implemented.
+        * Out of usage. Function leaves with KErrNotSupported.
+        * @deprecated
+        *
+        * @since Series 60 3.0
+        * @param "aMediaId" Out of usage.
+        * @param "aReference" Out of useage.
+        * @return 
+        */
+        CMMFBuffer* CreateSinkBufferL( TMediaId /*aMediaId*/, 
+                                       TBool& aReference );
+                                  
+        /**
+        * From MDataSink. This is a virtual function that a derived data sink 
+        *                 can implement if any data sink specific 'priming' is required
+        * @since    Series 60 3.0
+        * @param    None
+        * @return   void
+        */
+        void SinkPrimeL();
+
+        /**
+        * From MDataSink. This is a virtual function that a derived data sink can implement if
+        *                 any data sink specific action is required prior to 'playing'ie the 
+        *                 start of data transfer
+        * @since    Series 60 3.0
+        * @param    None
+        * @return   void
+        */
+        void SinkPlayL();
+
+        /**
+        * From MDataSink. This is a virtual function that a derived data sink can implement if 
+        *                 any data sink specific action is required to 'pause'
+        * @since    Series 60 3.0
+        * @param    None
+        * @return   void
+        */
+        void SinkPauseL();
+        
+        /**
+        * From MDataSink. This is a virtual function that a derived data sink can implement if 
+        *                 any data sink specific action is required to 'stop'
+        * @since    Series 60 3.0
+        * @param    None
+        * @return   void
+        */
+        void SinkStopL();
+        
+        /**
+        * From MDataSink. 
+        * @since    Series 60 3.0
+        * @param    None
+        * @return   void
+        */
+        void SetSinkPrioritySettings( const TMMFPrioritySettings& aPrioritySettings );
+        
+        /**
+        * From MDataSink. Used for custom command receiving.
+        * @since    Series 60 3.0
+        * @param    aMessage    The message specifying the custom command.
+        * @return   void
+        */
+        void SinkCustomCommand( TMMFMessage& aMessage );
+        
+    public: // from MMccSourceSink 
+    
+        virtual void GetParameterL( TUint32 aParam, TDes8& aVal );
+        
+        virtual void SetParameterL( TUint32 aParam, const TDesC8& aVal );
+        
+    protected:  // Functions from base classes
+        
+        /**
+        * Method to perform any sink construction dependant on the sink construction
+        * initialisation data aInitData
+        *
+        * This is a pure virtual function that a derrived data sink must implement
+        *
+        * @param    "aInitData"
+        *            Sink specific initialisation data required for sink construction
+        */
+        void ConstructSinkL( const TDesC8& aInitData );
+        
+    private:
+
+        /**
+        * C++ default constructor.
+        */
+        CMccVideoSink();
+        
+        
+    private: 
+        
+        CMccVideoSinkImpl* iMediaInterface;
+        
+		TFourCC iVideoFourCC;
+		TFourCC iAudioFourCC;		
+				
+		TUint8  iVideoPayloadType;
+		TUint   iMaxVideoBitRate;	
+        TUint   iVideoCodecMode;
+        
+        TUint8  iAudioPayloadType;	
+        TUint   iAudioCodecMode;
+        
+        TBool   iAudioReady;
+        TBool   iVideoReady;
+	    	
+	private:
+    	#ifdef TEST_EUNIT
+			friend class UT_CMccVideoSink;	
+   		#endif
+        
+    };
+
+#endif