mmserv/voipaudioservices/VoIPIntfc/src/VoIPUtilityFactoryImpl.cpp
changeset 0 71ca22bcf22a
child 18 a36789189b53
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmserv/voipaudioservices/VoIPIntfc/src/VoIPUtilityFactoryImpl.cpp	Tue Feb 02 01:08:46 2010 +0200
@@ -0,0 +1,211 @@
+/*
+ * Copyright (c) 2007-2009 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:  VoIP Audio Services
+ *
+ */
+
+#include <e32base.h>
+#include <AudioPreference.h>
+#include <mmffourcc.h>
+#include <voipuplinkstream.h>
+#include <voipdownlinkstream.h>
+#include "debugtracemacros.h"
+#include "VoIPDataBufferImpl.h"
+#include "VoIPJBDataBufferImpl.h"
+#include "VoIPQueueHandler.h"
+#include "VoIPSharedData.h"
+#include "VoIPAudioSession.h"
+#include "VoIPDtmfTonePlayerImpl.h"
+#include "VoIPDownlinkStreamImpl.h"
+#include "VoIPUplinkStreamImpl.h"
+#include "VoIPUtilityFactoryImpl.h"
+
+// ---------------------------------------------------------------------------
+// CVoIPUtilityFactoryImpl::NewL
+// ---------------------------------------------------------------------------
+//
+CVoIPUtilityFactoryImpl* CVoIPUtilityFactoryImpl::NewL()
+    {
+    CVoIPUtilityFactoryImpl* self = new (ELeave) CVoIPUtilityFactoryImpl();
+    CleanupStack::PushL(self);
+    self->ConstructL();
+    CleanupStack::Pop(self);
+    return self;
+    }
+
+// ---------------------------------------------------------------------------
+// CVoIPUtilityFactoryImpl::~CVoIPUtilityFactoryImpl
+// ---------------------------------------------------------------------------
+//
+CVoIPUtilityFactoryImpl::~CVoIPUtilityFactoryImpl()
+    {
+    }
+
+// ---------------------------------------------------------------------------
+// CVoIPUtilityFactoryImpl::CVoIPUtilityFactoryImpl
+// ---------------------------------------------------------------------------
+//
+CVoIPUtilityFactoryImpl::CVoIPUtilityFactoryImpl()
+    {
+    }
+
+// ---------------------------------------------------------------------------
+// CVoIPUtilityFactoryImpl::ConstructL
+// ---------------------------------------------------------------------------
+//
+void CVoIPUtilityFactoryImpl::ConstructL()
+    {
+    // Clients must have MultimediaDD capability to use this priority/pref.
+    // Also, VAS will monitor for emergency call and if detected it  will
+    // deny access to audio resources.
+    iPriorityDn.iPref = KAudioPrefVoipAudioDownlink;
+    iPriorityDn.iPriority = KAudioPriorityVoipAudioDownlink;
+    iPriorityUp.iPref = KAudioPrefVoipAudioUplink;
+    iPriorityUp.iPriority = KAudioPriorityVoipAudioUplink;
+    }
+
+// ---------------------------------------------------------------------------
+// CVoIPUtilityFactoryImpl::CreateDownlinkStreamL
+// ---------------------------------------------------------------------------
+//
+void CVoIPUtilityFactoryImpl::CreateDownlinkStreamL(
+        const TVersion /*aVersion*/,
+        const CVoIPUtilityFactory::TVoIPCallType /*aCallType*/,
+        CVoIPAudioDownlinkStream*& aDnLink)
+    {
+    iDownLink = CVoIPAudioDownlinkStreamImpl::NewL(iPriorityDn);
+    if (iDownLink)
+        {
+        aDnLink = iDownLink;
+        }
+    }
+
+// ---------------------------------------------------------------------------
+// CVoIPUtilityFactoryImpl::CreateDownlinkStreamL
+// ---------------------------------------------------------------------------
+//
+void CVoIPUtilityFactoryImpl::CreateDownlinkStreamL(
+        const TVersion /*aVersion*/, CVoIPJitterBufferIntfc*& aJBIntfc,
+        CVoIPAudioDownlinkStream*& aDnLink)
+    {
+    iDownLink = CVoIPAudioDownlinkStreamImpl::NewL(iPriorityDn);
+
+    if (iDownLink)
+        {
+        iDownLink->CreateJitterBufferIntfcL(aJBIntfc);
+        aDnLink = iDownLink;
+        }
+    }
+
+// ---------------------------------------------------------------------------
+// CVoIPUtilityFactoryImpl::CreateUplinkStreamL
+// ---------------------------------------------------------------------------
+//
+void CVoIPUtilityFactoryImpl::CreateUplinkStreamL(
+        const TVersion /*aVersion*/,
+        const CVoIPUtilityFactory::TVoIPCallType /*aCallType*/,
+        CVoIPAudioUplinkStream*& aUpLink)
+    {
+    iUpLink = CVoIPAudioUplinkStreamImpl::NewL(iPriorityUp);
+    aUpLink = iUpLink;
+    }
+
+// ---------------------------------------------------------------------------
+// CVoIPUtilityFactoryImpl::CreateDTMFTonePlayerL
+// ---------------------------------------------------------------------------
+//
+void CVoIPUtilityFactoryImpl::CreateDTMFTonePlayerL(
+        CDTMFTonePlayer*& aDtmfPlayer)
+    {
+    aDtmfPlayer = CDTMFTonePlayerImpl::NewL();
+    }
+
+// ---------------------------------------------------------------------------
+// CVoIPUtilityFactoryImpl::CreateBufferL
+// ---------------------------------------------------------------------------
+//
+void CVoIPUtilityFactoryImpl::CreateBufferL(CVoIPDataBuffer*& aBuffer,
+        const CVoIPDataBuffer::TVoIPBufferType aType,
+        const TVoIPCodecFormat aCodecFormat)
+    {
+    TRACE_PRN_FN_ENT;
+
+    TInt bufLen = 0;
+
+    switch (aCodecFormat)
+        {
+        case EG729:
+            bufLen = KVoIPG729FrameLen;
+            break;
+        case EILBC:
+            bufLen = KVoIPILBCFrameLen;
+            break;
+        case EAMR_NB:
+            bufLen = KVoIPAMRNBFrameLen;
+            break;
+        case EPCM16:
+            bufLen = KVoIPPCM16FrameLen;
+            break;
+        case EG711_10MS:
+            bufLen = KVoIPG711FrameLen10ms;
+            break;
+        case EG711:
+        default:
+            bufLen = KVoIPG711FrameLen20ms;
+        }
+
+    // Create buffer type- and codec-dependent
+    if (aType == CVoIPDataBuffer::EJitterBuffer && aCodecFormat != EPCM16)
+        {
+        aBuffer = CVoIPJBDataBufferImpl::NewL(bufLen);
+        }
+    else
+        {
+        aBuffer = CVoIPDataBufferImpl::NewL(bufLen);
+        }
+
+    TRACE_PRN_FN_EXT;
+    }
+
+// ---------------------------------------------------------------------------
+// CVoIPUtilityFactoryImpl::GetSupportedDownlinkFormats
+// ---------------------------------------------------------------------------
+//
+TInt CVoIPUtilityFactoryImpl::GetSupportedDownlinkFormats(
+        RArray<TVoIPCodecFormat>& aFormats)
+    {
+    TInt err = KErrNotFound;
+    if (iDownLink)
+        {
+        TRAP(err, iDownLink->GetSupportedFormatsL(iPriorityDn, aFormats));
+        }
+    return err;
+    }
+
+// ---------------------------------------------------------------------------
+// CVoIPUtilityFactoryImpl::GetSupportedUplinkFormats
+// ---------------------------------------------------------------------------
+//
+TInt CVoIPUtilityFactoryImpl::GetSupportedUplinkFormats(
+        RArray<TVoIPCodecFormat>& aFormats)
+    {
+    TInt err = KErrNotFound;
+    if (iUpLink)
+        {
+        TRAP(err, iUpLink->GetSupportedFormatsL(iPriorityUp, aFormats));
+        }
+    return err;
+    }
+
+// End of file