dvrengine/CommonRecordingEngine/inc/CCRRtspSink.h
branchRCL_3
changeset 22 826cea16efd9
parent 21 798ee5f1972c
child 23 13a33d82ad98
--- a/dvrengine/CommonRecordingEngine/inc/CCRRtspSink.h	Thu Aug 19 10:54:18 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,427 +0,0 @@
-/*
-* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of the License "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:    Packet sink where real one player gets media stream.*
-*/
-
-
-
-
-#ifndef CCRRTSPSINK_H
-#define CCRRTSPSINK_H
-
-// INCLUDES
-#include "CCRSock.h"
-#include "CCRRtspCommand.h"
-#include "CCRRtspResponse.h"
-#include "CCRPacketBuffer.h"
-#include "CCRStreamingSession.h"
-#include "CCRPacketSinkBase.h"
-#include <e32base.h>
-
-// CONSTANTS
-// None.
-
-// MACROS
-// None
-
-// DATA TYPES
-// None
-
-// FORWARD DECLARATIONS
-class CDvrSdpParser; 
-class CCRConnection; 
-class RSocketServ; 
-class CCRStreamingSession; 
-
-// CLASS DECLARATION
-/**
-*  Packet sink that forwards stream to rop plugin via rtsp.
-*  Implements rtsp server. 
-*
-*  @lib CommonRecordingEngine.lib
-*  @since Series 60 3.0
- */
-class CCRRtspSink : public CCRPacketSinkBase,
-                    public MCRSockObserver
-    {
-
-public:
-
-    /**
-    * Enum for 5 socket to use to play to rop plugin.
-    */
-    enum TCRROPSockId
-        {
-        EROPControl = 0, /**< control sock, rtsp in tcp spoken here */
-        EROPVideoSend1,  /**< RTP video payload */
-        EROPVideoSend2,  /**< RTCP video */
-        EROPAudioSend1,  /**< RTP audio payload */
-        EROPAudioSend2,  /**< RTCP audio */
-        EROPMaxSockets   /**< Just max value, no real socket assigned for this */   
-        };
-
-public: // Constructors and destructors   
-
-    /**
-    * Two-phased constructor.
-    * @param aConnection a connection rerefrence.
-    * @param aSockServer a socket server refrence.
-    * @param aSinkId a id of this sink.
-    * @param aOwningSession a reference to owning session.
-    * @param aLoopbackPort a RTSP port for loopback socket.
-    * @return CCRRtspSink pointer.
-    */
-    static CCRRtspSink* NewL( CCRConnection& aConnection,
-                              RSocketServ& aSockServer,
-                              CCRStreamingSession::TCRSinkId aSinkId,
-                              const TInt& aLoopbackPort,
-                              CCRStreamingSession& aOwningSession );
-    
-    /**
-     * Destructor 
-     */
-    virtual ~CCRRtspSink();
-    
-private: // Methods from base classes
-
-    /**
-    * From CCRPacketSinkBase.
-    * Connects the given buffer with this sink.
-    * @since Series 60 3.0
-    * @param aBuffer is the buffer to connect with.
-    * @return none.
-    */
-    void SetBuffer( CCRPacketBuffer* aBuffer );
-    
-    /**
-    * From CCRPacketSinkBase.
-    * Adds packet to the sink.
-    * @since Series 60 3.0
-    * @return none.
-    */
-    void NewPacketAvailable();
-    
-    /**
-    * From CCRPacketSinkBase.
-    * Method for setting the sdp in use
-    * @since Series 60 3.0
-    * @param aSdp is the new sdp
-    * @return none
-    */
-    void SetSdpL( const TDesC8& aSdp );
-    
-    /**
-    * From CCRPacketSinkBase.
-    * Method for setting initial seq+ts _before_ the stream is played.
-    * @since Series 60 3.0
-    * @param aAudioSeq is the initial rtp seq number for audio packets.
-    * @param aAudioTS  is the initial rtp timestamp number for audio packets.
-    * @param aVideoSeq is the initial rtp seq number for video packets.
-    * @param aVideoTS  is the initial rtp timestamp number for video packets.
-    * @return none.
-    */
-    void SetSeqAndTS( TUint& aAudioSeq,
-                      TUint& aAudioTS,
-                      TUint& aVideoSeq,
-                      TUint& aVideoTS );
-
-    /**
-    * From CCRPacketSinkBase.
-    * method for setting play range before the stream is played.
-    * @since Series 60 3.0
-    * @param aLower is where clip range begins, in seconds.
-    * @param aUpper is where clip range ends, usually clip end, in seconds.
-    * @return none.
-    */
-    void SetRange( TReal aLower,
-                   TReal aUpper );    
-    
-    /**
-    * From CCRPacketSinkBase.
-    * Method that source uses to communicate its status.
-    * @since Series 60 3.0
-    * @param aNewState is the new state of the source.
-    * @return none.
-    */
-    void StatusChanged( MCRPacketSource::TCRPacketSourceState aNewState );
-    
-    /**
-    * From MCRSockObserver.
-    * This method is called after some data has been received from socket.
-    * @since Series 60 3.0
-    * @param aData is descriptor containing the data received. 
-    *        ownership of data is not passed via this call. 
-    * @return none.
-    */
-    void DataReceived( TInt aSockId, const TDesC8 &aData );
-
-    /**
-    * From MCRSockObserver.
-    * This method is called after status of socket changes.
-    * @param aSockId 
-    * @param aStatus is sock status.
-    * @param aError
-    * @return none.
-    */
-    void SockStatusChange( TInt aSockId,
-                           CCRSock::TCRSockStatus aStatus,
-                           TInt aError );
-    
-public: // Constructors and destructors   
-
-    /**
-    * By default default constructor is private
-    * @param aConnection is the IAP representative that we need to use
-    * @param aSockServer is the socketserver to use when opening socks
-    * @param aSinkId that this class needs to use when reporting progress back to owner
-    * @param aOwningSession is the streaming session that owns this instance
-    */
-    CCRRtspSink( CCRConnection& aConnection,
-                 RSocketServ& aSockServer,
-                 CCRStreamingSession::TCRSinkId aSinkId,
-                 CCRStreamingSession& aOwningSession );
-
-    /**
-    * second phase of 2-phased construction
-    * @param aLoopbackPort a RTSP port for loopback socket.
-    */
-    void ConstructL( const TInt& aLoopbackPort ); 
-
-protected: // New methods
-
-    /**
-    * Method that produces sdp for rop plugin consumption. 
-    * Needs to have iSDP and parser. 
-    * @since Series 60 3.0
-    * @param none.
-    * @return none.
-    */
-    void ProduceSDPForRopL(); 
-
-    /**
-    * Method for doing something with commands rop has sent to us
-    * @since Series 60 3.0
-    * @param none.
-    * @return none.
-    */
-    void ProcessRtspCommandL();  
-
-    /**
-    * Method for doing something after rop has said something to use.
-    * @since Series 60 3.0
-    * @param aLastCommand is the last command rop has sent
-    * @return none.
-    */
-    void ProduceRtspReplyL( CCRRtspCommand::TCommand aLastCommand );  
-    
-    /**
-    * Method for replying to "options" command.
-    * @since Series 60 3.0
-    * @param none.
-    * @return none.
-    */
-    void ReplyToOptionsL();
-
-    /**
-    * Method for replying to "describe" command.
-    * @since Series 60 3.0
-    * @param none.
-    * @return none.
-    */
-    void ReplyToDescribeL();
-
-    /**
-    * Method for replying to "setup" command
-    * @since Series 60 3.0
-    * @param none.
-    * @return none.
-    */
-    void ReplyToSetupL();
-
-    /**
-    * Method for replying to "play" command, reply is sent to rop.
-    * @since Series 60 3.0
-    * @param none.
-    * @return none.
-    */
-    void ReplyToPlayL();
-
-    /**
-    * Method for replying to "pause" command.
-    * @since Series 60 3.0
-    * @param symbian error code telling if pausing was ok.
-    * @return none.
-    */
-    void ReplyToPauseL( TInt aErrorCode );
-
-    /**
-    * Method for replying to "teardown" command.
-    * @since Series 60 3.0
-    * @param none.
-    * @return none.
-    */
-    void ReplyToTearDownL();
-
-private: // New methods
-
-    /**
-    * Getter for socket sink id basing on stream.
-    * @since Series 60 3.0
-    * @param aStreamId a stream id of packet.
-    * @return a socket sink id.
-    */
-    TCRROPSockId SocketFromStream( MCRPacketSource::TCRPacketStreamId aStreamId );
-    
-    /**
-    * Appends string to the buffer.
-    * @since Series 60 3.0
-    * @param aBuffer a buffer where to add text.
-    * @param aTxt a string to append.
-    * @return none.
-    */
-    void AppendL( HBufC8*& aBuffer,
-                  const TDesC8& aTxt );
-
-    /**
-    * Appends integer value as text to the buffer.
-    * @since Series 60 3.0
-    * @param aBuffer a buffer where to add text.
-    * @param aNum a numerical value to append.
-    * @return none.
-    */
-    void AppendNumL( HBufC8*& aBuffer,
-                     const TInt aNum );
-
-    /**
-    * Appends formatted text to the buffer.
-    * @since Series 60 3.0
-    * @param aBuffer a buffer where to add text.
-    * @param aFmt a format string to use.
-    * @return none.
-    */
-    void AppendFormatL( HBufC8*& aBuffer,
-                        TRefByValue<const TDesC8> aFmt, ... );
-
-    /**
-    * Sends control data to the player.
-    * @since Series 60 3.0
-    * @param none. 
-    * @return none.
-    */
-    void SendControlData();
-
-    /**
-    * This meyhod is called after received data from EROPControl socket.
-    * @since Series 60 3.1
-    * @param aData is descriptor containing the data received. 
-    */
-    void HandleReceivedEROPControlL( const TDesC8& aData );
-
-private: // Data
-
-    /**
-    * RConnection wrapper we use for sockets. no ownership. 
-    */
-    CCRConnection& iConnection;
-
-    /**
-    * Socket server we use for sockets. no ownership. 
-    */
-    RSocketServ& iSockServer;
-
-    /**
-    * When TBool in iPacketPendingInBuffer is ETrue it means that the buffer
-    * in iBuffers having same array index. As said TBool has a packet 
-    * waiting to be sent to rop.
-    */ 
-    TBool iPacketPendingInBuffer;
-    
-    /**
-    * Have our own sdp parser for parsing the sdp.
-    */
-    CDvrSdpParser* iSdpParser;
-
-    /**
-    * SDP to give to rop.
-    */
-    HBufC8* iSdpForRop;
-
-    /**
-    * Sockets for speaking with rop.
-    */
-    CCRSock* iSockArr[EROPMaxSockets]; 
-    
-    /** 
-    * Stage in rtsp discussions with rop plugin.
-    */
-    TCRRTSPStage iStage; 
-    
-    /** 
-    * Stage for setup repply received.
-    */
-    TInt iSetupReceived;
-    
-    /**
-    * Pointer to data sent to us via socket from rop.
-    */
-    HBufC8* iReceivedData;
-    
-    /** 
-    * Pointers to commands sent by rop in various stages.
-    */
-    CCRRtspCommand *iCommands[CCRRtspCommand::ERTSPCommandNOCOMMAND];
-    
-    /** 
-    * Pointer to string sent to rop.
-    */
-    HBufC8* iRopResponse; 
-
-    /** 
-    * Audio seq to begin with.
-    */
-    TUint32 iAudioSeq;
-    
-    /**
-    * Audio TS to begin with.
-    */
-    TUint32 iAudioTS;
-    
-    /**
-    * Video seq to begin with.
-    */  
-    TUint32 iVideoSeq;
-    
-    /**
-    * Video TS to begin with
-    */
-    TUint32 iVideoTS;
-    
-    /**
-    * TBool telling if above 4 things (seq+ts*2) has been seen.
-    */
-    TBool iSeqAndTSSet;
-    
-    /**
-    * Range begin pos in play command header.
-    */
-    TReal iLowerRange; 
-    
-    /**
-    * Range end pos in play command header.
-    */
-    TReal iUpperRange; 
-    
-    };
-
-#endif // CCRRTSPSINK_H