diff -r 000000000000 -r 1bce908db942 multimediacommscontroller/mmccvideosourcesink/inc/mccvideosink.h --- /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 +#include +#include +#include +#include +#include +#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