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 { |