dvrengine/CommonRecordingEngine/inc/CRRTSPCommon.h
branchRCL_3
changeset 23 13a33d82ad98
parent 0 822a42b6c3f1
equal deleted inserted replaced
22:826cea16efd9 23:13a33d82ad98
       
     1 /*
       
     2 * Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies).
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of the License "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description:    Common definitions for rtsp implementation*
       
    15 */
       
    16 
       
    17 
       
    18 
       
    19 
       
    20 #ifndef CCRRTSPCOMMON_H
       
    21 #define CCRRTSPCOMMON_H
       
    22 
       
    23 // INCLUDES
       
    24 #include <e32base.h>
       
    25 #include <in_sock.h>
       
    26 
       
    27 // CONSTANTS
       
    28 /** Max len for synchronization source id texttual presentation. SSRC is 32-bit number 
       
    29  *  so this needs to be able to hold 2^^32 numerical value */
       
    30 const TInt KSSRCMaxLen( 30 );
       
    31 /** Max expected RTP packet len, given to symbian rtp stack that wants to know */
       
    32 const TInt KAverageExpectedRtpPacketMaxSize( 1500 );
       
    33 
       
    34 // following five are guestimates
       
    35 /** Average expected audio packet size */
       
    36 const TInt KAverageAudioPacketSize( 400 );
       
    37 /** Average expected video packet size */
       
    38 const TInt KAverageVideoPacketSize( 700 );
       
    39 /** Average expected rtp control packet size */
       
    40 const TInt KAverageRTPControlPacketSize( 30 );
       
    41 /** Number of rtp packets in our buffer, max */
       
    42 const TInt KRTPDataPacketBufferLen( 100 );   
       
    43 /** Number of rtpc packets in our buffer, max */
       
    44 const TInt KRTPControlPacketBufferLen( 20 ); 
       
    45 
       
    46 // followint strings _MAY_NOT_ be localized. 
       
    47 _LIT8( KCR2NewLines, "\r\n\r\n" );
       
    48 _LIT8( KCRCSeq, "CSeq: " ); 
       
    49 _LIT8( KCRRTSP10, "RTSP/1.0" ); 
       
    50 _LIT8( KCROPTIONS, "OPTIONS " );
       
    51 _LIT8( KCROPTIONSNoSpace, "OPTIONS" );
       
    52 _LIT8( KCRDESCRIBE, "DESCRIBE " );
       
    53 _LIT8( KCRDESCRIBENoSpace, "DESCRIBE" );
       
    54 _LIT8( KCRTEARDOWN,"TEARDOWN " );
       
    55 _LIT8( KCRTEARDOWNNoSpace,"TEARDOWN" );
       
    56 _LIT8( KCRPAUSE,"PAUSE " ); 
       
    57 _LIT8( KCRPAUSENoSpace,"PAUSE" ); 
       
    58 _LIT8( KCRSETUP, "SETUP " ); 
       
    59 _LIT8( KCRSETUPNoSpace, "SETUP" ); 
       
    60 _LIT8( KCRClient_Port, "client_port=" );
       
    61 _LIT8( KCRInterleaved, "interleaved=" );
       
    62 _LIT8( KCRAcceptSDP, "Accept: application/sdp\r\n" ); 
       
    63 _LIT8( KCRPort, "port=" ); 
       
    64 _LIT8( KCRDestination, "destination=" ); 
       
    65 _LIT8( KCRPLAY, "PLAY " );
       
    66 _LIT8( KCRPLAYNoSpace, "PLAY" );
       
    67 _LIT8( KCRRTSPReplyHeader, "RTSP/1.0 " );
       
    68 _LIT8( KCRRTSPContentLength, "Content-length: " );
       
    69 _LIT8( KCRRTSPDefaultUserAgent, "NokiaVideoCenter" );
       
    70 _LIT8( KCRRTSPUserAgentHeader, "User-Agent: %S\r\n" );
       
    71 _LIT8( KCRRTSPXWapProfile, "x-wap-profile: %S\r\n" );
       
    72 _LIT8( KCRRTSPBandwidth, "Bandwidth: %d\r\n" );
       
    73 _LIT8( KCRSessionStr, "Session: " );
       
    74 _LIT8( KCRNewLine, "\r\n" );
       
    75 _LIT8( KCRSpace, " " );
       
    76 _LIT8( KCRSemiColon, ";" );
       
    77 _LIT8( KCRDash, "-" );
       
    78 _LIT8( KCRLineFeed, "\n" ); 
       
    79 _LIT8( KCRSDPmLine, "m=" );
       
    80 _LIT8( KCRSDPmLineIsVideo, "m=video" );
       
    81 _LIT8( KCRSDPRTPAVP, "RTP/AVP" );
       
    82 _LIT8( KCRSDPRTPAVPTCP, "RTP/AVP/TCP" );
       
    83 _LIT8( KCRSDPRTPAVPUDP, "RTP/AVP/UDP" );
       
    84 _LIT8( KCRSDPMulticast, "multicast" );
       
    85 _LIT8( KCRSDPmLineIsAudio, "m=audio" );
       
    86 _LIT8( KCRSDPcLine, "c=" );
       
    87 _LIT8( KCRSDPbLine, "b=AS" );
       
    88 _LIT8( KCRNlAndSession, "\r\nSession: " ); 
       
    89 _LIT8( KCRRtpInfo, "RTP-Info: " ); 
       
    90 _LIT8( KCRUrlStr, "url=" ); 
       
    91 _LIT8( KCRSeqStr, "seq=" ); 
       
    92 _LIT8( KCRRtptimeStr, "rtptime=" ); 
       
    93 _LIT8( KCRServerPort, "server_port" );
       
    94 _LIT8( KCRSSRC,  ";ssrc=" ); 
       
    95 _LIT8( KCRTransportHeaderUDP, "Transport: RTP/AVP;unicast;"
       
    96                               "client_port=%d-%d;mode=play\r\n" );
       
    97 _LIT8( KCRTransportHeaderTCP, "Transport: RTP/AVP/TCP;interleaved=%d-%d\r\n" );
       
    98 _LIT8( KCRTransportHeaderMulticast, "Transport: RTP/AVP;multicast\r\n" );
       
    99 _LIT8( KCRRangeHeader, "Range: npt=" ); 
       
   100 _LIT8( KCRRangeHeaderLiveStream, "Range: npt=now-" ); 
       
   101 _LIT8( KCRRtpMap, "a=rtpmap" ); 
       
   102 _LIT8( KCROptionsReply,
       
   103        "RTSP/1.0 200 OK\r\nCseq: %d\r\n"
       
   104        "Public: DESCRIBE, SETUP, PAUSE, "
       
   105        "TEARDOWN, PLAY, OPTIONS\r\n\r\n" );
       
   106        
       
   107 // Authentication strings
       
   108 _LIT8( KCRAuthBasic, "Basic" );
       
   109 _LIT8( KCRAuthDigest, "Digest" );
       
   110 _LIT8( KCRAuthRealm, "realm=\"" );
       
   111 _LIT8( KCRAuthNonce, "nonce=\"" );
       
   112 _LIT8( KCRAuthOpaque, "opaque=\"" );
       
   113 _LIT8( KCRAuthorizationHeader,
       
   114        "Authorization: Digest username=\"%S\", realm=\"%S\","
       
   115        " nonce=\"%S\", uri=\"%S\", response=\"%S\", opaque=\"%S\"\r\n" );
       
   116 _LIT8( KCRAuthorizationHeaderNoOpaque,
       
   117        "Authorization: Digest username=\"%S\","
       
   118        " realm=\"%S\", nonce=\"%S\", uri=\"%S\", response=\"%S\"\r\n" );
       
   119 _LIT8( KCRContentBaseHeader, "Content-Base: ") ; 
       
   120 _LIT8( KCRAuthorizationBasicHeader, "Authorization: Basic %S\r\n" );
       
   121 
       
   122 // MACROS
       
   123 // None
       
   124 
       
   125 // DATA TYPES
       
   126 /** 
       
   127 * TCRRTSPStage is used by both RTSP packet source and ROP sink. It is used
       
   128 * to indicate the stage in RTSP negotiation where the packet source or rop sink
       
   129 * currently is in
       
   130 */
       
   131 enum TCRRTSPStage
       
   132     {
       
   133     ERTSPInit = 0,       /**< nothing done yet , must have numerical id 0 */
       
   134     ERTSPOptSent,        /**< Options command has been sent */
       
   135     ERTSPDescSent,       /**< Describe command has been sent */
       
   136     ERTSPDelayedSetup,   /**< Setup command need to be delayed */
       
   137     ERTSPSetupAudioSent, /**< Setup command for audio has been sent */
       
   138     ERTSPSetupVideoSent, /**< Setup command has video been sent */
       
   139     ERTSPReadyToPlay,    /**< Everything in order with remote server */
       
   140     ERTSPPlaySent,       /**< Play command has been sent */
       
   141     ERTSPPauseSent,      /**< Pause command has been sent */    
       
   142     ERTSPPlaying,        /**< Play command has been sent and 200 OK received */ 
       
   143     ERTSPTearDownSent,   /**< Teardown command has been sent */
       
   144     ERTSPLastStage       /**< This is not a real stage, keep this identifier as item, used for indexing */
       
   145     };
       
   146 
       
   147 /**
       
   148  *  Enum indicating which transport to use for RTP streaming
       
   149  */
       
   150 enum TCRRTPTransport
       
   151     {
       
   152     ERTPOverUDP = 0,     /**< stream RTP over UDP, default */
       
   153     ERTPOverTCP,         /**< stream RTP over TCP, interleaved in RTSP stream */
       
   154     ERTPOverMulticast    /**< stream RTP over multicast UDP */
       
   155     };
       
   156 
       
   157 // FORWARD DECLARATIONS
       
   158 // None
       
   159 
       
   160 // CLASS DECLARATION
       
   161 
       
   162 /**
       
   163 *  Base-class for RTSP commands and responses. 
       
   164 *
       
   165 *  @lib CommonRecordingEngine.lib
       
   166 *  @since Series 60 3.0
       
   167 */
       
   168 class CCRRtspCommon : public CBase
       
   169     {
       
   170 
       
   171 public: // Constructors and destructor
       
   172 
       
   173     /**
       
   174     * Destructor.
       
   175     */
       
   176     virtual ~CCRRtspCommon( );
       
   177 
       
   178 public: // New functions
       
   179 
       
   180     /**
       
   181     * Method that is used to give rtsp response / command to this class.
       
   182     * @since Series 60 3.0
       
   183     * @param aString is the response string
       
   184     * @return none. May leave with symbian error codes. At least following may be 
       
   185     *         seen: KErrUnderflow if there is \r\n\r\n sequence in the string
       
   186     *         marking end of response or if there is content(like SDP) and the
       
   187     *         content lenght is too short; KErrNotSupported if it doesn't look
       
   188     *         like RTSP at all.
       
   189     */
       
   190     virtual void TryParseL( const TDesC8 &aString ) = 0;
       
   191 
       
   192     /**
       
   193     * Method for getting content len. KErrNotFound if no content. KErrNotReady
       
   194     * if TryParseL previously did leave
       
   195     * @since Series 60 3.0
       
   196     * @param none .
       
   197     * @return content len.
       
   198     */
       
   199     TInt ContentLen( void );       
       
   200     
       
   201     /**
       
   202     * Method for getting content. Most usually the content is SDP.
       
   203     * @since Series 60 3.0
       
   204     * @param none
       
   205     * @return tring descriptor allocated by this class so when
       
   206     *         this class instance gets deleted, the buffer
       
   207     *         content will point to invalid data. 
       
   208     */
       
   209     TPtrC8& Content( void ); 
       
   210     
       
   211     /**
       
   212     * Method for getting sequence number
       
   213     * @since Series 60 3.0
       
   214     * @param none.
       
   215     * @return CSeq. 
       
   216     */
       
   217     TInt CSeq( void ); 
       
   218 
       
   219     /**
       
   220     * Method for setting sequence number
       
   221     * @since Series 60 3.0
       
   222     * @param aCSeq is CSeq number. 
       
   223     * @return none. 
       
   224     */
       
   225     void SetCSeq( TInt aCSeq ); 
       
   226 
       
   227     /**
       
   228     * Method for getting session id. 
       
   229     * @since Series 60 3.0
       
   230     * @param aId is string descriptor allocated by caller that
       
   231     *        will have its content set to block allocated by instance
       
   232     *        of this class containing the session id. 
       
   233     * @return KErrNone if no error, KErrNotFound if session id is not there.
       
   234     */
       
   235     TInt SessionId( TPtrC8& aId ); 
       
   236 
       
   237     /**
       
   238     * Method for setting session id.
       
   239     * @since Series 60 3.0
       
   240     * @param aId is string descriptor allocated by caller that contains
       
   241     *        new session id and whose content(memory area pointed by pointer
       
   242     *        returned by Ptr() method call) will remain intact for the
       
   243     *        lifetime of instance of this class.
       
   244     * @return none.
       
   245     */
       
   246     void SetSessionId( TPtrC8& aId ); 
       
   247         
       
   248     /** 
       
   249     * Method for getting client port
       
   250     * @since Series 60 3.0
       
   251     * @param none.
       
   252     * @return client port of KErrNotFound if none found.
       
   253     */
       
   254     TInt ClientPort( void ); 
       
   255     
       
   256     /** 
       
   257     * Method for setting client port
       
   258     * @since Series 60 3.0
       
   259     * @param aPort is the client port number.
       
   260     * @return none.
       
   261     */
       
   262     void SetClientPort( TInt aPort );
       
   263 
       
   264     /**
       
   265     * Method for setting range 
       
   266     * @since Series 60 3.0
       
   267     * @param aLower is where to start from.
       
   268     * @param aUpper is where to stop. Negative values mean eternity.
       
   269     * @return none
       
   270     */      
       
   271     void SetRange( TReal aLower, TReal aUpper ); 
       
   272 
       
   273     /**
       
   274     * Method for getting range 
       
   275     * @since Series 60 3.0
       
   276     * @param aLower is where to start from.
       
   277     * @param aUpper is where to stop. Negative values mean eternity.
       
   278     * @return none.
       
   279     */      
       
   280     void GetRange( TReal& aLower, TReal& aUpper ); 
       
   281 
       
   282     /**
       
   283     * Method for parsing range header
       
   284     * @since Series 60 3.0
       
   285     * @param none.
       
   286     * @return none.
       
   287     */      
       
   288     void ParseRange( void ); 
       
   289     
       
   290     /** 
       
   291     * Method for getting session opaque
       
   292     * @since Series 60 3.0
       
   293     * @param none.
       
   294     * @return reference to opaque or NULL.
       
   295     */
       
   296     TDesC8& OpaqueL( void );
       
   297     
       
   298     /** 
       
   299     * Method for getting session realm
       
   300     * @since Series 60 3.0
       
   301     * @param none.
       
   302     * @return reference to realm or NULL.
       
   303     */
       
   304     TDesC8& RealmL( void );
       
   305     
       
   306     /**
       
   307     * Method for getting authentication type.
       
   308     * @since Series 60 3.0
       
   309     * @param none.
       
   310     * @return Reference to auth type found from RTSP reply.
       
   311     */
       
   312     TDesC8& AuthenticationTypeL( void );
       
   313     
       
   314     /** 
       
   315     * Method for getting session Nonce
       
   316     * @since Series 60 3.0
       
   317     * @param none.
       
   318     * @return Reference to nonce found from RTSP reply.
       
   319     */
       
   320     TDesC8& NonceL( void );
       
   321     
       
   322     /**
       
   323     * Method for setting session nonce 
       
   324     * @since Series 60 3.0
       
   325     * @param aNonce is the nonce part of authenticated RTSP command/response.
       
   326     * @return none.
       
   327     */
       
   328     void SetNonceL( const TDesC& aNonce ); 
       
   329     
       
   330     /**
       
   331     * Mothod for setting authentication type
       
   332     * @since Series 60 3.0
       
   333     * @param aAuthType is the authentication type.
       
   334     * @return none.
       
   335     */ 
       
   336     void SetAuthenticationTypeL( const TDesC8& aAuthType );
       
   337    
       
   338     /**
       
   339     * Method for setting session opaque 
       
   340     * @since Series 60 3.0
       
   341     * @param aOpaque is the opaque part of authenticated response.
       
   342     * @return none.
       
   343     */
       
   344     void SetOpaqueL( const TDesC& aOpaque ); 
       
   345     
       
   346     /**
       
   347     * Method for setting session realm 
       
   348     * @since Series 60 3.0
       
   349     * @param aRealm is the realm part of authenticated rtsp command.
       
   350     * @return none.
       
   351     */
       
   352     void SetRealmL( const TDesC& aRealm );
       
   353     
       
   354     /**
       
   355     * Method for setting session nonce 
       
   356     * @since Series 60 3.0
       
   357     * @param aNonce is the new nonce that will be sent with the command.
       
   358     * @return none.
       
   359     */
       
   360     void SetNonceL( const TDesC8& aNonce ); 
       
   361     
       
   362     /**
       
   363     * Method for setting session opaque 
       
   364     * @since Series 60 3.0
       
   365     * @param aOpaque is the new opaque that will be sent with the command.
       
   366     * @return none.
       
   367     */
       
   368     void SetOpaqueL( const TDesC8& aOpaque ); 
       
   369     
       
   370     /**
       
   371     * Method for setting session realm 
       
   372     * @since Series 60 3.0
       
   373     * @param aRealm is the new realm that will be sent with the command.
       
   374     * @return none.
       
   375     */
       
   376     void SetRealmL( const TDesC8& aRealm );
       
   377     
       
   378     /**
       
   379     * Method for setting rtsp username. 
       
   380     * @since Series 60 3.0
       
   381     * @param aUserName is the new username
       
   382     * @return none.
       
   383     */
       
   384     void SetUserNameL( const TDesC& aUserName );
       
   385     
       
   386     /**
       
   387     * Method for setting session password.
       
   388     * @since Series 60 3.0
       
   389     * @param aPassWd is the password to use when generating digest for authenticated rtsp
       
   390     * @return none.
       
   391     */
       
   392     void SetPassWdL( const TDesC& aPassWd );
       
   393     
       
   394     /**
       
   395     * Method for setting session rtsp uri.
       
   396     * @since Series 60 3.0
       
   397     * @param aUri is the string that will in RTSP command be written between command and text RTSP/1.0 strings.
       
   398     * @return none.
       
   399     */
       
   400     void SetRtspUriL( const TDesC& aUri );
       
   401 
       
   402     /** 
       
   403     * Gets transport method.
       
   404     * @since Series 60 3.0
       
   405     * @param none.
       
   406     * @return transport method, default(ERTPOverUDP) if not present on command    
       
   407     */
       
   408     TCRRTPTransport Transport();
       
   409 
       
   410     /** 
       
   411     * Sets transport method.
       
   412     * @since Series 60 3.0
       
   413     * @param aTransport is the transport method to. This is used when constructing
       
   414     *        a SETUP command. 
       
   415     * @return none.
       
   416     */
       
   417     void SetTransport( TCRRTPTransport aTransport );
       
   418 
       
   419     /** 
       
   420     * Gets destination IP address if present
       
   421     * @since Series 60 3.0
       
   422     * @param none.
       
   423     * @return destination IP address or KAFUnspec    
       
   424     */
       
   425     const TInetAddr& Destination();
       
   426 
       
   427     /**
       
   428     * Gets flag whether stream is a live stream.
       
   429     * @since Series 60 3.0
       
   430     * @param none.
       
   431     * @return ETrue if stream is known to be a live stream.
       
   432     */
       
   433     TBool IsLiveStream( void ); 
       
   434 
       
   435     /**
       
   436     * Getter for Content-base rtsp header content
       
   437     * @since Series 60 3.0
       
   438     * @param none.
       
   439     * @return content of content-base header or empty string 
       
   440     */
       
   441     TPtrC8 ContentBase( void ); 
       
   442     
       
   443 protected: // Constructors and destructor
       
   444     
       
   445     /**
       
   446     * default constructor
       
   447     */
       
   448     CCRRtspCommon( void ); 
       
   449      
       
   450 protected: // New methods
       
   451     
       
   452     /**
       
   453     * Method for digging out CSeq from response. 
       
   454     * @since Series 60 3.0
       
   455     * @param none.
       
   456     * @return none but will leave with KErrNotSupported if CSeq is not there.
       
   457     */
       
   458     void FindCSeqL( void ); 
       
   459     
       
   460     /**
       
   461     * Method for digging out session id from response. Id will be stored in instance variable for future use.
       
   462     * @since Series 60 3.0
       
   463     * @param none.
       
   464     * @return none.
       
   465     */
       
   466     void FindSessionIdL( void ); 
       
   467 
       
   468     /**
       
   469     * Method for digging ContentBase
       
   470     * @since Series 60 3.0
       
   471     * @param none.
       
   472     * @return none.
       
   473     */
       
   474     void FindContentBase( void ); 
       
   475     
       
   476     /**
       
   477     * Method for digging out content/content len from response
       
   478     * @since Series 60 3.0
       
   479     * @param none.
       
   480     * @return none but will leave will KErrUnderflow
       
   481     *         if all content not yet received.
       
   482     */
       
   483     void FindContentL( void ); 
       
   484 
       
   485     /**
       
   486     * method for finding client port from response or command.
       
   487     * @since Series 60 3.0
       
   488     * @param none.
       
   489     * @return none.
       
   490     */
       
   491     void FindClientPorts( void ); 
       
   492     
       
   493     /**
       
   494     * finds transport method from response or command.
       
   495     * @since Series 60 3.0
       
   496     * @param none.
       
   497     * @return none.
       
   498     */
       
   499     void FindTransport();
       
   500 
       
   501     /**
       
   502     * finds destination IP address from SETUP response or command
       
   503     * @since Series 60 3.0
       
   504     * @param none.
       
   505     * @return none.
       
   506     */
       
   507     void FindDestination(); 
       
   508 
       
   509 protected: // Data
       
   510     
       
   511     /**
       
   512     * Buffer that holds the text being parsed.
       
   513     */
       
   514     HBufC8* iRtspText;          
       
   515     
       
   516     /**
       
   517     * Len of possible content.
       
   518     */
       
   519     TInt iContentLen; 
       
   520     
       
   521     /**
       
   522     * Possible content, if no content, set to( NULL, 0 ).
       
   523     */
       
   524     TPtrC8 iContent; 
       
   525     
       
   526     /**
       
   527     * Sequence number, must be there.
       
   528     */
       
   529     TInt iCSeq; 
       
   530             
       
   531     /**
       
   532     * Possible session id.
       
   533     */
       
   534     TPtrC8 iSessionId; 
       
   535     
       
   536     /**
       
   537     * Possible client_port.
       
   538     */
       
   539     TInt iClientPort; 
       
   540 
       
   541     /**
       
   542     * Transport method.
       
   543     */
       
   544     TCRRTPTransport iTransport;
       
   545 
       
   546     /**
       
   547     * Destination address
       
   548     */
       
   549     TInetAddr iDestination;
       
   550 
       
   551     /**
       
   552     * Range lower limit for Range: header.
       
   553     */
       
   554     TReal iLowerRange; 
       
   555 
       
   556     /**
       
   557     * Range lower limit for Range: header.
       
   558     */
       
   559     TReal iUpperRange; 
       
   560     
       
   561     /**
       
   562     * Authentication type.
       
   563     */  
       
   564     HBufC8* iAuthType;
       
   565     
       
   566     /**
       
   567     * Realm.
       
   568     */
       
   569     HBufC8* iRealm;
       
   570 
       
   571     /**
       
   572     * Nonce.
       
   573     */
       
   574     HBufC8* iNonce;
       
   575 
       
   576     /**
       
   577     * Opaque.
       
   578     */
       
   579     HBufC8* iOpaque;
       
   580     
       
   581     /**
       
   582     * possible username, if server requires.
       
   583     */
       
   584     HBufC8* iUserName;
       
   585     
       
   586     /**
       
   587     * rtsp URL in 8bit descriptor.
       
   588     */
       
   589     HBufC8* iUri; 
       
   590     
       
   591     /**
       
   592     * possible password, if server requires.
       
   593     */
       
   594     HBufC8* iPassword;
       
   595     
       
   596     /**
       
   597     * When this is set, it indicates that rtsp command/reply 
       
   598     * describes a live stream that cannot be paused or position set.
       
   599     */
       
   600     TBool iIsLiveStream; 
       
   601     
       
   602 	/**
       
   603 	* Content of Content-base -header
       
   604 	*/
       
   605 	TPtrC8 iContentBase ; 
       
   606     };
       
   607 
       
   608 #endif // CCRRTSPCOMMON_H
       
   609 
       
   610 // End of file