mmfenh/advancedaudiocontroller/audiocontrollerpluginsvariant/AdvancedAudioController/Src/AdvancedAudioPlayController.cpp
--- a/mmfenh/advancedaudiocontroller/audiocontrollerpluginsvariant/AdvancedAudioController/Src/AdvancedAudioPlayController.cpp Tue Feb 02 01:08:46 2010 +0200
+++ b/mmfenh/advancedaudiocontroller/audiocontrollerpluginsvariant/AdvancedAudioController/Src/AdvancedAudioPlayController.cpp Fri Apr 16 15:29:42 2010 +0300
@@ -684,6 +684,7 @@
TRAP(err, DoPauseL(ETrue)); // this is a preemption pause
// In case of pre-emption we should only Pause ... but not Stop.
SendEventToClient(TMMFEvent(KMMFEventCategoryPlaybackComplete, aError));
+ SendEventToClient(TMMFEvent(KStreamControlEventStateChangedPaused, aError));
}
// -----------------------------------------------------------------------------
@@ -783,6 +784,7 @@
MDataSource& aSource)
{
DP1(_L("CAdvancedAudioPlayController::AddDataSourceL this[%x]"), this);
+ DP2(_L("CAdvancedAudioController::AddDataSourceL iSharedBufferMaxNum[%d] iSharedBufferMaxSize[%d]"), iSharedBufferMaxNum, iSharedBufferMaxSize);
iSourceUnreadable = EFalse;
iEnablePrimedStateChangedEvent = EFalse;
// source type is intended to not be needed by controllers
@@ -798,11 +800,6 @@
{
User::Leave(KErrAlreadyExists);
}
- if (iSharedBufferMaxNum <= 2)
- {
- iSharedBufferMaxNum = 3;
- }
-
// set iReadHeader here in case prime is not called before set position is used.
// reset before adding data source
@@ -843,6 +840,17 @@
// we need to block this until duration is calculated if using mmfplayutility
iBlockDuration = EFalse;
+// ou1cimx1#205863
+ if (!iDataSourceAdapter->IsLocalPlayback())
+ {
+ DP0(_L("CAdvancedAudioPlayController::AddDataSourceL not file source"));
+ if (iSharedBufferMaxNum <= 2)
+ {
+ iSharedBufferMaxNum = 3;
+ }
+ iSharedBufferMaxSize = iSharedBufferMaxSizeForNonSeekableSrc;
+ DP2(_L("CAdvancedAudioPlayController::AddDataSourceL new iSharedBufferMaxNum[%d] iSharedBufferMaxSize[%d]"), iSharedBufferMaxNum, iSharedBufferMaxSize);
+ }
if ((!iEventsEnabled) && (!iDataSourceAdapter->OnlyHeaderPresent()))
{
@@ -2240,11 +2248,17 @@
RArray<TInt>& codecConfigData = const_cast<RArray<TInt>&>(iAudioResource->CodecConfigParametersL());
// Override default values with values found from header, if available
GetCodecConfigData(codecConfigData);
- iAudioOutput->ConfigureL(iSampleRate, iSinkNumChannels, iDataType, codecConfigData);
- DP0(_L("CAdvancedAudioPlayController::DoInitializeSinkL, output configured"));
- iAudioOutput->PrimeL();
- DP0(_L("CAdvancedAudioPlayController::DoInitializeSinkL, output primed"));
-
+ if (!iAudioOutput)
+ {
+ User::Leave(KErrNotReady);
+ }
+ else
+ {
+ iAudioOutput->ConfigureL(iSampleRate, iSinkNumChannels, iDataType, codecConfigData);
+ DP0(_L("CAdvancedAudioPlayController::DoInitializeSinkL, output configured"));
+ iAudioOutput->PrimeL();
+ DP0(_L("CAdvancedAudioPlayController::DoInitializeSinkL, output primed"));
+ }
// we would use this code when we have a NULL sink
/* if (iDuration > 0)
{