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

Reply via email to