diff -r 000000000000 -r 1bce908db942 multimediacommscontroller/mmccsubcontroller/inc/mccsymdlstream.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/multimediacommscontroller/mmccsubcontroller/inc/mccsymdlstream.h Tue Feb 02 01:04:58 2010 +0200 @@ -0,0 +1,267 @@ +/* +* Copyright (c) 2004-2008 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: Provides a downlink stream for symmetric subthread +* +*/ + + + +#ifndef MCCSYMDLSTREAM_H +#define MCCSYMDLSTREAM_H + +// INCLUDES +#include "mccsymstreambase.h" +#include "mccrtpdatasource.h" +#include "mccjitterbufferobserver.h" + +// FORWARD DECLARATIONS +class CMccJitterBuffer; +class CMMFFormatDecode; +class CMccAudioRouter; +class MMccResources; + +// CLASS DECLARATION + +/** +* Mcc Symmetric subthread downlink stream +* +* @lib Mccsubthreads.lib +* @since Series 60 3.0 +*/ +NONSHARABLE_CLASS( CMccSymDlStream ) : public CMccSymStreamBase, public MJitterBufferObserver + { + public: // Constructors and destructor + + /** + * Static constructor + */ + static CMccSymDlStream* NewLC( TUint32 aMccStreamId, + MAsyncEventHandler* aEventhandler, + MMccResources* aMccResources, + CMccRtpManager* aManager, + TInt aStreamType ); + + /** + * Destructor. + */ + virtual ~CMccSymDlStream(); + + public: // Functions from base classes + + /** + * From CMccSymStreamBase + */ + void SetPrioritySettingsL( const TMMFPrioritySettings& aPriority ); + + /** + * From CMccSymStreamBase + */ + void AddSinkAndSourceL( MDataSink* aDatasink, + MDataSource* aDatasource ); + + /** + * From CMccSymStreamBase + */ + void LoadCodecL( const TMccCodecInfo& aCodecInfo, + const TDesC8& aFmtp ); + + /** + * From CMccSymStreamBase + */ + void PrimeL( const TUint32 aEndpointId ); + + /** + * From CMccSymStreamBase + */ + void PlayL( const TUint32 aEndpointId, + TBool aStreamPaused, + TBool aEnableRtcp ); + + /** + * From CMccSymStreamBase + */ + void PauseL( const TUint32 aEndpointId, + TBool aEnableRtcp ); + + /** + * From CMccSymStreamBase + */ + void ResumeL( const TUint32 aEndpointId, + TBool aEnableRtcp ); + + /** + * From CMccSymStreamBase + */ + void StopL( const TUint32 aEndpointId ); + + /** + * From CMccSymStreamBase + */ + void SetBalanceL( TInt aLeftbal, TInt aRightbal ); + + /** + * From CMccSymStreamBase + */ + void GetBalanceL( TInt& aLeftbal, TInt& aRightbal ); + + /** + * From CMccSymStreamBase + */ + void GetSSRCL( TUint32& aSSRCValue ); + + /** + * From CMccSymStreamBase + */ + void ResetCountersL(); + + /** + * From CMccSymStreamBase + */ + void SendMediaSignalL( const TMccEvent& aEvent ); + + /** + * Sends RTCP receiver report. + * @param none + * @return One of the standard system-wide error codes. + */ + void SendRTCPReceiverReportL(); + + /** + * Starts inactivity timer for a stream + * @param aTimeoutTime - [input] timeout value in milliseconds + * @return One of the standard system-wide error codes. + */ + void StartInactivityTimerL( TUint32 aTimeoutTime ); + + /** + * Stops inactivity timer for a stream + * @return One of the standard system-wide error codes. + */ + void StopInactivityTimerL(); + + /** + * Checks if stream is uplink + * @return EFalse for downlink stream. + */ + TBool IsUplink(); + + /** + * Sets stream to standby mode. + */ + void StandByL(); + + /** + * Set audio routing. + */ + void SetAudioRouteL( TUint32 aRoutingDestination ); + + /** + * Get current audio routing destination. + */ + void GetAudioRouteL( TUint32& aRoutingDestination ); + + /** + * From MJitterBufferObserver + */ + void JitterBufferError( TInt aError ); + + /** + * From MJitterBufferObserver + */ + void DynamicBufferChangeRequest( TInt aBufferSize ); + + /** + * Bind context into stream. + * @since Series 60 3.2 + * @param aEndpointId The endpoint id + * @param aContextParams Crypto context + * @return void + */ + void BindContextIntoStreamL( TUint32 aEndpointId, + const TMccCryptoContext& aContextParams ); + + private: + + /** + * C++ default constructor. + */ + CMccSymDlStream( TUint32 aMccStreamId, + MAsyncEventHandler* aEventhandler, + MMccResources* aMccResources, + CMccRtpManager* aManager, + TInt aStreamType ); + + /** + * 2nd phase constructor + */ + void ConstructL(); + + protected: // Functions from base classes + + MDataSink* MultiplexerSink(); + + private: // New functions + + /** + * Creates the payload format decoder + * @since Series 60 3.0 + * @param None + * @return void + */ + void CreatePayloadFormatDecoderL(); + + /** + * Worker function for G.711 dynamic buffering + * @since S60 v3.2 + * @param aFrameSize New frametime in milliseconds + * @return void + */ + void DoDynamicFrameSizeChangeL( TInt aFrameTime ); + + /** + * Worker function for updating codec parameters + * @since S60 v3.2 + * @param aOriginal Original codec settings + * @param aNew New codec settings + * @return void + */ + void UpdateCodecInformationL( const TMccCodecInfo& aOriginal, + const TMccCodecInfo& aNew ); + + private: // Data + + // Jitterbuffer + CMccJitterBuffer* iJitterBuffer; + + // Payload format decoder + CMMFFormatDecode* iFormatDecode; + + // Payload format decoder for redundancy format + CMMFFormatDecode* iRedFormatDecode; + + // Audio router + CMccAudioRouter* iAudioRouter; + + TBool iFirstResumeDone; + + private: + #ifdef EUNIT_TEST + friend class UT_CMccSymDlStream; + #endif + + }; + +#endif // MCCSYMDLSTREAM_H + +// End of File