diff -r 000000000000 -r 1bce908db942 multimediacommscontroller/mmccsubcontroller/inc/mcccodecconfigurator.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/multimediacommscontroller/mmccsubcontroller/inc/mcccodecconfigurator.h Tue Feb 02 01:04:58 2010 +0200 @@ -0,0 +1,362 @@ +/* +* 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 static configuration functions for different codecs +* +*/ + + + +#ifndef MCCCODECCONFIGURATOR_H +#define MCCCODECCONFIGURATOR_H + +// INCLUDES +#include +#include "mccsymstreambase.h" + +// FORWARD DECLARATIONS +class MMMFAudioInput; +class MMMFAudioOutput; +class MDataSink; +class MDataSource; +class TMccCodecInfo; +class CMMFFormatEncode; +class CMMFFormatDecode; +class CMccVideoSource; +class CMccVideoSink; +class CPayloadFormatWrite; +class CPayloadFormatRead; +class TMccFileSourceSetting; +class CMccRtpMediaClock; +class CMMFDevSound; +class CMccFileSink; + +// CLASS DECLARATION + +/** +* Mcc Codec configuration static methods declaration +* +* @lib Mccsubthread.lib +* @since Series 60 3.0 +*/ +NONSHARABLE_CLASS( MccCodecConfigurator ) + { + public: // New functions + + /** + * Generic codec configuration function. + * @since Series 60 3.0 + * @param aCodec Codec information + * @return void + */ + static void ConfigureCodecL( MDataSource& aDatasource, + MDataSink& aDatasink, + const TMccCodecInfo& aCodec, + CMccRtpMediaClock& aClock, + CMccSymStreamBase::TCodecState aCodecState, + MDataSink* aAssociatedDatasink = 0 ); + + /** + * Changes the current encoder bitrate + * @since Series 60 3.0 + * @param aCodec Codec info + * @param aBitrate New bitrate + * @param aSounddevice Reference to DevSound + * @return void + */ + static void ChangeBitrateL( const TMccCodecInfo& aCodec, + TUint aBitrate, + CMMFDevSound& aSounddevice ); + + /** + * Gets default values of codec + */ + static void GetCodecDefaultsL( const TUid aType, + TDes8& aParam, + TMccCodecInfo& aCodec ); + + /** + * Checks whether codec is iLBC and if bitrate change needs a + * codec stop/resume in order for the reconfiguration to succeed. + * @since S60 v3.2 + * @param aOrigBitrate Original bitrate + * @param aRequBitrate Requested bitrate + * @param aCodec FourCC code of the codec + * @return TBool ETrue if stop/resume is needed for bitrate change + * and codec is iLBC + */ + static TBool IlbcNeedsStopResume( TInt aOrigBitrate, + TInt aRequBitrate, const TFourCC& aCodec ); + + private: + + /** + * Configures a codec that is used for uplink/recording + * @since Series 60 3.0 + * @param aRecordDevice MMF Recording device + * @param aFormatter Encoder for record data + * @param aCodec Codec parameters + * @param aCodecState + * @return void + */ + static void DoConfigureLiveAudioUplinkStreamL( + MMMFAudioInput& aRecordDevice, + CPayloadFormatWrite& aFormatter, + const TMccCodecInfo& aCodec, + CMccRtpMediaClock& aClock, + CMccSymStreamBase::TCodecState aCodecState ); + + /** + * Configures a codec that is used for downlink/playback + * @since Series 60 3.0 + * @param aPlayDevice MMF Playback device + * @param aFormatter Decoder for playback data + * @param aCodec Codec parameters + * @param aCodecState + * @return void + */ + static void DoConfigureLiveAudioDownlinkStreamL( + MMMFAudioOutput& aPlayDevice, + CPayloadFormatRead& aFormatter, + const TMccCodecInfo& aCodec, + CMccSymStreamBase::TCodecState aCodecState ); + + /** + * Configures a codec that is used for video downlink + * @since Series 60 3.0 + * @param aPlayDevice MMF Playback device + * @param aFormatter Decoder for playback data + * @param aCodec Codec parameters + * @return void + */ + static void DoConfigureLiveVideoDownlinkStreamL( + MDataSink* aDataSink, + CPayloadFormatRead& aFormatter, + const TMccCodecInfo& aCodec ); + + /** + * Configures a codec for display sink + * @since Series 60 3.0 + * @param aCodec Codec parameters + * @param aDatasink + * @return void + */ + static void DoConfigureDisplayL( + const TMccCodecInfo& aCodec, + MDataSink* aDatasink ); + + /** + * Configures a codec that is used for uplink video from clip + * @since Series 60 3.0 + * @param aFormatter Encoder for record data + * @param aCodec Codec parameters + * @param aAssociatedSink + * @return void + */ + static void DoConfigureClipUplinkStreamL( + CPayloadFormatWrite& aFormatter, + const TMccCodecInfo& aCodec, + MDataSink* aAssociatedSink, + CMccRtpMediaClock& aClock ); + + /** + * Configures a codec that is used for uplink live video + * @since Series 60 3.0 + * @param aFormatter Encoder for record data + * @param aCodec Codec parameters + * @param aAssociatedSink + * @return void + */ + static void DoConfigureLiveVideoUplinkStreamL( + CMccVideoSource& aDataSource, + CPayloadFormatWrite& aFormatter, + const TMccCodecInfo& aCodec, + MDataSink* aAssociatedSink, + CMccRtpMediaClock& aClock ); + + /** + * Configures the uplink AMR codec + * @since Series 60 3.0 + * @param [input] aPlaybackDev MMF Audio datasink + * @param [input] aCodec Codec info + * @return void + */ + static void DoConfigureAmrL( MMMFAudioOutput& aPlaybackDev, + const TMccCodecInfo& ); + + /** + * Configures the downlink AMR codec + * @since Series 60 3.0 + * @param [input] aRecordDev MMF Audio datasource + * @param [input] aCodec Codec info + * @return void + */ + static void DoConfigureAmrL( MMMFAudioInput& aRecordDev, + const TMccCodecInfo& aCodec ); + + /** + * Configures the uplink G.711 codec + * @since Series 60 3.0 + * @param [input] aDatasink MMF Audio datasink + * @param [input] aCodec Codec parameters + * @param aCodecState + * @return void + */ + static void DoConfigureG711L( MMMFAudioOutput& aPlaybackDev, + const TMccCodecInfo& aCodec, + CMccSymStreamBase::TCodecState aCodecState ); + + /** + * Configures the downlink G.711 codec + * @since Series 60 3.0 + * @param [input] aDatasource MMF Audio datasource + * @param [input] aCodec Codec parameters + * @param aCodecState + * @return void + */ + static void DoConfigureG711L( MMMFAudioInput& aRecordDev, + const TMccCodecInfo& aCodec, + CMccSymStreamBase::TCodecState aCodecState ); + + /** + * Configures the uplink G.729 codec + * @since Series 60 3.0 + * @param aDatasink MMF Audio datasink + * @param aBitrate Bitrate for the codec + * @return void + */ + static void DoConfigureG729( MMMFAudioOutput& aPlaybackDev ); + + /** + * Configures the downlink G.729 codec + * @since Series 60 3.0 + * @param [input] aDatasource MMF Audio datasource + * @param [input] aEnableCng Is comfort noise generation activated + * @return void + */ + static void DoConfigureG729L( MMMFAudioInput& aRecordDev, + TBool aEnableCng ); + + /** + * Configures the uplink iLBC codec + * @since Series 60 3.0 + * @param aDatasink MMF Audio datasink + * @param aCodec Codec parameters + * @param aCodecState + * @return void + */ + static void DoConfigureIlbcL( MMMFAudioOutput& aPlaybackDev, + const TMccCodecInfo& aCodec, + CMccSymStreamBase::TCodecState aCodecState ); + + /** + * Configures the downlink iLBC codec + * @since Series 60 3.0 + * @param aDatasource MMF Audio datasource + * @param aCodec Codec parameters + * @param aCodecState + * @return void + */ + static void DoConfigureIlbcL( MMMFAudioInput& aRecordDev, + const TMccCodecInfo& aCodec, + CMccSymStreamBase::TCodecState aCodecState ); + + /** + * Configures the camera source + * @since Series 60 3.0 + * @param [input] aVideoSource source to be configured + * @param [input] aCodec Codec parameters + * @return void + */ + static void DoConfigureCameraL( CMccVideoSource& aVideoSource, + const TMccCodecInfo& aCodec ); + + + /** + * Configures the file sink + * @since Series 60 3.0 + * @param [input] aFileSink sink to be configured + * @param [input] aCodec Codec parameters + * @return void + */ + static void DoConfigureFileSinkL( CMccFileSink& aFileSink, + const TMccCodecInfo& aCodec ); + + /** + * Configures a DTMF mediaformat. + * + * @since S60 3.0 + * @param aPayloadDecoder Decoder for DTMF payload + * @param aCodec Mediaformat parameters + * @return void + */ + static void DoConfigureDtmfFormatL( + CPayloadFormatRead& aPayloadDecoder, + const TMccCodecInfo& aCodec ); + + /** + * Configures a DTMF mediaformat. + * + * @since S60 3.0 + * @param aPayloadEncoder Encoder for DTMF payload + * @param aCodec Mediaformat parameters + * @param aClock Mediaclock for timestamp synchronization + * @return void + */ + static void DoConfigureDtmfFormatL( + CPayloadFormatWrite& aPayloadEncoder, + const TMccCodecInfo& aCodec, + CMccRtpMediaClock& aClock ); + + /** + * Gets configures of the camera source + */ + static void DoGetCameraConfigurationL( const TMccCodecInfo& aCodec, + const TDesC8& aParam ); + + /** + * Gets settings of the clip source + */ + static void DoGetClipConfigurationL( TDes8& aParam ); + + /** + * Converts a "boolean" setting parameter to a real Symbian style + * boolean. + * @since Series 60 3.0 + * @param aParam Boolean parameter to convert + * @return TBool Converted parameter + */ + static TBool ConvertBoolean( TBool aParam ); + + /** + * Checks whether bitrate is supported + */ + static TBool IsSupportedAmrNbBitrate( TInt aBitrate ); + + /** + * Checks whether bitrate is supported + */ + static TBool IsSupportedAmrWbBitrate( TInt aBitrate ); + + static void PassPrerollFromSinkToSourceL(MDataSink* aDataSink, MDataSource* aDataSource); + + + private: // Friend classes + #if defined( TEST_EUNIT ) + friend class UT_CMccCodecConfigurator; + #endif + }; + +#endif // MCCCODECCONFIGURATOR_H + +// End of File