javauis/mmapi_qt/baseline/src/cmmavideourlplayerlivestreamdelegate.cpp
changeset 26 dc7c549001d5
parent 23 98ccebc37403
equal deleted inserted replaced
23:98ccebc37403 26:dc7c549001d5
    61     iPlayer.RefreshControls();
    61     iPlayer.RefreshControls();
    62 
    62 
    63     // Completed in VideoPrepareComplete-event
    63     // Completed in VideoPrepareComplete-event
    64     if (!iActiveSchedulerWait->IsStarted())
    64     if (!iActiveSchedulerWait->IsStarted())
    65     {
    65     {
    66         LOG( EJavaMMAPI, EInfo, "MMA:CMMAVideoUrlPlayer: Live stream: StartL() ASW Start1");
    66         LOG(EJavaMMAPI, EInfo, "MMA:CMMAVideoUrlPlayer: Live stream: StartL() ASW Start1");
    67         iActiveSchedulerWait->Start();
    67         iActiveSchedulerWait->Start();
    68     }
    68     }
    69 
    69 
    70     // Prime() is called sometimes twice since it's needed also when
    70     // Prime() is called sometimes twice since it's needed also when
    71     // restarting the playing
    71     // restarting the playing
    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