[Clientapps-cvs] symbianMmf/common hxmmfbasectrl.h,1.29,1.30

[Clientapps-cvs] symbianMmf/common hxmmfbasectrl.h,1.29,1.30

dushyantvipradas at helixcommunity.org dushyantvipradas at helixcommunity.org
Tue Apr 6 09:22:35 PST 2010


Update of /cvsroot/clientapps/symbianMmf/common
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv26246/common

Modified Files:
	hxmmfbasectrl.h 
Log Message:



Error Id:  EDVS-844QVH;  ou1cimx1#334732

Synopsis:  Startup time for fusion player is more

Overview: When we start ‘Videos and TV’ app, Helix is constructed but the engine is created after a file is selected for playback.     

Solution: If we move the creation of engine in the controller construction phase, then we save the engine creation time after a file 
is selected for playback. From the result of the tests performed, it is observed that an average of 300-350 ms startup time is reduced. 
Also removing the ‘DoCreateEngineIfRequiredL’ calls from rest of the places in the controller as they are no longer needed. 

Files modified: 
\clientapps\symbianMmf\videocontroller\hxmmfctrlimpl.cpp
\clientapps\symbianMmf\videocontroller\hxmmfctrlimpl.h
\clientapps\symbianMmf\audiocontroller\hxmmfaudioctrl.cpp
\clientapps\symbianMmf\audiocontroller\hxmmfaudioctrl.h
\clientapps\symbianMmf\common\hxmmfbasectrl.cpp
\clientapps\symbianMmf\common\hxmmfbasectrl.h

Module release testing (STIF):  Passed



? diff.txt
Index: audiocontroller/hxmmfaudioctrl.cpp
===================================================================
RCS file: /cvsroot/clientapps/symbianMmf/audiocontroller/hxmmfaudioctrl.cpp,v
retrieving revision 1.36
diff -w -u -b -r1.36 hxmmfaudioctrl.cpp
--- audiocontroller/hxmmfaudioctrl.cpp	4 Dec 2009 21:22:54 -0000	1.36
+++ audiocontroller/hxmmfaudioctrl.cpp	6 Apr 2010 17:18:32 -0000
@@ -246,10 +246,8 @@
             User::LeaveIfError(m_pFileSource->ExecuteIntent(m_DRMIntent));
         }
         
-        if(m_pScheduler3)
-        {
-            m_pScheduler3->ResumeScheduler();
-        }		
+        ResumeScheduler();
+
 		
         if(m_uStartWindowPosition == TTimeIntervalMicroSeconds(0) &&
             m_uEndWindowPosition == DurationL())
@@ -721,10 +719,7 @@
     HXLOGL1(HXLOG_SMMF, "CHXAudioController::OnError() - pMoreInfoURL(%s)", pMoreInfoURL);
 
 	//Resume Scheduler in case of any Error
-    if(m_pScheduler3)
-	{
-	    m_pScheduler3->ResumeScheduler();
-	}
+	  ResumeScheduler();
 
     //
     // Check for RTSP Logging message from engine
@@ -790,20 +785,6 @@
 }
 
 void 
-CHXAudioController::OnPostSeek(ULONG32 /*ulOldTime*/, ULONG32 /*ulNewTime*/)
-{
-    HXLOGL1(HXLOG_SMMF, "CHXAudioController::OnPostSeek()");
-    
-    if(m_pScheduler3)
-    {
-         if(!(m_pScheduler3->IsPaused()))
-         {    
-             m_pScheduler3->PauseScheduler();
-         }
-    }   
-}
-
-void
 CHXAudioController::OnLoadingStarted()
 {
     HXLOGL1(HXLOG_SMMF, "CHXAudioController::OnLoadingStarted()");
@@ -845,9 +826,9 @@
         {
             SendEvent( m_nextEvent, m_ulLastError );
 
-            if(m_pScheduler3 && m_ulLastError == HXR_OK)
+            if(m_bLocalPlayback && m_ulLastError == HXR_OK)
             {
-                m_pScheduler3->PauseScheduler();
+                PauseScheduler();
             }
 
         }
Index: audiocontroller/hxmmfaudioctrl.h
===================================================================
RCS file: /cvsroot/clientapps/symbianMmf/audiocontroller/hxmmfaudioctrl.h,v
retrieving revision 1.11
diff -w -u -b -r1.11 hxmmfaudioctrl.h
--- audiocontroller/hxmmfaudioctrl.h	9 Nov 2009 10:06:22 -0000	1.11
+++ audiocontroller/hxmmfaudioctrl.h	6 Apr 2010 17:18:32 -0000
@@ -157,7 +157,6 @@
                       const char* pUserString,
                       const char* pMoreInfoURL );
         void OnPrepareComplete();
-        void OnPostSeek(ULONG32 ulOldTime, ULONG32 ulNewTime);
         void OnLoadingStarted();
         void OnLoadingComplete();
         void OnPresentationClosed();
Index: common/hxmmfbasectrl.cpp
===================================================================
RCS file: /cvsroot/clientapps/symbianMmf/common/hxmmfbasectrl.cpp,v
retrieving revision 1.66
diff -w -u -b -r1.66 hxmmfbasectrl.cpp
--- common/hxmmfbasectrl.cpp	5 Apr 2010 21:07:49 -0000	1.66
+++ common/hxmmfbasectrl.cpp	6 Apr 2010 17:18:32 -0000
@@ -277,7 +277,7 @@
     , m_bMetadataEventConfig(FALSE)
     ,m_eDataSourceChoice( EDataSynchronousSource )
     , m_pMediaPlatform(NULL)
-
+    ,m_bLocalPlayback(TRUE)
 {
 
 }
@@ -1085,13 +1085,7 @@
          
     }
     // Resuming the Scheduler briefly just to update the Video Frame
-    if(m_pScheduler3)
-    {
-        if (m_pScheduler3->IsPaused())
-        {   
-           m_pScheduler3->ResumeScheduler();
-        }
-    }
+    ResumeScheduler();
 }
 
 #else
@@ -1287,9 +1281,9 @@
     IUnknown* pUnKnown = NULL;
     m_pStateCtrl->QueryInterface(IID_IUnknown, (void**)&pUnKnown);
     if( !m_url.IsEmpty() && 
-            !(CHXURL(m_url, pUnKnown)).IsNetworkProtocol())
+            (CHXURL(m_url, pUnKnown)).IsNetworkProtocol())
     {
-        m_pStateCtrl->QueryInterface(IID_IHXScheduler3, (void**)&m_pScheduler3);
+          m_bLocalPlayback = FALSE;
     }
     HX_RELEASE(pUnKnown);
     SendEvent(OpenComplete, result);
@@ -1457,11 +1451,7 @@
             m_pLogSink->LogMessage( KMMFROPErrorLogSendEvents, errText );
         }
     }
-	
-    if(m_pScheduler3)
-	{
-	    m_pScheduler3->ResumeScheduler();
-	}
+	  ResumeScheduler();
 }
 
 void
@@ -1492,13 +1482,25 @@
         }
     }
 
-    if(m_pScheduler3 && m_ulLastError == HXR_OK)
+    if(m_bLocalPlayback && m_ulLastError == HXR_OK)
 	{
-	    m_pScheduler3->PauseScheduler();
+	      PauseScheduler();
 	}
 }
 
 void
+HXMMFBaseCtrl::OnPostSeek(ULONG32 /*ulOldTime*/, ULONG32 /*ulNewTime*/)
+{
+    HXLOGL2(HXLOG_SMMF, "HXMMFBaseCtrl::OnPostSeek()");
+    
+    if(m_bLocalPlayback)
+    {
+        PauseScheduler();
+    }   
+}    
+
+
+void
 HXMMFBaseCtrl::OnMetadataUpdate(IHXBuffer* pKey, IHXBuffer* pValue)
 {
     HXLOGL1(HXLOG_SMMF, "HXMMFBaseCtrl::OnMetadataUpdate()");
@@ -2019,3 +2021,27 @@
  
     CleanupStack::PopAndDestroy( 1 );
 }
+
+
+void HXMMFBaseCtrl::PauseScheduler()
+{
+    if(m_pScheduler3)
+    {
+        if(!(m_pScheduler3->IsPaused()))
+        {    
+            m_pScheduler3->PauseScheduler();
+        }
+    }
+}
+
+void HXMMFBaseCtrl::ResumeScheduler()
+{
+    if(m_pScheduler3)
+    {
+		if(m_pScheduler3->IsPaused())
+		{			
+		    m_pScheduler3->ResumeScheduler();
+		}
+    }
+}        
+
Index: videocontroller/hxmmfctrlimpl.cpp
===================================================================
RCS file: /cvsroot/clientapps/symbianMmf/videocontroller/hxmmfctrlimpl.cpp,v
retrieving revision 1.96
diff -w -u -b -r1.96 hxmmfctrlimpl.cpp
--- videocontroller/hxmmfctrlimpl.cpp	5 Apr 2010 21:07:49 -0000	1.96
+++ videocontroller/hxmmfctrlimpl.cpp	6 Apr 2010 17:18:32 -0000
@@ -287,6 +287,10 @@
     m_pEnvChange = CEnvironmentChangeNotifier::NewL(CActive::EPriorityHigh, cb);
     m_pEnvChange->Start();
 
+    DoCreateEngineIfRequiredL();
+    m_pStateCtrl->QueryInterface(IID_IHXScheduler3, (void**)&m_pScheduler3);
+    PauseScheduler();
+
     HXMMFMemUtil::TraceHeap( "HXMMFCtrlImpl::ConstructL() DONE" );
 }
 
@@ -317,10 +321,7 @@
         {            
             User::LeaveIfError(m_pFileSource->ExecuteIntent(m_DRMIntent));
         }
-        if(m_pScheduler3)
-        {
-            m_pScheduler3->ResumeScheduler();
-        }
+        ResumeScheduler();
         m_pStateCtrl->Play();
         
         m_nextEvent = PlaybackComplete;
@@ -466,12 +467,8 @@
  	}
  	else
  	{ 		 
-    	TRAP(status, DoCreateEngineIfRequiredL());
-    	if (status == KErrNone)
-    	{    	    	
     		status = m_pSurfaceControl->SetScalingType(ulScalingTypePckg());
     	}
- 	}
     
     return status;
 }
@@ -485,12 +482,7 @@
     HXLOGL1(HXLOG_SMMF, "HXMMFCtrlImpl::GetScalingType()");
     UINT32 ulScalingType = EMMFDefaultScaling;
       
- 	 
-	TRAP(status, DoCreateEngineIfRequiredL());
-	if (status == KErrNone)
-	{    	    	
 		status = m_pSurfaceControl->GetScalingType(ulScalingType);
-	}
  
     TPckg<TInt> ulScalingTypePckg(ulScalingType);
     aMessage.WriteDataToClient(ulScalingTypePckg);   
@@ -646,8 +638,6 @@
 
     HXLOGL1(HXLOG_SMMF, "HXMMFCtrlImpl::MvpcPrepare()");
 
-    DoCreateEngineIfRequiredL();
-
 #ifdef HELIX_FEATURE_S60_PROGDOWN
     // check if this is a Progressive Download case
     if(m_ulDownloadID > 0 && m_pDownloadObserver && m_pFileSource && m_pRequest)
@@ -734,7 +724,6 @@
 HXMMFCtrlImpl::MvpcDirectScreenAccessEventL( const TMMFDSAEvent aDSAEvent )
 {
     HXLOGL1(HXLOG_SMMF, "HXMMFCtrlImpl::DSAEvent(%d)", aDSAEvent);
-    DoCreateEngineIfRequiredL();
 #if defined(HELIX_FEATURE_MMF_SITE_CONTROL)
     m_pDSAControl->DirectScreenAccessEvent(aDSAEvent == EResumeDSA);
 #endif
@@ -744,7 +733,6 @@
 HXMMFCtrlImpl::MvpcUpdateDisplayRegionL( const TRegion& aRegion )
 {
     HXLOGL1(HXLOG_SMMF, "HXMMFCtrlImpl::MvpcUpdateDisplayRegion()");
-    DoCreateEngineIfRequiredL();
 #if defined(HELIX_FEATURE_MMF_SITE_CONTROL)
     m_pDSAControl->UpdateDisplayRegion((HXxRegion)&aRegion);
 #endif
@@ -775,7 +763,6 @@
     HXLOGL3(HXLOG_SMMF, "HXMMFCtrlImpl::MvpcSetDisplayWindowL() Clip after intersection (%d %d) (%d %d)",
         tl.iX, tl.iY, br.iX, br.iY);
 
-    DoCreateEngineIfRequiredL();
     m_pStateCtrl->SetDisplayWindow( aWindowRect, clipRegion );
 
 }
@@ -816,10 +803,7 @@
             User::LeaveIfError(m_pFileSource->ExecuteIntent(m_DRMIntent));
         }
         
-        if(m_pScheduler3)
-        {
-            m_pScheduler3->ResumeScheduler();
-        }
+        ResumeScheduler();
         rc = m_pStateCtrl->PlayRange(ulStart,ulEnd);
     } // End of if(m_pStateCtrl != NULL)
 
@@ -840,7 +824,6 @@
 HXMMFCtrlImpl::MvpcRefreshFrameL()
 {
     HXLOGL1(HXLOG_SMMF, "HXMMFCtrlImpl::MvpcRefreshL()");
-    DoCreateEngineIfRequiredL();
 #if defined(HELIX_FEATURE_MMF_SITE_CONTROL)
     m_pDSAControl->RefreshWindow();
 #endif
@@ -849,7 +832,6 @@
 void
 HXMMFCtrlImpl::MvpcGetLoadingProgressL( TInt& aPercentageComplete )
 {
-    DoCreateEngineIfRequiredL();
     aPercentageComplete = m_pStateCtrl->GetPercentage();
     HXLOGL1(HXLOG_SMMF, "HXMMFCtrlImpl::MvpcGetLoadingProgressL(%d)", aPercentageComplete);
 }
@@ -858,7 +840,6 @@
 HXMMFCtrlImpl::MvpcSetRotationL( TVideoRotation aRotation )
 {
     HXLOGL1(HXLOG_SMMF, "HXMMFCtrlImpl::MvpcSetRotationL()");
-    DoCreateEngineIfRequiredL();
 #if defined(HELIX_FEATURE_MMF_SITE_CONTROL)
     m_aRotation = aRotation;
     m_pSurfaceControl->SetRotation(aRotation);
@@ -869,7 +850,6 @@
 HXMMFCtrlImpl::MvpcGetRotationL(TVideoRotation& aRotation)
 {
     HXLOGL1(HXLOG_SMMF, "HXMMFCtrlImpl::MvpcGetRotationL()");
-    DoCreateEngineIfRequiredL();
 #if defined(HELIX_FEATURE_MMF_SITE_CONTROL)
     UINT32 tempRotation;
     m_pSurfaceControl->GetRotation(tempRotation);
@@ -895,7 +875,6 @@
                                    TBool aAntiAliasFiltering )
 {
     HXLOGL1(HXLOG_SMMF, "HXMMFCtrlImpl::MvpcSetScaleFactorL()");
-    DoCreateEngineIfRequiredL();
 #if defined(HELIX_FEATURE_MMF_SITE_CONTROL)
     m_pSurfaceControl->SetScaling(aWidthPercentage, aHeightPercentage, aAntiAliasFiltering);
 #endif
@@ -907,7 +886,6 @@
                                    TBool& aAntiAliasFiltering)
 {
     HXLOGL1(HXLOG_SMMF, "HXMMFCtrlImpl::MvpcGetScaleFactorL()");
-    DoCreateEngineIfRequiredL();
 #if defined(HELIX_FEATURE_MMF_SITE_CONTROL)
     m_pSurfaceControl->GetScaling(aWidthPercentage, aHeightPercentage, aAntiAliasFiltering);
 #endif
@@ -917,7 +895,6 @@
 HXMMFCtrlImpl::MvpcSetCropRegionL(const TRect& aCropRegion)
 {
     HXLOGL1(HXLOG_SMMF, "HXMMFCtrlImpl::MvpcSetCropRegionL()");
-    DoCreateEngineIfRequiredL();
 #if defined(HELIX_FEATURE_MMF_SITE_CONTROL)
     m_pSurfaceControl->SetCropRect(CHXxRect(aCropRegion.iTl.iX, aCropRegion.iTl.iY, aCropRegion.iBr.iX, aCropRegion.iBr.iY));
 #endif
@@ -927,7 +904,6 @@
 HXMMFCtrlImpl::MvpcGetCropRegionL(TRect& aCropRegion)
 {
     HXLOGL1(HXLOG_SMMF, "HXMMFCtrlImpl::MvpcGetCropRegionL()");
-    DoCreateEngineIfRequiredL();
 #if defined(HELIX_FEATURE_MMF_SITE_CONTROL)
     HXxRect tempCropRect;
     m_pSurfaceControl->GetCropRect(tempCropRect);
@@ -1109,12 +1085,7 @@
 void HXMMFCtrlImpl::MvpssUseSurfacesL()
 {
     HXLOGL2(HXLOG_SMMF, "HXMMFCtrlImpl::MvpssUseSurfacesL()++");
-    TInt status = KErrNone;
-    TRAP(status, DoCreateEngineIfRequiredL());
-    if (status == KErrNone)
-	  {    	    	
 		    User::LeaveIfError(m_pGraphicsSurface->UseSurfaces());
-	  }
     HXLOGL2(HXLOG_SMMF, "HXMMFCtrlImpl::MvpssUseSurfacesL()--");
 }
 
@@ -1215,7 +1186,6 @@
 HXMMFCtrlImpl::MvsdSetInitScreenNumber(TInt aScreenNumber)
 {
     HXLOGL1(HXLOG_SMMF, "HXMMFCtrlImpl::MvsdSetInitScreenNumber(%d)",aScreenNumber);
-    DoCreateEngineIfRequiredL();
 #if defined(HELIX_FEATURE_MMF_SITE_CONTROL)
     m_pDSAControl->SetInitScreenNumber(aScreenNumber);
 #endif
@@ -1241,10 +1211,7 @@
     unsigned long ulHXCode_local = ulHXCode;
 
 	//Resume Scheduler in case of any Error
-    if(m_pScheduler3)
-	{
-	    m_pScheduler3->ResumeScheduler();
-	}
+	  ResumeScheduler();
 
 #ifdef HELIX_FEATURE_S60_PROGDOWN
     // make sure we only do this when a progressive download is active
@@ -1332,20 +1299,6 @@
 }
 
 void
-HXMMFCtrlImpl::OnPostSeek(ULONG32 /*ulOldTime*/, ULONG32 /*ulNewTime*/)
-{
-    HXLOGL2(HXLOG_SMMF, "HXMMFCtrlImpl::OnPostSeek()");
-    
-    if(m_pScheduler3)
-    {
-        if(!(m_pScheduler3->IsPaused()))
-        {
-            m_pScheduler3->PauseScheduler();
-        }
-    }   
-}    
-
-void
 HXMMFCtrlImpl::OnLoadingStarted()
 {
     HXLOGL1(HXLOG_SMMF, "HXMMFCtrlImpl::OnLoadingStarted()");
@@ -1390,9 +1343,9 @@
         {
             SendEvent( m_nextEvent, m_ulLastError );
 
-            if(m_pScheduler3 && m_ulLastError == HXR_OK)
+            if(m_bLocalPlayback && m_ulLastError == HXR_OK)
             {
-                m_pScheduler3->PauseScheduler();
+                PauseScheduler();
             }
 
         }
@@ -1544,7 +1497,7 @@
 void
 HXMMFCtrlImpl::AddDataSourceL( MDataSource& aDataSource )
 {
-    DoCreateEngineIfRequiredL();
+    ResumeScheduler();
     HXMMFBaseCtrl::AddDataSourceL(aDataSource);
 }
 
@@ -1633,14 +1586,10 @@
 HXMMFCtrlImpl::MvpecGetPlayRateCapabilitiesL(TVideoPlayRateCapabilities& aCapabilities)
 {
 	TInt status = KErrNotSupported;
-	TRAP(status, DoCreateEngineIfRequiredL());
-	if (SUCCEEDED(status))
-	{    	    	
 		if(m_pStateCtrl)
 		{
 			status = m_pStateCtrl->GetTrickPlayCapabilities( aCapabilities );
 		}
-	}
 	HXLOGL1(HXLOG_SMMF, "HXMMFCtrlImpl::MvpecGetPlayRateCapabilitiesL() aCapabilities=%u", aCapabilities );
 	if (!SUCCEEDED(status)) 
 	{
Index: videocontroller/hxmmfctrlimpl.h
===================================================================
RCS file: /cvsroot/clientapps/symbianMmf/videocontroller/hxmmfctrlimpl.h,v
retrieving revision 1.32
diff -w -u -b -r1.32 hxmmfctrlimpl.h
--- videocontroller/hxmmfctrlimpl.h	5 Apr 2010 21:07:49 -0000	1.32
+++ videocontroller/hxmmfctrlimpl.h	6 Apr 2010 17:18:32 -0000
@@ -197,7 +197,6 @@
                       const char* pUserString,
                       const char* pMoreInfoURL );
         void OnPrepareComplete();
-        void OnPostSeek(ULONG32 ulOldTime, ULONG32 ulNewTime);
         void OnLoadingStarted();
         void OnLoadingComplete();
         void OnPresentationClosed();


Index: hxmmfbasectrl.h
===================================================================
RCS file: /cvsroot/clientapps/symbianMmf/common/hxmmfbasectrl.h,v
retrieving revision 1.29
retrieving revision 1.30
diff -u -d -r1.29 -r1.30
--- hxmmfbasectrl.h	5 Apr 2010 21:07:49 -0000	1.29
+++ hxmmfbasectrl.h	6 Apr 2010 17:22:33 -0000	1.30
@@ -171,7 +171,7 @@
     virtual void OnPrepareComplete()    = 0;
     virtual void OnPlaying();
     virtual void OnPaused();
-    virtual void OnPostSeek(ULONG32 ulOldTime, ULONG32 ulNewTime) = 0;
+    virtual void OnPostSeek(ULONG32 ulOldTime, ULONG32 ulNewTime);
     virtual void OnMetadataUpdate(IHXBuffer* pKey, IHXBuffer* pValue);
     virtual void OnLoadingStarted()     = 0;
     virtual void OnLoadingComplete()    = 0;
@@ -297,6 +297,8 @@
 
         HX_RESULT CreateMediaPlatform();
         void DeleteFilesL();
+        void PauseScheduler();
+        void ResumeScheduler();
 
         CHXString                       m_url;
         HXMMFStateCtrl*                 m_pStateCtrl;
@@ -344,6 +346,8 @@
         IHXMediaPlatform*               m_pMediaPlatform;
 	
 		IHXScheduler3*					m_pScheduler3;
+        HXBOOL                          m_bLocalPlayback;
+		
 };
 
 




More information about the Clientapps-cvs mailing list
 

Site Map   |   Terms of Use   |   Privacy Policy   |   Contact Us

Copyright © 1995-2007 RealNetworks, Inc. All rights reserved. RealNetworks and Helix are trademarks of RealNetworks.
All other trademarks or registered trademarks are the property of their respective holders.