multimediacommscontroller/mmccinterface/src/mmcccodecinformation.cpp
changeset 0 1bce908db942
child 18 817c922b90eb
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/multimediacommscontroller/mmccinterface/src/mmcccodecinformation.cpp	Tue Feb 02 01:04:58 2010 +0200
@@ -0,0 +1,985 @@
+/*
+* Copyright (c) 2002-2004 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:    MCC CodecInformation
+*
+*/
+
+
+
+
+// INCLUDE FILES
+#include <AudioPreference.h>
+#include <delimitedpathsegment8.h>
+
+#include "mmcccodecinformation.h"
+#include "mccinternalcodecs.h"
+
+// EXTERNAL DATA STRUCTURES
+
+// EXTERNAL FUNCTION PROTOTYPES  
+
+// CONSTANTS
+
+const TUint KDefaultSamplingFreq = 8000;
+const TUint KDefaultBufferLength = 10;
+const TUint KDefaultBufferThreshold = 5;
+const TUint KDefaultPreference = EMdaPriorityPreferenceNone;
+const TUint KDefaultPriority = EMdaPriorityNormal;
+const TInt KDefaultModeChangePeriod = 1;
+
+
+// MACROS
+
+// LOCAL CONSTANTS AND MACROS
+
+// MODULE DATA STRUCTURES
+
+// LOCAL FUNCTION PROTOTYPES
+
+// FORWARD DECLARATIONS
+
+// ============================= LOCAL FUNCTIONS ===============================
+
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+
+// -----------------------------------------------------------------------------
+// CMccCodecInformation::CMccCodecInformation
+// default constructor
+// -----------------------------------------------------------------------------
+//
+CMccCodecInformation::CMccCodecInformation() :
+    iType( KUidMediaTypeAudio ),
+    iSamplingFreq( KDefaultSamplingFreq ),
+    iMaxPTime( KMaxPtime ),
+    iFmtpAttr( NULL ),
+    iBitrateMask( 0 ),
+    iRedCount( 0 ),
+    iRedundancyPT( KMccPayloadTypeMax ),
+    iJitterBufThreshold( KDefaultBufferThreshold ),
+    iJitterBufBufferLength( KDefaultBufferLength ),
+    iModeChangePeriod( KDefaultModeChangePeriod ),
+    iNeighbor( EFalse ),
+    iComfortNoiseGenerationPt( KPayloadTypeUndefined ),
+    iPriority( KDefaultPriority ),
+    iPriorityPreference( KDefaultPreference ),
+    iAverageBitrate( 0 ),
+    iMaxBitrate( 0 ),
+    iFramerate( 0 ),
+    iVideoWidth( 0 ),
+    iVideoHeight( 0 ),
+    iPayloadFormatEncoder( 0 ),
+    iPayloadFormatDecoder( 0 ),
+    iEncodingDecodingDevice( KNullUid )
+    {
+    }
+
+// -----------------------------------------------------------------------------
+// CMccCodecInformation::~CMccCodecInformation
+// Destructor
+// -----------------------------------------------------------------------------
+//
+CMccCodecInformation::~CMccCodecInformation()
+    {
+    delete iFmtpAttr;
+    delete iConfigKey;
+    }
+
+// -----------------------------------------------------------------------------
+// CMccCodecInformation::SetValues
+// -----------------------------------------------------------------------------
+//
+void CMccCodecInformation::SetValues( TMccCodecInfo codecInfo )
+    {
+    iType = codecInfo.iType;
+    iSdpName = codecInfo.iSdpName;
+    iSamplingFreq = codecInfo.iSamplingFreq;
+    iBitrateMask = codecInfo.iBitrateMask;
+    iJitterBufInactivityTimeOut = codecInfo.iJitterBufInactivityTimeOut;
+    iJitterBufThreshold = codecInfo.iJitterBufThreshold;
+    iJitterBufBufferLength = codecInfo.iJitterBufBufferLength;
+    iModeChangePeriod = codecInfo.iModeChangePeriod;
+    iNeighbor = codecInfo.iNeighbor;
+    iComfortNoiseGenerationPt = codecInfo.iComfortNoiseGenerationPt;
+    iPriority = codecInfo.iPriority.iPriority;
+    iPriorityPreference = codecInfo.iPriority.iPref;
+    iAverageBitrate = codecInfo.iAverageBitrate;
+    iMaxBitrate = codecInfo.iMaxBitrate;
+    iFramerate = codecInfo.iFramerate;
+    iVideoWidth = codecInfo.iVideoWidth;
+    iVideoHeight = codecInfo.iVideoHeight;
+    iPayloadFormatEncoder = codecInfo.iPayloadFormatEncoder;
+    iPayloadFormatDecoder = codecInfo.iPayloadFormatDecoder;
+    
+    iFourCC = codecInfo.iFourCC.FourCC();
+    iAlgoUsed = codecInfo.iAlgoUsed;
+    iRedCount = codecInfo.iRedundancyCount;
+    iRedundancyPT = codecInfo.iRedundantPayload;
+    SetBitrate( codecInfo.iBitrate ); // Some codecs have special behavior
+    iCodecMode = codecInfo.iCodecMode;
+    iEnableVAD = codecInfo.iEnableDTX;
+    iMaxPTime = codecInfo.iMaxPtime;
+    iPTime = codecInfo.iPtime;
+    iPayloadType = codecInfo.iPayloadType;
+    iFrameSize = codecInfo.iFrameSize;
+    iHwFrameTime = codecInfo.iHwFrameTime;
+    
+    iKeepAliveTimer = codecInfo.iKeepaliveInterval;
+    iKeepAlivePT = codecInfo.iKeepalivePT;
+    iKeepAliveData = codecInfo.iKeepaliveData;
+    
+    iMaxRed = codecInfo.iMaxRed;
+    
+    if ( codecInfo.iConfigKey != KNullDesC8 )
+        {
+        TRAP_IGNORE( SetConfigKeyL( codecInfo.iConfigKey ) )
+        }
+    iEncodingDecodingDevice = codecInfo.iEncodingDecodingDevice;
+    }
+    
+// -----------------------------------------------------------------------------
+// CMccCodecInformation::GetValues
+// -----------------------------------------------------------------------------
+//
+void CMccCodecInformation::GetValues( TMccCodecInfo& codecInfo ) const
+    {
+    codecInfo.iType = iType;
+    codecInfo.iSdpName = iSdpName;
+    codecInfo.iSamplingFreq = iSamplingFreq;
+    codecInfo.iBitrateMask = iBitrateMask;
+    codecInfo.iJitterBufInactivityTimeOut = iJitterBufInactivityTimeOut;
+    codecInfo.iJitterBufThreshold = iJitterBufThreshold;
+    codecInfo.iJitterBufBufferLength = iJitterBufBufferLength;
+    codecInfo.iPriority.iPriority = iPriority;
+    codecInfo.iPriority.iPref = TMdaPriorityPreference( iPriorityPreference );
+    codecInfo.iAverageBitrate = iAverageBitrate;
+    codecInfo.iMaxBitrate = iMaxBitrate;
+    codecInfo.iFramerate = iFramerate;
+    codecInfo.iComfortNoiseGenerationPt = iComfortNoiseGenerationPt;
+    codecInfo.iVideoWidth = iVideoWidth;
+    codecInfo.iVideoHeight = iVideoHeight;
+    codecInfo.iPayloadFormatEncoder = iPayloadFormatEncoder;
+    codecInfo.iPayloadFormatDecoder = iPayloadFormatDecoder;
+
+    codecInfo.iFourCC = TFourCC( iFourCC );
+    codecInfo.iAlgoUsed = iAlgoUsed;
+    codecInfo.iRedundancyCount = iRedCount;
+    codecInfo.iRedundantPayload = iRedundancyPT;
+    codecInfo.iBitrate = iBitrate;
+    codecInfo.iCodecMode = iCodecMode;
+    codecInfo.iEnableDTX = iEnableVAD;
+    codecInfo.iMaxPtime = iMaxPTime;
+    codecInfo.iPtime = iPTime;
+    codecInfo.iPayloadType = iPayloadType;
+    codecInfo.iFrameSize = iFrameSize;
+    codecInfo.iHwFrameTime = iHwFrameTime;
+    codecInfo.iRedundantPayload = iRedundancyPT;
+    codecInfo.iNeighbor = iNeighbor;
+    codecInfo.iModeChangePeriod = iModeChangePeriod;
+    codecInfo.iKeepaliveInterval = iKeepAliveTimer;
+    codecInfo.iKeepalivePT = iKeepAlivePT;
+    codecInfo.iKeepaliveData = iKeepAliveData;
+    codecInfo.iMaxRed = iMaxRed;
+    
+    if ( iConfigKey && iConfigKey->Length() <= KMaxConfigKeyLen )
+        {
+        codecInfo.iConfigKey.Copy( *iConfigKey );
+        }
+        
+    codecInfo.iEncodingDecodingDevice = iEncodingDecodingDevice;
+    }
+    
+// -----------------------------------------------------------------------------
+// CMccCodecInformation::RequireSignalling
+// -----------------------------------------------------------------------------
+//
+TBool CMccCodecInformation::RequireSignalling(
+    const CMccCodecInformation& /*aCandidate*/ ) const
+    {
+    return EFalse;    
+    }  
+
+// -----------------------------------------------------------------------------
+// CMccCodecInformation::Type
+// -----------------------------------------------------------------------------
+//
+TUid CMccCodecInformation::Type() const
+    {
+    return iType;
+    }
+
+// -----------------------------------------------------------------------------
+// CMccCodecInformation::VAD
+// -----------------------------------------------------------------------------
+//
+TBool CMccCodecInformation::VAD() const
+    {
+    return iEnableVAD;
+    }
+
+// -----------------------------------------------------------------------------
+// CMccCodecInformation::Bitrate
+// -----------------------------------------------------------------------------
+//
+TUint CMccCodecInformation::Bitrate() const
+   {
+   return iBitrate;
+   }
+
+// -----------------------------------------------------------------------------
+// CMccCodecInformation::SamplingFreq
+// Gets the sampling frequency. 
+// -----------------------------------------------------------------------------
+//
+TUint32 CMccCodecInformation::SamplingFreq() const
+    {
+    return iSamplingFreq;
+    }
+
+// -----------------------------------------------------------------------------
+// CMccCodecInformation::SdpName
+// Gets the codec name.
+// -----------------------------------------------------------------------------
+//
+const TDesC8& CMccCodecInformation::SdpName() const
+    {
+    return iSdpName;
+    }
+
+// -----------------------------------------------------------------------------
+// CMccCodecInformation::CodecMode
+// Gets the codec mode e.g. uLaw/aLaw.
+// -----------------------------------------------------------------------------
+//
+TCodecMode CMccCodecInformation::CodecMode() const
+   {
+   return iCodecMode;
+   }
+
+// -----------------------------------------------------------------------------
+// CMccCodecInformation::PayloadType
+// Gets the payloadtype.
+// -----------------------------------------------------------------------------
+//
+TUint8 CMccCodecInformation::PayloadType() const
+    {
+    return iPayloadType;
+    }
+        
+// -----------------------------------------------------------------------------
+// CMccCodecInformation::PTime
+// Gets the packet time.
+// -----------------------------------------------------------------------------
+//
+TInt CMccCodecInformation::PTime() const
+    {
+    return iPTime;
+    }
+    
+// -----------------------------------------------------------------------------
+// CMccCodecInformation::MaxPTime
+// Gets the max packet time.
+// -----------------------------------------------------------------------------
+//
+TInt CMccCodecInformation::MaxPTime() const
+    {
+    return iMaxPTime;
+    }
+
+// -----------------------------------------------------------------------------
+// CMccCodecInformation::GetFmtpL
+// Gets the fmtp attribute
+// -----------------------------------------------------------------------------
+//
+TDesC8& CMccCodecInformation::GetFmtpL()
+    {
+    if( !iFmtpAttr )
+        {
+        iFmtpAttr = HBufC8::NewL(0);
+        }
+    
+    return *iFmtpAttr;
+    }
+
+
+// -----------------------------------------------------------------------------
+// CMccCodecInformation::CreateFmtpAttrListL
+// If fmtp does not exist, then create it from internal values
+// -----------------------------------------------------------------------------
+//   
+void CMccCodecInformation::CreateFmtpAttrListL()
+    {
+    }
+
+// -----------------------------------------------------------------------------
+// CMccCodecInformation::CreateFmtpAttrListL
+// If fmtp does not exist, then create it from internal values and 
+// the bitrate array
+// -----------------------------------------------------------------------------
+//        
+void CMccCodecInformation::CreateFmtpAttrListL( const RArray<TUint>&  /*aBitrates*/ )
+    {
+    }
+
+  
+// -----------------------------------------------------------------------------
+// CMccCodecInformation::SetFmtpAttrL
+// Gets the fmtp attribute
+// -----------------------------------------------------------------------------
+//
+void CMccCodecInformation::SetFmtpAttrL( const TDesC8& aFmtp, TBool parseFmtp )
+    {
+    if ( iFmtpAttr )
+        {
+        delete iFmtpAttr;
+        iFmtpAttr = NULL;
+        }
+
+    iFmtpAttr = HBufC8::NewL( aFmtp.Length() );
+    iFmtpAttr->Des().Copy( aFmtp );
+           
+    //Check if the fmtp string should be parsed
+    if( parseFmtp )
+        {        
+        ParseFmtpAttrL( *iFmtpAttr );    
+        }
+    }
+   
+// -----------------------------------------------------------------------------
+// CMccCodecInformation::ParseFmtpAttrL
+// Parse the fmtp string, but doesn't update the iFmtpAttr
+// -----------------------------------------------------------------------------
+//
+TBool CMccCodecInformation::ParseFmtpAttrL( const TDesC8& /*aFmtp*/ )
+    {
+    return EFalse;
+    }
+
+
+// -----------------------------------------------------------------------------
+// CMccCodecInformation::SetAllowedBitrates
+// Gets Codec FourCC
+// -----------------------------------------------------------------------------
+//
+TInt CMccCodecInformation::SetAllowedBitrates( TUint /*aBitrateMask*/ )
+    {
+    return KErrNotSupported;
+    }
+
+// -----------------------------------------------------------------------------
+// CMccCodecInformation::AllowedBitrates
+// Gets Codec FourCC
+// -----------------------------------------------------------------------------
+//
+TUint CMccCodecInformation::AllowedBitrates() const
+    {
+    return iBitrateMask;
+    }
+ 
+// -----------------------------------------------------------------------------
+// CMccCodecInformation::FourCC
+// Gets Codec FourCC
+// -----------------------------------------------------------------------------
+//
+TUint32 CMccCodecInformation::FourCC( ) const
+    {
+    return iFourCC;
+    }
+    
+// -----------------------------------------------------------------------------
+// CMccCodecInformation::FrameTime
+// Gets Frametime (ms).
+// -----------------------------------------------------------------------------
+//
+TInt CMccCodecInformation::FrameTime() const
+    {
+    return iHwFrameTime;
+    }
+    
+// -----------------------------------------------------------------------------
+// CMccCodecInformation::FrameSize
+// Gets FrameSize.
+// -----------------------------------------------------------------------------
+//
+TInt CMccCodecInformation::FrameSize() const
+    {
+    return iFrameSize;
+    }
+    
+// -----------------------------------------------------------------------------
+// CMccCodecInformation::SetAlgo
+// Sets Algorithm.
+// -----------------------------------------------------------------------------
+//
+TInt CMccCodecInformation::SetAlgo( TAlgoUsed aAlgo )
+    {
+    iAlgoUsed = aAlgo;
+    return KErrNone;
+    }
+
+// -----------------------------------------------------------------------------
+// CMccCodecInformation::Algo
+// Gets used algorithm.
+// -----------------------------------------------------------------------------
+//
+TAlgoUsed CMccCodecInformation::Algo( ) const
+    {
+    return iAlgoUsed;
+    }
+    
+// -----------------------------------------------------------------------------
+// CMccCodecInformation::SetRedCount
+// Sets Redundancy Count.
+// -----------------------------------------------------------------------------
+//
+TInt CMccCodecInformation::SetRedCount( TUint aRedCount )
+    {
+    if ( KMaxGenRedCount < aRedCount )
+        {
+        return KErrArgument;
+        }
+    
+    TAlgoUsed algo = aRedCount > 0 ? EGenRedUsed : ENoAlgoUsed;
+    SetAlgo( algo );
+
+    iRedCount = aRedCount;
+    return KErrNone;
+    }
+
+// -----------------------------------------------------------------------------
+// CMccCodecInformation::RedCount
+// Gets Redundancy Count.
+// -----------------------------------------------------------------------------
+//
+TUint CMccCodecInformation::RedCount( ) const
+    {
+    return iRedCount;
+    }
+
+// -----------------------------------------------------------------------------
+// CMccCodecInformation::SetRedundancyPT
+// Sets Redundancy PayloadType.
+// -----------------------------------------------------------------------------
+//
+TInt CMccCodecInformation::SetRedundancyPT( TUint8 aRedPT )
+    {
+    iRedundancyPT = aRedPT;
+    return KErrNone;
+    }
+
+// -----------------------------------------------------------------------------
+// CMccCodecInformation::RedundancyPT
+// Gets Redundancy PayloadType.
+// -----------------------------------------------------------------------------
+//
+TUint8 CMccCodecInformation::RedundancyPT( ) const
+    {
+    return iRedundancyPT;
+    }
+
+// -----------------------------------------------------------------------------
+// CMccCodecInformation::SetJitterBufInactivityTimeOut
+// Set JitterBuffer Timeout time
+// -----------------------------------------------------------------------------
+//
+TInt CMccCodecInformation::SetJitterBufInactivityTimeOut( TUint aJitterBufInactivityTimeOut )
+    {
+    iJitterBufInactivityTimeOut = aJitterBufInactivityTimeOut;
+    
+    return KErrNone;
+    }
+
+// -----------------------------------------------------------------------------
+// CMccCodecInformation::JitterBufInactivityTimeOut
+// Get JitterBuffer timeout time
+// -----------------------------------------------------------------------------
+//
+TUint CMccCodecInformation::JitterBufInactivityTimeOut() const
+    {
+    return iJitterBufInactivityTimeOut;
+    }
+
+// -----------------------------------------------------------------------------
+// CMccCodecInformation::SetJitterBufThreshold
+// Set JitterBuffer treshold
+// -----------------------------------------------------------------------------
+//
+TInt CMccCodecInformation::SetJitterBufThreshold( TUint aJitterBufThreshold )
+    {
+    iJitterBufThreshold = aJitterBufThreshold;
+    return KErrNone;
+    }
+
+// -----------------------------------------------------------------------------
+// CMccCodecInformation::JitterBufThreshold
+// Get JitterBuffer threshold
+// -----------------------------------------------------------------------------
+//
+TUint CMccCodecInformation::JitterBufThreshold() const
+    {
+    return iJitterBufThreshold;
+    }
+
+// -----------------------------------------------------------------------------
+// CMccCodecInformation::SetJitterBufBufferLength
+// Set JitterBuffer Buffer length
+// -----------------------------------------------------------------------------
+//
+TInt CMccCodecInformation::SetJitterBufBufferLength( TUint aJitterBufBufferLength )
+    {
+    if( aJitterBufBufferLength == 0 || aJitterBufBufferLength < iJitterBufThreshold )
+        {
+        return KErrUnderflow;
+        }
+    
+    else
+        {
+        iJitterBufBufferLength = aJitterBufBufferLength;
+        return KErrNone;
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CMccCodecInformation::JitterBufBufferLength
+// Get JitterBuffer Buffer length
+// -----------------------------------------------------------------------------
+//
+TUint CMccCodecInformation::JitterBufBufferLength() const
+    {
+    return iJitterBufBufferLength;
+    }
+
+// -----------------------------------------------------------------------------
+// CMccCodecInformation::SetModeChangePeriod
+// Default implementation
+// -----------------------------------------------------------------------------
+//
+TInt CMccCodecInformation::SetModeChangePeriod( const TInt /*aPeriod*/ )
+    {
+    return KErrNotSupported;
+    }
+
+// -----------------------------------------------------------------------------
+// CMccCodecInformation::ModeChangePeriod
+// Default implementation
+// -----------------------------------------------------------------------------
+//
+TInt CMccCodecInformation::ModeChangePeriod( ) const
+    {
+    return KErrNotSupported;
+    }
+
+// -----------------------------------------------------------------------------
+// CMccCodecInformation::SetModeChangeNeighbor
+// Default implementation
+// -----------------------------------------------------------------------------
+//
+TInt CMccCodecInformation::SetModeChangeNeighbor( const TBool /*aNeighbor*/ )
+    {
+    return KErrNotSupported;
+    }
+
+// -----------------------------------------------------------------------------
+// CMccCodecInformation::ModeChangeNeighbor
+// Default implementation
+// -----------------------------------------------------------------------------
+//
+TBool CMccCodecInformation::ModeChangeNeighbor( ) const
+    {
+    return ETrue;
+    }
+
+// -----------------------------------------------------------------------------
+// CMccCodecInformation::SetCrc
+// Default implementation
+// -----------------------------------------------------------------------------
+//  
+TInt CMccCodecInformation::SetCrc( const TBool /*aCrc*/ )
+    {
+    return KErrNotSupported;
+    }
+
+// -----------------------------------------------------------------------------
+// CMccCodecInformation::GetCrc
+// Default implementation
+// -----------------------------------------------------------------------------
+// 
+TBool CMccCodecInformation::GetCrc( ) const
+    {
+    return EFalse;
+    }
+
+// -----------------------------------------------------------------------------
+// CMccCodecInformation::SetRobustSorting
+// Default implementation
+// -----------------------------------------------------------------------------
+// 
+TInt CMccCodecInformation::SetRobustSorting( const TBool /*aRobust*/)
+    {
+    return KErrNotSupported;
+    }
+
+// -----------------------------------------------------------------------------
+// CMccCodecInformation::GetRobustSorting
+// Default implementation
+// -----------------------------------------------------------------------------
+// 
+TBool CMccCodecInformation::GetRobustSorting( ) const
+    {
+    return EFalse;
+    }
+
+// -----------------------------------------------------------------------------
+// CMccCodecInformation::SetInterleaving
+// Default implementation
+// -----------------------------------------------------------------------------
+// 
+TInt CMccCodecInformation::SetInterleaving( const TInt /*aFrameBlockCount*/ )
+    {
+    return KErrNotSupported;
+    }
+
+// -----------------------------------------------------------------------------
+// CMccCodecInformation:GetInterleaving
+// Default implementation
+// -----------------------------------------------------------------------------
+// 
+TInt CMccCodecInformation::GetInterleaving( ) const
+    {
+    return KErrNotSupported;
+    }
+
+// -----------------------------------------------------------------------------
+// CMccCodecInformation::SetChannels
+// Default implementation
+// -----------------------------------------------------------------------------
+// 
+TInt CMccCodecInformation::SetChannels( TInt /*aNumOfChannels*/ )
+    {
+    return KErrNotSupported;
+    };
+
+// -----------------------------------------------------------------------------
+// CMccCodecInformation:SetMaxRed
+// -----------------------------------------------------------------------------
+// 
+TInt CMccCodecInformation::SetMaxRed( TInt /*aMaxRed*/ )
+    {
+    return KErrNotSupported;
+    }    
+
+// -----------------------------------------------------------------------------
+// CMccCodecInformation:SetConfigKeyL
+// -----------------------------------------------------------------------------
+// 
+void CMccCodecInformation::SetConfigKeyL( const TDesC8& /*aConfigKey*/ )
+    {
+    User::Leave( KErrNotSupported );
+    }
+    
+// -----------------------------------------------------------------------------
+// CMccCodecInformation:SetPreferredEncodingDecodingDevice
+// -----------------------------------------------------------------------------
+// 
+void CMccCodecInformation::SetPreferredEncodingDecodingDevice( 
+											TUid /*aEncodingDecodingDevice*/ )
+    {
+    }
+    
+// -----------------------------------------------------------------------------
+// CMccCodecInformation:GetChannels
+// Return array of allowed modes
+// -----------------------------------------------------------------------------
+// 
+TInt CMccCodecInformation::GetChannels( TInt& /*aNumOfChannels*/ ) const
+    {
+    return KErrNotSupported;
+    };
+
+// -----------------------------------------------------------------------------
+// CMccCodecInformation:SetComfortNoiseGeneration
+// Default implementation
+// -----------------------------------------------------------------------------
+// 
+TInt CMccCodecInformation::SetComfortNoiseGeneration( TUint8 /*aComfortNoisePT*/ )
+    {
+    return KErrNotSupported;
+    };
+ 
+        
+// -----------------------------------------------------------------------------
+// CMccCodecInformation:ComfortNoiseGeneration
+// Default implementation
+// -----------------------------------------------------------------------------
+// 
+TUint8 CMccCodecInformation::ComfortNoiseGeneration() const
+    {
+    return iComfortNoiseGenerationPt;
+    };
+
+
+// -----------------------------------------------------------------------------
+// CMccCodecInformation:MaxRed
+// -----------------------------------------------------------------------------
+// 
+TInt CMccCodecInformation::MaxRed() const
+    {
+    return iMaxRed;
+    }
+
+// -----------------------------------------------------------------------------
+// CMccCodecInformation:RedPayloadsL
+// -----------------------------------------------------------------------------
+//
+void CMccCodecInformation::RedPayloadsL( RArray<TUint>& /*aRedPayloads*/ ) const
+    {
+    User::Leave( KErrNotSupported );
+    }
+
+// -----------------------------------------------------------------------------
+// CMccCodecInformation::ConfigKeyL
+// -----------------------------------------------------------------------------
+//
+HBufC8* CMccCodecInformation::ConfigKeyL() const
+    {
+    HBufC8* key = NULL;
+    if ( iConfigKey )
+        {
+        key = iConfigKey->AllocL();
+        }
+    return key;
+    }
+    
+ // -----------------------------------------------------------------------------
+// CMccCodecInformation::PreferredEncodingDecodingDevice
+// -----------------------------------------------------------------------------
+//
+TUid CMccCodecInformation::PreferredEncodingDecodingDevice() const
+    {
+    return iEncodingDecodingDevice;
+    }   
+    
+// -----------------------------------------------------------------------------
+// CMccCodecInformation:GetPriority
+// Default implementation
+// -----------------------------------------------------------------------------
+// 
+TInt CMccCodecInformation::Priority( ) const
+    {
+    return iPriority;        
+    }
+    
+// -----------------------------------------------------------------------------
+// CMccCodecInformation:SetPriority
+// Default implementation
+// -----------------------------------------------------------------------------
+// 
+void CMccCodecInformation::SetPriority( TInt aPriority )
+    {
+    iPriority = aPriority;        
+    }
+
+// -----------------------------------------------------------------------------
+// CMccCodecInformation:GetPriorityPreference
+// Default implementation
+// -----------------------------------------------------------------------------
+// 
+TInt CMccCodecInformation::PriorityPreference( ) const
+    {
+    return iPriorityPreference;        
+    }
+
+// -----------------------------------------------------------------------------
+// CMccCodecInformation:SetPriorityPreference
+// Default implementation
+// -----------------------------------------------------------------------------
+// 
+void CMccCodecInformation::SetPriorityPreference(TInt aPreference )
+    {
+    iPriorityPreference = aPreference;    
+    }
+
+// -----------------------------------------------------------------------------
+// CMccCodecInformation:SetMaxBitrate
+// Default implementation
+// -----------------------------------------------------------------------------
+// 
+TInt CMccCodecInformation::SetMaxBitrate( TUint aMaxBitrate )
+    {
+    iMaxBitrate = aMaxBitrate;
+    return KErrNone;
+    }
+
+// -----------------------------------------------------------------------------
+// CMccCodecInformation:SetAverageBitrate
+// Default implementation
+// -----------------------------------------------------------------------------
+// 
+TInt CMccCodecInformation::SetAverageBitrate( TUint aAverageBitrate )
+    {
+    iAverageBitrate = aAverageBitrate;
+    return KErrNone;
+    }
+
+// -----------------------------------------------------------------------------
+// CMccCodecInformation:SetFramerate
+// Default implementation
+// -----------------------------------------------------------------------------
+// 
+TInt CMccCodecInformation::SetFramerate( TReal aFramerate )
+    {
+    iFramerate = aFramerate;
+    return KErrNone;
+    }
+
+// -----------------------------------------------------------------------------
+// CMccCodecInformation:SetFrameHeight
+// Default implementation
+// -----------------------------------------------------------------------------
+// 
+TInt CMccCodecInformation::SetFrameHeight( TUint aFrameHeight )
+    {
+    iVideoHeight = aFrameHeight;
+    return KErrNone;
+    }
+
+// -----------------------------------------------------------------------------
+// CMccCodecInformation:SetFrameWidth
+// Default implementation
+// -----------------------------------------------------------------------------
+// 
+TInt CMccCodecInformation::SetFrameWidth( TUint aFrameWidth )
+    {
+    iVideoWidth = aFrameWidth;
+    return KErrNone;
+    }
+
+// -----------------------------------------------------------------------------
+// CMccCodecInformation:MaxBitrate
+// Default implementation
+// -----------------------------------------------------------------------------
+// 
+TUint CMccCodecInformation::MaxBitrate() const
+    {    
+    return iMaxBitrate;
+    }
+
+// -----------------------------------------------------------------------------
+// CMccCodecInformation:AverageBitrate
+// Default implementation
+// -----------------------------------------------------------------------------
+// 
+TUint CMccCodecInformation::AverageBitrate() const
+    {
+    return iAverageBitrate;    
+    }
+
+// -----------------------------------------------------------------------------
+// CMccCodecInformation:Framerate
+// Default implementation
+// -----------------------------------------------------------------------------
+// 
+TReal CMccCodecInformation::Framerate() const
+    {
+    return iFramerate;    
+    }
+
+// -----------------------------------------------------------------------------
+// CMccCodecInformation:FrameHeight
+// Default implementation
+// -----------------------------------------------------------------------------
+// 
+TUint CMccCodecInformation::FrameHeight() const
+    {
+    return iVideoHeight;    
+    }
+
+// -----------------------------------------------------------------------------
+// CMccCodecInformation:FrameWidth
+// Default implementation
+// -----------------------------------------------------------------------------
+// 
+TUint CMccCodecInformation::FrameWidth() const
+    {
+    return iVideoWidth;        
+    }
+
+// -----------------------------------------------------------------------------
+// CMccCodecInformation:SetKeepAliveTimer
+// Default implementation
+// -----------------------------------------------------------------------------
+// 
+TInt CMccCodecInformation::SetKeepAliveTimer( TUint8 aTimerValue )
+    {
+    iKeepAliveTimer = aTimerValue;
+    return KErrNone;    
+    }
+
+// -----------------------------------------------------------------------------
+// CMccCodecInformation:SetKeepAlivePT
+// Default implementation
+// -----------------------------------------------------------------------------
+// 
+TInt CMccCodecInformation::SetKeepAlivePT( TUint8 aKeepAlivePT )
+    {
+    iKeepAlivePT = aKeepAlivePT;
+    return KErrNone;    
+    }
+
+// -----------------------------------------------------------------------------
+// CMccCodecInformation:SetKeepAliveData
+// Default implementation
+// -----------------------------------------------------------------------------
+// 
+TInt CMccCodecInformation::SetKeepAliveData( const TDesC8& aData )
+    {
+	if ( aData.Length() > KMaxKeepAliveDataLen )
+	    {
+	    return KErrArgument;
+	    }
+	
+    iKeepAliveData = aData;
+    return KErrNone;        
+    }
+
+// -----------------------------------------------------------------------------
+// CMccCodecInformation:KeepAliveTimer
+// Default implementation
+// -----------------------------------------------------------------------------
+// 
+TUint8 CMccCodecInformation::KeepAliveTimer() const
+    {
+    return iKeepAliveTimer;
+    }
+
+// -----------------------------------------------------------------------------
+// CMccCodecInformation:KeepAlivePT
+// Default implementation
+// -----------------------------------------------------------------------------
+// 
+TUint8 CMccCodecInformation::KeepAlivePT() const
+    {
+    return iKeepAlivePT;
+    }
+
+// -----------------------------------------------------------------------------
+// CMccCodecInformation:KeepAliveData
+// Default implementation
+// -----------------------------------------------------------------------------
+// 
+const TDesC8& CMccCodecInformation::KeepAliveData() const
+    {
+    return iKeepAliveData;
+    }