diff -r f5c5c82a163e -r 3570217d8c21 mmserv/tms/tmscallserver/src/ipcallstreambase.cpp --- a/mmserv/tms/tmscallserver/src/ipcallstreambase.cpp Tue Apr 27 17:11:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,174 +0,0 @@ -/* - * Copyright (c) 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: Telephony Multimedia Service - * - */ - -#include -#include -#include "tmsutility.h" -#include "tmsshared.h" -#include "ipcallstream.h" - -using namespace TMS; - -// ----------------------------------------------------------------------------- -// TMSIPCallStreamBase::~TMSIPCallStreamBase -// Destructor -// ----------------------------------------------------------------------------- -// -TMSIPCallStreamBase::~TMSIPCallStreamBase() - { - TRACE_PRN_FN_ENT; - - if (iChunk.Handle() > 0) - { - iChunk.Close(); - } - -#ifndef __USE_GSTREAMER__ - delete iDevSound; -#endif //__USE_GSTREAMER__ - TRACE_PRN_FN_EXT; - } - -#ifndef __USE_GSTREAMER__ -// ----------------------------------------------------------------------------- -// TMSIPCallStreamBase::InitDevSoundL -// -// ----------------------------------------------------------------------------- -// -void TMSIPCallStreamBase::InitDevSoundL(const TMMFState aDevSoundState, - const TMMFPrioritySettings priority) - { - TRACE_PRN_FN_ENT; - - if (!iDevSound) - { - // Create D/S recording/playing device - iDevSound = CMMFDevSound::NewL(); - } - - if (iDevSound) - { - iDevSound->InitializeL(*this, TFourCC(iCodecID), aDevSoundState); - iDevSound->SetPrioritySettings(priority); - } - } -#endif //__USE_GSTREAMER__ - -// ----------------------------------------------------------------------------- -// TMSIPCallStreamBase::SetMsgQueue -// -// ----------------------------------------------------------------------------- -// -void TMSIPCallStreamBase::SetMsgQueue(const RMsgQueue aMsgQueue) - { - iMsgQueue = aMsgQueue; - } - -// ----------------------------------------------------------------------------- -// TMSIPCallStreamBase::ConfigureMedia -// -// ----------------------------------------------------------------------------- -// -gint TMSIPCallStreamBase::ConfigureMedia(const guint32 aCodecID) - { - gint framelen = 0; - - switch (aCodecID) - { - case KMccFourCCIdG711: - iMediaType = "audio/x-alaw"; - // iMediaType = "audio/x-mulaw"; - framelen = KTMSG711FrameLen10ms; //TODO: may be H/W specific! - //framelen = KTMSG711FrameLen20ms; - break; - case KMccFourCCIdG729: - iMediaType = "audio/g729"; - framelen = KTMSG729FrameLen; - break; - case KMccFourCCIdILBC: - iMediaType = "audio/ilbc"; - framelen = KTMSILBCFrameLen20ms; - //framelen = KTMSILBCFrameLen30ms; - break; - case KMccFourCCIdAMRNB: - iMediaType = "audio/amr"; - framelen = KTMSAMRNBFrameLen; - //framelen = KTMSAMRNBFrameLenFM; - break; - case KMMFFourCCCodePCM16: - default: - iMediaType = "audio/x-raw-int"; - framelen = KTMSPCM16FrameLen; -#ifdef __WINSCW__ - framelen *= 4; //16kB -#endif - break; - } - - //TODO: DEVLON TEST - if (iCodecID != KMMFFourCCCodePCM16) - { - framelen *= 10; - } - //TODO: DEVLON TEST - - return framelen; - } - -// ----------------------------------------------------------------------------- -// TMSIPCallStreamBase::DoChunk -// Checks, adjusts and creates global RChunk. -// ----------------------------------------------------------------------------- -// -gint TMSIPCallStreamBase::DoChunk(const gint aDataLen, TmsMsgBuf& aMsgBuffer) - { - gint status(KErrNone); - - // If chunk already created, try to reuse it - if (iChunk.Handle()) - { - // committed size is smaller but chunk is large enough to hold data - if ((iChunk.Size() < aDataLen) && (aDataLen <= iChunk.MaxSize())) - { - status = iChunk.Adjust(aDataLen); - TRACE_PRN_N1(_L("IP_CALL: DoChunk->Chunk Adjusted [%d]"), aDataLen); - } - else if (aDataLen > iChunk.MaxSize()) - { - iChunk.Close(); - TRACE_PRN_N(_L("IP_CALL: DoChunk->Chunk Closed")); - } - } - RET_ERR_IF_ERR(status); - - // Request kernel to create global RChunk if needed - aMsgBuffer.iBool = FALSE; - if (!iChunk.Handle()) - { - // TODO consider using some max instead - status = iChunk.CreateGlobal(KNullDesC, aDataLen, aDataLen); - // Mark to re-open chunk handle - aMsgBuffer.iBool = TRUE; - aMsgBuffer.iUint32 = Math::Random(); - TRACE_PRN_N2(_L("IP_CALL: DoChunk->Chunk Created [%d]key[%d]"), - aDataLen, aMsgBuffer.iUint32); - } - TRACE_PRN_IF_ERR(status); - return status; - } - -// End of file