javauis/mmapi_qt/baseline/src/cmmavideourlplayer.cpp
changeset 26 dc7c549001d5
parent 23 98ccebc37403
equal deleted inserted replaced
23:98ccebc37403 26:dc7c549001d5
    79 }
    79 }
    80 
    80 
    81 EXPORT_C void CMMAVideoUrlPlayer::StartL()
    81 EXPORT_C void CMMAVideoUrlPlayer::StartL()
    82 {
    82 {
    83     __ASSERT_DEBUG(iPlayerDelegate != NULL, User::Invariant());
    83     __ASSERT_DEBUG(iPlayerDelegate != NULL, User::Invariant());
    84     LOG( EJavaMMAPI, EInfo, "CMMAVideoUrlPlayer::StartL() +");
    84     LOG(EJavaMMAPI, EInfo, "CMMAVideoUrlPlayer::StartL() +");
    85     iPlayerDelegate->StartL();
    85     iPlayerDelegate->StartL();
    86     LOG( EJavaMMAPI, EInfo, "CMMAVideoUrlPlayer::StartL() -");
    86     LOG(EJavaMMAPI, EInfo, "CMMAVideoUrlPlayer::StartL() -");
    87 }
    87 }
    88 
    88 
    89 EXPORT_C void CMMAVideoUrlPlayer::StopL(TBool aPostEvent)
    89 EXPORT_C void CMMAVideoUrlPlayer::StopL(TBool aPostEvent)
    90 {
    90 {
    91     LOG( EJavaMMAPI, EInfo, "MMA::CMMAVideoUrlPlayer::StopL ");
    91     LOG(EJavaMMAPI, EInfo, "MMA::CMMAVideoUrlPlayer::StopL ");
    92     __ASSERT_DEBUG(iPlayerDelegate != NULL, User::Invariant());
    92     __ASSERT_DEBUG(iPlayerDelegate != NULL, User::Invariant());
    93     iPlayerDelegate->StopL(aPostEvent);
    93     iPlayerDelegate->StopL(aPostEvent);
    94 }
    94 }
    95 
    95 
    96 EXPORT_C void CMMAVideoUrlPlayer::GetMediaTime(TInt64* aMediaTime)
    96 EXPORT_C void CMMAVideoUrlPlayer::GetMediaTime(TInt64* aMediaTime)
    97 {
    97 {
    98     LOG( EJavaMMAPI, EInfo, "MMA::CMMAVideoUrlPlayer::GetMediaTime +");
    98     LOG(EJavaMMAPI, EInfo, "MMA::CMMAVideoUrlPlayer::GetMediaTime +");
    99     if (iPlayerDelegate)
    99     if (iPlayerDelegate)
   100     {
   100     {
   101         LOG( EJavaMMAPI, EInfo, "MMA::CMMAVideoUrlPlayer::GetMediaTime .iPlayerDelegate->GetMediaTime ");
   101         LOG(EJavaMMAPI, EInfo, "MMA::CMMAVideoUrlPlayer::GetMediaTime .iPlayerDelegate->GetMediaTime ");
   102         iPlayerDelegate->GetMediaTime(aMediaTime);
   102         iPlayerDelegate->GetMediaTime(aMediaTime);
   103     }
   103     }
   104     else
   104     else
   105     {
   105     {
   106         LOG( EJavaMMAPI, EInfo, "MMA::CMMAVideoUrlPlayer::GetMediaTime Not found ");
   106         LOG(EJavaMMAPI, EInfo, "MMA::CMMAVideoUrlPlayer::GetMediaTime Not found ");
   107         *aMediaTime = KErrNotFound;
   107         *aMediaTime = KErrNotFound;
   108     }
   108     }
   109     LOG( EJavaMMAPI, EInfo, "MMA::CMMAVideoUrlPlayer::GetMediaTime -");
   109     LOG(EJavaMMAPI, EInfo, "MMA::CMMAVideoUrlPlayer::GetMediaTime -");
   110 }
   110 }
   111 
   111 
   112 EXPORT_C void CMMAVideoUrlPlayer::RealizeL()
   112 EXPORT_C void CMMAVideoUrlPlayer::RealizeL()
   113 {
   113 {
   114     CMMAPlayer::RealizeL(); // Changes state to ERealized
   114     CMMAPlayer::RealizeL(); // Changes state to ERealized
   119 {
   119 {
   120     const TUint KConnectionTreshold(1);
   120     const TUint KConnectionTreshold(1);
   121     TUint connectIap((TUint)KUseDefaultIap);
   121     TUint connectIap((TUint)KUseDefaultIap);
   122     TUint connectionCount(0);
   122     TUint connectionCount(0);
   123     User::LeaveIfError(iConnection.EnumerateConnections(connectionCount));
   123     User::LeaveIfError(iConnection.EnumerateConnections(connectionCount));
   124     LOG1( EJavaMMAPI, EInfo, "MMA::CMMAVideoUrlPlayer::PrefetchL: connectionCount = %d", connectionCount);
   124     LOG1(EJavaMMAPI, EInfo, "MMA::CMMAVideoUrlPlayer::PrefetchL: connectionCount = %d", connectionCount);
   125     if (connectionCount == KConnectionTreshold)
   125     if (connectionCount == KConnectionTreshold)
   126     {
   126     {
   127         // One active connection - find it and try using it
   127         // One active connection - find it and try using it
   128         FindActiveIap(connectionCount, connectIap);
   128         FindActiveIap(connectionCount, connectIap);
   129     }
   129     }
   130     // else No active connections try using the default one
   130     // else No active connections try using the default one
   131     LOG1( EJavaMMAPI, EInfo, "MMA::CMMAVideoUrlPlayer::PrefetchL: connectIap = %d", connectIap);
   131     LOG1(EJavaMMAPI, EInfo, "MMA::CMMAVideoUrlPlayer::PrefetchL: connectIap = %d", connectIap);
   132 
   132 
   133     CMMFUrlParams* urlCfg = CMMFUrlParams::NewLC(*iUrl, (TInt)connectIap);
   133     CMMFUrlParams* urlCfg = CMMFUrlParams::NewLC(*iUrl, (TInt)connectIap);
   134     CBufFlat* urlCfgBuffer = urlCfg->ExternalizeToCBufFlatLC();
   134     CBufFlat* urlCfgBuffer = urlCfg->ExternalizeToCBufFlatLC();
   135 
   135 
   136     // Store current thread priority to give
   136     // Store current thread priority to give
   162     // CMMAVideoPlayer.
   162     // CMMAVideoPlayer.
   163 }
   163 }
   164 
   164 
   165 void CMMAVideoUrlPlayer::FindActiveIap(const TUint aConnectionCount, TUint& aActiveIap)
   165 void CMMAVideoUrlPlayer::FindActiveIap(const TUint aConnectionCount, TUint& aActiveIap)
   166 {
   166 {
   167     LOG1( EJavaMMAPI, EInfo, "MMA:CMMAVideoUrlPlayer::FindActiveIap: aConnectionCount = %d +", aConnectionCount);
   167     LOG1(EJavaMMAPI, EInfo, "MMA:CMMAVideoUrlPlayer::FindActiveIap: aConnectionCount = %d +", aConnectionCount);
   168 
   168 
   169     TPckgBuf<TConnectionInfo> connectionInfo;
   169     TPckgBuf<TConnectionInfo> connectionInfo;
   170     for (TUint i = 1; i <= aConnectionCount; ++i)
   170     for (TUint i = 1; i <= aConnectionCount; ++i)
   171     {
   171     {
   172         if (iConnection.GetConnectionInfo(i, connectionInfo) == KErrNone)
   172         if (iConnection.GetConnectionInfo(i, connectionInfo) == KErrNone)
   174             aActiveIap = connectionInfo().iIapId;
   174             aActiveIap = connectionInfo().iIapId;
   175             break;
   175             break;
   176         }
   176         }
   177     }
   177     }
   178 
   178 
   179     LOG1( EJavaMMAPI, EInfo, "MMA:CMMAVideoUrlPlayer::FindActiveIap: aActiveIap = %d -", aActiveIap);
   179     LOG1(EJavaMMAPI, EInfo, "MMA:CMMAVideoUrlPlayer::FindActiveIap: aActiveIap = %d -", aActiveIap);
   180 }
   180 }
   181 
   181 
   182 TBool CMMAVideoUrlPlayer::IsLiveStreamL()
   182 TBool CMMAVideoUrlPlayer::IsLiveStreamL()
   183 {
   183 {
   184     LOG( EJavaMMAPI, EInfo, "CMMAVideoUrlPlayer::IsLiveStream: Checking if this is a live stream..");
   184     LOG(EJavaMMAPI, EInfo, "CMMAVideoUrlPlayer::IsLiveStream: Checking if this is a live stream..");
   185 
   185 
   186     CMMFMetaDataEntry* currEntry = NULL;
   186     CMMFMetaDataEntry* currEntry = NULL;
   187 
   187 
   188     TInt nEntries = 0;
   188     TInt nEntries = 0;
   189     User::LeaveIfError(iController.GetNumberOfMetaDataEntries(nEntries));
   189     User::LeaveIfError(iController.GetNumberOfMetaDataEntries(nEntries));
   193         currEntry = iController.GetMetaDataEntryL(i);
   193         currEntry = iController.GetMetaDataEntryL(i);
   194 
   194 
   195         if ((0 == currEntry->Name().Compare(KMMALiveStreamMetaDataKeyword)) &&
   195         if ((0 == currEntry->Name().Compare(KMMALiveStreamMetaDataKeyword)) &&
   196                 (0 == currEntry->Value().Compare(KMMALiveStreamMetaDataValue)))
   196                 (0 == currEntry->Value().Compare(KMMALiveStreamMetaDataValue)))
   197         {
   197         {
   198             LOG( EJavaMMAPI, EInfo, "CMMAVideoUrlPlayer::IsLiveStream: Stream is a live stream");
   198             LOG(EJavaMMAPI, EInfo, "CMMAVideoUrlPlayer::IsLiveStream: Stream is a live stream");
   199             delete currEntry;
   199             delete currEntry;
   200             return ETrue;
   200             return ETrue;
   201         }
   201         }
   202 
   202 
   203         delete currEntry;
   203         delete currEntry;
   204     }
   204     }
   205 
   205 
   206     LOG( EJavaMMAPI, EInfo, "CMMAVideoUrlPlayer::IsLiveStream: Not a live stream");
   206     LOG(EJavaMMAPI, EInfo, "CMMAVideoUrlPlayer::IsLiveStream: Not a live stream");
   207     return EFalse;
   207     return EFalse;
   208 }
   208 }
   209 
   209 
   210 EXPORT_C void CMMAVideoUrlPlayer::HandleEvent(const TMMFEvent& aEvent)
   210 EXPORT_C void CMMAVideoUrlPlayer::HandleEvent(const TMMFEvent& aEvent)
   211 {
   211 {
   212     LOG1( EJavaMMAPI, EInfo, "MMA:CMMAVideoUrlPlayer::HandleEvent 0x%X", aEvent.iEventType.iUid);
   212     LOG1(EJavaMMAPI, EInfo, "MMA:CMMAVideoUrlPlayer::HandleEvent 0x%X", aEvent.iEventType.iUid);
   213     ELOG1( EJavaMMAPI, "MMA:CMMAVideoUrlPlayer::HandleEvent error code: %d", aEvent.iErrorCode);
   213     ELOG1(EJavaMMAPI, "MMA:CMMAVideoUrlPlayer::HandleEvent error code: %d", aEvent.iErrorCode);
   214     RThread currentThread;
   214     RThread currentThread;
   215 
   215 
   216     if (iPlayerDelegate != NULL)
   216     if (iPlayerDelegate != NULL)
   217     {
   217     {
   218         LOG( EJavaMMAPI, EInfo, "MMA::CMMAVideoUrlPlayer::HandleEvent: iPlayerDelegate != NULL");
   218         LOG(EJavaMMAPI, EInfo, "MMA::CMMAVideoUrlPlayer::HandleEvent: iPlayerDelegate != NULL");
   219         iPlayerDelegate->HandleEvent(aEvent);
   219         iPlayerDelegate->HandleEvent(aEvent);
   220     }
   220     }
   221     else
   221     else
   222     {
   222     {
   223         LOG( EJavaMMAPI, EInfo, "MMA::CMMAVideoUrlPlayer::HandleEvent: else");
   223         LOG(EJavaMMAPI, EInfo, "MMA::CMMAVideoUrlPlayer::HandleEvent: else");
   224 
   224 
   225         __ASSERT_DEBUG(iPlayerDelegate == NULL, User::Invariant());
   225         __ASSERT_DEBUG(iPlayerDelegate == NULL, User::Invariant());
   226         TInt err = aEvent.iErrorCode;
   226         TInt err = aEvent.iErrorCode;
   227 
   227 
   228         LOG1( EJavaMMAPI, EInfo, "MMA:CMMAVideoUrlPlayer::HandleEvent: currentThread.Priority() I = %d", currentThread.Priority());
   228         LOG1(EJavaMMAPI, EInfo, "MMA:CMMAVideoUrlPlayer::HandleEvent: currentThread.Priority() I = %d", currentThread.Priority());
   229 
   229 
   230         // Lower thread priority to give more CPU time to Java-threads
   230         // Lower thread priority to give more CPU time to Java-threads
   231         // i.e. current thread has one increment higher priority than
   231         // i.e. current thread has one increment higher priority than
   232         // EPriorityNormal
   232         // EPriorityNormal
   233         if (aEvent.iEventType == KMMFEventCategoryVideoOpenComplete &&
   233         if (aEvent.iEventType == KMMFEventCategoryVideoOpenComplete &&
   234                 err == KErrNone)
   234                 err == KErrNone)
   235         {
   235         {
   236             currentThread.SetPriority(EPriorityNormal);
   236             currentThread.SetPriority(EPriorityNormal);
   237         }
   237         }
   238 
   238 
   239         LOG1( EJavaMMAPI, EInfo, "MMA:CMMAVideoUrlPlayer::HandleEvent: currentThread.Priority() II = %d", currentThread.Priority());
   239         LOG1(EJavaMMAPI, EInfo, "MMA:CMMAVideoUrlPlayer::HandleEvent: currentThread.Priority() II = %d", currentThread.Priority());
   240 
   240 
   241         if (aEvent.iEventType == KMMFEventCategoryVideoPrepareComplete)
   241         if (aEvent.iEventType == KMMFEventCategoryVideoPrepareComplete)
   242         {
   242         {
   243             // Restore original thread priority
   243             // Restore original thread priority
   244             currentThread.SetPriority(iOrigPriority);
   244             currentThread.SetPriority(iOrigPriority);
   245             LOG1( EJavaMMAPI, EInfo, "MMA:CMMAVideoUrlPlayer::HandleEvent: currentThread.Priority() III = %d", currentThread.Priority());
   245             LOG1(EJavaMMAPI, EInfo, "MMA:CMMAVideoUrlPlayer::HandleEvent: currentThread.Priority() III = %d", currentThread.Priority());
   246 
   246 
   247             // NotCompleteVideoError is not considered as an error condition, instead it indicates
   247             // NotCompleteVideoError is not considered as an error condition, instead it indicates
   248             // that some elements of the media cannot be played (e.g. video OR audio)
   248             // that some elements of the media cannot be played (e.g. video OR audio)
   249             if (err != KErrNone && err != KNotCompleteVideoError)
   249             if (err != KErrNone && err != KNotCompleteVideoError)
   250             {
   250             {
   283             iPlayerDelegate->HandleEvent(aEvent);
   283             iPlayerDelegate->HandleEvent(aEvent);
   284         }
   284         }
   285         else
   285         else
   286         {
   286         {
   287             // All other events.
   287             // All other events.
   288             LOG( EJavaMMAPI, EInfo, "MMA::CMMAVideoUrlPlayer::HandleEvent: Calling CMMAVideoPlayer::HandleEvent()");
   288             LOG(EJavaMMAPI, EInfo, "MMA::CMMAVideoUrlPlayer::HandleEvent: Calling CMMAVideoPlayer::HandleEvent()");
   289             CMMAVideoPlayer::HandleEvent(aEvent);
   289             CMMAVideoPlayer::HandleEvent(aEvent);
   290         }
   290         }
   291     }
   291     }
   292 }
   292 }
   293 
   293