rtp/rtpstack/tsrc/rtptestapp/src/rtptestapp.cpp
author hgs
Thu, 24 Jun 2010 14:43:49 +0300
changeset 29 5f12516512fa
permissions -rw-r--r--
201025
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
29
hgs
parents:
diff changeset
     1
// Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
hgs
parents:
diff changeset
     2
/*
hgs
parents:
diff changeset
     3
* Copyright (c) 2004 Nokia Corporation and/or its subsidiary(-ies).
hgs
parents:
diff changeset
     4
* All rights reserved.
hgs
parents:
diff changeset
     5
* This component and the accompanying materials are made available
hgs
parents:
diff changeset
     6
* under the terms of "Eclipse Public License v1.0"
hgs
parents:
diff changeset
     7
* which accompanies this distribution, and is available
hgs
parents:
diff changeset
     8
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
hgs
parents:
diff changeset
     9
*
hgs
parents:
diff changeset
    10
* Initial Contributors:
hgs
parents:
diff changeset
    11
* Nokia Corporation - initial contribution.
hgs
parents:
diff changeset
    12
*
hgs
parents:
diff changeset
    13
* Contributors:
hgs
parents:
diff changeset
    14
*
hgs
parents:
diff changeset
    15
* Description:    
hgs
parents:
diff changeset
    16
*
hgs
parents:
diff changeset
    17
*/
hgs
parents:
diff changeset
    18
hgs
parents:
diff changeset
    19
hgs
parents:
diff changeset
    20
// HEADERS
hgs
parents:
diff changeset
    21
#include <connpref.h>
hgs
parents:
diff changeset
    22
#include <es_sock.h>
hgs
parents:
diff changeset
    23
#include <commdbconnpref.h>
hgs
parents:
diff changeset
    24
#include "in_sock.h"
hgs
parents:
diff changeset
    25
#include <e32cons.h>
hgs
parents:
diff changeset
    26
#include <e32err.h>
hgs
parents:
diff changeset
    27
#include <e32std.h>
hgs
parents:
diff changeset
    28
#include <e32base.h>
hgs
parents:
diff changeset
    29
#include <badesca.h>
hgs
parents:
diff changeset
    30
#include <random.h>
hgs
parents:
diff changeset
    31
#include "rtpheader.h"
hgs
parents:
diff changeset
    32
#include "rtptestapp.h"
hgs
parents:
diff changeset
    33
hgs
parents:
diff changeset
    34
const TUint KIAPID = 1;
hgs
parents:
diff changeset
    35
const TInt KLength = 20;
hgs
parents:
diff changeset
    36
_LIT8(KHello, "RTP APIs...testing");
hgs
parents:
diff changeset
    37
_LIT8(KNoCName, "");
hgs
parents:
diff changeset
    38
hgs
parents:
diff changeset
    39
CConsoleBase *gConsole;
hgs
parents:
diff changeset
    40
CActiveScheduler *sched;
hgs
parents:
diff changeset
    41
hgs
parents:
diff changeset
    42
void MainL()
hgs
parents:
diff changeset
    43
    {
hgs
parents:
diff changeset
    44
    // Create a Console 
hgs
parents:
diff changeset
    45
    gConsole = Console::NewL(_L("Test Console"), TSize(KConsFullScreen, KConsFullScreen));
hgs
parents:
diff changeset
    46
    CleanupStack::PushL(gConsole);
hgs
parents:
diff changeset
    47
    
hgs
parents:
diff changeset
    48
    // Create an Active scheduler 
hgs
parents:
diff changeset
    49
    sched = new (ELeave) CActiveScheduler;
hgs
parents:
diff changeset
    50
    CActiveScheduler::Install(sched);
hgs
parents:
diff changeset
    51
    
hgs
parents:
diff changeset
    52
    //IAP(Internet Access Point) id to be chaged as per comms dat
hgs
parents:
diff changeset
    53
    CRtpTestApp * iRtpTestApp = CRtpTestApp::NewL();   
hgs
parents:
diff changeset
    54
    
hgs
parents:
diff changeset
    55
    // Send RTP Packet with CSRC and Check RTP Stack 
hgs
parents:
diff changeset
    56
    // Supports maximum 15 contributing sources
hgs
parents:
diff changeset
    57
    iRtpTestApp->SendRtpPacketL();
hgs
parents:
diff changeset
    58
    
hgs
parents:
diff changeset
    59
    // Send RTP packet with zero length paylpoad
hgs
parents:
diff changeset
    60
    iRtpTestApp->SendZeroLengthRtpPacketL();
hgs
parents:
diff changeset
    61
    
hgs
parents:
diff changeset
    62
    // Send RTP Packets and Modify packet in callback function
hgs
parents:
diff changeset
    63
    iRtpTestApp->SendRtpPacketLoopbackL();
hgs
parents:
diff changeset
    64
    
hgs
parents:
diff changeset
    65
    
hgs
parents:
diff changeset
    66
    User::After(5000000);
hgs
parents:
diff changeset
    67
    delete iRtpTestApp;
hgs
parents:
diff changeset
    68
    delete sched;
hgs
parents:
diff changeset
    69
    CleanupStack::PopAndDestroy(gConsole);
hgs
parents:
diff changeset
    70
    
hgs
parents:
diff changeset
    71
    }
hgs
parents:
diff changeset
    72
hgs
parents:
diff changeset
    73
CRtpTestApp * CRtpTestApp::NewL()
hgs
parents:
diff changeset
    74
{
hgs
parents:
diff changeset
    75
    gConsole->Printf(_L("RtpTestApp::NewL\n"));
hgs
parents:
diff changeset
    76
    CRtpTestApp* self = new( ELeave ) CRtpTestApp(); 
hgs
parents:
diff changeset
    77
    CleanupStack::PushL( self );
hgs
parents:
diff changeset
    78
    
hgs
parents:
diff changeset
    79
    // To construct the objects in the second-phase of the construction
hgs
parents:
diff changeset
    80
    self->ConstructL( );
hgs
parents:
diff changeset
    81
    CleanupStack::Pop( self);
hgs
parents:
diff changeset
    82
    return self;
hgs
parents:
diff changeset
    83
}
hgs
parents:
diff changeset
    84
hgs
parents:
diff changeset
    85
CRtpTestApp::CRtpTestApp()
hgs
parents:
diff changeset
    86
    {
hgs
parents:
diff changeset
    87
    
hgs
parents:
diff changeset
    88
    }
hgs
parents:
diff changeset
    89
hgs
parents:
diff changeset
    90
hgs
parents:
diff changeset
    91
void CRtpTestApp::ErrorNotify( TInt /*aErrCode*/ )
hgs
parents:
diff changeset
    92
    {
hgs
parents:
diff changeset
    93
    
hgs
parents:
diff changeset
    94
    }
hgs
parents:
diff changeset
    95
hgs
parents:
diff changeset
    96
void CRtpTestApp::SdesReceived( TRtpSSRC /*aSSRC*/,
hgs
parents:
diff changeset
    97
                   const TRtpSdesParams& /*aParams*/ )
hgs
parents:
diff changeset
    98
    {
hgs
parents:
diff changeset
    99
    
hgs
parents:
diff changeset
   100
    }
hgs
parents:
diff changeset
   101
hgs
parents:
diff changeset
   102
void CRtpTestApp::ByeReceived( TRtpId /*aStreamId*/, TRtpSSRC /*aSSRC*/,
hgs
parents:
diff changeset
   103
                  const TDesC8& /*aReason*/ )
hgs
parents:
diff changeset
   104
    {
hgs
parents:
diff changeset
   105
    
hgs
parents:
diff changeset
   106
    }
hgs
parents:
diff changeset
   107
hgs
parents:
diff changeset
   108
void CRtpTestApp::AppReceived( TRtpId /*aStreamId*/, TRtpSSRC /*aSSRC*/,
hgs
parents:
diff changeset
   109
                  const TRtcpApp& /*aApp*/ )
hgs
parents:
diff changeset
   110
    {
hgs
parents:
diff changeset
   111
    
hgs
parents:
diff changeset
   112
    }
hgs
parents:
diff changeset
   113
hgs
parents:
diff changeset
   114
void CRtpTestApp::SrReceived( TRtpId /*aStreamId*/, TRtpSSRC /*aSSRC*/,
hgs
parents:
diff changeset
   115
                 const TTimeStamps& /*aTimeStamps*/ )
hgs
parents:
diff changeset
   116
    {
hgs
parents:
diff changeset
   117
    
hgs
parents:
diff changeset
   118
    }
hgs
parents:
diff changeset
   119
hgs
parents:
diff changeset
   120
void CRtpTestApp::RrReceived( TRtpId /*aStreamId*/, TRtpSSRC /*aSSRC*/ )
hgs
parents:
diff changeset
   121
    {
hgs
parents:
diff changeset
   122
    
hgs
parents:
diff changeset
   123
    }
hgs
parents:
diff changeset
   124
hgs
parents:
diff changeset
   125
void CRtpTestApp::RtpPacketReceived( TRtpId /*aStreamId*/, const TRtpRecvHeader& aHeaderInfo, const TDesC8& /*aPayloadData*/ )
hgs
parents:
diff changeset
   126
    {
hgs
parents:
diff changeset
   127
    gConsole->Printf(_L("RtpPacketReceived .. \n"));
hgs
parents:
diff changeset
   128
    
hgs
parents:
diff changeset
   129
    for(int i=0; i<aHeaderInfo.iCsrcCount; i++)
hgs
parents:
diff changeset
   130
        {
hgs
parents:
diff changeset
   131
        if ( (*iCsrclist)[i] == *(aHeaderInfo.iCsrcList+i) )
hgs
parents:
diff changeset
   132
            {
hgs
parents:
diff changeset
   133
            gConsole->Printf(_L("RtpPacketReceived, Successfully\n"));
hgs
parents:
diff changeset
   134
            }
hgs
parents:
diff changeset
   135
        else
hgs
parents:
diff changeset
   136
            {
hgs
parents:
diff changeset
   137
            gConsole->Printf(_L("Malformed RTP Packet Received\n"));
hgs
parents:
diff changeset
   138
            gConsole->Printf(_L("Test Case Failed\n"));
hgs
parents:
diff changeset
   139
            }
hgs
parents:
diff changeset
   140
        }
hgs
parents:
diff changeset
   141
    
hgs
parents:
diff changeset
   142
    // Check for modified Padding, header extension, Marker bit values 1
hgs
parents:
diff changeset
   143
    if( aHeaderInfo.iMarker == 0 )
hgs
parents:
diff changeset
   144
        {
hgs
parents:
diff changeset
   145
        gConsole->Printf(_L("Test Case Failed\n"));
hgs
parents:
diff changeset
   146
        }
hgs
parents:
diff changeset
   147
    }
hgs
parents:
diff changeset
   148
hgs
parents:
diff changeset
   149
void CRtpTestApp::ReadyToSendRtpPacket(  TRtpId /*aTranStreamId*/, TPtr8 &aPacket  )
hgs
parents:
diff changeset
   150
    {
hgs
parents:
diff changeset
   151
    gConsole->Printf(_L("ReadyToSendRtpPacket Callback..\n"));
hgs
parents:
diff changeset
   152
    
hgs
parents:
diff changeset
   153
    // Change Marker bit value from 0 to 1
hgs
parents:
diff changeset
   154
    aPacket[1] = aPacket[1] | 0x80;
hgs
parents:
diff changeset
   155
    
hgs
parents:
diff changeset
   156
    TUint32* data32 = reinterpret_cast<TUint32*>(&(aPacket[8]));
hgs
parents:
diff changeset
   157
    //Change SSRC Value from
hgs
parents:
diff changeset
   158
    *data32 = ByteOrder::Swap32(0xDEADBEEF);
hgs
parents:
diff changeset
   159
    }
hgs
parents:
diff changeset
   160
hgs
parents:
diff changeset
   161
void CrtpDataSender::RunL()
hgs
parents:
diff changeset
   162
    {
hgs
parents:
diff changeset
   163
    gConsole->Printf(_L("CrtpDataSender::RunL\n"));
hgs
parents:
diff changeset
   164
    CActiveScheduler::Stop();
hgs
parents:
diff changeset
   165
    }
hgs
parents:
diff changeset
   166
hgs
parents:
diff changeset
   167
void CRtpTestApp::ConstructL()
hgs
parents:
diff changeset
   168
    {
hgs
parents:
diff changeset
   169
    iRtpApi = CRtpAPI::NewL(*this );
hgs
parents:
diff changeset
   170
hgs
parents:
diff changeset
   171
    TVersion  version = iRtpApi->Version();
hgs
parents:
diff changeset
   172
    
hgs
parents:
diff changeset
   173
    TInt result(KErrNone);
hgs
parents:
diff changeset
   174
    
hgs
parents:
diff changeset
   175
    iParams.iCName.Set(KNoCName());
hgs
parents:
diff changeset
   176
hgs
parents:
diff changeset
   177
    iRtpApi->OpenL( iParams, NULL, NULL, NULL );
hgs
parents:
diff changeset
   178
    
hgs
parents:
diff changeset
   179
    result = iRtpApi->StartConnection(KIAPID);
hgs
parents:
diff changeset
   180
    gConsole->Printf(_L("Local Ip Address %d\n"),result);
hgs
parents:
diff changeset
   181
    
hgs
parents:
diff changeset
   182
    TBuf<50> addrStr;
hgs
parents:
diff changeset
   183
    TInetAddr inetaddr = iRtpApi->GetLocalIPAddressL();
hgs
parents:
diff changeset
   184
    inetaddr.Output(addrStr);
hgs
parents:
diff changeset
   185
    
hgs
parents:
diff changeset
   186
    gConsole->Printf(_L("Local Ip Address %s\n"),addrStr.PtrZ());
hgs
parents:
diff changeset
   187
    
hgs
parents:
diff changeset
   188
    iSessionParams.iPriority = TCreateSessionParams::EPriorityStandard;
hgs
parents:
diff changeset
   189
    iSessionParams.iSocketBufSize = KSocketBufSize;
hgs
parents:
diff changeset
   190
    
hgs
parents:
diff changeset
   191
    
hgs
parents:
diff changeset
   192
    iPort1 = 8000 ;
hgs
parents:
diff changeset
   193
    iPort2 = 9000;
hgs
parents:
diff changeset
   194
hgs
parents:
diff changeset
   195
    iRtcpParams.iRtcpFraction = 10;
hgs
parents:
diff changeset
   196
    iRtcpParams.iRtcpTimeOut = 5000000;
hgs
parents:
diff changeset
   197
    iRtcpParams.iSessionBWidth = 300;
hgs
parents:
diff changeset
   198
    
hgs
parents:
diff changeset
   199
    iEnableRtcp = EFalse;
hgs
parents:
diff changeset
   200
    
hgs
parents:
diff changeset
   201
    //Creating New session
hgs
parents:
diff changeset
   202
    iSessionId1  = KNullId;
hgs
parents:
diff changeset
   203
    iSessionId2 = KNullId;
hgs
parents:
diff changeset
   204
    iSessionId1 = iRtpApi->CreateSessionL(iSessionParams, iPort1, iEnableRtcp, &iRtcpParams);
hgs
parents:
diff changeset
   205
    iSessionId2 = iRtpApi->CreateSessionL(iSessionParams,iPort2,EFalse,&iRtcpParams);
hgs
parents:
diff changeset
   206
    
hgs
parents:
diff changeset
   207
    TInetAddr remAddress = iRtpApi->GetLocalIPAddressL(); 
hgs
parents:
diff changeset
   208
    remAddress.SetPort(iPort2); //Session 1 sends data to Session 2
hgs
parents:
diff changeset
   209
    
hgs
parents:
diff changeset
   210
    iRtpApi->SetRemoteAddress(iSessionId1, remAddress);
hgs
parents:
diff changeset
   211
     
hgs
parents:
diff changeset
   212
    iRtpApi->RegisterRtpObserver(iSessionId1, *this);
hgs
parents:
diff changeset
   213
    iRtpApi->RegisterRtcpObserver(iSessionId1, *this);
hgs
parents:
diff changeset
   214
    iRtpApi->RegisterRtpObserver(iSessionId2, *this);
hgs
parents:
diff changeset
   215
    iRtpApi->RegisterRtcpObserver(iSessionId2, *this);
hgs
parents:
diff changeset
   216
    iRtpApi->RegisterRtpPostProcessingObserver(iSessionId1, *this);
hgs
parents:
diff changeset
   217
    
hgs
parents:
diff changeset
   218
    TTranStreamParams streamParams;
hgs
parents:
diff changeset
   219
    streamParams.iPayloadType = 98;
hgs
parents:
diff changeset
   220
    TRtpSSRC locSSRC;
hgs
parents:
diff changeset
   221
    
hgs
parents:
diff changeset
   222
    iS1T1 = iRtpApi->CreateTransmitStreamL(iSessionId1,streamParams,locSSRC);
hgs
parents:
diff changeset
   223
    
hgs
parents:
diff changeset
   224
    TRcvStreamParams rcvParams;
hgs
parents:
diff changeset
   225
    rcvParams.iPayloadType = 98;
hgs
parents:
diff changeset
   226
hgs
parents:
diff changeset
   227
    iS2R1 = iRtpApi->CreateReceiveStreamL(iSessionId2,rcvParams);
hgs
parents:
diff changeset
   228
    
hgs
parents:
diff changeset
   229
    
hgs
parents:
diff changeset
   230
    /* Start both the sessions */
hgs
parents:
diff changeset
   231
    TInt ret = iRtpApi->StartSession(iSessionId1);
hgs
parents:
diff changeset
   232
    ret = iRtpApi->StartSession(iSessionId2);
hgs
parents:
diff changeset
   233
    
hgs
parents:
diff changeset
   234
    iRtpApi->SetSamplingRate(98,8000);
hgs
parents:
diff changeset
   235
    }
hgs
parents:
diff changeset
   236
hgs
parents:
diff changeset
   237
hgs
parents:
diff changeset
   238
void CRtpTestApp::SendRtpPacketL()
hgs
parents:
diff changeset
   239
    {
hgs
parents:
diff changeset
   240
    gConsole->Printf(_L("SendRtpPackets  TO Loopback address and Verify Header fields.. \n"));
hgs
parents:
diff changeset
   241
    
hgs
parents:
diff changeset
   242
    TRtpSendHeader headerinfo;
hgs
parents:
diff changeset
   243
    headerinfo.iHeaderExtension = NULL;
hgs
parents:
diff changeset
   244
    headerinfo.iMarker = 0;
hgs
parents:
diff changeset
   245
    headerinfo.iPadding = 0;
hgs
parents:
diff changeset
   246
    headerinfo.iPayloadType = 98;
hgs
parents:
diff changeset
   247
    headerinfo.iTimestamp = 1000;
hgs
parents:
diff changeset
   248
    
hgs
parents:
diff changeset
   249
    HBufC8* data = HBufC8::NewLC(KLength);
hgs
parents:
diff changeset
   250
    data->Des().Copy(KHello);
hgs
parents:
diff changeset
   251
hgs
parents:
diff changeset
   252
    
hgs
parents:
diff changeset
   253
    TRtpSendPktParams *header = new(ELeave) TRtpSendPktParams(headerinfo);
hgs
parents:
diff changeset
   254
    CleanupDeletePushL(header);
hgs
parents:
diff changeset
   255
    header->iTranStreamId = iS1T1;
hgs
parents:
diff changeset
   256
    header->iPayloadData.Set(data->Des()); 
hgs
parents:
diff changeset
   257
    
hgs
parents:
diff changeset
   258
    const TUint KArrayGranularity = 15;
hgs
parents:
diff changeset
   259
    
hgs
parents:
diff changeset
   260
    iCsrclist = new(ELeave) CArrayFixFlat<TUint32>(KArrayGranularity);
hgs
parents:
diff changeset
   261
    
hgs
parents:
diff changeset
   262
    // Send RTP Packets with CSRC list - 17 CSRC. Max Supported CSRC list is 15.
hgs
parents:
diff changeset
   263
    iCsrclist->AppendL(100001);
hgs
parents:
diff changeset
   264
    iCsrclist->AppendL(100002);
hgs
parents:
diff changeset
   265
    iCsrclist->AppendL(100003);
hgs
parents:
diff changeset
   266
    iCsrclist->AppendL(100004);
hgs
parents:
diff changeset
   267
    iCsrclist->AppendL(100005);
hgs
parents:
diff changeset
   268
    iCsrclist->AppendL(100006);
hgs
parents:
diff changeset
   269
    iCsrclist->AppendL(100007);
hgs
parents:
diff changeset
   270
    iCsrclist->AppendL(100008);
hgs
parents:
diff changeset
   271
    iCsrclist->AppendL(100009);
hgs
parents:
diff changeset
   272
    iCsrclist->AppendL(100010);
hgs
parents:
diff changeset
   273
    iCsrclist->AppendL(100011);
hgs
parents:
diff changeset
   274
    iCsrclist->AppendL(100012);
hgs
parents:
diff changeset
   275
    iCsrclist->AppendL(100013);
hgs
parents:
diff changeset
   276
    iCsrclist->AppendL(100014);
hgs
parents:
diff changeset
   277
    iCsrclist->AppendL(100015);
hgs
parents:
diff changeset
   278
    iCsrclist->AppendL(100016);
hgs
parents:
diff changeset
   279
    iCsrclist->AppendL(100017);
hgs
parents:
diff changeset
   280
    
hgs
parents:
diff changeset
   281
    iRtpApi->SetSamplingRate(headerinfo.iPayloadType, 8000);
hgs
parents:
diff changeset
   282
    TInt ret1 = iRtpApi->SendRtpPacket(*header, iCsrclist->Array());
hgs
parents:
diff changeset
   283
    
hgs
parents:
diff changeset
   284
    CrtpDataSender *datasend = CrtpDataSender::NewL(iRtpApi, iS1T1);
hgs
parents:
diff changeset
   285
    CleanupStack::PushL(datasend);
hgs
parents:
diff changeset
   286
    
hgs
parents:
diff changeset
   287
    datasend->SendRtpData(*header, iCsrclist->Array());
hgs
parents:
diff changeset
   288
    
hgs
parents:
diff changeset
   289
    gConsole->Printf(_L("SendRtpPacket %d\n"),ret1);
hgs
parents:
diff changeset
   290
    
hgs
parents:
diff changeset
   291
    CActiveScheduler::Start();
hgs
parents:
diff changeset
   292
    
hgs
parents:
diff changeset
   293
    CleanupStack::PopAndDestroy(3);
hgs
parents:
diff changeset
   294
    delete iCsrclist;
hgs
parents:
diff changeset
   295
    iCsrclist = 0;
hgs
parents:
diff changeset
   296
    }
hgs
parents:
diff changeset
   297
hgs
parents:
diff changeset
   298
hgs
parents:
diff changeset
   299
void CRtpTestApp::SendRtpPacketLoopbackL()
hgs
parents:
diff changeset
   300
    {
hgs
parents:
diff changeset
   301
    gConsole->Printf(_L("SendRtpPackets  TO Loopback address and Verify Header fields.. \n"));
hgs
parents:
diff changeset
   302
hgs
parents:
diff changeset
   303
    TRtpSendHeader header; 
hgs
parents:
diff changeset
   304
    header.iHeaderExtension = NULL;
hgs
parents:
diff changeset
   305
    header.iMarker = 0;
hgs
parents:
diff changeset
   306
    header.iPadding = 0;
hgs
parents:
diff changeset
   307
    header.iPayloadType = 98;
hgs
parents:
diff changeset
   308
    header.iTimestamp = 1000;
hgs
parents:
diff changeset
   309
    
hgs
parents:
diff changeset
   310
    HBufC8* data = HBufC8::NewLC(KLength);
hgs
parents:
diff changeset
   311
    data->Des().Copy(KHello);
hgs
parents:
diff changeset
   312
hgs
parents:
diff changeset
   313
    TRtpSendPktParams *headerinfo = new(ELeave) TRtpSendPktParams(header);
hgs
parents:
diff changeset
   314
    CleanupDeletePushL(headerinfo);
hgs
parents:
diff changeset
   315
    headerinfo->iTranStreamId = iS1T1;
hgs
parents:
diff changeset
   316
    headerinfo->iPayloadData.Set(data->Des()); 
hgs
parents:
diff changeset
   317
    
hgs
parents:
diff changeset
   318
    const TUint KArrayGranularity = 15;
hgs
parents:
diff changeset
   319
    
hgs
parents:
diff changeset
   320
    // Create CSRC list and Append CSRC identifiers
hgs
parents:
diff changeset
   321
    iCsrclist = new(ELeave) CArrayFixFlat<TUint32>(KArrayGranularity);
hgs
parents:
diff changeset
   322
    
hgs
parents:
diff changeset
   323
    iCsrclist->AppendL(123456);
hgs
parents:
diff changeset
   324
    iCsrclist->AppendL(999999);
hgs
parents:
diff changeset
   325
     
hgs
parents:
diff changeset
   326
    TInt error2( KErrNone );
hgs
parents:
diff changeset
   327
    // Try sending synchronously with Csrc
hgs
parents:
diff changeset
   328
    error2 = iRtpApi->SendRtpPacket(*headerinfo, iCsrclist->Array());
hgs
parents:
diff changeset
   329
    gConsole->Printf(_L("SendRtpPacket.. %d\n"), error2);
hgs
parents:
diff changeset
   330
    
hgs
parents:
diff changeset
   331
    // Try sending asynchronously with CSRC
hgs
parents:
diff changeset
   332
    CrtpDataSender *datasend = CrtpDataSender::NewL(iRtpApi, iS1T1);
hgs
parents:
diff changeset
   333
    CleanupStack::PushL(datasend);
hgs
parents:
diff changeset
   334
    datasend->SendRtpData(*headerinfo, iCsrclist->Array());
hgs
parents:
diff changeset
   335
    gConsole->Printf(_L("SendRtpPacket.. %d\n"), error2);
hgs
parents:
diff changeset
   336
    
hgs
parents:
diff changeset
   337
    CActiveScheduler::Start();
hgs
parents:
diff changeset
   338
    
hgs
parents:
diff changeset
   339
    CleanupStack::PopAndDestroy(3);
hgs
parents:
diff changeset
   340
    delete iCsrclist;
hgs
parents:
diff changeset
   341
    iCsrclist = 0;
hgs
parents:
diff changeset
   342
    }
hgs
parents:
diff changeset
   343
hgs
parents:
diff changeset
   344
void CRtpTestApp::SendZeroLengthRtpPacketL()
hgs
parents:
diff changeset
   345
    {
hgs
parents:
diff changeset
   346
    // Start Session on Session id
hgs
parents:
diff changeset
   347
    iRtpApi->StartSession(iSessionId1);
hgs
parents:
diff changeset
   348
    
hgs
parents:
diff changeset
   349
    TInetAddr remAddress = iRtpApi->GetLocalIPAddressL();
hgs
parents:
diff changeset
   350
    remAddress.SetPort(9000); //Session 1 sends data to Session 2
hgs
parents:
diff changeset
   351
    
hgs
parents:
diff changeset
   352
    iRtpApi->SetRemoteAddress(iSessionId1, remAddress);
hgs
parents:
diff changeset
   353
    
hgs
parents:
diff changeset
   354
    iRtpApi->RegisterRtpObserver(iSessionId1, *this);
hgs
parents:
diff changeset
   355
    iRtpApi->RegisterRtcpObserver(iSessionId1, *this);
hgs
parents:
diff changeset
   356
    iRtpApi->RegisterRtpPostProcessingObserver(iSessionId1, *this);
hgs
parents:
diff changeset
   357
    
hgs
parents:
diff changeset
   358
    //iRtpApi->SetNonRTPDataObserver(iSessionId1, *this);
hgs
parents:
diff changeset
   359
    
hgs
parents:
diff changeset
   360
    TTranStreamParams tranStreamParams;
hgs
parents:
diff changeset
   361
    tranStreamParams.iPayloadType = 96;
hgs
parents:
diff changeset
   362
    TRtpSSRC ssrc = 4567890;
hgs
parents:
diff changeset
   363
    
hgs
parents:
diff changeset
   364
    TRtpId streamId = iRtpApi->CreateTransmitStreamL(iSessionId1, tranStreamParams, ssrc);
hgs
parents:
diff changeset
   365
hgs
parents:
diff changeset
   366
    
hgs
parents:
diff changeset
   367
    TRtpSendHeader headerinfo;
hgs
parents:
diff changeset
   368
    headerinfo.iHeaderExtension = 0;
hgs
parents:
diff changeset
   369
    headerinfo.iPayloadType = 96;
hgs
parents:
diff changeset
   370
    headerinfo.iTimestamp = 12345678;
hgs
parents:
diff changeset
   371
    
hgs
parents:
diff changeset
   372
    TRtpSendPktParams *header = new(ELeave) TRtpSendPktParams(headerinfo);
hgs
parents:
diff changeset
   373
    CleanupDeletePushL(header);
hgs
parents:
diff changeset
   374
    header->iTranStreamId = streamId;
hgs
parents:
diff changeset
   375
    
hgs
parents:
diff changeset
   376
    const TUint KArrayGranularity = 15;
hgs
parents:
diff changeset
   377
    
hgs
parents:
diff changeset
   378
    iCsrclist = new(ELeave) CArrayFixFlat<TUint32>(KArrayGranularity);
hgs
parents:
diff changeset
   379
    
hgs
parents:
diff changeset
   380
    // Send RTP Packets with CSRC list
hgs
parents:
diff changeset
   381
    iCsrclist->AppendL(100001);
hgs
parents:
diff changeset
   382
    iCsrclist->AppendL(100002);
hgs
parents:
diff changeset
   383
    
hgs
parents:
diff changeset
   384
    iRtpApi->SetSamplingRate(headerinfo.iPayloadType, 8000);
hgs
parents:
diff changeset
   385
    
hgs
parents:
diff changeset
   386
    TInt ret1 = iRtpApi->SendRtpPacket(*header, iCsrclist->Array());
hgs
parents:
diff changeset
   387
    
hgs
parents:
diff changeset
   388
    CrtpDataSender *datasend = CrtpDataSender::NewL(iRtpApi, streamId);
hgs
parents:
diff changeset
   389
    CleanupStack::PushL(datasend);
hgs
parents:
diff changeset
   390
    datasend->SendRtpData(*header, iCsrclist->Array());
hgs
parents:
diff changeset
   391
    
hgs
parents:
diff changeset
   392
    CActiveScheduler::Start();
hgs
parents:
diff changeset
   393
    
hgs
parents:
diff changeset
   394
    CleanupStack::PopAndDestroy(2);
hgs
parents:
diff changeset
   395
    delete iCsrclist;
hgs
parents:
diff changeset
   396
    iCsrclist = 0;
hgs
parents:
diff changeset
   397
    }
hgs
parents:
diff changeset
   398
hgs
parents:
diff changeset
   399
CRtpTestApp::~CRtpTestApp()
hgs
parents:
diff changeset
   400
    {
hgs
parents:
diff changeset
   401
    delete iRtpApi;
hgs
parents:
diff changeset
   402
    }
hgs
parents:
diff changeset
   403
hgs
parents:
diff changeset
   404
GLDEF_C TInt E32Main()
hgs
parents:
diff changeset
   405
/**
hgs
parents:
diff changeset
   406
 * @return - Standard Epoc error code on exit
hgs
parents:
diff changeset
   407
 */
hgs
parents:
diff changeset
   408
    {
hgs
parents:
diff changeset
   409
    __UHEAP_MARK;
hgs
parents:
diff changeset
   410
    CTrapCleanup* cleanup = CTrapCleanup::New();
hgs
parents:
diff changeset
   411
    if(!cleanup)
hgs
parents:
diff changeset
   412
        {
hgs
parents:
diff changeset
   413
        return KErrNoMemory;
hgs
parents:
diff changeset
   414
        }
hgs
parents:
diff changeset
   415
    TInt err = 0;
hgs
parents:
diff changeset
   416
    TRAP(err,MainL());
hgs
parents:
diff changeset
   417
    delete cleanup;
hgs
parents:
diff changeset
   418
    __UHEAP_MARKEND;
hgs
parents:
diff changeset
   419
    return err;
hgs
parents:
diff changeset
   420
    }
hgs
parents:
diff changeset
   421
hgs
parents:
diff changeset
   422