--- a/dvrengine/CommonRecordingEngine/inc/CCRRtspSink.h Fri May 28 09:48:00 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