diff -r e42293e811d8 -r 6c1dfe4da5dd qtms/src/qtmsfactoryimpl.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/qtms/src/qtmsfactoryimpl.cpp Tue Aug 31 15:41:40 2010 +0300 @@ -0,0 +1,570 @@ +/* + * Copyright (c) 2010 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: QT Bindings for TMS + * + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "tmsutility.h" +#include "qtmscallimpl.h" +#include "qtmsglobalroutingimpl.h" +#include "qtmsglobalvoleffectimpl.h" +#include "qtmsglobalgaineffectimpl.h" +#include "qtmsvolumeeffectimpl.h" +#include "qtmsgaineffectimpl.h" +#include "qtmsclientsinkimpl.h" +#include "qtmsmodemsinkimpl.h" +#include "qtmsspeakersinkimpl.h" +#include "qtmsclientsourceimpl.h" +#include "qtmsmodemsourceimpl.h" +#include "qtmsmicsourceimpl.h" +#include "qtmsringtoneimpl.h" +#include "qtmsdtmfimpl.h" +#include "qtmsinbandtoneimpl.h" +#include "qtmsfactoryimpl.h" +#include "qtmspcmimpl.h" +#include "qtmsamrimpl.h" +#include "qtmsg711impl.h" +#include "qtmsg729impl.h" +#include "qtmsilbcimpl.h" +#include "qtmsbufferimpl.h" + +using namespace QTMS; +using namespace TMS; + +QTMSFactoryImpl::QTMSFactoryImpl() +{ + TRACE_PRN_FN_ENT; + TMSVer* ver = NULL; + TMSFactory::CreateFactory(iFactory, *ver); + TRACE_PRN_FN_EXT; +} + +QTMSFactoryImpl::~QTMSFactoryImpl() +{ + TRACE_PRN_FN_ENT; + delete iFactory; + TRACE_PRN_FN_EXT; +} + +gint QTMSFactoryImpl::CreateCall(QTMSCallType ctype, QTMSCall*& qtmscall, guint /*ctxid*/) +{ + TRACE_PRN_FN_ENT; + gint ret(QTMS_RESULT_UNINITIALIZED_OBJECT); + + TMSCall* tmscall(NULL); + if (iFactory) { + ret = iFactory->CreateCall((TMSCallType) ctype, tmscall); + + if (ret == TMS_RESULT_SUCCESS) { + ret = QTMSCallImpl::Create(qtmscall, tmscall); + } + } + TRACE_PRN_FN_EXT; + return ret; +} + +gint QTMSFactoryImpl::DeleteCall(QTMSCall*& qtmscall) +{ + TRACE_PRN_FN_ENT; + gint ret(QTMS_RESULT_SUCCESS); + delete qtmscall; + qtmscall = NULL; + TRACE_PRN_FN_EXT; + return ret; +} + +gint QTMSFactoryImpl::IsCallTypeSupported(QTMSCallType ctype, gboolean& flag) +{ + gint ret(QTMS_RESULT_SUCCESS); + + switch (ctype) { + case QTMS_CALL_CS: + case QTMS_CALL_IP: + flag = ETrue; + break; + case QTMS_CALL_ECS: //from TB 10.1 + default: + flag = EFalse; + break; + } + return ret; +} + +gint QTMSFactoryImpl::GetSupportedFormats(const QTMSStreamType strmtype, FormatVector& fmtlist) +{ + TRACE_PRN_FN_ENT; + gint ret(QTMS_RESULT_UNINITIALIZED_OBJECT); + TMS::FormatVector tmsfmtlist; + if (iFactory) { + ret = iFactory->GetSupportedFormats((TMSStreamType) strmtype, tmsfmtlist); + } + + std::vector::iterator itCodecs = tmsfmtlist.begin(); + TMSFormatType fmttype; + for (; itCodecs < tmsfmtlist.end(); itCodecs++) { + (*itCodecs)->GetType(fmttype); + QTMSFormat* qtmsfmt(NULL); + switch (fmttype) { + case QTMS_FORMAT_PCM: + ret = QTMSPCMFormatImpl::Create(qtmsfmt, *itCodecs); + break; + case QTMS_FORMAT_AMR: + ret = QTMSAMRFormatImpl::Create(qtmsfmt, *itCodecs); + break; + case QTMS_FORMAT_G711: + ret = QTMSG711FormatImpl::Create(qtmsfmt, *itCodecs); + break; + case QTMS_FORMAT_G729: + ret = QTMSG729FormatImpl::Create(qtmsfmt, *itCodecs); + break; + case QTMS_FORMAT_ILBC: + ret = QTMSILBCFormatImpl::Create(qtmsfmt, *itCodecs); + break; + default: + break; + } + + if (qtmsfmt) { + fmtlist.push_back(qtmsfmt); + } + } + TRACE_PRN_FN_EXT; + return ret; +} + +gint QTMSFactoryImpl::CreateFormat(QTMSFormatType fmttype, QTMSFormat*& qtmsfmt) +{ + TRACE_PRN_FN_ENT; + gint ret(QTMS_RESULT_UNINITIALIZED_OBJECT); + TMSFormat* tmsformat(NULL); + + if (iFactory) { + ret = iFactory->CreateFormat((TMSFormatType) fmttype, tmsformat); + + if (ret == TMS_RESULT_SUCCESS) { + switch (fmttype) { + case QTMS_FORMAT_PCM: + ret = QTMSPCMFormatImpl::Create(qtmsfmt, tmsformat); + break; + case QTMS_FORMAT_AMR: + ret = QTMSAMRFormatImpl::Create(qtmsfmt, tmsformat); + break; + case QTMS_FORMAT_G711: + ret = QTMSG711FormatImpl::Create(qtmsfmt, tmsformat); + break; + case QTMS_FORMAT_G729: + ret = QTMSG729FormatImpl::Create(qtmsfmt, tmsformat); + break; + case QTMS_FORMAT_ILBC: + ret = QTMSILBCFormatImpl::Create(qtmsfmt, tmsformat); + break; + default: + ret = QTMS_RESULT_FORMAT_TYPE_NOT_SUPPORTED; + break; + } + } + } + TRACE_PRN_FN_EXT; + return ret; +} + +gint QTMSFactoryImpl::DeleteFormat(QTMSFormat*& qtmsfmt) +{ + TRACE_PRN_FN_ENT; + __ASSERT_ALWAYS(qtmsfmt, PANIC(QTMS_RESULT_NULL_ARGUMENT)); + + gint ret(QTMS_RESULT_SUCCESS); + QTMSFormatType fmttype; + ret = qtmsfmt->GetType(fmttype); + switch (fmttype) { + case QTMS_FORMAT_PCM: + delete (static_cast (qtmsfmt)); + qtmsfmt = NULL; + break; + case QTMS_FORMAT_AMR: + delete (static_cast (qtmsfmt)); + qtmsfmt = NULL; + break; + case QTMS_FORMAT_G711: + delete (static_cast (qtmsfmt)); + qtmsfmt = NULL; + break; + case QTMS_FORMAT_G729: + delete (static_cast (qtmsfmt)); + qtmsfmt = NULL; + break; + case QTMS_FORMAT_ILBC: + delete (static_cast (qtmsfmt)); + qtmsfmt = NULL; + break; + default: + ret = QTMS_RESULT_FORMAT_TYPE_NOT_SUPPORTED; + break; + } + TRACE_PRN_FN_EXT; + return ret; +} + +gint QTMSFactoryImpl::CreateEffect(QTMSEffectType tmseffecttype, QTMSEffect*& qtmseffect) +{ + TRACE_PRN_FN_ENT; + gint ret(QTMS_RESULT_UNINITIALIZED_OBJECT); + TMSEffect* tmseffect(NULL); + + if (iFactory) { + ret = iFactory->CreateEffect((TMSEffectType) tmseffecttype, tmseffect); + + if (ret == TMS_RESULT_SUCCESS) { + switch (tmseffecttype) { + case TMS_EFFECT_VOLUME: + ret = QTMSVolumeEffectImpl::Create(qtmseffect, tmseffect); + break; + case TMS_EFFECT_GAIN: + ret = QTMSGainEffectImpl::Create(qtmseffect, tmseffect); + break; + case TMS_EFFECT_GLOBAL_VOL: + ret = QTMSGlobalVolEffectImpl::Create(qtmseffect, tmseffect); + break; + case TMS_EFFECT_GLOBAL_GAIN: + ret = QTMSGlobalGainEffectImpl::Create(qtmseffect, tmseffect); + break; + default: + ret = TMS_RESULT_EFFECT_TYPE_NOT_SUPPORTED; + break; + } + } + } + TRACE_PRN_FN_EXT; + return ret; +} + +gint QTMSFactoryImpl::DeleteEffect(QTMSEffect*& qtmseffect) +{ + TRACE_PRN_FN_ENT; + gint ret(QTMS_RESULT_SUCCESS); + + QTMSEffectType effecttype; + ret = qtmseffect->GetType(effecttype); + switch (effecttype) { + case QTMS_EFFECT_VOLUME: + delete (static_cast (qtmseffect)); + qtmseffect = NULL; + break; + case QTMS_EFFECT_GAIN: + delete (static_cast (qtmseffect)); + qtmseffect = NULL; + break; + case QTMS_EFFECT_GLOBAL_VOL: + delete (static_cast (qtmseffect)); + qtmseffect = NULL; + break; + case QTMS_EFFECT_GLOBAL_GAIN: + delete (static_cast (qtmseffect)); + qtmseffect = NULL; + break; + default: + ret = QTMS_RESULT_EFFECT_TYPE_NOT_SUPPORTED; + break; + } + TRACE_PRN_FN_EXT; + return ret; +} + +gint QTMSFactoryImpl::CreateBuffer(QTMSBufferType buffertype, guint size, QTMSBuffer*& buffer) +{ + TRACE_PRN_FN_ENT; + gint ret(QTMS_RESULT_UNINITIALIZED_OBJECT); + TMSBuffer* tmsbuffer(NULL); + if (iFactory) { + ret = iFactory->CreateBuffer((TMSBufferType) buffertype, size, tmsbuffer); + if (ret == TMS_RESULT_SUCCESS) { + switch (buffertype) { + case QTMS_BUFFER_MEMORY: + ret = QTMSBufferImpl::Create(buffertype, buffer, tmsbuffer); + break; + default: + ret = QTMS_RESULT_BUFFER_TYPE_NOT_SUPPORTED; + break; + } + } + } + + TRACE_PRN_FN_EXT; + return ret; +} + +gint QTMSFactoryImpl::DeleteBuffer(QTMSBuffer*& qtmsbuffer) +{ + TRACE_PRN_FN_ENT; + gint ret(QTMS_RESULT_SUCCESS); + delete qtmsbuffer; + qtmsbuffer = NULL; + TRACE_PRN_FN_EXT; + return ret; +} + +gint QTMSFactoryImpl::CreateSource(QTMSSourceType srctype, QTMSSource*& qtmssrc) +{ + TRACE_PRN_FN_ENT; + gint ret(QTMS_RESULT_UNINITIALIZED_OBJECT); + + TMS::TMSSource* tmssource(NULL); + if (iFactory) { + ret = iFactory->CreateSource((TMSSourceType) srctype, tmssource); + + if (ret == TMS_RESULT_SUCCESS) { + switch (srctype) { + case QTMS_SOURCE_CLIENT: + ret = QTMSClientSourceImpl::Create(qtmssrc, tmssource); + break; + case QTMS_SOURCE_MODEM: + ret = QTMSModemSourceImpl::Create(qtmssrc, tmssource); + break; + case QTMS_SOURCE_MIC: + ret = QTMSMicSourceImpl::Create(qtmssrc, tmssource); + break; + default: + ret = TMS_RESULT_SOURCE_TYPE_NOT_SUPPORTED; + break; + } + } + } + TRACE_PRN_FN_EXT; + return ret; +} + +gint QTMSFactoryImpl::DeleteSource(QTMSSource*& qtmssrc) +{ + TRACE_PRN_FN_ENT; + __ASSERT_ALWAYS(qtmssrc, PANIC(QTMS_RESULT_NULL_ARGUMENT)); + + gint ret(QTMS_RESULT_SUCCESS); + QTMSSourceType sourcetype; + ret = qtmssrc->GetType(sourcetype); + switch (sourcetype) { + case QTMS_SOURCE_CLIENT: + delete (static_cast (qtmssrc)); + qtmssrc = NULL; + break; + case QTMS_SOURCE_MODEM: + { + delete (static_cast (qtmssrc)); + qtmssrc = NULL; + } + break; + case TMS_SOURCE_MIC: + { + delete (static_cast (qtmssrc)); + qtmssrc = NULL; + } + break; + default: + ret = TMS_RESULT_SOURCE_TYPE_NOT_SUPPORTED; + break; + } + + TRACE_PRN_FN_EXT; + return ret; +} + +gint QTMSFactoryImpl::CreateSink(QTMSSinkType sinktype, QTMSSink*& qtmssink) +{ + TRACE_PRN_FN_ENT; + gint ret(QTMS_RESULT_UNINITIALIZED_OBJECT); + + TMS::TMSSink* tmssink(NULL); + + if (iFactory) { + ret = iFactory->CreateSink((TMSSinkType) sinktype, tmssink); + + if (ret == TMS_RESULT_SUCCESS) { + switch (sinktype) { + case QTMS_SINK_CLIENT: + ret = QTMSClientSinkImpl::Create(qtmssink, tmssink); + break; + case QTMS_SINK_MODEM: + ret = QTMSModemSinkImpl::Create(qtmssink, tmssink); + break; + case QTMS_SINK_SPEAKER: + ret = QTMSSpeakerSinkImpl::Create(qtmssink, tmssink); + break; + default: + ret = TMS_RESULT_SINK_TYPE_NOT_SUPPORTED; + break; + } + } + } + TRACE_PRN_FN_EXT; + return ret; +} + +gint QTMSFactoryImpl::DeleteSink(QTMSSink*& qtmssink) +{ + TRACE_PRN_FN_ENT; + __ASSERT_ALWAYS(qtmssink, PANIC(QTMS_RESULT_NULL_ARGUMENT)); + + gint ret(QTMS_RESULT_SUCCESS); + QTMSSinkType sinktype; + ret = qtmssink->GetType(sinktype); + switch (sinktype) { + case QTMS_SINK_CLIENT: + { + delete (static_cast (qtmssink)); + qtmssink = NULL; + } + break; + case QTMS_SINK_MODEM: + { + delete (static_cast (qtmssink)); + qtmssink = NULL; + } + break; + case QTMS_SINK_SPEAKER: + { + delete (static_cast (qtmssink)); + qtmssink = NULL; + } + break; + default: + ret = QTMS_RESULT_SINK_TYPE_NOT_SUPPORTED; + break; + } + TRACE_PRN_FN_EXT; + return ret; +} + +gint QTMSFactoryImpl::CreateGlobalRouting(QTMSGlobalRouting*& qrouting) +{ + TRACE_PRN_FN_ENT; + gint ret(QTMS_RESULT_UNINITIALIZED_OBJECT); + + TMS::TMSGlobalRouting* tmsrouting(NULL); + if (iFactory) { + ret = iFactory->CreateGlobalRouting(tmsrouting); + + if (ret == TMS_RESULT_SUCCESS) { + ret = QTMSGlobalRoutingImpl::Create(qrouting, tmsrouting); + } + } + TRACE_PRN_FN_EXT; + return ret; +} + +gint QTMSFactoryImpl::DeleteGlobalRouting(QTMSGlobalRouting*& globalrouting) +{ + TRACE_PRN_FN_ENT; + gint ret(QTMS_RESULT_SUCCESS); + delete (static_cast (globalrouting)); + globalrouting = NULL; + TRACE_PRN_FN_EXT; + return ret; +} + +gint QTMSFactoryImpl::CreateDTMF(QTMSStreamType streamtype, QTMSDTMF*& qdtmf) +{ + TRACE_PRN_FN_ENT; + gint ret(QTMS_RESULT_UNINITIALIZED_OBJECT); + + TMS::TMSDTMF* tmsdtmf = NULL; + + if (iFactory) { + ret = iFactory->CreateDTMF((TMSStreamType) streamtype, tmsdtmf); + + if (ret == TMS_RESULT_SUCCESS) { + ret = QTMSDTMFImpl::Create(qdtmf, tmsdtmf); + } + } + TRACE_PRN_FN_EXT; + return ret; +} + +gint QTMSFactoryImpl::DeleteDTMF(QTMSDTMF*& dtmf) +{ + TRACE_PRN_FN_ENT; + gint ret(QTMS_RESULT_SUCCESS); + delete (static_cast (dtmf)); + dtmf = NULL; + TRACE_PRN_FN_EXT; + return ret; +} + +gint QTMSFactoryImpl::CreateRingTonePlayer(QTMSRingTone*& rt) +{ + TRACE_PRN_FN_ENT; + gint ret(QTMS_RESULT_UNINITIALIZED_OBJECT); + + TMS::TMSRingTone* tmsrt = NULL; + + if (iFactory) { + ret = iFactory->CreateRingTonePlayer(tmsrt); + + if (ret == TMS_RESULT_SUCCESS) { + ret = QTMSRingToneImpl::Create(rt, tmsrt); + } + } + TRACE_PRN_FN_EXT; + return ret; +} + +gint QTMSFactoryImpl::DeleteRingTonePlayer(QTMSRingTone*& rt) +{ + TRACE_PRN_FN_ENT; + gint ret(QTMS_RESULT_SUCCESS); + delete (static_cast (rt)); + rt = NULL; + TRACE_PRN_FN_EXT; + return ret; +} + +gint QTMSFactoryImpl::CreateInbandTonePlayer(QTMSInbandTone*& qinbandtone) +{ + TRACE_PRN_FN_ENT; + gint ret(QTMS_RESULT_UNINITIALIZED_OBJECT); + + TMS::TMSInbandTone* tmsinband = NULL; + if (iFactory) { + ret = iFactory->CreateInbandTonePlayer(tmsinband); + + if (ret == TMS_RESULT_SUCCESS) { + ret = QTMSInbandToneImpl::Create(qinbandtone, tmsinband); + } + } + TRACE_PRN_FN_EXT; + return ret; +} + +gint QTMSFactoryImpl::DeleteInbandTonePlayer(QTMSInbandTone*& inbandtone) +{ + TRACE_PRN_FN_ENT; + gint ret(QTMS_RESULT_SUCCESS); + delete (static_cast (inbandtone)); + inbandtone = NULL; + TRACE_PRN_FN_EXT; + return ret; +} + +// End of file