multimediacommscontroller/mmccMsrppayloadformat/src/Msrppayloadformatwrite.cpp
author vnuitven <>
Mon, 06 Sep 2010 19:02:58 +0530
branchrcs
changeset 51 a13dcee59a62
parent 50 1d8943dd8be6
permissions -rw-r--r--
modifications in the copyright for these files
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
49
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
     1
/*
51
a13dcee59a62 modifications in the copyright for these files
vnuitven <>
parents: 50
diff changeset
     2
* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
49
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
     3
* All rights reserved.
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
     4
* This component and the accompanying materials are made available
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
     6
* which accompanies this distribution, and is available
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
     8
*
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
     9
* Initial Contributors:
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
    11
*
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
    12
* Contributors:
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
    13
*
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
    14
* Description:    Provides a comfort noise generator class
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
    15
*
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
    16
*/
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
    17
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
    18
// INCLUDE FILES
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
    19
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
    20
#include    <rtpheader.h> 
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
    21
#include 	<e32cmn.h>
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
    22
#include 	<utf.h> // charconv.lib
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
    23
 
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
    24
#include    "msrppayloadformatwrite.h" 
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
    25
#include    "mccrtpdatasink.h"
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
    26
#include 	"Mccrtpinterface.h"
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
    27
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
    28
#include    "mccmsrpformatlogs.h"
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
    29
#include    "mccuids.hrh"
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
    30
#include    "mccdef.h"
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
    31
#include    "mccrtpmediaclock.h"
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
    32
#include    "mccinternaldef.h"
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
    33
#include 	"msrppayloadformatdefs.h"
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
    34
#include    "mmccinterfacedef.h"
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
    35
#include    "mccmsrpsink.h"
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
    36
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
    37
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
    38
// -----------------------------------------------------------------------------
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
    39
// CMsrpPayloadFormatRead::CMsrpPayloadFormatRead
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
    40
// C++ default constructor can NOT contain any code, that
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
    41
// might leave.
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
    42
// 
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
    43
// iIdleMode is set to ETrue, because when starting we are in IdleMode
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
    44
// -----------------------------------------------------------------------------
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
    45
//
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
    46
CMsrpPayloadFormatWrite::CMsrpPayloadFormatWrite(): iIdleMode(ETrue)
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
    47
    {    
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
    48
    }
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
    49
    
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
    50
// -----------------------------------------------------------------------------
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
    51
// CMsrpPayloadFormatWrite::ConstructL
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
    52
// Symbian 2nd phase constructor can leave.
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
    53
// -----------------------------------------------------------------------------
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
    54
//
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
    55
void CMsrpPayloadFormatWrite::ConstructL ( MDataSink* aSink )
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
    56
    {
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
    57
     
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
    58
    DP_MSRP_WRITE("CMsrpPayloadFormatWrite::ConstructL");
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
    59
    
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
    60
    // Set default values
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
    61
    iFourCC = KMccFourCCIdMSRP ;
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
    62
    //iFourCC.Set( TFourCC( 'T','1','4','0' ) );
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
    63
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
    64
	//we are going upstream, so our source is the datapath and
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
    65
	// sink is the clip. If we use RTP, which  we do, 
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
    66
	// our sink is of cource the RTPSink
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
    67
    iClip = aSink;    
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
    68
    iIsRtpSink = ( KMccRtpSinkUid  == aSink->DataSinkType() );
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
    69
    iIsMsrpSink = (KMccMsrpSinkUid == aSink->DataSinkType() );
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
    70
    
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
    71
    // two levels of redundancy is allways assumed, not necessarily used
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
    72
    // RFC4103 RECOMMENDED
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
    73
    iRedData = new(ELeave)CArrayFixFlat<TStringElement>(3);
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
    74
    
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
    75
    //userBuffer, handles all data put in by user
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
    76
    iUserBuffer = new(ELeave)CArrayFixFlat<TStringElement>(3);
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
    77
    
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
    78
    // init data to null
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
    79
    TStringElement one;
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
    80
    TStringElement two;
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
    81
    TStringElement three;
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
    82
    iRedData->AppendL(one);
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
    83
    iRedData->AppendL(two); 
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
    84
    iRedData->AppendL(three);
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
    85
     
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
    86
    // maxsize of the packet
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
    87
    iBuf = HBufC8::NewL( KRedHeaderSize + KDataSize );
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
    88
    iData = const_cast<TUint8*>( iBuf->Des().Ptr() );
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
    89
  	
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
    90
    if ( iIsRtpSink )
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
    91
        {
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
    92
        CMccRtpDataSink* tmp = static_cast<CMccRtpDataSink*>( aSink );
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
    93
        iRtpDataSink = static_cast<MMccRtpDataSink*>( tmp );
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
    94
        }
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
    95
    else if(iIsMsrpSink)
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
    96
        {
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
    97
        CMccMsrpSink *tmp = static_cast<CMccMsrpSink*>( aSink );
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
    98
        iMsrpDataSink = static_cast<CMccMsrpSink*>( tmp );
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
    99
        }
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   100
    else
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   101
        {
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   102
    	DP_MSRP_WRITE("CMsrpPayloadFormatWrite::ConstructL Leaving: No RTPSink!");
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   103
    	User::Leave(KErrNotSupported);	
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   104
        }
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   105
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   106
    // Initialize state machine
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   107
    iStateMachine = CFormatEncodeStateMachine::NewL( this );
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   108
    
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   109
    //init state machine to idle state
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   110
    iStateMachine->ChangeState( EEncodeIdle );
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   111
    
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   112
    // Construct Timer for redundant generations.
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   113
    iTimer = CSendStateMachine::NewL( this ); 
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   114
    
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   115
    }
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   116
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   117
    
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   118
// -----------------------------------------------------------------------------
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   119
// CMsrpPayloadFormatWrite::NewL
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   120
// Two-phased constructor.
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   121
// -----------------------------------------------------------------------------
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   122
//
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   123
CMsrpPayloadFormatWrite* CMsrpPayloadFormatWrite::NewL ( MDataSink* aSink )
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   124
    {
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   125
 	
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   126
 	
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   127
 	DP_MSRP_WRITE( "CMsrpPayloadFormatWrite::NewL" );
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   128
    __ASSERT_ALWAYS( aSink, User::Leave( KErrArgument ) );
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   129
    
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   130
    CMsrpPayloadFormatWrite* self = new (ELeave) CMsrpPayloadFormatWrite;
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   131
    CleanupStack::PushL( self );
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   132
    self->ConstructL( aSink );
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   133
    CleanupStack::Pop( self );
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   134
    return self;
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   135
    
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   136
    }
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   137
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   138
// Destructor 
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   139
CMsrpPayloadFormatWrite::~CMsrpPayloadFormatWrite ()
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   140
    {
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   141
    
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   142
    if ( iStateMachine )
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   143
        {
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   144
        iStateMachine->Cancel();
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   145
        delete iStateMachine;
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   146
        }
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   147
    
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   148
    if(iTimer) 
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   149
	    {
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   150
	    	iTimer->Cancel();
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   151
	    	delete iTimer;	
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   152
	    }
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   153
	   
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   154
    
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   155
    iRtpMediaClock = NULL;
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   156
    iClip = NULL;
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   157
    
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   158
    delete iSourceBuffer;
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   159
    delete iSinkBuffer;
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   160
    delete iRedData;
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   161
    delete iUserBuffer;
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   162
    delete iBuf;
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   163
   
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   164
    }
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   165
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   166
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   167
// -----------------------------------------------------------------------------
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   168
// CMsrpPayloadFormatWrite::SinkThreadLogon
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   169
// Passes the logon command to the sink clip
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   170
// -----------------------------------------------------------------------------
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   171
//
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   172
TInt CMsrpPayloadFormatWrite::SinkThreadLogon(MAsyncEventHandler& aEventHandler)
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   173
    {
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   174
    DP_MSRP_WRITE("CMsrpPayloadFormatWrite::SinkThreadLogon");
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   175
    iClip->SinkThreadLogon( aEventHandler );
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   176
    return KErrNone;
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   177
    }
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   178
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   179
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   180
// -----------------------------------------------------------------------------
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   181
// CMsrpPayloadFormatWrite::SinkThreadLogoff
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   182
// Passes the logoff command to the sink clip
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   183
// -----------------------------------------------------------------------------
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   184
void CMsrpPayloadFormatWrite::SinkThreadLogoff()
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   185
    {   
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   186
    DP_MSRP_WRITE("CMsrpPayloadFormatWrite::SinkThreadLogoff");
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   187
    iClip->SinkThreadLogoff();
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   188
    }
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   189
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   190
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   191
// -----------------------------------------------------------------------------
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   192
// CMsrpPayloadFormatWrite::CreateSinkBufferL
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   193
// Create a sink buffer
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   194
// -----------------------------------------------------------------------------
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   195
//
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   196
CMMFBuffer* CMsrpPayloadFormatWrite::CreateSinkBufferL( TMediaId /*aMediaId*/,
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   197
                                                        TBool &aReference )
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   198
    { 
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   199
    	
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   200
   	DP_MSRP_WRITE( "CMsrpPayloadFormatWrite::CreateSinkBufferL" );
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   201
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   202
	/* TODO: Remove me when platform supports
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   203
    if ( KUidMediaTypeText != aMediaId.iMediaType ) 
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   204
    {
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   205
    User::Leave( KErrNotSupported ); 
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   206
    }
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   207
    */    
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   208
    aReference = ETrue;
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   209
    return CreateSinkBufferOfSizeL( KMaxRTTChunkSize + KRedHeaderSize );
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   210
    
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   211
    }
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   212
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   213
// -----------------------------------------------------------------------------
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   214
// CMsrpPayloadFormatWrite::CreateSinkBufferOfSizeL
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   215
// Create a sink buffer of the given size.
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   216
// -----------------------------------------------------------------------------
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   217
//
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   218
CMMFDataBuffer* CMsrpPayloadFormatWrite::CreateSinkBufferOfSizeL( TUint aSize )
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   219
    {
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   220
	
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   221
	DP_MSRP_WRITE( "CMsrpPayloadFormatWrite::CreateSinkBufferOfSizeL" );
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   222
  
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   223
    if ( !iSourceBuffer )
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   224
	    {
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   225
	    iSourceBuffer = CMMFDataBuffer::NewL( aSize );
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   226
    	iSourceBuffer->Data().FillZ( aSize );
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   227
    	iSourceBuffer->SetRequestSizeL( aSize );
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   228
	    }
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   229
	    
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   230
    return iSourceBuffer;
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   231
    
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   232
    }
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   233
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   234
// -----------------------------------------------------------------------------
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   235
// CMsrpPayloadFormatWrite::EmptyBufferL
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   236
// Empty the given source buffer
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   237
// -----------------------------------------------------------------------------
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   238
//
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   239
void CMsrpPayloadFormatWrite::EmptyBufferL( CMMFBuffer* aBuffer, 
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   240
                                            MDataSource* aSupplier, 
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   241
                                            TMediaId /*aMediaId*/ )
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   242
    {
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   243
    
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   244
    DP_MSRP_WRITE("CMsrpPayloadFormatWrite::EmptyBufferL");
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   245
  
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   246
    __ASSERT_ALWAYS( aBuffer, User::Leave( KErrArgument ) );
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   247
    __ASSERT_ALWAYS ( aBuffer == iSourceBuffer, User::Leave( KErrArgument ) );
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   248
    __ASSERT_ALWAYS( aSupplier, User::Leave( KErrArgument ) );
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   249
    
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   250
   	// TODO: Remove me when platform supports
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   251
	// __ASSERT_ALWAYS( KUidMediaTypeAudio == aMediaId.iMediaType,
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   252
	// User::Leave( KErrNotSupported ) );
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   253
    
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   254
    // Cancel timer, so timer does not interrupt our current sending.
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   255
    // Timer enables empty blocks to be appended when redundancy is on.
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   256
    iTimer->Cancel();
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   257
       
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   258
    iDataPath = aSupplier;
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   259
    iSourceBuffer = static_cast<CMMFDataBuffer*>( aBuffer );
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   260
    
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   261
    if ( !iSinkBuffer )
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   262
        {        
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   263
        iStateMachine->ChangeState( ESourceBufferEmptied );
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   264
        return;
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   265
        }
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   266
        
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   267
	if ( !iSinkBuffer->Data().Length() ) 
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   268
	    {
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   269
		//User::LeaveIfError( iRtpMediaClock->GetTimeStamp( iKey, iCurrentTimestamp ) );
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   270
   		iSinkBuffer->SetTimeToPlay( TInt64( iCurrentTimestamp ) );
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   271
   		iSinkBuffer->SetFrameNumber( aBuffer->FrameNumber() );	
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   272
	    }
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   273
       
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   274
       
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   275
      // We signal StateMachine to ChangeState() 
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   276
      // this calls back EmptySourceBufferL 
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   277
      iStateMachine->ChangeState( EEmptySourceBuffer );
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   278
   
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   279
    } 
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   280
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   281
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   282
// -----------------------------------------------------------------------------
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   283
// CMsrpPayloadFormatWrite::SetSinkDataTypeCode
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   284
// Set the sink data type to the given four CC code for the given media
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   285
// -----------------------------------------------------------------------------
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   286
//
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   287
TInt CMsrpPayloadFormatWrite::SetSinkDataTypeCode( TFourCC aSinkFourCC,
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   288
                                                   TMediaId /*aMediaId*/ )
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   289
    {
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   290
    DP_MSRP_WRITE("CMsrpPayloadFormatWrite::SetSinkDataTypeCode");
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   291
	/* TODO: Remove me when platform supports
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   292
    if ( KUidMediaTypeText != aMediaId.iMediaType )
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   293
    {
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   294
    User::Leave( KErrNotSupported );
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   295
    }
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   296
    */
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   297
    iFourCC = aSinkFourCC;
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   298
    return KErrNone;
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   299
    
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   300
    }
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   301
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   302
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   303
// -----------------------------------------------------------------------------
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   304
// CMsrpPayloadFormatWrite::SinkDataTypeCode
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   305
// Return the sink data type (four CC code) for the given media ID
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   306
// -----------------------------------------------------------------------------
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   307
//
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   308
TFourCC CMsrpPayloadFormatWrite::SinkDataTypeCode( TMediaId /*aMediaId*/ )
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   309
    {
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   310
    DP_MSRP_WRITE("CMsrpPayloadFormatWrite::SinkDataTypeCode");
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   311
  	/* TODO: Remove me when platform supports
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   312
    if ( KUidMediaTypeText == aMediaId.iMediaType )
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   313
        {
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   314
        return iFourCC;
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   315
        }
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   316
    else
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   317
        {
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   318
        return TFourCC(); //defaults to 'NULL' fourCC
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   319
        }
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   320
        */
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   321
	return iFourCC;
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   322
        
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   323
    }
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   324
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   325
// -----------------------------------------------------------------------------
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   326
// CMsrpPayloadFormatWrite::BufferEmptiedL
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   327
// Called after payload buffer is completely emptied by RtpDataSink.
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   328
// -----------------------------------------------------------------------------
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   329
//
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   330
void CMsrpPayloadFormatWrite::BufferEmptiedL( CMMFBuffer* /*aBuffer*/ )
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   331
    {
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   332
    DP_MSRP_WRITE( "CMsrpPayloadFormatWrite::BufferEmptiedL" );
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   333
	// nothing to be done
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   334
	
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   335
	//NOTE: 14.12.2007 - LeaveScan causes warning, but this is a interface method
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   336
    }
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   337
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   338
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   339
// -----------------------------------------------------------------------------
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   340
// CMsrpPayloadFormatWrite::FrameTimeInterval
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   341
// Return the frame time interval for the given media
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   342
// Return allways 0
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   343
// -----------------------------------------------------------------------------
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   344
//
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   345
TTimeIntervalMicroSeconds 
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   346
    CMsrpPayloadFormatWrite::FrameTimeInterval( TMediaId /*aMediaId*/ ) const
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   347
    {
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   348
    DP_MSRP_WRITE( "CMsrpPayloadFormatWrite::FrameTimeInterval" );
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   349
    return TTimeIntervalMicroSeconds( TInt64( 0 ) );
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   350
    }
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   351
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   352
// -----------------------------------------------------------------------------
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   353
// CMsrpPayloadFormatWrite::Duration
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   354
// Return the frame time interval for the given media
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   355
// NOT SUPPORTED
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   356
// -----------------------------------------------------------------------------
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   357
//
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   358
TTimeIntervalMicroSeconds 
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   359
    CMsrpPayloadFormatWrite::Duration( TMediaId /*aMediaType*/ ) const
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   360
    {
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   361
    DP_MSRP_WRITE( "CMsrpPayloadFormatWrite::Duration" );
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   362
    return TTimeIntervalMicroSeconds( TInt64( 0 ) );
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   363
    }
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   364
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   365
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   366
// -----------------------------------------------------------------------------
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   367
// CMsrpPayloadFormatWrite::EmptySourceBufferL
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   368
// Empty the given sourcebuffer
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   369
// Sourcebuffer is given in iSourceBuffer
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   370
// Called by StateMachine
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   371
// -----------------------------------------------------------------------------
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   372
//
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   373
void CMsrpPayloadFormatWrite::EmptySourceBufferL()
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   374
	{
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   375
				
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   376
	  	DP_MSRP_WRITE( "CMsrpPayloadFormatWrite::EmptySourceBufferL" );
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   377
	 
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   378
	  	const TDesC8& srcDes( iSourceBuffer->Data() );
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   379
    	const TUint8* srcPtr = srcDes.Ptr();
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   380
  		TInt length = iSourceBuffer->Data().Length();
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   381
  		
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   382
  		if ( iSourceBuffer->Data().Length() ) 
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   383
	  		{
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   384
	  		
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   385
		  		if( KMaxRTTChunkSize < length )
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   386
				  	{
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   387
				  		DP_MSRP_WRITE( "ERR - RTT Payload Length exceeded MaxChunkSize" );
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   388
				  		User::Leave(KErrArgument);
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   389
				  	}
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   390
			  	
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   391
		  		TBuf16<KMaxRTTChunkSize> unicode;
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   392
		    	User::LeaveIfError(
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   393
		    			CnvUtfConverter::ConvertToUnicodeFromUtf8(unicode, TPtrC8(srcPtr)));			
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   394
					
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   395
				//buffer the user data
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   396
				TStringElement buffer;
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   397
				buffer.iData = unicode;
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   398
				iUserBuffer->AppendL(buffer);
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   399
				
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   400
				FormUserDataL();
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   401
				ForwardDataL();
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   402
					
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   403
			}
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   404
}   
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   405
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   406
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   407
// -----------------------------------------------------------------------------
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   408
// CMsrpPayloadFormatWrite::TimerExpiredL()
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   409
// Sends Redundant data after buffer period, if no user data 
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   410
// appeared before that.
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   411
// -----------------------------------------------------------------------------
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   412
//
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   413
void CMsrpPayloadFormatWrite::TimerExpiredL()
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   414
{		
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   415
	DP_MSRP_WRITE( "CMsrpPayloadFormatWrite::TimerExpiredL" );
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   416
	
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   417
	// Because timer expired, we must send redundant data anyway
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   418
	TStringElement nullData;
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   419
	iUserBuffer->AppendL(nullData);
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   420
	
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   421
	FormUserDataL();
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   422
	//TODO:Handle other Errors if any
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   423
	TInt err = SendRedundantDataL();
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   424
	if ( err != KErrNone )
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   425
		{
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   426
			GotoIdleL(); 
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   427
		}
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   428
}
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   429
 
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   430
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   431
// -----------------------------------------------------------------------------
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   432
// CMsrpPayloadFormatWrite::ForwardDataL()
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   433
// Sends Redundant data after buffer period, if no user data 
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   434
// appeared before that.
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   435
// -----------------------------------------------------------------------------
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   436
//
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   437
void CMsrpPayloadFormatWrite::ForwardDataL()
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   438
{
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   439
    DP_MSRP_WRITE( "CMsrpPayloadFormatWrite::ForwardDataL" );
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   440
    
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   441
    // Just Send Data
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   442
    TInt err = SendRedundantDataL();
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   443
    
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   444
    if ( err == KErrNone )
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   445
        {
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   446
            iStateMachine->ChangeState( ESourceBufferEmptied ); 
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   447
        }
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   448
} 
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   449
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   450
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   451
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   452
// -----------------------------------------------------------------------------
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   453
// CMsrpPayloadFormatWrite::SendRedundantDataL()
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   454
// A Method that sends the redundant buffer to Sink
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   455
// Calls CMsrpPayloadFormatWrite::DeliverPacketL
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   456
// -----------------------------------------------------------------------------
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   457
//
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   458
TInt CMsrpPayloadFormatWrite::SendRedundantDataL()
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   459
	{
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   460
    DP_MSRP_WRITE( "CMsrpPayloadFormatWrite::SendRedundantDataL" );
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   461
    
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   462
	TStringElement zero = iRedData->At(0);
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   463
	TStringElement one = iRedData->At(1);
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   464
	TStringElement two = iRedData->At(2);
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   465
 	
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   466
 	DP_MSRP_WRITE( "******************");
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   467
 	DP_MSRP_WRITE2( "SendRedundantDataL - Zero Lenght: %d", zero.iData.Length() ); 
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   468
 	DP_MSRP_WRITE2( "SendRedundantDataL - R1 Lenght: %d", one.iData.Length() );
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   469
 	DP_MSRP_WRITE2( "SendRedundantDataL - R2 lenght: %d", two.iData.Length() );
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   470
 	
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   471
	if ( zero.iData.Length() == 0 && one.iData.Length() == 0 && two.iData.Length() == 0 )
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   472
	 {
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   473
	 	DP_MSRP_WRITE( "ERR - SendRedundantDataL - All Data is 0 lenght returning, KErrArgument!"); 
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   474
	 	return KErrArgument;
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   475
	 }
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   476
		 
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   477
	TDes8& destDes( iSinkBuffer->Data() );
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   478
	
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   479
 	// Assemble redundant data
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   480
    AssembleRedPacket();
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   481
    // Append current data to buffer
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   482
    TPtr8 ptr = iBuf->Des();
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   483
    destDes.Append(  ptr );
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   484
    
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   485
    DP_MSRP_WRITE2( "CMsrpPayloadFormatWrite HeapData size: %d", ptr.Size() );
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   486
    DP_MSRP_WRITE2( "CMsrpPayloadFormatWrite HeapData Length: %d", ptr.Length() );
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   487
    DP_MSRP_WRITE ("CMsrpPayloadFormatWrite::DeliverPacketL, Packet Assembled" );
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   488
	DP_MSRP_WRITE( "******************");
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   489
	
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   490
    DeliverPacketL( *iSinkBuffer );	
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   491
	return KErrNone;
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   492
		
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   493
	}
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   494
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   495
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   496
// -----------------------------------------------------------------------------
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   497
// CMsrpPayloadFormatWrite::FormUserDataL()
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   498
//
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   499
// A function that refreshes the RedundantData Buffer, so that
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   500
// We just can send data that is there.
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   501
// -----------------------------------------------------------------------------
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   502
//
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   503
TInt CMsrpPayloadFormatWrite::FormUserDataL()
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   504
{
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   505
    DP_MSRP_WRITE( "CMsrpPayloadFormatWrite::SendRedundantDataL" );
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   506
	
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   507
    TStringElement primary;
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   508
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   509
    // if there is data
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   510
    if ( iUserBuffer->Count() )
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   511
        {
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   512
            primary = iUserBuffer->At(0);
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   513
        }
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   514
        
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   515
    //set timestamp to primary data, this is used to calculate offset
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   516
    primary.iTimestamp = iSinkBuffer->TimeToPlay().Int64();
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   517
    
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   518
    // can now reset user buffer
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   519
    iUserBuffer->Reset();
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   520
    
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   521
    // get current redundants
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   522
    TStringElement zero = iRedData->At(0);
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   523
    TStringElement one = iRedData->At(1); 
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   524
    
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   525
    // we can now reset old redundant also
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   526
    iRedData->Reset();
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   527
    
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   528
    // re-order redundant data, this must be always present, 
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   529
    // if redundancy changes on-fly from e.g 0 to 2
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   530
    iRedData->AppendL(primary);
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   531
    iRedData->AppendL(zero);
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   532
    iRedData->AppendL(one);
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   533
    
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   534
    return KErrNone;
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   535
}
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   536
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   537
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   538
// -----------------------------------------------------------------------------
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   539
// CMsrpPayloadFormatWrite::GoToIdleL()
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   540
//
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   541
// When there is no data to send, we must go to idle mode
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   542
// -----------------------------------------------------------------------------
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   543
//
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   544
void CMsrpPayloadFormatWrite::GotoIdleL()
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   545
	{
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   546
	
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   547
    DP_MSRP_WRITE( "CMsrpPayloadFormatWrite::GoToIdleL()");
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   548
    //reset redundancy buffer
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   549
    iRedData->Reset();
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   550
    //add default data  
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   551
    TStringElement empty;
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   552
    iRedData->AppendL(empty);
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   553
    iRedData->AppendL(empty);
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   554
    iRedData->AppendL(empty);
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   555
    iIdleMode = ETrue;
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   556
    
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   557
    //Set State that we are waiting for Data
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   558
    iStateMachine->ChangeState( EWaitForSourceData );
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   559
    
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   560
    // Cancel the Timer also
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   561
    iTimer->Cancel();
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   562
		 	
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   563
	}
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   564
 
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   565
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   566
// -----------------------------------------------------------------------------
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   567
// CMsrpPayloadFormatWrite::AssembleRedPacket()
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   568
//
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   569
// In AssembleRedPacket we must assemble right kind of
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   570
// payload. We switch between redundant and plain data.
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   571
// If redundancy is used a redundant datapacket is generated!
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   572
// -----------------------------------------------------------------------------
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   573
//
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   574
void CMsrpPayloadFormatWrite::AssembleRedPacket()
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   575
	{
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   576
    DP_MSRP_WRITE( "CMsrpPayloadFormatWrite::AssembleRedPacket" );
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   577
    switch( iCodecInfo.iRedundancyCount )
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   578
    {
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   579
        case 0:
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   580
            // just append the primary data and no headers
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   581
            iBuf->Des().Append( iRedData->At(0).iData );
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   582
        break;
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   583
        
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   584
        case 2:
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   585
             TInt err = GenerateRedPacket(); 
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   586
             //TODO: Handle Errors in Creating packet
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   587
        break;
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   588
        
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   589
    }
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   590
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   591
	}
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   592
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   593
	
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   594
// -----------------------------------------------------------------------------
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   595
// CMsrpPayloadFormatWrite::GenerateRedPacket() 
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   596
//
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   597
// In GenerateRedPacket we must assemble right kind of
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   598
// payload according to RFC 4103. Level 2 redundancy is used.
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   599
// -----------------------------------------------------------------------------
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   600
//
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   601
TInt CMsrpPayloadFormatWrite::GenerateRedPacket() 
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   602
{
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   603
		
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   604
		DP_MSRP_WRITE( "CMsrpPayloadFormatWrite::GenerateRedPacket()" );
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   605
		
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   606
		TStringElement primary = iRedData->At(0);
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   607
		TStringElement r1 = iRedData->At(1);
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   608
		TStringElement r2 = iRedData->At(2);
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   609
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   610
		DP_MSRP_WRITE( "*******************************");
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   611
		DP_MSRP_WRITE2("CMsrpPayloadFormatWrite::GenerateRedPacket PR Length: %d", primary.iData.Length() );
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   612
		DP_MSRP_WRITE2("CMsrpPayloadFormatWrite::GenerateRedPacket R1 Length: %d", r1.iData.Length() );
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   613
		DP_MSRP_WRITE2("CMsrpPayloadFormatWrite::GenerateRedPacket R2 Length: %d", r2.iData.Length() );
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   614
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   615
		// pointer to data
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   616
		TUint8* dataP = iData;
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   617
		TInt count(0);
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   618
		//Fill Data with binary zeroes and zero old
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   619
		Mem::FillZ( dataP, KRedHeaderSize + KDataSize ); 
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   620
		iBuf->Des().Zero();
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   621
    
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   622
    	
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   623
		/*************
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   624
		data[0] = 8 bit
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   625
		1 bit - redundancy marker bit 1
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   626
		7 bit - payloadtype
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   627
		***************/
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   628
		
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   629
		iData[0] |= ( 1 << 7 );
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   630
		iData[0] |= iCodecInfo.iRedundantPayload; 
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   631
		//iData[0] |= 106; 
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   632
		dataP += 1;
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   633
		count ++;
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   634
			
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   635
			
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   636
		/**************
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   637
		data[1-3] = 24 bit
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   638
		14 bit - timestamp offset of R2
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   639
		10 bit - length of  R2
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   640
		***************/
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   641
		
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   642
		TUint32 temp(0);
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   643
		temp |= ( SetTimeOffset(primary.iTimestamp, r2.iTimestamp ) << 10  ); 
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   644
		
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   645
		TUint16 size(r2.iData.Length()); 
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   646
		temp |= size; 
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   647
			
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   648
		Write24(dataP, temp); 
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   649
		dataP += 3;
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   650
		count += 3; 
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   651
		
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   652
		DP_MSRP_WRITE2( "CMsrpPayloadFormatWrite::GenerateRedPacket DATA[0]: %x", iData[0] );
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   653
		DP_MSRP_WRITE2( "CMsrpPayloadFormatWrite::GenerateRedPacket DATA[1]: %x", iData[1] );
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   654
		DP_MSRP_WRITE2( "CMsrpPayloadFormatWrite::GenerateRedPacket DATA[2]: %x", iData[2] );
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   655
		DP_MSRP_WRITE2( "CMsrpPayloadFormatWrite::GenerateRedPacket DATA[3]: %x", iData[3] );
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   656
		
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   657
			
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   658
		/**************
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   659
		data[4] = 8 bit
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   660
		1 bit - redundancy marker bit 1
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   661
		7 bit - payloadtype
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   662
		***************/
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   663
		
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   664
		iData[4] |= ( 1 << 7 );
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   665
		iData[4] |= iCodecInfo.iRedundantPayload;
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   666
		//iData[4] |= 106;
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   667
		dataP += 1; 
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   668
		count ++;
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   669
	
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   670
		/**************
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   671
		data[5-7] = 24 bit
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   672
		14 bit - timestamp offset of R1
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   673
		10 bit - length of  R1
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   674
		***************/			
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   675
		
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   676
		temp = 0;
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   677
		temp |= ( SetTimeOffset(primary.iTimestamp, r1.iTimestamp ) << 10  );
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   678
	
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   679
		size = r1.iData.Length();  
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   680
		temp |= size; 
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   681
			
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   682
		Write24(dataP, temp);
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   683
		dataP += 3;
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   684
		count += 3;
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   685
				
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   686
		/**************
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   687
		data[8] = 8 bit
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   688
		1 bit - normal marker bit 0
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   689
		7 bit - payloadtype 
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   690
		***************/
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   691
		iData[8] |= ( 0 << 7 );
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   692
		iData[8] |= iCodecInfo.iPayloadType;
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   693
		//iData[8] |= 105;
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   694
		dataP += 1;
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   695
		count ++;
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   696
	
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   697
		DP_MSRP_WRITE2( "CMsrpPayloadFormatWrite::GenerateRedPacket DATA[4]: %x", iData[4] );
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   698
		DP_MSRP_WRITE2( "CMsrpPayloadFormatWrite::GenerateRedPacket DATA[5]: %x", iData[5] );
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   699
		DP_MSRP_WRITE2( "CMsrpPayloadFormatWrite::GenerateRedPacket DATA[6]: %x", iData[6] );
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   700
		DP_MSRP_WRITE2( "CMsrpPayloadFormatWrite::GenerateRedPacket DATA[7]: %x", iData[7] );
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   701
		DP_MSRP_WRITE2( "CMsrpPayloadFormatWrite::GenerateRedPacket DATA[8]: %x", iData[8] );
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   702
		DP_MSRP_WRITE( "*******************************");
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   703
		
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   704
		//TODO: When IOP-Tests Are done, Write me properly using Append, or some other method
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   705
		TInt forHere = count+r2.iData.Length();
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   706
		TInt index(0);
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   707
		if ( r2.iData.Length() )
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   708
		{
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   709
			for ( TInt i = count; i < forHere; i++ )
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   710
			  	{
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   711
				iData[i] = r2.iData[index];
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   712
				index++,
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   713
				RDebug::Print( _L("	X Writing R2 DATA[i]: %x"), iData[i] );
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   714
				}
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   715
			
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   716
		dataP += r2.iData.Length();
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   717
		count += r2.iData.Length();		
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   718
		}
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   719
			
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   720
			
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   721
		forHere = count+r1.iData.Length();
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   722
		index = 0;
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   723
		if ( r1.iData.Length() )
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   724
		{
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   725
			for ( TInt i = count; i < forHere; i++ )
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   726
			  	{
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   727
				iData[i] = r1.iData[index];
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   728
				index++;
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   729
				RDebug::Print( _L("	X Writing R1 DATA[i]: %x"), iData[i] );
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   730
				}
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   731
			
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   732
		dataP += r1.iData.Length();		
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   733
		count += r1.iData.Length();
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   734
		}
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   735
 
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   736
		
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   737
		forHere = count+primary.iData.Length();
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   738
		index = 0;
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   739
		if ( primary.iData.Length() )
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   740
		{
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   741
			for ( TInt i = count; i < forHere; i++ )
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   742
			  	{
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   743
				iData[i] = primary.iData[index];
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   744
				index++;
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   745
				RDebug::Print( _L("	X Writing PRIMARY DATA[i]: %x"), iData[i] );
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   746
				}
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   747
			
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   748
		dataP += primary.iData.Length();		
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   749
		count += primary.iData.Length();
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   750
		}
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   751
				
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   752
				
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   753
		DP_MSRP_WRITE2( "CMsrpPayloadFormatWrite::GenerateRedPacket Writing Lenght: %d", count );
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   754
		iBuf->Des().Append( iData, count );
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   755
		return KErrNone;
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   756
		
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   757
}
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   758
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   759
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   760
// -----------------------------------------------------------------------------
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   761
// CMsrpPayloadFormatWrite::DeliverPacketL
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   762
// Prepare the packet header and deliver the packet to the datasink.
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   763
// -----------------------------------------------------------------------------
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   764
void CMsrpPayloadFormatWrite::DeliverPacketL( CMMFDataBuffer& aPayload )
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   765
    {
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   766
    
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   767
    DP_MSRP_WRITE("CMsrpPayloadFormatWrite::DeliverPacketL"); 
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   768
   
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   769
    if ( !iClip )
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   770
        {
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   771
        User::Leave( KErrNotReady ); 
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   772
        }
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   773
    const TMediaId mediaId( KUidMediaTypeAudio );
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   774
    const TInt dataSize( aPayload.Data().Size() );
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   775
    DP_MSRP_WRITE2( "MSRP Payload SIZE : %d", dataSize );
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   776
    
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   777
    if ( dataSize )
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   778
        {           
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   779
        if (iIsMsrpSink)
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   780
            {
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   781
            iMsrpDataSink->EmptyBufferL( &aPayload, this, mediaId );
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   782
            }
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   783
        }       
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   784
    aPayload.Data().Zero();
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   785
    }
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   786
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   787
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   788
// -----------------------------------------------------------------------------
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   789
// CMsrpPayloadFormatWrite::SourceBufferEmptiedL
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   790
// Handle the event that sourcebuffer has been emptied.
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   791
// Sourcebuffer is given in "iSourceBuffer".
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   792
// Called by the statemachine.
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   793
// -----------------------------------------------------------------------------
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   794
void CMsrpPayloadFormatWrite::SourceBufferEmptiedL()
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   795
    { 
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   796
    
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   797
    
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   798
    DP_MSRP_WRITE( "CMsrpPayloadFormatWrite::SourceBufferEmptiedL" ); 
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   799
    
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   800
    //Empty all
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   801
    iSourceBuffer->Data().FillZ();  
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   802
	iSourceBuffer->Data().Zero();
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   803
	iSinkBuffer->Data().FillZ();  
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   804
	iSinkBuffer->Data().Zero();
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   805
    iBuf->Des().FillZ();
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   806
    iBuf->Des().Zero();
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   807
    iDataPath->BufferEmptiedL( iSourceBuffer );
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   808
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   809
	//Finally we set the timer if we are in red mode 	
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   810
	switch( iCodecInfo.iRedundancyCount )
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   811
	{
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   812
		case 0:
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   813
				// do nothing 
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   814
		break;
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   815
		
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   816
		case 2:
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   817
			if ( iIdleMode )
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   818
				{
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   819
				iTimer->Cancel();
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   820
				iTimer->Start();	
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   821
				}
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   822
		break;
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   823
	}
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   824
	
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   825
	// we are no more in idle,
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   826
	iIdleMode = EFalse;
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   827
	
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   828
}
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   829
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   830
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   831
// -----------------------------------------------------------------------------
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   832
// CMsrpPayloadFormatWrite::SinkPrimeL
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   833
// Prime the sink
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   834
// -----------------------------------------------------------------------------
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   835
//
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   836
void CMsrpPayloadFormatWrite::SinkPrimeL()
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   837
    {
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   838
	DP_MSRP_WRITE("CMsrpPayloadFormatWrite::SinkPrimeL()");
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   839
	iClip->SinkPrimeL();
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   840
    }
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   841
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   842
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   843
// -----------------------------------------------------------------------------
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   844
// CMsrpPayloadFormatWrite::SinkPrimeL
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   845
// Prime the sink
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   846
// -----------------------------------------------------------------------------
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   847
//
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   848
void CMsrpPayloadFormatWrite::CancelUlRequest() 
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   849
    {
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   850
    
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   851
	DP_MSRP_WRITE("CMsrpPayloadFormatWrite::CancelUlRequest()" );
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   852
    iStateMachine->Cancel();
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   853
    iStateMachine->ChangeState( EEncodeIdle );
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   854
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   855
    // Reset the payload buffer
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   856
    if ( iSinkBuffer )
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   857
        {
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   858
        TDes8& dataDes = static_cast<CMMFDataBuffer*>( iSinkBuffer )->Data();
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   859
        dataDes.SetLength( 0 );
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   860
        }
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   861
        
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   862
    }
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   863
    
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   864
    
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   865
// -----------------------------------------------------------------------------
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   866
// CMsrpPayloadFormatWrite::SinkPlayL
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   867
// Start playing.
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   868
// -----------------------------------------------------------------------------
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   869
//
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   870
void CMsrpPayloadFormatWrite::SinkPlayL()
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   871
    {
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   872
    DP_MSRP_WRITE("CMsrpPayloadFormatWrite::SinkPlayL" );
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   873
    // Allocate buffer for data transfer between 
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   874
    // FormatWrite - MDataSink
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   875
    delete iSinkBuffer;
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   876
    iSinkBuffer = NULL;
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   877
    iSinkBuffer = CMMFDataBuffer::NewL( KRedHeaderSize + KDataSize );
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   878
    
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   879
    // Start state machine
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   880
    iStateMachine->ChangeState( EWaitForSourceData );
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   881
    
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   882
    iFirstPacketFinished = EFalse;
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   883
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   884
    // Start a new cycle of frame collecting
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   885
    if ( iSinkBuffer )
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   886
        {
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   887
        iSinkBuffer->SetLastBuffer( EFalse );
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   888
        }
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   889
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   890
    iClip->SinkPlayL();
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   891
    }
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   892
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   893
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   894
// -----------------------------------------------------------------------------
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   895
// CMsrpPayloadFormatWrite::SinkPauseL
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   896
// Pause sink
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   897
// -----------------------------------------------------------------------------
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   898
//
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   899
void CMsrpPayloadFormatWrite::SinkPauseL()
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   900
    {
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   901
    DP_MSRP_WRITE("CMsrpPayloadFormatWrite::SinkPauseL" );
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   902
	this->CancelUlRequest();
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   903
    iClip->SinkPauseL();
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   904
    
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   905
    }
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   906
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   907
// -----------------------------------------------------------------------------
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   908
// CMsrpPayloadFormatWrite::SinkStopL
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   909
// Stop sink
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   910
// -----------------------------------------------------------------------------
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   911
//
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   912
void CMsrpPayloadFormatWrite::SinkStopL()
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   913
    {
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   914
    DP_MSRP_WRITE("CMsrpPayloadFormatWrite::SinkPauseL" ); 
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   915
    // Stop state machine
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   916
   	this->CancelUlRequest();
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   917
    iClip->SinkStopL(); 
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   918
    }
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   919
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   920
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   921
// ---------------------------------------------------------------------------
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   922
// CMsrpPayloadFormatWrite::ConfigurePayloadFormatL
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   923
// Configure payload encoding parameters
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   924
// ---------------------------------------------------------------------------
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   925
//
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   926
void CMsrpPayloadFormatWrite::ConfigurePayloadFormatL( const TDesC8& aConfigParams, 
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   927
    CMccRtpMediaClock& /*aClock*/  )
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   928
    {
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   929
    DP_MSRP_WRITE( "CMsrpPayloadFormatWrite::ConfigurePayloadFormatL()" );
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   930
   	
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   931
   //Check that buffer is same size, so we can assume data is correct type
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   932
    __ASSERT_ALWAYS( aConfigParams.Size() == sizeof( TMccCodecInfo ),
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   933
        User::Leave( KErrArgument ) );
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   934
     
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   935
    //instantiate correct CodecInfo Structure
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   936
    TMccCodecInfoBuffer infoBuffer;
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   937
    infoBuffer.Copy( aConfigParams );
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   938
    TMccCodecInfo codecInfo( infoBuffer() ); 
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   939
    
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   940
	if ( !codecInfo.iIsUpdate )
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   941
		{
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   942
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   943
		//iCodecInfo = codecInfo;
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   944
		//iRtpMediaClock = &aClock;  
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   945
		//iKey = iRtpMediaClock->RegisterMediaFormat( KDefaultSampleRate, iCodecInfo.iHwFrameTime );
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   946
		}
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   947
	else
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   948
		{
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   949
		UpdateConfigurationL( aConfigParams );
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   950
		} 
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   951
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   952
    }
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   953
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   954
// -----------------------------------------------------------------------------
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   955
// CMsrpPayloadFormatWrite::UpdateConfigurationL
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   956
// Update payload encoding parameters
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   957
// -----------------------------------------------------------------------------
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   958
//
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   959
void CMsrpPayloadFormatWrite::UpdateConfigurationL( const TDesC8& aConfigParams )
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   960
    { 
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   961
    DP_MSRP_WRITE( "CMsrpPayloadFormatWrite::UpdateConfigurationL" );
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   962
    __ASSERT_ALWAYS( aConfigParams.Size() == sizeof( TMccCodecInfo ),
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   963
        User::Leave( KErrArgument ) );
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   964
    
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   965
    TMccCodecInfoBuffer infoBuffer;
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   966
    infoBuffer.Copy( aConfigParams );
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   967
    TMccCodecInfo codecInfo = infoBuffer();
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   968
    
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   969
    iCodecInfo = codecInfo;
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   970
    //iCodecInfo.iPtime = codecInfo.iPtime;
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   971
    //iCodecInfo.iRedundancyCount = 0;
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   972
    
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   973
    //iCodecInfo.iPayloadType = codecInfo.iPayloadType;
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   974
    //iCodecInfo.iRedundancyCount = codecInfo.iRedundancyCount;
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   975
    //iCodecInfo.iCodecMode = codecInfo.iCodecMode;
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   976
    
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   977
    //TODO: move me to right variable and update buffering time
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   978
    //iTimer->Cancel();
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   979
    //iTimer->SetTimeOut( iCodecInfo.iCodecMode * 1000);
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   980
    
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   981
    // Allocate buffer for data transfer between 
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   982
    // FormatWrite - MDataSink
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   983
    delete iSinkBuffer;
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   984
    iSinkBuffer = NULL;
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   985
    iSinkBuffer = CMMFDataBuffer::NewL( KRedHeaderSize + KDataSize );
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   986
    
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   987
    }
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   988
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   989
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   990
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   991
// ==========================    HELPER FUNCTIONS    =========================
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   992
// ========================== 						 =========================
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   993
// ========================== 						 =========================
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   994
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   995
// -----------------------------------------------------------------------------
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   996
// CMsrpPayloadFormatWrite::Write24
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   997
// Simple helper function, that writes a 24-bit value to databuffer, 
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   998
// using pointer
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
   999
// -----------------------------------------------------------------------------
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
  1000
//
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
  1001
void CMsrpPayloadFormatWrite::Write24( TUint8* const aPointer, TUint32 aValue )
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
  1002
    {
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
  1003
    DP_MSRP_WRITE( "CMsrpPayloadFormatWrite::Write24" );
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
  1004
    aPointer[0] = static_cast<TUint8>( ( aValue & 0xFF0000 ) >> 16 );
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
  1005
    aPointer[1] = static_cast<TUint8>( ( aValue & 0x00FF00 ) >> 8 );
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
  1006
    aPointer[2] = static_cast<TUint8>( aValue & 0x0000FF );
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
  1007
    }
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
  1008
    
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
  1009
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
  1010
// -----------------------------------------------------------------------------
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
  1011
// CMsrpPayloadFormatWrite::Write32
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
  1012
// Simple helper function, that writes a 32-bit value to databuffer, 
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
  1013
// using pointer
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
  1014
// -----------------------------------------------------------------------------
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
  1015
//    
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
  1016
void CMsrpPayloadFormatWrite::Write32( TUint8* const aPointer, TUint32 aValue )
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
  1017
	{
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
  1018
    DP_MSRP_WRITE( "CMsrpPayloadFormatWrite::Write32" );
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
  1019
	aPointer[0] = static_cast<TUint8>( ( aValue & 0xFF000000 ) >> 24 );
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
  1020
	aPointer[1] = static_cast<TUint8>( ( aValue & 0x00FF0000 ) >> 16 );
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
  1021
	aPointer[2] = static_cast<TUint8>( ( aValue & 0x0000FF00 ) >> 8 );
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
  1022
	aPointer[3] = static_cast<TUint8>( aValue & 0x000000FF );
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
  1023
	}
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
  1024
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
  1025
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
  1026
// -----------------------------------------------------------------------------
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
  1027
// CMsrpPayloadFormatWrite::SetTimeOffset
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
  1028
// Calculates TimeOffset to RedundancyHeader according to 
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
  1029
// RFC 4103. Actually RFC 4103 does not accurately state how ( and where )
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
  1030
// timeoffset should be calculated. This calculation is based conversations
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
  1031
// with authors of RFC 4103
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
  1032
// -----------------------------------------------------------------------------
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
  1033
//
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
  1034
TUint16 CMsrpPayloadFormatWrite::SetTimeOffset( TInt64& aPrim, TInt64& aSecond  )
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
  1035
{	
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
  1036
    DP_MSRP_WRITE( "CMsrpPayloadFormatWrite::SetTimeOffset" );
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
  1037
	TInt pOffset = aPrim - aSecond; 
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
  1038
	TUint16 aRet = TUint16(pOffset) & KHighestTimeStampOffset;
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
  1039
	if( aRet > KHighestTimeStampOffset )
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
  1040
	{
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
  1041
		aRet = KHighestTimeStampOffset;
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
  1042
	}
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
  1043
	return aRet; 
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
  1044
}
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
  1045
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
  1046
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
  1047
TStringElement::TStringElement()
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
  1048
{
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
  1049
}
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
  1050
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
  1051
64c62431ac08 RCS feature support in MCE/MCC.
vnuitven <>
parents:
diff changeset
  1052
//  End of File