[Clientapps-cvs] symbianMmf/common hxmmfbasectrl.h,1.29,1.30
dushyantvipradas at helixcommunity.org dushyantvipradas at helixcommunity.orgUpdate 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;
+
};