qtms/src/qtmsstream.cpp
author hgs
Fri, 11 Jun 2010 19:35:01 -0500
changeset 38 959ca709b049
parent 27 cbb1bfb7ebfb
child 50 762d760dcfdf
permissions -rw-r--r--
201023

/*
 * 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 <tmssource.h>
#include <tmsformat.h>
#include <tmsstream.h>
#include <qtmseffect.h>
#include <qtmsstream.h>
#include "qtmsstreamimpl.h"
#include "qtmssource.h"
#include "qtmsclientsourceimpl.h"
#include "qtmsmodemsourceimpl.h"
#include "qtmsmicsourceimpl.h"
#include "qtmsclientsinkimpl.h"
#include "qtmsmodemsinkimpl.h"
#include "qtmsspeakersinkimpl.h"
#include "qtmspcmimpl.h"
#include "qtmsamrimpl.h"
#include "qtmsg711impl.h"
#include "qtmsg729impl.h"
#include "qtmsilbcimpl.h"
#include "qtmsvolumeeffectimpl.h"
#include "qtmsgaineffectimpl.h"
#include "qtmswrapperexport.h"

using namespace QTMS;
using namespace TMS;

QTMSStream::QTMSStream(void) :
    iStream(NULL)
    {
    }

QTMSStream::~QTMSStream()
    {
    //delete iStream;
    //delete (static_cast<QTMSStreamImpl*> (iStream));
    }

gint QTMSStream::AddSource(QTMSSource* qsource)
    {
    gint status(QTMS_RESULT_UNINITIALIZED_OBJECT);

    if (iStream && qsource)
        {
        QTMSSourceType qsrctype;
        TMSSource* tmssource(NULL);

        qsource->GetType(qsrctype);

        switch (qsrctype)
            {
            case QTMS_SOURCE_CLIENT:
                status = static_cast<QTMSClientSourceImpl*>
                    (qsource)->GetSource(tmssource);
                break;
            case QTMS_SOURCE_MODEM:
                status = static_cast<QTMSModemSourceImpl*>
                    (qsource)->GetSource(tmssource);
                break;
            case QTMS_SOURCE_MIC:
                status = static_cast<QTMSMicSourceImpl*>
                    (qsource)->GetSource(tmssource);
                break;
            default:
                break;
            }
        if (status == QTMS_RESULT_SUCCESS && tmssource)
            {
            status = iStream->AddSource(tmssource);
            }
        }
    return status;
    }

gint QTMSStream::RemoveSource(QTMSSource* qsource)
    {
    gint status(QTMS_RESULT_UNINITIALIZED_OBJECT);

    if (iStream && qsource)
        {
        QTMSSourceType qsrctype;
        TMSSource* tmssource(NULL);

        qsource->GetType(qsrctype);

        switch (qsrctype)
            {
            case QTMS_SOURCE_CLIENT:
                status = static_cast<QTMSClientSourceImpl*>
                    (qsource)->GetSource(tmssource);
                break;
            case QTMS_SOURCE_MODEM:
                status = static_cast<QTMSModemSourceImpl*>
                    (qsource)->GetSource(tmssource);
                break;
            case QTMS_SOURCE_MIC:
                status = static_cast<QTMSMicSourceImpl*>
                    (qsource)->GetSource(tmssource);
                break;
            default:
                break;
            }
        if (status == QTMS_RESULT_SUCCESS && tmssource)
            {
            status = iStream->RemoveSource(tmssource);
            }
        }

    return status;
    }

gint QTMSStream::AddSink(QTMSSink* qsink)
    {
    gint status(QTMS_RESULT_UNINITIALIZED_OBJECT);

    if (iStream && qsink)
        {
        QTMSSinkType qsinktype;
        TMSSink* tmssink(NULL);

        qsink->GetType(qsinktype);

        switch (qsinktype)
            {
            case QTMS_SINK_CLIENT:
                status = static_cast<QTMSClientSinkImpl*>
                    (qsink)->GetSink(tmssink);
                break;
            case QTMS_SINK_MODEM:
                status = static_cast<QTMSModemSinkImpl*>
                    (qsink)->GetSink(tmssink);
                break;
            case QTMS_SINK_SPEAKER:
                status = static_cast<QTMSSpeakerSinkImpl*>
                    (qsink)->GetSink(tmssink);
                break;
            default:
                break;
            }
        if (status == QTMS_RESULT_SUCCESS && tmssink)
            {
            status = iStream->AddSink(tmssink);
            }
        }
    return status;
    }

gint QTMSStream::RemoveSink(QTMSSink* qsink)
    {
    gint status(QTMS_RESULT_UNINITIALIZED_OBJECT);

    if (iStream && qsink)
        {
        QTMSSinkType qsinktype;
        TMSSink* tmssink(NULL);

        qsink->GetType(qsinktype);

        switch (qsinktype)
            {
            case QTMS_SINK_CLIENT:
                status = static_cast<QTMSClientSinkImpl*>
                    (qsink)->GetSink(tmssink);
                break;
            case QTMS_SINK_MODEM:
                status = static_cast<QTMSModemSinkImpl*>
                    (qsink)->GetSink(tmssink);
                break;
            case QTMS_SINK_SPEAKER:
                status = static_cast<QTMSSpeakerSinkImpl*>
                    (qsink)->GetSink(tmssink);
                break;
            default:
                break;
            }
        if (status == QTMS_RESULT_SUCCESS && tmssink)
            {
            status = iStream->RemoveSink(tmssink);
            }
        }

    return status;
    }

gint QTMSStream::SetFormat(QTMSFormat* qformat)
    {
    gint status(QTMS_RESULT_UNINITIALIZED_OBJECT);

    if (iStream && qformat)
        {
        QTMSFormatType fmttype;
        TMSFormat* tmsformat(NULL);
        qformat->GetType(fmttype);
        switch (fmttype)
            {
            case QTMS_FORMAT_PCM:
                status = static_cast<QTMSPCMFormatImpl*>
                    (qformat)->GetFormat(tmsformat);
                break;
            case QTMS_FORMAT_AMR:
                status = static_cast<QTMSAMRFormatImpl*>
                    (qformat)->GetFormat(tmsformat);
                break;
            case QTMS_FORMAT_G711:
                status = static_cast<QTMSG711FormatImpl*>
                    (qformat)->GetFormat(tmsformat);
                break;
            case QTMS_FORMAT_G729:
                status = static_cast<QTMSG729FormatImpl*>
                    (qformat)->GetFormat(tmsformat);
                break;
            case QTMS_FORMAT_ILBC:
                status = static_cast<QTMSILBCFormatImpl*>
                    (qformat)->GetFormat(tmsformat);
                break;
            default:
                break;
            }

        status = iStream->SetFormat(tmsformat);
        }
    return status;
    }

gint QTMSStream::ResetFormat(QTMSFormat* qformat)
    {
    gint status(QTMS_RESULT_UNINITIALIZED_OBJECT);

    if (iStream && qformat)
        {
        QTMSFormatType fmttype;
        TMSFormat* tmsformat(NULL);
        qformat->GetType(fmttype);
        switch (fmttype)
            {
            case QTMS_FORMAT_PCM:
                status = static_cast<QTMSPCMFormatImpl*>
                    (qformat)->GetFormat(tmsformat);
                break;
            case QTMS_FORMAT_AMR:
                status = static_cast<QTMSAMRFormatImpl*>
                    (qformat)->GetFormat(tmsformat);
                break;
            case QTMS_FORMAT_G711:
                status = static_cast<QTMSG711FormatImpl*>
                    (qformat)->GetFormat(tmsformat);
                break;
            case QTMS_FORMAT_G729:
                status = static_cast<QTMSG729FormatImpl*>
                    (qformat)->GetFormat(tmsformat);
                break;
            case QTMS_FORMAT_ILBC:
                status = static_cast<QTMSILBCFormatImpl*>
                    (qformat)->GetFormat(tmsformat);
                break;
            default:
                break;
            }

        status = iStream->ResetFormat(tmsformat);
        }
    return status;
    }

gint QTMSStream::AddEffect(QTMSEffect* qeffect)
    {
    gint status(QTMS_RESULT_UNINITIALIZED_OBJECT);
    if (iStream && qeffect)
        {
        QTMSEffectType effecttype;
        TMSEffect* tmseffect(NULL);
        qeffect->GetType(effecttype);

        switch (effecttype)
            {
            case QTMS_EFFECT_VOLUME:
                status = static_cast<QTMSVolumeEffectImpl*>
                    (qeffect)->GetEffect(tmseffect);
                break;
            case QTMS_EFFECT_GAIN:
                status = static_cast<QTMSGainEffectImpl*>
                    (qeffect)->GetEffect(tmseffect);
                break;
            default:
                break;
            }
        status = iStream->AddEffect(tmseffect);
        }
    return status;
    }

gint QTMSStream::RemoveEffect(QTMSEffect* qeffect)
    {
    gint status(QTMS_RESULT_UNINITIALIZED_OBJECT);
    if (iStream && qeffect)
        {
        QTMSEffectType effecttype;
        TMSEffect* tmseffect(NULL);
        qeffect->GetType(effecttype);

        switch (effecttype)
            {
            case QTMS_EFFECT_VOLUME:
                status = static_cast<QTMSVolumeEffectImpl*>
                    (qeffect)->GetEffect(tmseffect);
                break;
            case QTMS_EFFECT_GAIN:
                status = static_cast<QTMSGainEffectImpl*>
                    (qeffect)->GetEffect(tmseffect);
                break;
            default:
                break;
            }
        status = iStream->RemoveEffect(tmseffect);
        }
    return status;
    }

gint QTMSStream::GetState()
    {
    gint status(QTMS_RESULT_UNINITIALIZED_OBJECT);
    if (iStream)
        {
        status = iStream->GetState();
        }
    return status;
    }

gint QTMSStream::GetStreamType()
    {
    gint status(QTMS_RESULT_UNINITIALIZED_OBJECT);
    if (iStream)
        {
        status = iStream->GetStreamType();
        }
    return status;
    }

gint QTMSStream::GetStreamId()
    {
    gint status(QTMS_RESULT_UNINITIALIZED_OBJECT);
    if (iStream)
        {
        status = iStream->GetStreamId();
        }
    return status;
    }

gint QTMSStream::Init(gint retrytime)
    {
    gint status(QTMS_RESULT_UNINITIALIZED_OBJECT);
    if (iStream)
        {
        status = iStream->Init(retrytime);
        }
    return status;
    }

gint QTMSStream::Pause()
    {
    gint status(QTMS_RESULT_UNINITIALIZED_OBJECT);
    if (iStream)
        {
        status = iStream->Pause();
        }
    return status;
    }

gint QTMSStream::Start(gint retrytime)
    {
    gint status(QTMS_RESULT_UNINITIALIZED_OBJECT);
    if (iStream)
        {
        status = iStream->Start(retrytime);
        }
    return status;
    }

gint QTMSStream::Stop()
    {
    gint status(QTMS_RESULT_UNINITIALIZED_OBJECT);
    if (iStream)
        {
        status = iStream->Stop();
        }
    return status;
    }

void QTMSStream::Deinit()
    {
    if (iStream)
        {
        iStream->Deinit();
        }
    }