multimediacommsengine/mmcesrv/mmcemediamanager/src/mcesrvstream.cpp
branchrcs
changeset 49 64c62431ac08
parent 21 b7fa3d2db8f4
equal deleted inserted replaced
44:fb024d5e35fa 49:64c62431ac08
    35 #include "mcecomdisplaysink.h"
    35 #include "mcecomdisplaysink.h"
    36 #include "mcecomcamerasource.h"
    36 #include "mcecomcamerasource.h"
    37 #include "mcedisplaysink.h"
    37 #include "mcedisplaysink.h"
    38 #include "mcecamerasource.h"
    38 #include "mcecamerasource.h"
    39 
    39 
       
    40 #include <mcemessagestream.h>
    40 #include "mceaudiostream.h"
    41 #include "mceaudiostream.h"
    41 #include "mcevideostream.h"
    42 #include "mcevideostream.h"
    42 #include "mcesrvstreamiterator.h"
    43 #include "mcesrvstreamiterator.h"
    43 #include "mcemediamanager.h"
    44 #include "mcemediamanager.h"
    44 #include "mcedtmfcodec.h"
    45 #include "mcedtmfcodec.h"
    45 #include "mcemmlogs.h"
    46 #include "mcemmlogs.h"
    46 #include "mcedtmfhandler.h"
    47 #include "mcedtmfhandler.h"
       
    48 #include "mcecommessagestream.h"
       
    49 #include "mcecommessagecodec.h"
       
    50 #include "mceexternalsource.h"
       
    51 #include "mceexternalsink.h"
    47 
    52 
    48 #define MCE_MCC_STREAM_STATE_CHANGE_EVENT( event )\
    53 #define MCE_MCC_STREAM_STATE_CHANGE_EVENT( event )\
    49 ( aEvent.iEvent == KMccStreamPrepared || \
    54 ( aEvent.iEvent == KMccStreamPrepared || \
    50   aEvent.iEvent == KMccStreamStarted || \
    55   aEvent.iEvent == KMccStreamStarted || \
    51   aEvent.iEvent == KMccStreamPaused || \
    56   aEvent.iEvent == KMccStreamPaused || \
    80             CMceComVideoStream& video = 
    85             CMceComVideoStream& video = 
    81                 static_cast<CMceComVideoStream&>( aStream );
    86                 static_cast<CMceComVideoStream&>( aStream );
    82             DecodeVideoL( aStreams, video, aManager );
    87             DecodeVideoL( aStreams, video, aManager );
    83             break;
    88             break;
    84             }
    89             }
       
    90         case KMceMessage:
       
    91             {
       
    92             CMceComMessageStream& message =
       
    93                 reinterpret_cast<CMceComMessageStream&>(aStream);
       
    94             DecodeMessageL(aStreams, message, aManager); 
       
    95             break;
       
    96             }
    85         default:
    97         default:
    86             {
    98             {
    87             User::Leave( KErrNotSupported );
    99             User::Leave( KErrNotSupported );
    88             break;
   100             break;
    89             }
   101             }
    90         }
   102         }
    91     MCEMM_DEBUG("CMceSrvStream::DecodeL(), Exit ");
   103     MCEMM_DEBUG("CMceSrvStream::DecodeL(), Exit ");
    92     }
   104     }
    93 
   105 
       
   106 
       
   107 
       
   108 // -----------------------------------------------------------------------------
       
   109 // CMceSrvStream::DecodeMessageL
       
   110 // -----------------------------------------------------------------------------
       
   111 
       
   112 void CMceSrvStream::DecodeMessageL( RPointerArray<CMceSrvStream>& aStreams,
       
   113                                   CMceComMessageStream& aMessage,
       
   114                                   CMceMediaManager& aManager )
       
   115     {
       
   116     MCEMM_DEBUG("CMceSrvStream::DecodeMessageL(), Entry ");
       
   117     
       
   118 //Data path for Message stream is handled
       
   119     if(aMessage.Source()->Type() != KMceExternalSource )
       
   120         {
       
   121         for( TInt codecNdx = 0;codecNdx < aMessage.CodecCount();codecNdx++ )
       
   122             {
       
   123             aMessage.CodecL( codecNdx )->SetEnabled( codecNdx == 0 || IS_RECEIVESTREAM( &aMessage ) );
       
   124                 
       
   125             for( TInt sinkNdx = 0 ; sinkNdx < aMessage.Sinks().Count() ; sinkNdx++ )
       
   126                 {
       
   127                 if(aMessage.Sinks()[ sinkNdx ]->Type() == KMceExternalSink)
       
   128                     {
       
   129                     return;
       
   130                     }
       
   131                 CMceSrvStream* srvStream = NewL( aManager, aMessage, 
       
   132                                                  *aMessage.Source(),
       
   133                                                  *aMessage.Sinks()[ sinkNdx ],
       
   134                                                  *aMessage.CodecL( codecNdx ) );
       
   135                     CleanupStack::PushL( srvStream );
       
   136                     MCEMM_DEBUG_STREAM( "CMceSrvStream::DecodeMessageL(): decoded message", *srvStream );
       
   137                     aStreams.AppendL( srvStream );
       
   138                     CleanupStack::Pop( srvStream );
       
   139                 }
       
   140             }
       
   141         if ( aMessage.BoundStream() && aMessage.Binder() )
       
   142             {
       
   143             DecodeL( aStreams, aMessage.BoundStreamL(), aManager );
       
   144             }
       
   145         }
       
   146 
       
   147     MCEMM_DEBUG("CMceSrvStream::DecodeMessageL(), Exit ");
       
   148     }
    94 
   149 
    95 
   150 
    96 // -----------------------------------------------------------------------------
   151 // -----------------------------------------------------------------------------
    97 // CMceSrvStream::DecodeAudioL
   152 // CMceSrvStream::DecodeAudioL
    98 // -----------------------------------------------------------------------------
   153 // -----------------------------------------------------------------------------
   683 // -----------------------------------------------------------------------------
   738 // -----------------------------------------------------------------------------
   684 //
   739 //
   685 void CMceSrvStream::SetLinkId( TUint32 aLinkId )
   740 void CMceSrvStream::SetLinkId( TUint32 aLinkId )
   686     {
   741     {
   687     Data()().SetLinkId( aLinkId );
   742     Data()().SetLinkId( aLinkId );
       
   743     }
       
   744 
       
   745 // -----------------------------------------------------------------------------
       
   746 // CMceSrvStream::RemMsrpPath
       
   747 // -----------------------------------------------------------------------------
       
   748 //
       
   749 TDes8 & CMceSrvStream::RemMsrpPath() const
       
   750     {
       
   751     return Data().iRemoteMsrpPath;
       
   752     }
       
   753 
       
   754 // -----------------------------------------------------------------------------
       
   755 // CMceSrvStream::RemMsrpPath
       
   756 // -----------------------------------------------------------------------------
       
   757 //
       
   758 TDes8 & CMceSrvStream::ConnStatus() const
       
   759     {
       
   760     return Data().iConnStatus;
       
   761     }
       
   762 
       
   763 // -----------------------------------------------------------------------------
       
   764 // CMceSrvStream::SetLinkId
       
   765 // -----------------------------------------------------------------------------
       
   766 //
       
   767 void CMceSrvStream::SetMsrpPath( TDesC8& aLocalMsrpPath )
       
   768     {
       
   769     Data()().SetLocalMsrpPath(aLocalMsrpPath);
   688     }
   770     }
   689     
   771     
   690     
   772     
   691 // -----------------------------------------------------------------------------
   773 // -----------------------------------------------------------------------------
   692 // CMceSrvStream::IapId
   774 // CMceSrvStream::IapId
   896     if ( Codec().MccRequireSignalling( *this, aMccCurentCodec, aMccUpdateCodec ) )
   978     if ( Codec().MccRequireSignalling( *this, aMccCurentCodec, aMccUpdateCodec ) )
   897         {
   979         {
   898         MCEMM_DEBUG("CMceSrvStream::RequireSignalling(): codec requires signalling");
   980         MCEMM_DEBUG("CMceSrvStream::RequireSignalling(): codec requires signalling");
   899         action = KMceRequiresSignalling;
   981         action = KMceRequiresSignalling;
   900         }
   982         }
   901     else if ( LocalMediaPort() != aCurrent.LocalMediaPort() )
   983     
       
   984     else if ( Codec().MccRequireSignalling( *this, aCurrent, aMccCurentCodec, aMccUpdateCodec ) )
       
   985         {
       
   986         MCEMM_DEBUG("CMceSrvStream::RequireSignalling(): codec requires signalling");
       
   987         action = KMceRequiresSignalling;
       
   988         }
       
   989     
       
   990     else if ( LocalMediaPort() != aCurrent.LocalMediaPort() ||
       
   991               Data().RemoteMediaPortChanged( aCurrent.Data().RemoteMediaPort() ) )
   902     //local port has changed => needs new media session & signaling
   992     //local port has changed => needs new media session & signaling
   903         {
   993         {
   904         MCEMM_DEBUG("CMceSrvStream::RequireSignalling(): local port changed. requires signalling");
   994         MCEMM_DEBUG("CMceSrvStream::RequireSignalling(): local port changed. requires signalling");
   905         action = KMceRequiresSignalling;
   995         action = KMceRequiresSignalling;
   906         }
   996         }
   907     else if ( Data().RemoteMediaPortChanged( aCurrent.Data().RemoteMediaPort() ) )
       
   908     	{
       
   909     	MCEMM_DEBUG("CMceSrvStream::RequireSignalling(): Remote port changed. requires signalling");
       
   910     	action = KMceRequiresSipSignallingOnly;
       
   911     	}
       
   912         
   997         
   913     else if ( Data().RemoteRTCPAddressChanged(aCurrent.Data().iRemoteRtcpPort, 
   998     else if ( Data().RemoteRTCPAddressChanged(aCurrent.Data().iRemoteRtcpPort, 
   914     		 	aCurrent.Data().iRemoteRtcpAddress))
   999     		 	aCurrent.Data().iRemoteRtcpAddress))
   915     		  
  1000     		  
   916     	{
  1001     	{