mmfenh/advancedaudiocontroller/audiocontrollerpluginsvariant/AdvancedAudioController/Src/AdvancedAudioDecoder.cpp
changeset 12 5a06f39ad45b
parent 0 71ca22bcf22a
equal deleted inserted replaced
0:71ca22bcf22a 12:5a06f39ad45b
   120 
   120 
   121 	CodecConfig(const_cast<RArray<TInt>&>(aCodecConfigData));
   121 	CodecConfig(const_cast<RArray<TInt>&>(aCodecConfigData));
   122 
   122 
   123 	QueueThisBuffer(aIndex); // will set iNextBuffer (current buffer) and update iSharedBufferIndex (to next buffer)
   123 	QueueThisBuffer(aIndex); // will set iNextBuffer (current buffer) and update iSharedBufferIndex (to next buffer)
   124 
   124 
   125    	if(aSourceSampleRate != aSWConvertSampleRate)  // Sampling Rate Conversion is needed
   125    	if(aSourceSampleRate != aSWConvertSampleRate && !IsHwAccelerated())  // Sampling Rate Conversion is needed
   126    		{
   126    		{
   127 	    if (!iChannelAndSampleRateConverterFactory)
   127 	    if (!iChannelAndSampleRateConverterFactory)
   128 			{
   128 			{
   129 		    iChannelAndSampleRateConverterFactory = new(ELeave) CMMFChannelAndSampleRateConverterFactory;
   129 		    iChannelAndSampleRateConverterFactory = new(ELeave) CMMFChannelAndSampleRateConverterFactory;
   130 	    	iChannelAndSampleRateConverter = iChannelAndSampleRateConverterFactory->CreateConverterL(aSourceSampleRate, aSourceChannels,
   130 	    	iChannelAndSampleRateConverter = iChannelAndSampleRateConverterFactory->CreateConverterL(aSourceSampleRate, aSourceChannels,
   419 //
   419 //
   420 void CAdvancedAudioDecoder::NextSharedBufferL()
   420 void CAdvancedAudioDecoder::NextSharedBufferL()
   421     {
   421     {
   422     CMMFBuffer* refillBuffer = NULL;
   422     CMMFBuffer* refillBuffer = NULL;
   423     // index is the next buffer, index-1 is current buffer, check 2 buffers back from the one being selected
   423     // index is the next buffer, index-1 is current buffer, check 2 buffers back from the one being selected
   424     TInt checkBufIndex = iSharedBufferIndex-2;
   424 // ou1cimx1#205863    
       
   425     //TInt checkBufIndex = iSharedBufferIndex-2;
       
   426     TInt checkBufIndex = iSharedBufferIndex- (iSharedBuffers->Count()-1) ;
   425     	
   427     	
   426     if (checkBufIndex < 0)
   428     if (checkBufIndex < 0)
   427     	{
   429     	{
   428         checkBufIndex = checkBufIndex+iSharedBuffers->Count();
   430         checkBufIndex = checkBufIndex+iSharedBuffers->Count();
   429     	}
   431     	}
   430     	
   432     	
   431     if ((*iSharedBuffers)[checkBufIndex]->Status() == EBeingEmptied)
   433     if ((*iSharedBuffers)[checkBufIndex]->Status() == EBeingEmptied)
   432         {
   434         {
   433         if (iSharedBuffers->Count() <= 2)
   435 // ou1cimx1#205863
       
   436 /*        if (iSharedBuffers->Count() <= 2)
   434             {
   437             {
   435             DP1(_L("CAdvancedAudioDecoder::NextSharedBufferL leave, EBeingEmptied is used on Count[%d]"), iSharedBuffers->Count());
   438             DP1(_L("CAdvancedAudioDecoder::NextSharedBufferL leave, EBeingEmptied is used on Count[%d]"), iSharedBuffers->Count());
   436             User::Leave(KErrAbort);
   439             User::Leave(KErrAbort);
   437             }
   440             }
       
   441 */            
   438         DP2(_L("CAdvancedAudioDecoder::NextSharedBufferL, index[%d] [%x] is EBeingEmptied"), 
   442         DP2(_L("CAdvancedAudioDecoder::NextSharedBufferL, index[%d] [%x] is EBeingEmptied"), 
   439             	checkBufIndex, static_cast<CMMFDataBuffer*>((*iSharedBuffers)[checkBufIndex])->Data().Ptr() );
   443             	checkBufIndex, static_cast<CMMFDataBuffer*>((*iSharedBuffers)[checkBufIndex])->Data().Ptr() );
   440         refillBuffer = (*iSharedBuffers)[checkBufIndex];
   444         refillBuffer = (*iSharedBuffers)[checkBufIndex];
   441 	    }
   445 	    }
   442 	if (refillBuffer)
   446 	if (refillBuffer)
   486 EXPORT_C void CAdvancedAudioDecoder::HandleFillBufferL()
   490 EXPORT_C void CAdvancedAudioDecoder::HandleFillBufferL()
   487 	{
   491 	{
   488     DP3(_L("CAdvancedAudioDecoder::HandleFillBufferL ptr[%x] iRenderEnabled[%d] Position[%d]"), static_cast<CMMFDataBuffer*>(iNextBuffer)->Data().Ptr(), iRenderEnabled, iNextBuffer->Position());
   492     DP3(_L("CAdvancedAudioDecoder::HandleFillBufferL ptr[%x] iRenderEnabled[%d] Position[%d]"), static_cast<CMMFDataBuffer*>(iNextBuffer)->Data().Ptr(), iRenderEnabled, iNextBuffer->Position());
   489     DP3(_L("CAdvancedAudioDecoder::HandleFillBufferL frm#[%d] d0[%x] dp[%x]"), static_cast<CMMFDataBuffer*>(iNextBuffer)->FrameNumber(), static_cast<CMMFDataBuffer*>(iNextBuffer)->Data().Ptr()[0],
   493     DP3(_L("CAdvancedAudioDecoder::HandleFillBufferL frm#[%d] d0[%x] dp[%x]"), static_cast<CMMFDataBuffer*>(iNextBuffer)->FrameNumber(), static_cast<CMMFDataBuffer*>(iNextBuffer)->Data().Ptr()[0],
   490      static_cast<CMMFDataBuffer*>(iNextBuffer)->Data().Ptr()[iNextBuffer->Position()]);
   494      static_cast<CMMFDataBuffer*>(iNextBuffer)->Data().Ptr()[iNextBuffer->Position()]);
   491 
   495 // ou1cimx1#205863
   492     iBufferToFill->SetPosition(0);
   496 //    iBufferToFill->SetPosition(0);
   493 	static_cast<CMMFDataBuffer*>(iBufferToFill)->Data().SetLength(0);
   497 //	static_cast<CMMFDataBuffer*>(iBufferToFill)->Data().SetLength(0);
   494     iBufferToFill->SetLastBuffer(EFalse);
   498     iBufferToFill->SetLastBuffer(EFalse);
   495 
   499 
   496     TCodecProcessResult result;
   500     TCodecProcessResult result;
   497     TBool moreProcessing = ETrue;
   501     TBool moreProcessing = ETrue;
   498 
   502