|
List Info
Thread: CR: Fix for primed event notification from helix audio controller to Enhanced media
|
|
| CR: Fix for primed event notification
from helix audio controller to Enhanced
media |

|
2007-08-22 17:39:01 |
|
"Nokia submits this code under the terms of a commercial contribution agreement with RealNetworks, and I am authorized to contribute this code under said agreement."
ErrorId: ESBI-769SSP
Synopsis: CR: Fix for primed event notification from helix audio controller to Enhanced media client
On PrepareComplete, Enhanced Media Client expects PRIMED Event form helix audio controller.
In helix audio controller, OnPrepareComplete, if the client is EMC, then an even will be sent to the client saying prepare complete(Primed).
Audio needs to be played in the background, hence all the audio controllers are having real time priority. This leads to change in priority for helix audio controller too.
Root Cause of the problem: Implementation
Files Modified:
clientapps/symbianMmf/common/hxmmfbasectrl.cpp
clientapps/symbianMmf/audiocontroller/hxmmfaudioctrl.cpp
common/fileio/platform/symbian/HxMMDataSource.cpp
common/fileio/pub/platform/symbian/HxMMDataSource.h
Image Size and Heap Use impact: no major impact
Module Release testing (STIF) : Passed.
Test case(s) Added : No.
Memory leak check performed : Yes. No new leaks introduced.
Platforms and Profiles Build Verified: helix-client-s60-32-mmf-mdf-arm
Platforms and Profiles Functionality verified: armv5,winscw
Branch: Head & 210CayS
Index: audiocontroller/hxmmfaudioctrl.cpp
===================================================================
RCS file: /cvsroot/clientapps/symbianMmf/audiocontroller/hxmmfaudioctrl.cpp,v
retrieving revision 1.1.2.14
diff -w -u -b -r1.1.2.14 hxmmfaudioctrl.cpp
 -107,6 +107,7 
CHXAudioController::~CHXAudioController()
{
+ RThread().SetPriority(EPriorityNormal);
HXGlobalManagerImp* pGM = static_cast<HXGlobalManagerImp*>( HXGlobalManInstance::GetInstance() );
// Controller creates the GlobalMgr as the first object.
// Assumption: if Global Mgr is NULL, then all other members
 -173,6 +174,7 
void
CHXAudioController::ConstructL()
{
+ RThread().SetPriority(EPriorityRealTime);
//
// Check for sufficient memory
//
 -690,6 +692,13 
{
HXLOGL1(HXLOG_SMMF, "CHXAudioController::OnPrepareComplete()");
+ if(m_bEMC)
+ {
+ //On PrepareComplete, Enhanced Media Client expects PRIMED Event form helix audio controller.
+ SendEvent(PrepareComplete, m_ulLastError);
+ }
+ else
+ {
if (m_pActiveSchedulerWait->IsStarted())
{
m_lAsyncWaitError = KErrNone;
 -699,6 +708,7 
{
HXLOGL1(HXLOG_SMMF, "CHXAudioController::OnPrepareComplete() WARNING Scheduler NOT ACTIVE");
}
+ }
m_nextEvent = PlaybackComplete;
}
Index: common/hxmmfbasectrl.cpp
===================================================================
RCS file: /cvsroot/clientapps/symbianMmf/common/hxmmfbasectrl.cpp,v
retrieving revision 1.1.2.28
diff -w -u -b -r1.1.2.28 hxmmfbasectrl.cpp
 -930,7 +930,8 
if ( m_bEMC )
{
m_url = DESCRIPTOR_URL;
- m_pDataSource = CHxMMDataSource::NewL(aDataSource);
+ UINT32 ulCacheSize = prefs::GetUINT32(m_pPrefs, "MMDataSouceCacheSize", 65535);
+ m_pDataSource = CHxMMDataSource::NewL(aDataSource, ulCacheSize );
if (!m_pDataSource)
{
Index: platform/symbian/HxMMDataSource.cpp
===================================================================
RCS file: /cvsroot/common/fileio/platform/symbian/HxMMDataSource.cpp,v
retrieving revision 1.1.2.1
diff -w -u -b -r1.1.2.1 HxMMDataSource.cpp
--- platform/symbian/HxMMDataSource.cpp 18 Jul 2007 23:11:51 -0000 1.1.2.1
+++ platform/symbian/HxMMDataSource.cpp 22 Aug 2007 22:33:01 -0000
 -70,6 +70,7 
,m_pHXBuffer(NULL)
,m_pDSConfig(NULL)
#endif
+ ,m_ulCacheSize(0L)
{
}
 -114,18 +115,19 
return HXR_OK;
}
-CHxMMDataSource* CHxMMDataSource::NewL(MDataSource& aDataSource)
+CHxMMDataSource* CHxMMDataSource::NewL(MDataSource& aDataSource, UINT32 aCacheSize)
{
CHxMMDataSource* self = new (ELeave) CHxMMDataSource();
CleanupStack::PushL(self);
- self->ConstructL(aDataSource);
+ self->ConstructL(aDataSource, aCacheSize);
CleanupStack::Pop();
return(self);
}
-void CHxMMDataSource::ConstructL(MDataSource& aDataSource)
+void CHxMMDataSource::ConstructL(MDataSource& aDataSource, UINT32 aCacheSize)
{
m_pDataSource = &aDataSource;
+ m_ulCacheSize = aCacheSize;
TInt err = CMultimediaDataSourceFactory::CreateSeekableDataSource(*m_pDataSource, m_pImpl, m_pDSConfig);
User::LeaveIfError(err);
m_pImpl->SetObserver(*this);
 -144,7 +146,7 
HX_ADDREF(m_pObserver);
if(pRequest && modeStr)
{
- m_pDSConfig->SetCacheSize(16384);
+ m_pDSConfig->SetCacheSize(m_ulCacheSize);
m_pDSConfig->SetCacheType(CDataSourceConfigIntfc::EBUFFER);
m_pRequest = pRequest;
m_pImpl->Open();
Index: pub/platform/symbian/HxMMDataSource.h
===================================================================
RCS file: /cvsroot/common/fileio/pub/platform/symbian/HxMMDataSource.h,v
retrieving revision 1.1.2.1
diff -w -u -b -r1.1.2.1 HxMMDataSource.h
 -73,7 +73,7 
{
private:
CHxMMDataSource();
- void ConstructL(MDataSource& aDataSource);
+ void ConstructL(MDataSource& aDataSource, UINT32 aCacheSize);
public:
CHxMMDataSource(CMultimediaDataSource *pImpl);
~CHxMMDataSource();
 -98,7 +98,7 
STDMETHOD(SetDownloadSize) (THIS_ UINT32 downloadSize);
STDMETHOD(SetUnderflowTimeoutInMillis)(THIS_ UINT32 timeout);
#endif
- static CHxMMDataSource* NewL(MDataSource& aDataSource);
+ static CHxMMDataSource* NewL(MDataSource& aDataSource, UINT32 aCacheSize = 65535);
STDMETHOD(AsyncReadSupported) (THIS_);
protected: // functions from MMultimediaDataSourceObserver
 -126,6 +126,7 
IHXMMFDataSourceObserver* m_pObserver;
CMMFDataBuffer* m_pBuffer;
void* m_pHXBuffer;
+ UINT32 m_ulCacheSize;
};
|
| RE: CR: Fix for primed event
notification from helixaudio controller
to Enhanced me |
  United States |
2007-08-23 07:45:16 |
These changes look good.
=============================================
Eric Hyche (ehyche real.com)
Technical Lead
RealNetworks, Inc.
> -----Original Message-----
> From: clientapps-dev-bounces helixcommunity.org
> [mailto:clientapps-dev-bounces helixcommunity.org] On
Behalf
> Of Praveen.Thimmashetty nokia.com
> Sent: Wednesday, August 22, 2007 6:39 PM
> To: clientapps-dev helixcommunity.org; common-dev helixcommunity.org
> Subject: [Clientapps-dev] CR: Fix for primed event
> notification from helixaudio controller to Enhanced
media client
>
>
> "Nokia submits this code under the terms of a
commercial
> contribution agreement with RealNetworks, and I am
authorized
> to contribute this code under said agreement."
>
> Modified by: Praveen.Thimmashetty nokia.com
>
> Reviewed by:
>
> Date: 21-August-2007
>
> Project: SymbianMmf
>
> ErrorId: ESBI-769SSP
>
>
> Synopsis: CR: Fix for primed event notification from
> helix audio controller to Enhanced media client
>
> On PrepareComplete, Enhanced Media Client expects
> PRIMED Event form helix audio controller.
> In helix audio controller, OnPrepareComplete, if the
> client is EMC, then an even will be sent to the client
saying
> prepare complete(Primed).
>
> Audio needs to be played in the background, hence all
> the audio controllers are having real time priority.
This
> leads to change in priority for helix audio controller
too.
>
>
> Root Cause of the problem: Implementation
>
> Files Modified:
> clientapps/symbianMmf/common/hxmmfbasectrl.cpp
>
clientapps/symbianMmf/audiocontroller/hxmmfaudioctrl.cpp
> common/fileio/platform/symbian/HxMMDataSource.cpp
> common/fileio/pub/platform/symbian/HxMMDataSource.h
>
> Image Size and Heap Use impact: no major impact
>
> Module Release testing (STIF) : Passed.
>
> Test case(s) Added : No.
>
> Memory leak check performed : Yes. No new leaks
introduced.
>
> Platforms and Profiles Build Verified:
> helix-client-s60-32-mmf-mdf-arm
>
> Platforms and Profiles Functionality verified:
armv5,winscw
>
> Branch: Head & 210CayS
>
> Index: audiocontroller/hxmmfaudioctrl.cpp
>
============================================================
=======
> RCS file:
>
/cvsroot/clientapps/symbianMmf/audiocontroller/hxmmfaudioctr
l.cpp,v
> retrieving revision 1.1.2.14
> diff -w -u -b -r1.1.2.14 hxmmfaudioctrl.cpp
>  -107,6 +107,7 
>
> CHXAudioController::~CHXAudioController()
> {
> + RThread().SetPriority(EPriorityNormal);
> HXGlobalManagerImp* pGM =
> static_cast<HXGlobalManagerImp*>(
> HXGlobalManInstance::GetInstance() );
> // Controller creates the GlobalMgr as the first
object.
> // Assumption: if Global Mgr is NULL, then all
other members
>  -173,6 +174,7 
> void
> CHXAudioController::ConstructL()
> {
> + RThread().SetPriority(EPriorityRealTime);
> //
> // Check for sufficient memory
> //
>  -690,6 +692,13 
> {
> HXLOGL1(HXLOG_SMMF,
"CHXAudioController::OnPrepareComplete()");
>
> + if(m_bEMC)
> + {
> + //On PrepareComplete, Enhanced Media Client
expects
> PRIMED Event form helix audio controller.
> + SendEvent(PrepareComplete, m_ulLastError);
> + }
> + else
> + {
> if (m_pActiveSchedulerWait->IsStarted())
> {
> m_lAsyncWaitError = KErrNone;
>  -699,6 +708,7 
> {
> HXLOGL1(HXLOG_SMMF,
> "CHXAudioController::OnPrepareComplete() WARNING
Scheduler
> NOT ACTIVE");
> }
> + }
> m_nextEvent = PlaybackComplete;
> }
>
> Index: common/hxmmfbasectrl.cpp
>
============================================================
=======
> RCS file:
/cvsroot/clientapps/symbianMmf/common/hxmmfbasectrl.cpp,v
> retrieving revision 1.1.2.28
> diff -w -u -b -r1.1.2.28 hxmmfbasectrl.cpp
>  -930,7 +930,8 
> if ( m_bEMC )
> {
> m_url = DESCRIPTOR_URL;
> - m_pDataSource =
CHxMMDataSource::NewL(aDataSource);
> + UINT32 ulCacheSize =
prefs::GetUINT32(m_pPrefs,
> "MMDataSouceCacheSize", 65535);
> + m_pDataSource =
CHxMMDataSource::NewL(aDataSource,
> ulCacheSize );
>
> if (!m_pDataSource)
> {
>
> Index: platform/symbian/HxMMDataSource.cpp
>
============================================================
=======
> RCS file:
>
/cvsroot/common/fileio/platform/symbian/HxMMDataSource.cpp,v
> retrieving revision 1.1.2.1
> diff -w -u -b -r1.1.2.1 HxMMDataSource.cpp
> --- platform/symbian/HxMMDataSource.cpp 18 Jul 2007
23:11:51
> -0000 1.1.2.1
> +++ platform/symbian/HxMMDataSource.cpp 22 Aug 2007
22:33:01 -0000
>  -70,6 +70,7 
> ,m_pHXBuffer(NULL)
> ,m_pDSConfig(NULL)
> #endif
> + ,m_ulCacheSize(0L)
> {
> }
>
>  -114,18 +115,19 
> return HXR_OK;
> }
>
> -CHxMMDataSource*
CHxMMDataSource::NewL(MDataSource& aDataSource)
> +CHxMMDataSource*
CHxMMDataSource::NewL(MDataSource&
> aDataSource, UINT32 aCacheSize)
> {
> CHxMMDataSource* self = new (ELeave)
CHxMMDataSource();
> CleanupStack::PushL(self);
> - self->ConstructL(aDataSource);
> + self->ConstructL(aDataSource, aCacheSize);
> CleanupStack::Pop();
> return(self);
> }
>
> -void CHxMMDataSource::ConstructL(MDataSource&
aDataSource)
> +void CHxMMDataSource::ConstructL(MDataSource&
aDataSource,
> UINT32 aCacheSize)
> {
> m_pDataSource = &aDataSource;
> + m_ulCacheSize = aCacheSize;
> TInt err =
>
CMultimediaDataSourceFactory::CreateSeekableDataSource(*m_pD
at
> aSource, m_pImpl, m_pDSConfig);
> User::LeaveIfError(err);
> m_pImpl->SetObserver(*this);
>  -144,7 +146,7 
> HX_ADDREF(m_pObserver);
> if(pRequest && modeStr)
> {
> - m_pDSConfig->SetCacheSize(16384);
> + m_pDSConfig->SetCacheSize(m_ulCacheSize);
>
m_pDSConfig->SetCacheType(CDataSourceConfigIntfc::EBUFFER
);
> m_pRequest = pRequest;
> m_pImpl->Open();
>
> Index: pub/platform/symbian/HxMMDataSource.h
>
============================================================
=======
> RCS file:
>
/cvsroot/common/fileio/pub/platform/symbian/HxMMDataSource.h
,v
> retrieving revision 1.1.2.1
> diff -w -u -b -r1.1.2.1 HxMMDataSource.h
>  -73,7 +73,7 
> {
> private:
> CHxMMDataSource();
> - void ConstructL(MDataSource& aDataSource);
> + void ConstructL(MDataSource& aDataSource,
UINT32 aCacheSize);
> public:
> CHxMMDataSource(CMultimediaDataSource *pImpl);
> ~CHxMMDataSource();
>  -98,7 +98,7 
> STDMETHOD(SetDownloadSize) (THIS_ UINT32
downloadSize);
> STDMETHOD(SetUnderflowTimeoutInMillis)(THIS_
UINT32 timeout);
> #endif
> - static CHxMMDataSource* NewL(MDataSource&
aDataSource);
> + static CHxMMDataSource* NewL(MDataSource&
aDataSource,
> UINT32 aCacheSize = 65535);
> STDMETHOD(AsyncReadSupported) (THIS_);
>
> protected: // functions from
MMultimediaDataSourceObserver
>  -126,6 +126,7 
> IHXMMFDataSourceObserver* m_pObserver;
> CMMFDataBuffer* m_pBuffer;
> void* m_pHXBuffer;
> + UINT32 m_ulCacheSize;
> };
>
>
>
_______________________________________________
Clientapps-dev mailing list
Clientapps-dev helixcommunity.org
http://lists.helixcommunity.org/mailman/listinfo/
clientapps-dev
|
|
| CR: Fix for primed event notification
from helix audio controller |
  United States |
2007-08-23 19:16:52 |
Looks good.
--greg.
Praveen.Thimmashetty nokia.com wrote:
> "Nokia submits this code under the terms of a
commercial contribution
> agreement with RealNetworks, and I am authorized to
contribute this code
> under said agreement."
>
> Modified by: Praveen.Thimmashetty nokia.com
>
> Reviewed by:
>
> Date: 21-August-2007
>
> Project: SymbianMmf
>
> ErrorId: ESBI-769SSP
>
> Synopsis: CR: Fix for primed event notification from
helix
> audio controller to Enhanced media client
>
> On PrepareComplete, Enhanced Media Client expects
PRIMED Event
> form helix audio controller.
> In helix audio controller, OnPrepareComplete, if the
client is
> EMC, then an even will be sent to the client saying
prepare
> complete(Primed).
> Audio needs to be played in the background, hence all
the audio
> controllers are having real time priority. This leads
to change in
> priority for helix audio controller too.
>
> Root Cause of the problem: Implementation
>
> Files Modified:
> clientapps/symbianMmf/common/hxmmfbasectrl.cpp
>
clientapps/symbianMmf/audiocontroller/hxmmfaudioctrl.cpp
> common/fileio/platform/symbian/HxMMDataSource.cpp
> common/fileio/pub/platform/symbian/HxMMDataSource.h
>
> Image Size and Heap Use impact: no major impact
>
> Module Release testing (STIF) : Passed.
>
> Test case(s) Added : No.
>
> Memory leak check performed : Yes. No new leaks
introduced.
>
> Platforms and Profiles Build Verified:
> helix-client-s60-32-mmf-mdf-arm
>
> Platforms and Profiles Functionality verified:
armv5,winscw
>
> Branch: Head & 210CayS
>
> Index: audiocontroller/hxmmfaudioctrl.cpp
>
============================================================
=======
> RCS file:
>
/cvsroot/clientapps/symbianMmf/audiocontroller/hxmmfaudioctr
l.cpp,v
> retrieving revision 1.1.2.14
> diff -w -u -b -r1.1.2.14 hxmmfaudioctrl.cpp
>  -107,6 +107,7 
>
> CHXAudioController::~CHXAudioController()
> {
> + RThread().SetPriority(EPriorityNormal);
> HXGlobalManagerImp* pGM =
static_cast<HXGlobalManagerImp*>(
> HXGlobalManInstance::GetInstance() );
> // Controller creates the GlobalMgr as the first
object.
> // Assumption: if Global Mgr is NULL, then all
other members
>  -173,6 +174,7 
> void
> CHXAudioController::ConstructL()
> {
> + RThread().SetPriority(EPriorityRealTime);
> //
> // Check for sufficient memory
> //
>  -690,6 +692,13 
> {
> HXLOGL1(HXLOG_SMMF,
"CHXAudioController::OnPrepareComplete()");
>
> + if(m_bEMC)
> + {
> + //On PrepareComplete, Enhanced Media Client
expects PRIMED
> Event form helix audio controller.
> + SendEvent(PrepareComplete, m_ulLastError);
> + }
> + else
> + {
> if (m_pActiveSchedulerWait->IsStarted())
> {
> m_lAsyncWaitError = KErrNone;
>  -699,6 +708,7 
> {
> HXLOGL1(HXLOG_SMMF,
"CHXAudioController::OnPrepareComplete()
> WARNING Scheduler NOT ACTIVE");
> }
> + }
> m_nextEvent = PlaybackComplete;
> }
>
> Index: common/hxmmfbasectrl.cpp
>
============================================================
=======
> RCS file:
/cvsroot/clientapps/symbianMmf/common/hxmmfbasectrl.cpp,v
> retrieving revision 1.1.2.28
> diff -w -u -b -r1.1.2.28 hxmmfbasectrl.cpp
>  -930,7 +930,8 
> if ( m_bEMC )
> {
> m_url = DESCRIPTOR_URL;
> - m_pDataSource =
CHxMMDataSource::NewL(aDataSource);
> + UINT32 ulCacheSize =
prefs::GetUINT32(m_pPrefs,
> "MMDataSouceCacheSize", 65535);
> + m_pDataSource =
CHxMMDataSource::NewL(aDataSource, ulCacheSize
> );
>
> if (!m_pDataSource)
> {
>
> Index: platform/symbian/HxMMDataSource.cpp
>
============================================================
=======
> RCS file:
/cvsroot/common/fileio/platform/symbian/HxMMDataSource.cpp,v
> retrieving revision 1.1.2.1
> diff -w -u -b -r1.1.2.1 HxMMDataSource.cpp
> --- platform/symbian/HxMMDataSource.cpp 18 Jul 2007
23:11:51 -0000
> 1.1.2.1
> +++ platform/symbian/HxMMDataSource.cpp 22 Aug 2007
22:33:01 -0000
>  -70,6 +70,7 
> ,m_pHXBuffer(NULL)
> ,m_pDSConfig(NULL)
> #endif
> + ,m_ulCacheSize(0L)
> {
> }
>
>  -114,18 +115,19 
> return HXR_OK;
> }
>
> -CHxMMDataSource*
CHxMMDataSource::NewL(MDataSource& aDataSource)
> +CHxMMDataSource*
CHxMMDataSource::NewL(MDataSource& aDataSource, UINT32
> aCacheSize)
> {
> CHxMMDataSource* self = new (ELeave)
CHxMMDataSource();
> CleanupStack::PushL(self);
> - self->ConstructL(aDataSource);
> + self->ConstructL(aDataSource, aCacheSize);
> CleanupStack::Pop();
> return(self);
> }
>
> -void CHxMMDataSource::ConstructL(MDataSource&
aDataSource)
> +void CHxMMDataSource::ConstructL(MDataSource&
aDataSource, UINT32
> aCacheSize)
> {
> m_pDataSource = &aDataSource;
> + m_ulCacheSize = aCacheSize;
> TInt err =
>
CMultimediaDataSourceFactory::CreateSeekableDataSource(*m_pD
ataSource,
> m_pImpl, m_pDSConfig);
> User::LeaveIfError(err);
> m_pImpl->SetObserver(*this);
>  -144,7 +146,7 
> HX_ADDREF(m_pObserver);
> if(pRequest && modeStr)
> {
> - m_pDSConfig->SetCacheSize(16384);
> + m_pDSConfig->SetCacheSize(m_ulCacheSize);
>
m_pDSConfig->SetCacheType(CDataSourceConfigIntfc::EBUFFER
);
> m_pRequest = pRequest;
> m_pImpl->Open();
>
> Index: pub/platform/symbian/HxMMDataSource.h
>
============================================================
=======
> RCS file:
/cvsroot/common/fileio/pub/platform/symbian/HxMMDataSource.h
,v
> retrieving revision 1.1.2.1
> diff -w -u -b -r1.1.2.1 HxMMDataSource.h
>  -73,7 +73,7 
> {
> private:
> CHxMMDataSource();
> - void ConstructL(MDataSource& aDataSource);
> + void ConstructL(MDataSource& aDataSource,
UINT32 aCacheSize);
> public:
> CHxMMDataSource(CMultimediaDataSource *pImpl);
> ~CHxMMDataSource();
>  -98,7 +98,7 
> STDMETHOD(SetDownloadSize) (THIS_ UINT32
downloadSize);
> STDMETHOD(SetUnderflowTimeoutInMillis)(THIS_
UINT32 timeout);
> #endif
> - static CHxMMDataSource* NewL(MDataSource&
aDataSource);
> + static CHxMMDataSource* NewL(MDataSource&
aDataSource, UINT32
> aCacheSize = 65535);
> STDMETHOD(AsyncReadSupported) (THIS_);
>
> protected: // functions from
MMultimediaDataSourceObserver
>  -126,6 +126,7 
> IHXMMFDataSourceObserver* m_pObserver;
> CMMFDataBuffer* m_pBuffer;
> void* m_pHXBuffer;
> + UINT32 m_ulCacheSize;
> };
>
>
>
>
>
>
------------------------------------------------------------
------------
>
> _______________________________________________
> Common-dev mailing list
> Common-dev helixcommunity.org
> http://lists.helixcommunity.org/mailman/listinfo/comm
on-dev
_______________________________________________
Clientapps-dev mailing list
Clientapps-dev helixcommunity.org
http://lists.helixcommunity.org/mailman/listinfo/
clientapps-dev
|
|
[1-3]
|
|