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 |