Modified by: [EMAIL PROTECTED]
Date :11/04/2006
Issue :Performance issue in 150 cayenne symbian player
Overview:
In 150Cayenne symbian player video is not smooth and observed visible frame
dropping usually once per second.
This is happening because the audio device is not driving time line smoothly.
In audio\device\platform\symbian\audiosvr\mmf\audio_session-mmf.cpp file
the time calculation is based on
SamplesPlayed returned by device/samplingRate.
The HXSymbianAudioSession::BufferToBeFilled() function writes large amount
of data in device because of which
m_pStream->SamplesPlayed() function returns same value for quite some time
and then suddenly returns higher value
causing sudden time change of the tune of ~500ms.
Fix.
In HXSymbianAudioSession::BufferToBeFilled() function is writing only one
buffer from the m_bufferList at a time. This same fix
was applied in 142NeptuneX branch also.
Platform: symbian
Branch : 150Cay
File Modified:
- audio/device/platform/symbian/audiosvr/mmf/audio_session-mmf.cpp
Files Added: Nil
Thanks and Regards,
Pankaj Gupta
CVS Diff:
Index: audio_session-mmf.cpp
===================================================================
RCS file:
/cvsroot/audio/device/platform/symbian/audiosvr/mmf/audio_session-mmf.cpp,v
retrieving revision 1.4.2.6
diff -u -w -r1.4.2.6 audio_session-mmf.cpp
--- audio_session-mmf.cpp 20 Apr 2005 23:50:58 -0000 1.4.2.6
+++ audio_session-mmf.cpp 11 Apr 2006 10:30:54 -0000
@@ -981,7 +981,12 @@
//HXLOGL4(HXLOG_ADEV, "HXSymbianAudioSession::BufferToBeFilled(): req
size = %ld; dest buffer size = %lu; desc max = %lu; buffer list count =
%ld", aBuffer->RequestSize(), aBuffer->BufferSize(), dataDesc.MaxSize(),
m_bufferList.GetCount());
- while ( !m_bufferList.IsEmpty() && cbDest >= m_cbSample)
+ // Used if statement in place of while as writing complete data causes
sudden
+ // large time differences in GetTime() calls. Since
m_pStream->SamplesPlayed()
+ // returns same value for quite some time and then suddenly returns
higher value,
+ // which causes sudden jump of around 300ms-700ms in GetTime calls
causing
+ // TimeSync problem and frame dropping in vidrend.cpp
+ if ( !m_bufferList.IsEmpty() && cbDest >= m_cbSample)
{
// get buffer at front
IHXBuffer* pBuffer = (IHXBuffer*)m_bufferList.GetHead();
_______________________________________________
Audio-dev mailing list
Audio-dev@helixcommunity.org
http://lists.helixcommunity.org/mailman/listinfo/audio-dev