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

/*
* Copyright (c) 2004-2005 Nokia Corporation and/or its subsidiary(-ies).
* All rights reserved.
* This component and the accompanying materials are made available
* under the terms of "Eclipse Public License v1.0"
* which accompanies this distribution, and is available
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
*
* Initial Contributors:
* Nokia Corporation - initial contribution.
*
* Contributors:
*
* Description:   
*
*/




#ifndef __RTPPACKETPARAM_H
#define __RTPPACKETPARAM_H

//  INCLUDES
//#include <e32def.h>
#include <rtpheader.h>

// DATA TYPES
enum TRtpPacketType
    {
    ERTP                = 1,
    ERTCP_HEADER        = 2,
    ERTCP_SR            = 200,
    ERTCP_RR            = 201,
    ERTCP_SDES          = 202,
    ERTCP_BYE           = 203,
    ERTCP_APP           = 204
    };

/**
*  Stream status parameters as received in latest packet. 
*
*  @lib RtpService.dll
*/
class TRtpPacketStreamParam 
    {
    public://Nested classes
       
       /**
        * RTP packet
        * Header field
        **/
        class TRtpStreamHeaderField
            {
            public: //Constructor
                TRtpStreamHeaderField();
                    
            public: //Data        
                TRtpSSRC SSRC;                 
                TUint8 payload;
                TRtpSequence seqNum;
                TRtpTimeStamp timeStamp;
            };
      
       /**
        * RTCP packet
        * Header field
        **/
        class TRtcpStreamHeaderField
            {
            public://Constructor
                TRtcpStreamHeaderField();
                
            public: //Data
                TRtpSSRC SSRC;
            };
       
       /**
        * RTCP packet
        * SR field
        **/
        class TRtcpStreamHeaderFieldSR
            {
            public://Constructor
                TRtcpStreamHeaderFieldSR();
                    
            public://Data    
                TRtpSSRC SSRC;
                TUint cumNumOctetsSent;
                TUint numPacketsSent;
            };
     
       /**
        * RTCP packet
        * RR field
        **/   
        class TRtcpStreamHeaderFieldRR
            {
            public://Constructor
                TRtcpStreamHeaderFieldRR();
                
            public: //Data    
                TRtpSSRC SSRC;
                TUint8 fractionLost;
                TUint cumNumPacketsLost;
                TUint32 seqNumReceived;
                TUint arrivalJitter;
            };
      
       /**
        * RTCP packet
        * SDES field
        **/    
        class TRtcpStreamHeaderFieldSDES
            {
            public://Constructor
                TRtcpStreamHeaderFieldSDES();
                
            public://Data
                TRtpSSRC SSRC;
            };
     
       /**
        * RTCP packet
        * BYE field
        **/    
        class TRtcpStreamHeaderFieldBYE
            {
            public://Constructor
                TRtcpStreamHeaderFieldBYE();
                
            public://Data
                TRtpSSRC SSRC;
            };
      
       /**
        * RTCP packet 
        * APP field
        **/    
        class TRtcpStreamHeaderFieldAPP
            {
            public: //Constructor
                TRtcpStreamHeaderFieldAPP();
                
            public://Data
                TRtpSSRC SSRC;
                TInt totalPacketLen;
            };
            
    public://Packet data fields
        TRtpStreamHeaderField TRTP;
        TRtcpStreamHeaderField TRTCP_HEADER;
        TRtcpStreamHeaderFieldSR TRTCP_SR;
        TRtcpStreamHeaderFieldRR TRTCP_RR;
        TRtcpStreamHeaderFieldSDES TRTCP_SDES;
        TRtcpStreamHeaderFieldBYE TRTCP_BYE;
        TRtcpStreamHeaderFieldAPP TRTCP_APP;
    };

/**
*  Other passed/parsed parameters of the packet. 
*
*  @lib RtpService.dll
*/
class TRtpPacketIOParam 
    {
    public://Nested classes
        
       /**
        * RTP packet
        * Header field
        **/ 
        class TRtpIOHeaderField
            {
            
            public://Constructor
                TRtpIOHeaderField();
                
             public://Data
                TUint8 padding;
                TUint8 marker;
                TUint8 fHeaderExtension;
                TUint8 numCSRC;
                TUint32* CSRCarray;
                TUint8* payloadData;
                TInt payloadDataLen;
             
             public://Nested class
               /**
                * RTP packet
                * Header extension field
                **/ 
                class TRtpIOHeaderExtension
                    {
                    public://Constructor && Destructor
                       TRtpIOHeaderExtension();
                       
                    public://Data
                        TInt type;
                        TInt length;
                        TUint8* data;
                    };
                    
             public://Packet data field
                TRtpIOHeaderExtension extension;
                
            };
        
       /**
        * RTCP packet
        * Header field
        **/ 
        class TRtcpIOHeaderField
            {
            public://Constructor
                TRtcpIOHeaderField();
                
            public://Data
                TRtpPacketType pt;
                TInt sourceCount;
                TInt length;
            };
        
       /**
        * RTCP packet
        * SR field
        **/ 
        class TRtcpIOHeaderFieldSR
            {
            public://Constructor
                TRtcpIOHeaderFieldSR();
                
            public://Data
                TUint32 NTPTimeStampSec;
                TUint32 NTPTimeStampFrac;
                TRtpTimeStamp timeStamp;
            };
        
       /**
        * RTCP packet
        * RR field
        **/ 
        class TRtcpIOHeaderFieldRR
            {
            public://Constructor
                TRtcpIOHeaderFieldRR();
                
            public://Data
                TUint32 lastSRTimeStamp;
                TUint32 delaySinceLSR;
            };
        
       /**
        * RTCP packet
        * SDES field
        **/ 
        class TRtcpIOHeaderFieldSDES
            {
            public://Constructor
                TRtcpIOHeaderFieldSDES();
                
            public://Data
                TUint8* sdesItems[8];
                TInt sdesItemsSize[8];
                TInt paddingSize;
            };
        
       /**
        * RTCP packet
        * BYE field
        **/ 
        class TRtcpIOHeaderFieldBYE
            {
            public://Constructor
                TRtcpIOHeaderFieldBYE();
                
            public://Data
                TUint8* reason;
                TInt reasonSize;   
                TInt paddingSize;
            };
        
       /**
        * RTCP packet
        * APP field
        **/ 
        class TRtcpIOHeaderFieldAPP
            {
            public://Constructor
                TRtcpIOHeaderFieldAPP();
                
             public://Data
                TRtcpAppName name;
                TUint8* appData;
                TInt appDataLen;
            };
  
    public:// Packet data fields
        TRtpIOHeaderField TRTP;
        TRtcpIOHeaderField TRTCP_HEADER;
        TRtcpIOHeaderFieldSR TRTCP_SR;
        TRtcpIOHeaderFieldRR TRTCP_RR;
        TRtcpIOHeaderFieldSDES TRTCP_SDES;
        TRtcpIOHeaderFieldBYE TRTCP_BYE;
        TRtcpIOHeaderFieldAPP TRTCP_APP;
    };

#endif  // __RTPPACKETPARAMS_H

// End of File