73 User::LeaveIfError(iPlayer.iController.Play()); |
73 User::LeaveIfError(iPlayer.iController.Play()); |
74 |
74 |
75 // Completed in VideoLoadingComplete-event |
75 // Completed in VideoLoadingComplete-event |
76 if (!iActiveSchedulerWait->IsStarted()) |
76 if (!iActiveSchedulerWait->IsStarted()) |
77 { |
77 { |
78 LOG( EJavaMMAPI, EInfo, "MMA:CMMAVideoUrlPlayer: Live stream: StartL() ASW Start2"); |
78 LOG(EJavaMMAPI, EInfo, "MMA:CMMAVideoUrlPlayer: Live stream: StartL() ASW Start2"); |
79 iActiveSchedulerWait->Start(); |
79 iActiveSchedulerWait->Start(); |
80 } |
80 } |
81 iPlayer.PostActionCompleted(KErrNone); // java start return |
81 iPlayer.PostActionCompleted(KErrNone); // java start return |
82 } |
82 } |
83 |
83 |
84 void CMMAVideoUrlPlayer::CMMAVideoUrlPlayerLiveStreamDelegate::StopL(TBool aPostEvent) |
84 void CMMAVideoUrlPlayer::CMMAVideoUrlPlayerLiveStreamDelegate::StopL(TBool aPostEvent) |
85 { |
85 { |
86 LOG( EJavaMMAPI, EInfo, "MMA:CMMAVideoUrlPlayer: Live stream: StopL"); |
86 LOG(EJavaMMAPI, EInfo, "MMA:CMMAVideoUrlPlayer: Live stream: StopL"); |
87 if (iPlayer.iState == EStarted) |
87 if (iPlayer.iState == EStarted) |
88 { |
88 { |
89 LOG( EJavaMMAPI, EInfo, "MMA:CMMAVideoUrlPlayer: Live stream: StopL : Started "); |
89 LOG(EJavaMMAPI, EInfo, "MMA:CMMAVideoUrlPlayer: Live stream: StopL : Started "); |
90 GetMediaTime(&iStoppedAtTime); |
90 GetMediaTime(&iStoppedAtTime); |
91 if (aPostEvent) |
91 if (aPostEvent) |
92 { |
92 { |
93 LOG( EJavaMMAPI, EInfo, "MMA:CMMAVideoUrlPlayer: Live stream: StopL : Postevent "); |
93 LOG(EJavaMMAPI, EInfo, "MMA:CMMAVideoUrlPlayer: Live stream: StopL : Postevent "); |
94 iPlayer.PostLongEvent(CMMAPlayerEvent::EStopped, iStoppedAtTime); |
94 iPlayer.PostLongEvent(CMMAPlayerEvent::EStopped, iStoppedAtTime); |
95 } |
95 } |
96 // go back to prefetched state |
96 // go back to prefetched state |
97 iPlayer.ChangeState(EPrefetched); |
97 iPlayer.ChangeState(EPrefetched); |
98 |
98 |
99 // Call stop instead of Pause as per the suggestions from helix |
99 // Call stop instead of Pause as per the suggestions from helix |
100 // Pause has no meaning for live streaming |
100 // Pause has no meaning for live streaming |
101 iPlayer.iController.Stop(); |
101 iPlayer.iController.Stop(); |
102 } |
102 } |
103 LOG( EJavaMMAPI, EInfo, "MMA:CMMAVideoUrlPlayer: Live stream: StopL - "); |
103 LOG(EJavaMMAPI, EInfo, "MMA:CMMAVideoUrlPlayer: Live stream: StopL - "); |
104 } |
104 } |
105 |
105 |
106 void CMMAVideoUrlPlayer::CMMAVideoUrlPlayerLiveStreamDelegate::GetMediaTime(TInt64* aMediaTime) |
106 void CMMAVideoUrlPlayer::CMMAVideoUrlPlayerLiveStreamDelegate::GetMediaTime(TInt64* aMediaTime) |
107 { |
107 { |
108 LOG( EJavaMMAPI, EInfo, "MMA:CMMAVideoUrlPlayer::CMMAVideoUrlPlayerLiveStreamDelegate::GetMediaTime +"); |
108 LOG(EJavaMMAPI, EInfo, "MMA:CMMAVideoUrlPlayer::CMMAVideoUrlPlayerLiveStreamDelegate::GetMediaTime +"); |
109 if (iPlayer.iState == EStarted) |
109 if (iPlayer.iState == EStarted) |
110 { |
110 { |
111 LOG( EJavaMMAPI, EInfo, "MMA:CMMAVideoUrlPlayer::CMMAVideoUrlPlayerLiveStreamDelegate::GetMediaTime Started Playerbase call"); |
111 LOG(EJavaMMAPI, EInfo, "MMA:CMMAVideoUrlPlayer::CMMAVideoUrlPlayerLiveStreamDelegate::GetMediaTime Started Playerbase call"); |
112 iPlayer.CMMAMMFPlayerBase::GetMediaTime(aMediaTime); |
112 iPlayer.CMMAMMFPlayerBase::GetMediaTime(aMediaTime); |
113 *aMediaTime -= iMediaStartTime; |
113 *aMediaTime -= iMediaStartTime; |
114 } |
114 } |
115 else |
115 else |
116 { |
116 { |
117 LOG( EJavaMMAPI, EInfo, "MMA:CMMAVideoUrlPlayer::CMMAVideoUrlPlayerLiveStreamDelegate::GetMediaTime Stopped"); |
117 LOG(EJavaMMAPI, EInfo, "MMA:CMMAVideoUrlPlayer::CMMAVideoUrlPlayerLiveStreamDelegate::GetMediaTime Stopped"); |
118 *aMediaTime = iStoppedAtTime; |
118 *aMediaTime = iStoppedAtTime; |
119 } |
119 } |
120 LOG( EJavaMMAPI, EInfo, "MMA:CMMAVideoUrlPlayer::CMMAVideoUrlPlayerLiveStreamDelegate::GetMediaTime -"); |
120 LOG(EJavaMMAPI, EInfo, "MMA:CMMAVideoUrlPlayer::CMMAVideoUrlPlayerLiveStreamDelegate::GetMediaTime -"); |
121 } |
121 } |
122 |
122 |
123 void CMMAVideoUrlPlayer::CMMAVideoUrlPlayerLiveStreamDelegate::HandleEvent(const TMMFEvent& aEvent) |
123 void CMMAVideoUrlPlayer::CMMAVideoUrlPlayerLiveStreamDelegate::HandleEvent(const TMMFEvent& aEvent) |
124 { |
124 { |
125 LOG1( EJavaMMAPI, EInfo, "MMA:CMMAVideoUrlPlayer: Live stream: HandleEvent %d", aEvent.iEventType.iUid); |
125 LOG1(EJavaMMAPI, EInfo, "MMA:CMMAVideoUrlPlayer: Live stream: HandleEvent %d", aEvent.iEventType.iUid); |
126 ELOG1( EJavaMMAPI, "MMA:CMMAVideoUrlPlayer: Live stream: HandleEvent error code: %d", aEvent.iErrorCode); |
126 ELOG1(EJavaMMAPI, "MMA:CMMAVideoUrlPlayer: Live stream: HandleEvent error code: %d", aEvent.iErrorCode); |
127 |
127 |
128 TInt err = aEvent.iErrorCode; |
128 TInt err = aEvent.iErrorCode; |
129 |
129 |
130 if ((aEvent.iEventType == KMMFEventCategoryVideoLoadingComplete) && |
130 if ((aEvent.iEventType == KMMFEventCategoryVideoLoadingComplete) && |
131 (iPlayer.iState == EPrefetched)) |
131 (iPlayer.iState == EPrefetched)) |
132 { |
132 { |
133 LOG( EJavaMMAPI, EInfo, "MMA:CMMAVideoUrlPlayer: Live stream: KMMFEventCategoryVideoLoadingComplete +"); |
133 LOG(EJavaMMAPI, EInfo, "MMA:CMMAVideoUrlPlayer: Live stream: KMMFEventCategoryVideoLoadingComplete +"); |
134 if (err == KErrNone) |
134 if (err == KErrNone) |
135 { |
135 { |
136 TTimeIntervalMicroSeconds position(0); |
136 TTimeIntervalMicroSeconds position(0); |
137 TInt error(iPlayer.iController.GetPosition(position)); |
137 TInt error(iPlayer.iController.GetPosition(position)); |
138 if (error == KErrNone) |
138 if (error == KErrNone) |
148 // until playback really starts. |
148 // until playback really starts. |
149 iPlayer.ChangeState(EStarted); |
149 iPlayer.ChangeState(EStarted); |
150 } |
150 } |
151 if (iActiveSchedulerWait->IsStarted()) |
151 if (iActiveSchedulerWait->IsStarted()) |
152 { |
152 { |
153 LOG( EJavaMMAPI, EInfo, "MMA:CMMAVideoUrlPlayer: Live stream: KMMFEventCategoryVideoLoadingComplete ASW Stop"); |
153 LOG(EJavaMMAPI, EInfo, "MMA:CMMAVideoUrlPlayer: Live stream: KMMFEventCategoryVideoLoadingComplete ASW Stop"); |
154 iActiveSchedulerWait->AsyncStop(); |
154 iActiveSchedulerWait->AsyncStop(); |
155 } |
155 } |
156 if (err != KErrNone) |
156 if (err != KErrNone) |
157 { |
157 { |
158 LOG( EJavaMMAPI, EInfo, "MMA:CMMAVideoUrlPlayer: Live stream: KMMFEventCategoryVideoLoadingComplete Error Inform Parent"); |
158 LOG(EJavaMMAPI, EInfo, "MMA:CMMAVideoUrlPlayer: Live stream: KMMFEventCategoryVideoLoadingComplete Error Inform Parent"); |
159 iPlayer.HandleEventToParent(aEvent); |
159 iPlayer.HandleEventToParent(aEvent); |
160 } |
160 } |
161 LOG( EJavaMMAPI, EInfo, "MMA:CMMAVideoUrlPlayer: Live stream: KMMFEventCategoryVideoLoadingComplete -"); |
161 LOG(EJavaMMAPI, EInfo, "MMA:CMMAVideoUrlPlayer: Live stream: KMMFEventCategoryVideoLoadingComplete -"); |
162 } |
162 } |
163 else if (aEvent.iEventType == KMMFEventCategoryVideoPrepareComplete) |
163 else if (aEvent.iEventType == KMMFEventCategoryVideoPrepareComplete) |
164 { |
164 { |
165 LOG( EJavaMMAPI, EInfo, "MMA:CMMAVideoUrlPlayer: Live stream: KMMFEventCategoryVideoPrepareComplete +"); |
165 LOG(EJavaMMAPI, EInfo, "MMA:CMMAVideoUrlPlayer: Live stream: KMMFEventCategoryVideoPrepareComplete +"); |
166 // going to prefetch state, after Play |
166 // going to prefetch state, after Play |
167 // KMMFEventCategoryVideoLoadingComplete event will be received |
167 // KMMFEventCategoryVideoLoadingComplete event will be received |
168 |
168 |
169 if (err == KErrNone) |
169 if (err == KErrNone) |
170 { |
170 { |
181 iPlayer.CompletePrefetch(err); |
181 iPlayer.CompletePrefetch(err); |
182 } |
182 } |
183 |
183 |
184 if (iActiveSchedulerWait->IsStarted()) |
184 if (iActiveSchedulerWait->IsStarted()) |
185 { |
185 { |
186 LOG( EJavaMMAPI, EInfo, "MMA:CMMAVideoUrlPlayer: Live stream: KMMFEventCategoryVideoPrepareComplete ASW Stop"); |
186 LOG(EJavaMMAPI, EInfo, "MMA:CMMAVideoUrlPlayer: Live stream: KMMFEventCategoryVideoPrepareComplete ASW Stop"); |
187 iActiveSchedulerWait->AsyncStop(); |
187 iActiveSchedulerWait->AsyncStop(); |
188 } |
188 } |
189 LOG( EJavaMMAPI, EInfo, "MMA:CMMAVideoUrlPlayer: Live stream: KMMFEventCategoryVideoPrepareComplete -"); |
189 LOG(EJavaMMAPI, EInfo, "MMA:CMMAVideoUrlPlayer: Live stream: KMMFEventCategoryVideoPrepareComplete -"); |
190 } |
190 } |
191 else if (aEvent.iEventType == KMMFEventCategoryVideoPlayerGeneralError) |
191 else if (aEvent.iEventType == KMMFEventCategoryVideoPlayerGeneralError) |
192 { |
192 { |
193 LOG( EJavaMMAPI, EInfo, "MMA:CMMAVideoUrlPlayer: Live stream: KMMFEventCategoryVideoPlayerGeneralError +"); |
193 LOG(EJavaMMAPI, EInfo, "MMA:CMMAVideoUrlPlayer: Live stream: KMMFEventCategoryVideoPlayerGeneralError +"); |
194 // For live streams: KMMFEventCategoryVideoPlayerGeneralError means helix is closed |
194 // For live streams: KMMFEventCategoryVideoPlayerGeneralError means helix is closed |
195 // side if player is in prefetched state. |
195 // side if player is in prefetched state. |
196 if (iActiveSchedulerWait->IsStarted()) |
196 if (iActiveSchedulerWait->IsStarted()) |
197 { |
197 { |
198 LOG( EJavaMMAPI, EInfo, "MMA:CMMAVideoUrlPlayer: Live stream: KMMFEventCategoryVideoPlayerGeneralError ASW Stop"); |
198 LOG(EJavaMMAPI, EInfo, "MMA:CMMAVideoUrlPlayer: Live stream: KMMFEventCategoryVideoPlayerGeneralError ASW Stop"); |
199 iActiveSchedulerWait->AsyncStop(); |
199 iActiveSchedulerWait->AsyncStop(); |
200 } |
200 } |
201 |
201 |
202 // usually error condition -45 (KErrSessionClosed) or -33 (KErrTimedOut) |
202 // usually error condition -45 (KErrSessionClosed) or -33 (KErrTimedOut) |
203 if (err != KErrNone) |
203 if (err != KErrNone) |
204 { |
204 { |
205 LOG( EJavaMMAPI, EInfo, "MMA:CMMAVideoUrlPlayer: Live stream: KMMFEventCategoryVideoPlayerGeneralError Inform Parent"); |
205 LOG(EJavaMMAPI, EInfo, "MMA:CMMAVideoUrlPlayer: Live stream: KMMFEventCategoryVideoPlayerGeneralError Inform Parent"); |
206 iPlayer.HandleEventToParent(aEvent); |
206 iPlayer.HandleEventToParent(aEvent); |
207 } |
207 } |
208 LOG( EJavaMMAPI, EInfo, "MMA:CMMAVideoUrlPlayer: Live stream: KMMFEventCategoryVideoPlayerGeneralError -"); |
208 LOG(EJavaMMAPI, EInfo, "MMA:CMMAVideoUrlPlayer: Live stream: KMMFEventCategoryVideoPlayerGeneralError -"); |
209 } |
209 } |
210 else |
210 else |
211 { |
211 { |
212 LOG1( EJavaMMAPI, EInfo, "MMA:CMMAVideoUrlPlayer: Live stream: + 0x%X", aEvent.iEventType.iUid); |
212 LOG1(EJavaMMAPI, EInfo, "MMA:CMMAVideoUrlPlayer: Live stream: + 0x%X", aEvent.iEventType.iUid); |
213 // For live streams: KErrSessionClosed is not posted to Java |
213 // For live streams: KErrSessionClosed is not posted to Java |
214 // side if player is in prefetched state. |
214 // side if player is in prefetched state. |
215 if ((iPlayer.iState != EPrefetched) || |
215 if ((iPlayer.iState != EPrefetched) || |
216 (aEvent.iErrorCode != KErrSessionClosed)) |
216 (aEvent.iErrorCode != KErrSessionClosed)) |
217 { |
217 { |
218 LOG( EJavaMMAPI, EInfo, "MMA:CMMAVideoUrlPlayer: Live stream: Error Inform Parent"); |
218 LOG(EJavaMMAPI, EInfo, "MMA:CMMAVideoUrlPlayer: Live stream: Error Inform Parent"); |
219 // All other events. |
219 // All other events. |
220 iPlayer.HandleEventToParent(aEvent); |
220 iPlayer.HandleEventToParent(aEvent); |
221 } |
221 } |
222 LOG1( EJavaMMAPI, EInfo, "MMA:CMMAVideoUrlPlayer: Live stream: - 0x%X", aEvent.iEventType.iUid); |
222 LOG1(EJavaMMAPI, EInfo, "MMA:CMMAVideoUrlPlayer: Live stream: - 0x%X", aEvent.iEventType.iUid); |
223 } |
223 } |
224 |
224 |
225 } |
225 } |
226 |
226 |
227 // END OF FILE |
227 // END OF FILE |