richcallsettingsengine/rcse2/src/crcseaudiocodecentry.cpp
branchRCL_3
changeset 22 d38647835c2e
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/richcallsettingsengine/rcse2/src/crcseaudiocodecentry.cpp	Wed Sep 01 12:29:57 2010 +0100
@@ -0,0 +1,431 @@
+/*
+* Copyright (c) 2002-2007 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:  Audio codec entry, which is stored to db
+*
+*/
+
+
+
+// INCLUDE FILES
+#include	<featmgr.h>
+
+#include    "crcseaudiocodecentry.h"
+#include    "rcseconstants.h"
+#include    "rcsepanic.h"
+#include    "rcsedefaults.h"
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// CRCSEAudioCodecEntry::NewL
+// Two-phased constructor.
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CRCSEAudioCodecEntry* CRCSEAudioCodecEntry::NewL()
+    {
+    CRCSEAudioCodecEntry* self = NewLC();
+    CleanupStack::Pop( self );
+    return self;
+    }
+
+// -----------------------------------------------------------------------------
+// CRCSEAudioCodecEntry::NewLC
+// Two-phased constructor.
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CRCSEAudioCodecEntry* CRCSEAudioCodecEntry::NewLC()
+    {
+    CRCSEAudioCodecEntry* self = new (ELeave) CRCSEAudioCodecEntry();
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    self->ResetDefaultCodecValues();
+    return self;
+    }
+
+// -----------------------------------------------------------------------------
+// CRCSEAudioCodecEntry::ConstructL
+// Symbian 2nd phase constructor can leave.
+// -----------------------------------------------------------------------------
+//
+void CRCSEAudioCodecEntry::ConstructL()
+    {
+    // Check VoIP support from feature manager
+    FeatureManager::InitializeLibL();
+    TBool support = FeatureManager::FeatureSupported( KFeatureIdCommonVoip );
+    FeatureManager::UnInitializeLib();
+    if (!support)
+        {
+        User::Leave(KErrNotSupported);
+        }
+    }
+ 
+// -----------------------------------------------------------------------------
+// CRCSEAudioCodecEntry::CRCSEAudioCodecEntry
+// C++ default constructor can NOT contain any code, that
+// might leave.
+// -----------------------------------------------------------------------------
+//
+CRCSEAudioCodecEntry::CRCSEAudioCodecEntry()
+    {
+    }
+    
+// Destructor
+EXPORT_C CRCSEAudioCodecEntry::~CRCSEAudioCodecEntry()
+    {
+    iChannels.Reset();
+    iChannels.Close(); 
+    
+    iModeSet.Reset();
+    iModeSet.Close();      
+    }
+
+// -----------------------------------------------------------------------------
+// CRCSEAudioCodecEntry::SetDefaultCodecValueSet
+// Sets default parameter values separately for each codec.
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CRCSEAudioCodecEntry::SetDefaultCodecValueSet( TPtrC aCodecType )
+    {
+    
+    if ( aCodecType == KAudioCodecAMR )
+        {
+        iCodecId                  = 0;
+        iMediaTypeName            = KRCSEDefaultMediaTypeName;
+        iMediaSubTypeName         = KAudioCodecAMR;
+        iJitterBufferSize         = KRCSEDefaultJitterBufferSize;
+        iOctetAlign               = EOff;
+        iModeSet.Reset();
+        iModeChangePeriod         = KNotSet;
+        iModeChangeNeighbor       = EOn;
+        iPtime                    = 20;
+        iMaxptime                 = KRCSEDefaultMaxptime;
+        iCrc                      = EOONotSet;
+        iRobustSorting            = EOONotSet;
+        iInterLeaving             = KNotSet;
+        iChannels.Append(1);
+        iVAD                      = EOff;
+        iDTX                      = EOff;
+        iSamplingRate             = KNotSet;
+        iAnnexb                   = EOONotSet;
+        iModeChangeCapability     = KNotSet;
+        iMaxRed                   = KNotSet;
+        }
+    else if ( aCodecType == KAudioCodeciLBC )
+        {
+        iCodecId                  = 0;
+        iMediaTypeName            = KRCSEDefaultMediaTypeName;
+        iMediaSubTypeName         = KAudioCodeciLBC;
+        iJitterBufferSize         = KRCSEDefaultJitterBufferSize;
+        iOctetAlign               = EOONotSet;
+        iModeSet.Reset();
+        iModeSet.Append(30);
+        iModeChangePeriod         = KNotSet;
+        iModeChangeNeighbor       = EOONotSet;
+        iPtime                    = 30;
+        iMaxptime                 = 180;
+        iCrc                      = EOONotSet;
+        iRobustSorting            = EOONotSet;
+        iInterLeaving             = KNotSet;
+        iChannels.Reset();
+        iVAD                      = EOff;
+        iDTX                      = EOff;
+        iSamplingRate             = KNotSet;
+        iAnnexb                   = EOONotSet;    
+        iModeChangeCapability     = KNotSet;
+        iMaxRed                   = KNotSet;
+        }
+    else if (aCodecType == KAudioCodecVMRWB)
+        {
+        iCodecId                  = 0;
+        iMediaTypeName            = KRCSEDefaultMediaTypeName;
+        iMediaSubTypeName         = KAudioCodecVMRWB;
+        iJitterBufferSize         = KRCSEDefaultJitterBufferSize;
+        iOctetAlign               = EOff;
+        iModeSet.Reset();
+        iModeChangePeriod         = KNotSet;
+        iModeChangeNeighbor       = EOONotSet;
+        iPtime                    = KNotSet;
+        iMaxptime                 = KRCSEDefaultMaxptime;
+        iCrc                      = EOONotSet;
+        iRobustSorting            = EOONotSet;
+        iInterLeaving             = KNotSet;
+        iChannels.Reset();
+        iVAD                      = EOONotSet;
+        iDTX                      = EOff;
+        iSamplingRate             = KNotSet;
+        iAnnexb                   = EOONotSet;        
+        iModeChangeCapability     = KNotSet;
+        iMaxRed                   = KNotSet;
+        }
+    else if (aCodecType == KAudioCodecPCMA)
+        {
+        iCodecId                  = 0;
+        iMediaTypeName            = KRCSEDefaultMediaTypeName;
+        iMediaSubTypeName         = KAudioCodecPCMA;
+        iJitterBufferSize         = KRCSEDefaultJitterBufferSize;
+        iOctetAlign               = EOn;
+        iModeSet.Reset();
+        iModeChangePeriod         = KNotSet;
+        iModeChangeNeighbor       = EOONotSet;
+        iPtime                    = 20;
+        iMaxptime                 = KRCSEDefaultMaxptime;
+        iCrc                      = EOONotSet;
+        iRobustSorting            = EOONotSet;
+        iInterLeaving             = KNotSet;
+        iChannels.Reset();
+        iVAD                      = EOff;
+        iDTX                      = EOff;
+        iSamplingRate             = KNotSet;
+        iAnnexb                   = EOONotSet;    
+        iModeChangeCapability     = KNotSet;
+        iMaxRed                   = KNotSet;
+        }
+    else if (aCodecType == KAudioCodecPCMU)
+        {
+        iCodecId                  = 0;
+        iMediaTypeName            = KRCSEDefaultMediaTypeName;
+        iMediaSubTypeName         = KAudioCodecPCMU;
+        iJitterBufferSize         = KRCSEDefaultJitterBufferSize;
+        iOctetAlign               = EOn;
+        iModeSet.Reset();
+        iModeChangePeriod         = KNotSet;
+        iModeChangeNeighbor       = EOONotSet;
+        iPtime                    = 20;
+        iMaxptime                 = KRCSEDefaultMaxptime;
+        iCrc                      = EOONotSet;
+        iRobustSorting            = EOONotSet;
+        iInterLeaving             = KNotSet;
+        iChannels.Reset();
+        iVAD                      = EOff;
+        iDTX                      = EOff;
+        iSamplingRate             = KNotSet;
+        iAnnexb                   = EOONotSet;
+        iModeChangeCapability     = KNotSet;
+        iMaxRed                   = KNotSet;
+        }
+    else if (aCodecType == KAudioCodecCN)
+        {
+        iCodecId                  = 0;
+        iMediaTypeName            = KRCSEDefaultMediaTypeName;
+        iMediaSubTypeName         = KAudioCodecCN;
+        iJitterBufferSize         = KRCSEDefaultJitterBufferSize;
+        iOctetAlign               = EOONotSet;
+        iModeSet.Reset();
+        iModeChangePeriod         = KNotSet;
+        iModeChangeNeighbor       = EOONotSet;
+        iPtime                    = KNotSet;
+        iMaxptime                 = KNotSet;
+        iCrc                      = EOONotSet;
+        iRobustSorting            = EOONotSet;
+        iInterLeaving             = KNotSet;
+        iChannels.Reset();
+        iVAD                      = EOff;
+        iDTX                      = EOONotSet;
+        iSamplingRate             = 8000;
+        iAnnexb                   = EOONotSet;
+        iModeChangeCapability     = KNotSet;
+        iMaxRed                   = KNotSet;
+        }
+    else if (aCodecType == KAudioCodecG729)
+        {
+        iCodecId                  = 0;
+        iMediaTypeName            = KRCSEDefaultMediaTypeName;
+        iMediaSubTypeName         = KAudioCodecG729;
+        iJitterBufferSize         = KRCSEDefaultJitterBufferSize;
+        iOctetAlign               = EOONotSet;
+        iModeSet.Reset();
+        iModeChangePeriod         = KNotSet;
+        iModeChangeNeighbor       = EOONotSet;
+        iPtime                    = KNotSet;
+        iMaxptime                 = KRCSEDefaultMaxptime;
+        iCrc                      = EOONotSet;
+        iRobustSorting            = EOONotSet;
+        iInterLeaving             = KNotSet;
+        iChannels.Reset();
+        iVAD                      = EOff;
+        iDTX                      = EOff;
+        iSamplingRate             = KNotSet;
+        iAnnexb                   = EOONotSet;
+        iModeChangeCapability     = KNotSet;
+        iMaxRed                   = KNotSet;
+        }
+    else if (aCodecType == KAudioCodecAMRWB)
+        {
+        iCodecId                  = 0;
+        iMediaTypeName            = KRCSEDefaultMediaTypeName;
+        iMediaSubTypeName         = KAudioCodecAMRWB;
+        iJitterBufferSize         = KRCSEDefaultJitterBufferSize;
+        iOctetAlign               = EOff;
+        iModeSet.Reset();
+        iModeChangePeriod         = KNotSet;
+        iModeChangeNeighbor       = EOn;
+        iPtime                    = 20;
+        iMaxptime                 = KRCSEDefaultMaxptime;
+        iCrc                      = EOONotSet;
+        iRobustSorting            = EOONotSet;
+        iInterLeaving             = KNotSet;
+        iChannels.Append(1);
+        iVAD                      = EOff;
+        iDTX                      = EOff;
+        iSamplingRate             = KNotSet;
+        iAnnexb                   = EOONotSet;
+        iModeChangeCapability     = KNotSet;
+        iMaxRed                   = KNotSet;
+        }
+    else if (aCodecType == KAudioCodecEVRC)
+        {
+        iCodecId                  = 0;
+        iMediaTypeName            = KRCSEDefaultMediaTypeName;
+        iMediaSubTypeName         = KAudioCodecEVRC;
+        iJitterBufferSize         = KRCSEDefaultJitterBufferSize;
+        iOctetAlign               = EOONotSet;
+        iModeSet.Reset();
+        iModeChangePeriod         = KNotSet;
+        iModeChangeNeighbor       = EOONotSet;
+        iPtime                    = KNotSet;
+        iMaxptime                 = KRCSEDefaultMaxptime;
+        iCrc                      = EOONotSet;
+        iRobustSorting            = EOONotSet;
+        iInterLeaving             = 5;
+        iChannels.Reset();
+        iVAD                      = EOff;
+        iDTX                      = EOONotSet;
+        iSamplingRate             = KNotSet;
+        iAnnexb                   = EOONotSet;
+        iModeChangeCapability     = KNotSet;
+        iMaxRed                   = KNotSet;
+        }
+    else if (aCodecType == KAudioCodecEVRC0)
+        {
+        iCodecId                  = 0;
+        iMediaTypeName            = KRCSEDefaultMediaTypeName;
+        iMediaSubTypeName         = KAudioCodecEVRC0;
+        iJitterBufferSize         = KRCSEDefaultJitterBufferSize;
+        iOctetAlign               = EOONotSet;
+        iModeSet.Reset();
+        iModeChangePeriod         = KNotSet;
+        iModeChangeNeighbor       = EOONotSet;
+        iPtime                    = KNotSet;
+        iMaxptime                 = KNotSet;
+        iCrc                      = EOONotSet;
+        iRobustSorting            = EOONotSet;
+        iInterLeaving             = KNotSet;
+        iChannels.Reset();
+        iVAD                      = EOff;
+        iDTX                      = EOONotSet;
+        iSamplingRate             = KNotSet;
+        iAnnexb                   = EOONotSet;
+        iModeChangeCapability     = KNotSet;
+        iMaxRed                   = KNotSet;
+        }
+    else if (aCodecType == KAudioCodecSMV)
+        {
+        iCodecId                  = 0;
+        iMediaTypeName            = KRCSEDefaultMediaTypeName;
+        iMediaSubTypeName         = KAudioCodecSMV;
+        iJitterBufferSize         = KRCSEDefaultJitterBufferSize;
+        iOctetAlign               = EOONotSet;
+        iModeSet.Reset();
+        iModeChangePeriod         = KNotSet;
+        iModeChangeNeighbor       = EOONotSet;
+        iPtime                    = KNotSet;
+        iMaxptime                 = KRCSEDefaultMaxptime;
+        iCrc                      = EOONotSet;
+        iRobustSorting            = EOONotSet;
+        iInterLeaving             = 5;
+        iChannels.Reset();
+        iVAD                      = EOff;
+        iDTX                      = EOONotSet;
+        iSamplingRate             = KNotSet;
+        iAnnexb                   = EOONotSet;
+        iModeChangeCapability     = KNotSet;
+        iMaxRed                   = KNotSet;
+        }
+    else if (aCodecType == KAudioCodecSMV0)
+        {
+        iCodecId                  = 0;
+        iMediaTypeName            = KRCSEDefaultMediaTypeName;
+        iMediaSubTypeName         = KAudioCodecSMV0;
+        iJitterBufferSize         = KRCSEDefaultJitterBufferSize;
+        iOctetAlign               = EOONotSet;
+        iModeSet.Reset();
+        iModeChangePeriod         = KNotSet;
+        iModeChangeNeighbor       = EOONotSet;
+        iPtime                    = KNotSet;
+        iMaxptime                 = KNotSet;
+        iCrc                      = EOONotSet;
+        iRobustSorting            = EOONotSet;
+        iInterLeaving             = KNotSet;
+        iChannels.Reset();
+        iVAD                      = EOff;
+        iDTX                      = EOONotSet;
+        iSamplingRate             = 8000;
+        iAnnexb                   = EOONotSet;
+        iModeChangeCapability     = KNotSet;
+        iMaxRed                   = KNotSet;
+        }
+    else
+        {
+        iOctetAlign               = KRCSEDefaultOctetAlign;
+        iModeSet.Reset();
+        iModeChangePeriod         = 0;
+        iModeChangeNeighbor       = KRCSEDefaultModeChangeNeighbor;
+        iPtime                    = 0;
+        iMaxptime                 = 0;
+        iCrc                      = KRCSEDefaultCRC;
+        iRobustSorting            = KRCSEDefaultRobustSorting;
+        iInterLeaving             = 0;
+        iChannels.Reset();
+        iVAD                      = KRCSEDefaultVAD;
+        iDTX                      = KRCSEDefaultDTX;
+        iSamplingRate             = KNotSet;
+        iAnnexb                   = EOONotSet;    
+        iModeChangeCapability     = KNotSet;
+        iMaxRed                   = KNotSet;
+        }    
+    }
+
+// -----------------------------------------------------------------------------
+// CRCSEAudioCodecEntry::ResetDefaultCodecValues
+// Resets codec entry to default settings.
+// -----------------------------------------------------------------------------
+//
+void CRCSEAudioCodecEntry::ResetDefaultCodecValues()
+    {
+    iModeSet.Reset();
+    iChannels.Reset();
+    // These parameters default values are same regardless used codec.
+    iCodecId                 = 0;
+    iMediaTypeName           = KRCSEDefaultMediaTypeName;
+    iMediaSubTypeName        = KRCSEDefaultMediaSubtypeName;
+    iJitterBufferSize        = KRCSEDefaultJitterBufferSize;
+    
+    // These parameters default values change with used codec, here there are set to KNotSet.
+    iOctetAlign              = KRCSEDefaultOctetAlign;
+    iModeChangePeriod        = 0;
+    iModeChangeNeighbor      = KRCSEDefaultModeChangeNeighbor;
+    iPtime                   = 0;
+    iMaxptime                = 0;
+    iCrc                     = KRCSEDefaultCRC;
+    iRobustSorting           = KRCSEDefaultRobustSorting;
+    iInterLeaving            = 0;
+    iVAD                     = KRCSEDefaultVAD;
+    iDTX                     = KRCSEDefaultDTX;
+    iSamplingRate            = 0;
+    iAnnexb                  = KRCSEDefaultAnnexb;
+    iModeChangeCapability    = KRCSEDefaultModeChangeCapability;
+    iMaxRed                  = KRCSEDefaultMaxRed;
+    }
+
+//  End of File