Project: Real Player for MID - ARM.

Synopsis: Fix for audio jitters on audio start-up on LG-MID ARM device

Overview: When we play any file on LG-MID ARM device, we hear small audio jitters during playback startup. These jitters remain for 2-3 seconds and after that the audio jitters go away.

Currently we are using RW access mode. If we use MMAP access mode, and then instead of snd_pcm_writei() API, use snd_pcm_mmap_writei() API in _WriteBytes(), we do not hear any jitters on start-up.

A new config define HELIX_CONFIG_PCM_MMAP is applied for enabling/disabling mmap mode.

Files Modified:
audio/device/platform/unix/audlinux_alsa.cpp

Image Size and Heap Use impact (Client -Only):
None.

Platforms and Profiles Affected:
None.

Distribution Libraries Affected:
None.

Distribution library impact and planned action:
None.

Platforms and Profiles Build Verified:
BIF: hxclient_3_4_11_atlas_restricted
Target: player_mid_all_installers
Profile: helix-client-mid-arm

Branch:
Atlas_3411

Files Attached:
audlinux_alsa.diff

Thanks,
Deepak Jain

Index: audlinux_alsa.cpp
===================================================================
RCS file: /cvsroot/audio/device/platform/unix/audlinux_alsa.cpp,v
retrieving revision 1.9.2.11
diff -u -r1.9.2.11 audlinux_alsa.cpp
--- audlinux_alsa.cpp	12 Dec 2009 22:25:48 -0000	1.9.2.11
+++ audlinux_alsa.cpp	12 Jan 2010 08:57:20 -0000
@@ -733,7 +733,11 @@
 
     if (err >= 0)
     {
+#ifndef HELIX_CONFIG_PCM_MMAP
         err = snd_pcm_hw_params_set_access(m_pAlsaPCMHandle, hwparams, SND_PCM_ACCESS_RW_INTERLEAVED);
+#else
+        err = snd_pcm_hw_params_set_access(m_pAlsaPCMHandle, hwparams, SND_PCM_ACCESS_MMAP_INTERLEAVED);
+#endif //HELIX_CONFIG_PCM_MMAP
         if (err < 0) 
         {
             HXLOGL1 ( HXLOG_ADEV, "snd_pcm_hw_params_set_access: %s", snd_strerror(err));
@@ -1224,8 +1228,11 @@
     do
     {
         num_frames = snd_pcm_bytes_to_frames(m_pAlsaPCMHandle, ulBytesToWrite);
+#ifndef HELIX_CONFIG_PCM_MMAP
         err = snd_pcm_writei( m_pAlsaPCMHandle, buffer, num_frames );
-        
+#else
+        err = snd_pcm_mmap_writei( m_pAlsaPCMHandle, buffer, num_frames );
+#endif //HELIX_CONFIG_PCM_MMAP        
         if (err >= 0)
         {
             frames_written = err;

_______________________________________________
Audio-dev mailing list
Audio-dev@helixcommunity.org
http://lists.helixcommunity.org/mailman/listinfo/audio-dev

Reply via email to