rtp/rtpstack/src/rtpapi.cpp
author Pat Downey <patd@symbian.org>
Wed, 01 Sep 2010 12:27:36 +0100
branchRCL_3
changeset 20 0dcb073356a5
parent 19 b5e99d8877c7
permissions -rw-r--r--
Revert incorrect RCL_3 drop: Revision: 201033 Kit: 201035

/*
* Copyright (c) 2002-2003 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:   
*
*/




// INCLUDE FILES
#include <rtpapi.h>
#include <e32std.h>
#include <e32base.h>

#include "rtpmanager.h"

/*****************************************************************************/ 
/****************************** API FUNCTIONS   ******************************/ 
/*****************************************************************************/ 
// ---------------------------------------------------------------------------
// C++ default constructor can NOT contain any code, that
// might leave.
// ---------------------------------------------------------------------------
//
CRtpAPI::CRtpAPI( void ) 
    : iManager( NULL )
    {
    }

// ---------------------------------------------------------------------------
// Symbian 2nd phase constructor can leave.
// ---------------------------------------------------------------------------
//
void CRtpAPI::ConstructL( MRtpErrNotify& aErrNotify )
    {
    iManager = CRtpManager::NewL( aErrNotify );
    }

// ---------------------------------------------------------------------------
// Two-phased constructor.
// ---------------------------------------------------------------------------
//
EXPORT_C CRtpAPI* CRtpAPI::NewL( MRtpErrNotify& aErrNotify )
    {
    CRtpAPI* self = new ( ELeave ) CRtpAPI;

    CleanupStack::PushL( self );
    self->ConstructL( aErrNotify );   
    CleanupStack::Pop();  //self

    return self;
    }

// ---------------------------------------------------------------------------
// Destructor
// ---------------------------------------------------------------------------
//
CRtpAPI::~CRtpAPI( void )
    {
    delete iManager;
    }

// ---------------------------------------------------------------------------
// TInt CRtpAPI::OpenL()
// 
// ---------------------------------------------------------------------------
//
EXPORT_C TInt CRtpAPI::OpenL( const TRtpSdesParams& aSdesInfo,
                              const TDesC* aRtpPacketDll,
                              const RSocketServ* aSocketServPtr,
                              const RConnection* aConnPtr )
    {
	RSocketServ* socketServPtr = const_cast<RSocketServ*>( aSocketServPtr );
	RConnection* connPtr       = const_cast<RConnection*>( aConnPtr );
	
    return iManager->OpenL( aSdesInfo, aRtpPacketDll, socketServPtr, connPtr );
    }

// ---------------------------------------------------------------------------
// CRtpAPI::StartConnection()
// Synchronous version.
// ---------------------------------------------------------------------------
//
EXPORT_C TInt CRtpAPI::StartConnection( TInt aIapId )
    {
    return iManager->StartConnection( aIapId );
    }

// ---------------------------------------------------------------------------
// CRtpAPI::StartConnection()
// Asynchronous version.
// ---------------------------------------------------------------------------
//
EXPORT_C TInt CRtpAPI::StartConnection( TRequestStatus& aStatus, TInt aIapId )
    {
    return iManager->StartConnection( aStatus, aIapId );
    }

// ---------------------------------------------------------------------------
// CRtpAPI::CancelStart()
// 
// ---------------------------------------------------------------------------
//
EXPORT_C void CRtpAPI::CancelStart()
    {
    iManager->CancelStart();
    }

// ---------------------------------------------------------------------------
// CRtpAPI::Close()
// 
// ---------------------------------------------------------------------------
//
EXPORT_C void CRtpAPI::Close( void )
    {
    iManager->Close();
    }

// ---------------------------------------------------------------------------
// CRtpAPI::SetLocalSdes()
// 
// ---------------------------------------------------------------------------
//
EXPORT_C void CRtpAPI::SetLocalSdes( const TRtpSdesParams& aSdesInfo )
    {
    iManager->SetLocalSdes( aSdesInfo );
    }

// ---------------------------------------------------------------------------
// CRtpAPI::Version()
// 
// ---------------------------------------------------------------------------
//
EXPORT_C TVersion CRtpAPI::Version() const
    {
    return TVersion(2, 0, 0);
    }

// ---------------------------------------------------------------------------
// TInetAddr& CRtpAPI::GetLocalIPAddressL()
// 
// ---------------------------------------------------------------------------
//
EXPORT_C TInetAddr& CRtpAPI::GetLocalIPAddressL()
    {
    return iManager->GetLocalIPAddressL();
    }
    
 

/*****************************************************************************/ 
/***************************** SESSION FUNCTIONS  ****************************/ 
/*****************************************************************************/ 
// ---------------------------------------------------------------------------
// TRtpId CRtpAPI::CreateSessionL()
// 
// ---------------------------------------------------------------------------
//
EXPORT_C TRtpId CRtpAPI::CreateSessionL( const TCreateSessionParams& aSessionParams,
                                         TUint& aPort,
                                         TBool aEnableRtcp,
                                         const TRtcpParams* aRtcpParams )
    {
    return iManager->CreateSessionL( aSessionParams, aPort, aEnableRtcp, aRtcpParams );
    }

// ---------------------------------------------------------------------------
// TRtpId CRtpAPI::CreateSessionL()
// 
// ---------------------------------------------------------------------------
//
EXPORT_C TRtpId CRtpAPI::CreateSessionL( const TCreateSessionParams& aSessionParams,
                                         TUint& aPort,
                                         TBool aEnableRtcp,
                                         const TRtcpParams* aRtcpParams,
                                         CSRTPSession& aSession )
    {
    return iManager->CreateSessionL( aSessionParams, aPort, aEnableRtcp, aRtcpParams, aSession );
    }


// ---------------------------------------------------------------------------
// TInt CRtpAPI::SetRemoteAddress()
// 
// ---------------------------------------------------------------------------
//
EXPORT_C TInt CRtpAPI::SetRemoteAddress( TRtpId aSessionId, const TInetAddr& aRemoteAddr )
    {
    return iManager->SetRemoteAddress( aSessionId, const_cast< TInetAddr& >( aRemoteAddr ) );
    }


// ---------------------------------------------------------------------------
// TInt CRtpAPI::SetRemoteRtcpAddress()
// 
// ---------------------------------------------------------------------------
//
EXPORT_C TInt CRtpAPI::SetRemoteRtcpAddress( TRtpId aSessionId, const TInetAddr& aRemoteRtcpAddr )
    {
    return iManager->SetRemoteRtcpAddress( aSessionId, const_cast< TInetAddr& >( aRemoteRtcpAddr ) );
    }
    
// ---------------------------------------------------------------------------
// TInt CRtpAPI::StartSession()
// 
// ---------------------------------------------------------------------------
//
EXPORT_C TInt CRtpAPI::StartSession( TRtpId aSessionId )
    {
    return iManager->StartSession( aSessionId );
    }

// ---------------------------------------------------------------------------
// CRtpAPI::CloseSession()
// 
// ---------------------------------------------------------------------------
//
EXPORT_C void CRtpAPI::CloseSession( TRtpId aSessionId )
    {
    iManager->CloseSession( aSessionId );
    }

// ---------------------------------------------------------------------------
// TRtpId CRTPAPI::GetSessionId()
// 
// ---------------------------------------------------------------------------
//
EXPORT_C TRtpId CRtpAPI::GetSessionId( TRtpId aStreamId )
    {
    return iManager->GetSessionId( aStreamId );
    }
    




/*****************************************************************************/ 
/****************************** STREAM FUNCTIONS  ****************************/ 
/*****************************************************************************/ 
// ---------------------------------------------------------------------------
// TRtpId CRtpAPI::CreateReceiveStreamL()
// 
// ---------------------------------------------------------------------------
//
EXPORT_C TRtpId CRtpAPI::CreateReceiveStreamL( TRtpId aSessionId, 
                                               const TRcvStreamParams& aParams )
    {
    return iManager->CreateReceiveStreamL( aSessionId, aParams );
    }

// ---------------------------------------------------------------------------
// TRtpId CRtpAPI::CreateTransmitStreamL()
// 
// ---------------------------------------------------------------------------
//
EXPORT_C TRtpId CRtpAPI::CreateTransmitStreamL( TRtpId aSessionId, 
                                                const TTranStreamParams& aParams, 
                                                TRtpSSRC& aSSRC )
    {
    return iManager->CreateTransmitStreamL( aSessionId, aParams, aSSRC );
    }

// ---------------------------------------------------------------------------
// TRtpId CRtpAPI::CreateTransmitStreamExtL()
// 
// ---------------------------------------------------------------------------
//
EXPORT_C TRtpId CRtpAPI::CreateTransmitStreamExtL( TRtpId aSessionId,
                                                   const TTranStreamParams& aParams,
                                                   const TRtpSSRC aSSRC )
    {
    return iManager->CreateTransmitStreamExtL( aSessionId, aParams, aSSRC );
    }

// ---------------------------------------------------------------------------
// CRtpAPI::CloseStream()
// 
// ---------------------------------------------------------------------------
//
EXPORT_C void CRtpAPI::CloseStream( TRtpId aStreamId )
    {
    iManager->CloseStream( aStreamId );
    }
    
// ---------------------------------------------------------------------------
// TInt CRtpAPI::GetStreamStatistics()
// 
// ---------------------------------------------------------------------------
//
EXPORT_C TInt CRtpAPI::GetStreamStatistics( TRtpId aStreamId, TRtpPeerStat& aStat )
    {
    return iManager->GetStreamStatistics( aStreamId, aStat );
    }
    


/*****************************************************************************/ 
/****************************** RTP FUNCTIONS  *******************************/ 
/*****************************************************************************/ 
// ---------------------------------------------------------------------------
// TInt CRtpAPI::RegisterRtpObserver()
// 
// ---------------------------------------------------------------------------
//
EXPORT_C TInt CRtpAPI::RegisterRtpObserver( TRtpId aSessionId, MRtpObserver& aObserver )
    {
    return iManager->RegisterRtpObserver( aSessionId, aObserver );
    }

// ---------------------------------------------------------------------------
// CRtpAPI::UnregisterRtpObserver()
// 
// ---------------------------------------------------------------------------
//
EXPORT_C void CRtpAPI::UnregisterRtpObserver( TRtpId aSessionId )
    {
    iManager->UnregisterRtpObserver( aSessionId );
    }

// ---------------------------------------------------------------------------
// TInt CRtpAPI::SetNonRTPDataObserver()
// 
// ---------------------------------------------------------------------------
//
EXPORT_C TInt CRtpAPI::SetNonRTPDataObserver( TRtpId aSessionId, 
                                    MNonRTPDataObserver* aNonRTPDataObserver )
    {
    return iManager->SetNonRTPDataObserver( aSessionId, aNonRTPDataObserver );    
    }


// ---------------------------------------------------------------------------
// RSocket* CRtpAPI::GetRtpSocket()
// 
// ---------------------------------------------------------------------------
//
EXPORT_C RSocket* CRtpAPI::GetRtpSocket( TRtpId aSessionId )
    {
    return iManager->GetRtpSocket( aSessionId );
    }

// ---------------------------------------------------------------------------
// TInt CRtpAPI::SendRtpPacket()
// 
// ---------------------------------------------------------------------------
//
EXPORT_C TInt CRtpAPI::SendRtpPacket( TRtpId aTranStreamId,
                                      const TRtpSendHeader& aHeaderInfo,
                                      const TDesC8& aPayloadData )
    {
    return iManager->SendRtpPacket( aTranStreamId, aHeaderInfo, aPayloadData );
    }

// ---------------------------------------------------------------------------
// TInt CRtpAPI::SendRtpPacket()
// 
// ---------------------------------------------------------------------------
//
EXPORT_C TInt CRtpAPI::SendRtpPacket( TRtpId aTranStreamId,
                                      TRtpSequence aSequenceNum,
                                      const TRtpSendHeader& aHeaderInfo,
                                      const TDesC8& aPayloadData,
                                      TRequestStatus& aStatus )
    {
    return iManager->SendRtpPacket( aTranStreamId, aSequenceNum, aHeaderInfo, 
                                    aPayloadData, aStatus );
    }

// ---------------------------------------------------------------------------
// TInt CRtpAPI::SendRtpPacket()
// 
// ---------------------------------------------------------------------------
//
EXPORT_C TInt CRtpAPI::SendRtpPacket( TRtpId aTranStreamId,
                                      const TRtpSendHeader& aHeaderInfo,
                                      const TDesC8& aPayloadData,
                                      TRequestStatus& aStatus )
    {
    return iManager->SendRtpPacket( aTranStreamId, aHeaderInfo, aPayloadData, aStatus );
    }

// ---------------------------------------------------------------------------
// TInt CRtpAPI::SendData()
// 
// ---------------------------------------------------------------------------
//
EXPORT_C void CRtpAPI::SendDataL( TRtpId aSessionId,
                                TBool aUseRTPSocket,
                                const TDesC8& aData,
                                TRequestStatus& aStatus )
    {
    iManager->SendDataL( aSessionId, aUseRTPSocket, aData, aStatus );    
    }


// ---------------------------------------------------------------------------
// void CancelSend( TRtpId aSessionId )
// 
// ---------------------------------------------------------------------------
//
EXPORT_C void CRtpAPI::CancelSend( TRtpId aSessionId )
    {
    iManager->CancelSend( aSessionId );
    }



/*****************************************************************************/ 
/****************************** RTCP FUNCTIONS  ******************************/ 
/*****************************************************************************/ 
// ---------------------------------------------------------------------------
// TInt CRtpAPI::RegisterRtcpObserver()
// 
// ---------------------------------------------------------------------------
//
EXPORT_C TInt CRtpAPI::RegisterRtcpObserver( TRtpId aSessionId, MRtcpObserver& aObserver )
    {
    return iManager->RegisterRtcpObserver( aSessionId, aObserver );
    }

// ---------------------------------------------------------------------------
// CRtpAPI::UnregisterRtcpObserver()
// 
// ---------------------------------------------------------------------------
//
EXPORT_C void CRtpAPI::UnregisterRtcpObserver( TRtpId aSessionId )
    {
    iManager->UnregisterRtcpObserver( aSessionId );
    }

// ---------------------------------------------------------------------------
// RSocket* CRtpAPI::GetRtcpSocket()
// 
// ---------------------------------------------------------------------------
//
EXPORT_C RSocket* CRtpAPI::GetRtcpSocket( TRtpId aSessionId )
    {
    return iManager->GetRtcpSocket( aSessionId );
    }


// ---------------------------------------------------------------------------
// TInt CRtpAPI::SetRtcpParameters()
// 
// ---------------------------------------------------------------------------
//
EXPORT_C TInt CRtpAPI::SetRtcpParameters( TRtpId aSessionId,
                                          const TRtcpParams& aRtcpParams )
    {
    return iManager->SetRtcpParameters( aSessionId, aRtcpParams );
    }


// ---------------------------------------------------------------------------
// TInt CRtpAPI::SendRtcpByePacket()
// 
// ---------------------------------------------------------------------------
//
EXPORT_C TInt CRtpAPI::SendRtcpByePacket( TRtpId aTranStreamId,
                                          const TDesC8& aReason )
    {
    TInt functionValue=KErrNone;
    TRAPD(err, functionValue= iManager->SendRtcpByePacketL( aTranStreamId, aReason ));
    if (err)
    	{
    	return err;	
    	}
    else
    	{
    	return functionValue;
    	}	
    }

// ---------------------------------------------------------------------------
// TInt CRtpAPI::SendRtcpAppPacket()
// 
// ---------------------------------------------------------------------------
//
EXPORT_C TInt CRtpAPI::SendRtcpAppPacket( TRtpId aTranStreamId,
                                          const TRtcpApp& aApp )
    {
    TInt result= KErrNone;
    TRAPD(err, result = iManager->SendRtcpAppPacketL ( aTranStreamId, aApp ));
    if (err)
    	return err;
    return result;
    }

// ---------------------------------------------------------------------------
// TInt CRtpAPI::SendRtcpSrPacket()
// 
// ---------------------------------------------------------------------------
//
EXPORT_C TInt CRtpAPI::SendRtcpSrPacket( TRtpId aTranStreamId )
    {
    TInt result= KErrNone;
    TRAPD(err, result = iManager->SendRtcpSrPacketL( aTranStreamId ));
    if (err)
    	return err;
    return result;
    }

// ---------------------------------------------------------------------------
// TInt CRtpAPI::SendRtcpRrPacket()
// 
// ---------------------------------------------------------------------------
//
EXPORT_C TInt CRtpAPI::SendRtcpRrPacket( TRtpId aTranStreamId )
    {
    TInt result= KErrNone;
    TRAPD(err, result = iManager->SendRtcpRrPacketL( aTranStreamId ));
    if (err)
    	return err;
    return result;
    }

// ---------------------------------------------------------------------------
// TInt CRtpAPI::SuspendRtcpSending()
//
// ---------------------------------------------------------------------------
//
EXPORT_C TInt CRtpAPI::SuspendRtcpSending( TRtpId aSessionId,
                                           TBool aAutoSending )
    {
    return iManager->SuspendRtcpSending( aSessionId, aAutoSending );
    }
        
// ---------------------------------------------------------------------------
// TInt CRtpAPI::IsRtcpSendingSuspended()
//
// ---------------------------------------------------------------------------
//
EXPORT_C TInt CRtpAPI::IsRtcpSendingSuspended( TRtpId aSessionId,
                                               TBool& aAutoSending )
    {
    return iManager->IsRtcpSendingSuspended( aSessionId, aAutoSending );
    }

/*****************************************************************************/ 
/***************************** SAMPLING FUNCTIONS ****************************/ 
/*****************************************************************************/ 
// ---------------------------------------------------------------------------
// TUint32 CRtpAPI::GetSamplingRate()
// 
// ---------------------------------------------------------------------------
//
EXPORT_C TUint32 CRtpAPI::GetSamplingRate( TUint8 aPayloadType )
    {
    return iManager->GetSamplingRate( aPayloadType );
    }

// ---------------------------------------------------------------------------
// TInt CRtpAPI::SetSamplingRate()
// 
// ---------------------------------------------------------------------------
//
EXPORT_C TInt CRtpAPI::SetSamplingRate( TUint8 aPayloadType, TUint32 aSampleRate )
    {
    return iManager->SetSamplingRate( aPayloadType, aSampleRate );
    }

/*****************************************************************************/ 
/****** Internal Use Function - Not In Use, Fix for Raptor *******************/ 
/*****************************************************************************/
// ---------------------------------------------------------------------------
// TInt CRtpAPI::NotInUseSetNonRTPDataObserver()

// ---------------------------------------------------------------------------
//
EXPORT_C TInt CRtpAPI::NotInUseSetNonRTPDataObserver( )
    {
    return KErrNone; 
    }


/*****************************************************************************/ 
/***************************** CUSTOM FUNCTIONS ******************************/ 
/*****************************************************************************/ 
// ---------------------------------------------------------------------------
// TInt CRtpAPI::CustomCommandSync()
// 
// ---------------------------------------------------------------------------
//
EXPORT_C TInt CRtpAPI::CustomCommandSync( TInt /*aFunction*/,
                                          const TDesC8& /*aInputData1*/,
                                          const TDesC8& /*aInputData2*/,
                                          TDes8& /*aOutputData*/ )
    {
    return KErrNotSupported;
    }

// ---------------------------------------------------------------------------
// TInt CRtpAPI::CustomCommandAsync()
// 
// ---------------------------------------------------------------------------
//
EXPORT_C TInt CRtpAPI::CustomCommandAsync( TInt /*aFunction*/,
                                           const TDesC8& /*aInputData1*/,
                                           const TDesC8& /*aInputData2*/,
                                           TDes8& /*aOutputData*/,
                                           TRequestStatus& /*aStatus*/ )
    {
    return KErrNotSupported;
    }


/*****************************************************************************/ 
/******************************** DLL FUNCTIONS ******************************/ 
/*****************************************************************************/ 
#if !defined ( EKA2 ) && !defined ( RTP_UNIT_TEST )
// ---------------------------------------------------------------------------
// All E32 DLLs need an entry point...
// DLL entry point
// ---------------------------------------------------------------------------
//
GLDEF_C TInt E32Dll( TDllReason /*aReason*/ )
    {
    return ( KErrNone );
    }
#endif

//  End of File