From e3dbfbccfd8c412dd4c80660e2ea58bef450e775 Mon Sep 17 00:00:00 2001
From: Tristan Matthews <tristan.matthews@savoirfairelinux.com>
Date: Fri, 19 Aug 2011 11:46:30 -0400
Subject: [PATCH] * #6692: alsalayer cleanup

---
 daemon/src/audio/alsa/alsalayer.cpp | 236 +++++++++++-----------------
 daemon/src/audio/alsa/alsalayer.h   |  12 +-
 2 files changed, 96 insertions(+), 152 deletions(-)

diff --git a/daemon/src/audio/alsa/alsalayer.cpp b/daemon/src/audio/alsa/alsalayer.cpp
index a24aeef2e8..067b7a8ddd 100644
--- a/daemon/src/audio/alsa/alsalayer.cpp
+++ b/daemon/src/audio/alsa/alsalayer.cpp
@@ -41,7 +41,7 @@ AlsaLayer::AlsaLayer (ManagerImpl* manager)
     , _CaptureHandle (NULL)
     , _periodSize (160)
     , _audioPlugin ("default")
-    , IDSoundCards()
+    , IDSoundCards_()
     , _is_prepared_playback (false)
     , _is_prepared_capture (false)
     , _is_running_playback (false)
@@ -118,7 +118,7 @@ AlsaLayer::openDevice (int indexIn, int indexOut, int indexRing, int sampleRate,
     _audioSampleRate = sampleRate;
     _frameSize = frameSize;
 
-    _audioPlugin = std::string (plugin);
+    _audioPlugin = plugin;
 
     _debugAlsa (" Setting AlsaLayer: device     in=%2d, out=%2d, ring=%2d", _indexIn, _indexOut, _indexRing);
     _debugAlsa ("                   : alsa plugin=%s", _audioPlugin.c_str());
@@ -129,9 +129,8 @@ AlsaLayer::openDevice (int indexIn, int indexOut, int indexRing, int sampleRate,
 
     // use 1 sec buffer for resampling
     _converter = new SamplerateConverter (_audioSampleRate);
-
-    AudioLayer::_dcblocker = new DcBlocker();
-    AudioLayer::_audiofilter = new AudioProcessing (_dcblocker);
+    _dcblocker = new DcBlocker;
+    _audiofilter = new AudioProcessing (_dcblocker);
 }
 
 void
@@ -163,13 +162,11 @@ AlsaLayer::startStream (void)
     _debug ("pcmr: %s, index %d", pcmr.c_str(), _indexRing);
     _debug ("pcmc: %s, index %d", pcmc.c_str(), _indexIn);
 
-    if (!is_capture_open()) {
+    if (!is_capture_open())
         open_device (pcmp, pcmc, pcmr, SFL_PCM_CAPTURE);
-    }
 
-    if (!is_playback_open()) {
+    if (!is_playback_open())
         open_device (pcmp, pcmc, pcmr, SFL_PCM_PLAYBACK);
-    }
 
     prepareCaptureStream ();
     preparePlaybackStream ();
@@ -243,7 +240,6 @@ void AlsaLayer::setNoiseSuppressState (bool state)
 
 }
 
-
 //////////////////////////////////////////////////////////////////////////////////////////////
 /////////////////   ALSA PRIVATE FUNCTIONS   ////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////////////////////////////
@@ -255,40 +251,36 @@ void AlsaLayer::stopCaptureStream (void)
     if (_CaptureHandle) {
         _debug ("Audio: Stop ALSA capture");
 
-        if ( (err = snd_pcm_drop (_CaptureHandle)) < 0) {
+        if ((err = snd_pcm_drop (_CaptureHandle)) < 0)
             _debug ("Audio: Error: stopping ALSA capture: %s", snd_strerror (err));
-        } else {
+        else
             stop_capture ();
-        }
     }
 }
 
 void AlsaLayer::closeCaptureStream (void)
 {
-    int err;
-
     if (is_capture_prepared() == true && is_capture_running() == true)
         stopCaptureStream ();
 
     if (is_capture_open()) {
         _debug ("Audio: Close ALSA capture");
 
-        if ( (err = snd_pcm_close (_CaptureHandle)) < 0) {
+        int err;
+        if ((err = snd_pcm_close (_CaptureHandle)) < 0)
             _debug ("Audio: Error: Closing ALSA capture: %s", snd_strerror (err));
-        } else {
+        else
             close_capture ();
-        }
     }
 }
 
 void AlsaLayer::startCaptureStream (void)
 {
-    int err;
-
     if (_CaptureHandle && !is_capture_running()) {
         _debug ("Audio: Start ALSA capture");
 
-        if ( (err = snd_pcm_start (_CaptureHandle)) < 0)
+        int err;
+        if ((err = snd_pcm_start (_CaptureHandle)) < 0)
             _debug ("Error starting ALSA capture: %s",  snd_strerror (err));
         else
             start_capture();
@@ -311,20 +303,19 @@ void AlsaLayer::prepareCaptureStream (void)
 
 void AlsaLayer::stopPlaybackStream (void)
 {
-    int err;
-
     if (_RingtoneHandle && is_playback_running()) {
         _debug ("Audio: Stop ALSA ringtone");
 
-        if ( (err = snd_pcm_drop (_RingtoneHandle)) < 0) {
+        int err;
+        if ((err = snd_pcm_drop (_RingtoneHandle)) < 0)
             _debug ("Audio: Error: Stop ALSA ringtone: %s", snd_strerror (err));
-        }
     }
 
     if (_PlaybackHandle && is_playback_running()) {
         _debug ("Audio: Stop ALSA playback");
 
-        if ( (err = snd_pcm_drop (_PlaybackHandle)) < 0)
+        int err;
+        if ((err = snd_pcm_drop (_PlaybackHandle)) < 0)
             _debug ("Audio: Error: Stopping ALSA playback: %s", snd_strerror (err));
         else
             stop_playback ();
@@ -334,23 +325,18 @@ void AlsaLayer::stopPlaybackStream (void)
 
 void AlsaLayer::closePlaybackStream (void)
 {
-    int err;
-
     if (is_playback_prepared() == true && is_playback_running() == true)
         stopPlaybackStream ();
 
-
     if (is_playback_open()) {
 
         _debug ("Audio: Close ALSA playback");
 
-        if (_RingtoneHandle) {
-            if ( (err = snd_pcm_close (_RingtoneHandle)) < 0) {
+        int err;
+        if (_RingtoneHandle and (err = snd_pcm_close (_RingtoneHandle)) < 0)
                 _warn ("Audio: Error: Closing ALSA ringtone: %s", snd_strerror (err));
-            }
-        }
 
-        if ( (err = snd_pcm_close (_PlaybackHandle)) < 0)
+        if ((err = snd_pcm_close (_PlaybackHandle)) < 0)
             _warn ("Audio: Error: Closing ALSA playback: %s", snd_strerror (err));
         else
             close_playback ();
@@ -360,12 +346,11 @@ void AlsaLayer::closePlaybackStream (void)
 
 void AlsaLayer::startPlaybackStream (void)
 {
-    int err;
-
     if (_PlaybackHandle && !is_playback_running()) {
         _debug ("Audio: Start ALSA playback");
 
-        if ( (err = snd_pcm_start (_PlaybackHandle)) < 0)
+        int err;
+        if ((err = snd_pcm_start (_PlaybackHandle)) < 0)
             _debug ("Audio: Error: Starting ALSA playback: %s", snd_strerror (err));
         else
             start_playback();
@@ -374,27 +359,21 @@ void AlsaLayer::startPlaybackStream (void)
 
 void AlsaLayer::preparePlaybackStream (void)
 {
-    int err;
-
     if (is_playback_open() && !is_playback_prepared()) {
         _debug ("Audio: Prepare playback stream");
 
-        if ( (err = snd_pcm_prepare (_PlaybackHandle)) < 0)
+        int err;
+        if ((err = snd_pcm_prepare (_PlaybackHandle)) < 0)
             _debug ("Audio: Preparing the device: %s", snd_strerror (err));
         else
             prepare_playback ();
     }
 }
 
-bool AlsaLayer::alsa_set_params (snd_pcm_t *pcm_handle, int type, int rate)
+bool AlsaLayer::alsa_set_params (snd_pcm_t *pcm_handle, int type)
 {
-
     snd_pcm_hw_params_t *hwparams = NULL;
     snd_pcm_sw_params_t *swparams = NULL;
-    unsigned int exact_ivalue;
-    unsigned long exact_lvalue;
-    int dir;
-    int err;
     int format;
     int periods = 4;
     int periodsize = 160;
@@ -405,12 +384,13 @@ bool AlsaLayer::alsa_set_params (snd_pcm_t *pcm_handle, int type, int rate)
     _periodSize = periodsize;
     /* Full configuration space */
 
-    if ( (err = snd_pcm_hw_params_any (pcm_handle, hwparams)) < 0) {
+    int err;
+    if ((err = snd_pcm_hw_params_any (pcm_handle, hwparams)) < 0) {
         _debugAlsa ("Audio: Error: Cannot initialize hardware parameter structure (%s)", snd_strerror (err));
         return false;
     }
 
-    if ( (err = snd_pcm_hw_params_set_access (pcm_handle, hwparams, SND_PCM_ACCESS_RW_INTERLEAVED)) < 0) {
+    if ((err = snd_pcm_hw_params_set_access (pcm_handle, hwparams, SND_PCM_ACCESS_RW_INTERLEAVED)) < 0) {
         _debugAlsa ("Audio: Error: Cannot set access type (%s)", snd_strerror (err));
         return false;
     }
@@ -418,69 +398,64 @@ bool AlsaLayer::alsa_set_params (snd_pcm_t *pcm_handle, int type, int rate)
     /* Set sample format */
     format = SND_PCM_FORMAT_S16_LE;
 
-    if ( (err = snd_pcm_hw_params_set_format (pcm_handle, hwparams, (snd_pcm_format_t) format)) < 0) {
+    if ((err = snd_pcm_hw_params_set_format (pcm_handle, hwparams, (snd_pcm_format_t) format)) < 0) {
         _debugAlsa ("Audio: Error: Cannot set sample format (%s)", snd_strerror (err));
         return false;
     }
 
     /* Set sample rate. If we can't set to the desired exact value, we set to the nearest acceptable */
-    dir=0;
-
-    rate = _audioSampleRate;
+    int dir = 0;
 
-    exact_ivalue = rate;
+    unsigned int exact_ivalue = _audioSampleRate;
 
-    if ( (err = snd_pcm_hw_params_set_rate_near (pcm_handle, hwparams, &exact_ivalue, &dir) < 0)) {
+    if ((err = snd_pcm_hw_params_set_rate_near (pcm_handle, hwparams, &exact_ivalue, &dir) < 0)) {
         _debugAlsa ("Audio: Error: Cannot set sample rate (%s)", snd_strerror (err));
         return false;
     } else
-        _debug ("Audio: Set audio rate to %d", rate);
+        _debug ("Audio: Set audio rate to %d", _audioSampleRate);
 
-    if (dir!= 0) {
-        _debugAlsa ("Audio: Error: (%i) The chosen rate %d Hz is not supported by your hardware.Using %d Hz instead. ",type ,rate, exact_ivalue);
+    if (dir != 0) {
+        _debugAlsa ("Audio: Error: (%i) The chosen rate %d Hz is not supported by your hardware.Using %d Hz instead. ", type , _audioSampleRate, exact_ivalue);
+        _audioSampleRate = exact_ivalue;
     }
 
     /* Set the number of channels */
-    if ( (err = snd_pcm_hw_params_set_channels (pcm_handle, hwparams, 1)) < 0) {
+    if ((err = snd_pcm_hw_params_set_channels (pcm_handle, hwparams, 1)) < 0) {
         _debugAlsa ("Audio: Error: Cannot set channel count (%s)", snd_strerror (err));
         return false;
     }
 
     /* Set the buffer size in frames */
-    exact_lvalue = periodsize;
+    unsigned long exact_lvalue = periodsize;
 
-    dir=0;
+    dir = 0;
 
-    if ( (err = snd_pcm_hw_params_set_period_size_near (pcm_handle, hwparams, &exact_lvalue , &dir)) < 0) {
+    if ((err = snd_pcm_hw_params_set_period_size_near (pcm_handle, hwparams, &exact_lvalue, &dir)) < 0) {
         _debugAlsa ("Audio: Error: Cannot set period time (%s)", snd_strerror (err));
         return false;
     }
 
-    if (dir!=0) {
-        _debugAlsa ("Audio: Warning: (%i) The chosen period size %d bytes is not supported by your hardware.Using %d instead. ", type, (int) periodsize, (int) exact_lvalue);
-    }
-
-    periodsize = exact_lvalue;
+    if (dir != 0)
+        _debugAlsa ("Audio: Warning: (%i) The chosen period size %lu bytes is not supported by your hardware.Using %lu instead. ", type, periodsize, exact_lvalue);
 
     _periodSize = exact_lvalue;
     /* Set the number of fragments */
     exact_ivalue = periods;
-    dir=0;
+    dir = 0;
 
-    if ( (err = snd_pcm_hw_params_set_periods_near (pcm_handle, hwparams, &exact_ivalue, &dir)) < 0) {
+    if ((err = snd_pcm_hw_params_set_periods_near (pcm_handle, hwparams, &exact_ivalue, &dir)) < 0) {
         _debugAlsa ("Audio: Error: Cannot set periods number (%s)", snd_strerror (err));
         return false;
     }
 
-    if (dir!=0) {
+    if (dir != 0)
         _debugAlsa ("Audio: Warning: The chosen period number %i bytes is not supported by your hardware.Using %i instead. ", periods, exact_ivalue);
-    }
 
-    periods=exact_ivalue;
+    periods = exact_ivalue;
 
     /* Set the hw parameters */
 
-    if ( (err = snd_pcm_hw_params (pcm_handle, hwparams)) < 0) {
+    if ((err = snd_pcm_hw_params (pcm_handle, hwparams)) < 0) {
         _debugAlsa ("Audio: Error: Cannot set hw parameters (%s)", snd_strerror (err));
         return false;
     }
@@ -493,12 +468,12 @@ bool AlsaLayer::alsa_set_params (snd_pcm_t *pcm_handle, int type, int rate)
 
     /* Set the start threshold */
 
-    if ( (err = snd_pcm_sw_params_set_start_threshold (pcm_handle, swparams, _periodSize*2)) < 0) {
+    if ((err = snd_pcm_sw_params_set_start_threshold(pcm_handle, swparams, _periodSize * 2)) < 0) {
         _debugAlsa ("Audio: Error: Cannot set start threshold (%s)", snd_strerror (err));
         return false;
     }
 
-    if ( (err = snd_pcm_sw_params (pcm_handle, swparams)) < 0) {
+    if ((err = snd_pcm_sw_params (pcm_handle, swparams)) < 0) {
         _debugAlsa ("Audio: Error: Cannot set sw parameters (%s)", snd_strerror (err));
         return false;
     }
@@ -511,20 +486,19 @@ bool AlsaLayer::alsa_set_params (snd_pcm_t *pcm_handle, int type, int rate)
 bool
 AlsaLayer::open_device (std::string pcm_p, std::string pcm_c, std::string pcm_r, int flag)
 {
-    int err;
-
-    if (flag == SFL_PCM_BOTH || flag == SFL_PCM_PLAYBACK) {
+    if (flag == SFL_PCM_BOTH or flag == SFL_PCM_PLAYBACK) {
 
         _debug ("Audio: Open playback device (and ringtone)");
 
-        if ( (err = snd_pcm_open (&_PlaybackHandle, pcm_p.c_str(), SND_PCM_STREAM_PLAYBACK, 0)) < 0) {
+        int err;
+        if ((err = snd_pcm_open (&_PlaybackHandle, pcm_p.c_str(), SND_PCM_STREAM_PLAYBACK, 0)) < 0) {
             _warn ("Audio: Error while opening playback device %s",  pcm_p.c_str());
             setErrorMessage (ALSA_PLAYBACK_DEVICE);
             close_playback ();
             return false;
         }
 
-        if (!alsa_set_params (_PlaybackHandle, 1, getSampleRate())) {
+        if (!alsa_set_params (_PlaybackHandle, 1)) {
             _warn ("Audio: Error: Playback failed");
             snd_pcm_close (_PlaybackHandle);
             close_playback ();
@@ -533,25 +507,23 @@ AlsaLayer::open_device (std::string pcm_p, std::string pcm_c, std::string pcm_r,
 
         if (getIndexOut() != getIndexRing()) {
 
-            if ( (err = snd_pcm_open (&_RingtoneHandle, pcm_r.c_str(), SND_PCM_STREAM_PLAYBACK, 0)) < 0) {
+            if ((err = snd_pcm_open (&_RingtoneHandle, pcm_r.c_str(), SND_PCM_STREAM_PLAYBACK, 0)) < 0)
                 _warn ("Audio: Error: Opening ringtone device %s", pcm_r.c_str());
-            }
 
-            if (!alsa_set_params (_RingtoneHandle, 1, getSampleRate())) {
+            if (!alsa_set_params (_RingtoneHandle, 1)) {
                 _warn ("Audio: Error: Ringtone failed");
                 snd_pcm_close (_RingtoneHandle);
-
             }
         }
 
         open_playback ();
     }
 
-    if (flag == SFL_PCM_BOTH || flag == SFL_PCM_CAPTURE) {
+    if (flag == SFL_PCM_BOTH or flag == SFL_PCM_CAPTURE) {
 
         _debug ("Audio: Open capture device");
 
-        if ( (err = snd_pcm_open (&_CaptureHandle,  pcm_c.c_str(),  SND_PCM_STREAM_CAPTURE, 0)) < 0) {
+        if (snd_pcm_open (&_CaptureHandle,  pcm_c.c_str(),  SND_PCM_STREAM_CAPTURE, 0) < 0) {
             _warn ("Audio: Error: Opening capture device %s",  pcm_c.c_str());
 
             setErrorMessage (ALSA_CAPTURE_DEVICE);
@@ -559,7 +531,7 @@ AlsaLayer::open_device (std::string pcm_p, std::string pcm_c, std::string pcm_r,
             return false;
         }
 
-        if (!alsa_set_params (_CaptureHandle, 0, 8000)) {
+        if (!alsa_set_params (_CaptureHandle, 0)) {
             _warn ("Audio: Error: Capture failed");
             snd_pcm_close (_CaptureHandle);
             close_capture ();
@@ -576,7 +548,7 @@ AlsaLayer::open_device (std::string pcm_p, std::string pcm_c, std::string pcm_r,
 int
 AlsaLayer::write (void* buffer, int length, snd_pcm_t * handle)
 {
-    if (_trigger_request == true) {
+    if (_trigger_request) {
         _trigger_request = false;
         startPlaybackStream ();
     }
@@ -584,20 +556,16 @@ AlsaLayer::write (void* buffer, int length, snd_pcm_t * handle)
     snd_pcm_uframes_t frames = snd_pcm_bytes_to_frames (handle, length);
 
     int err;
-
-    if ( (err=snd_pcm_writei (handle, buffer , frames)) <0) {
+    if ((err = snd_pcm_writei (handle, buffer , frames)) < 0) {
         switch (err) {
 
             case -EPIPE:
-
             case -ESTRPIPE:
-
             case -EIO:
                 handle_xrun_playback (handle);
 
-                if (snd_pcm_writei (handle, buffer , frames) <0) {
+                if (snd_pcm_writei (handle, buffer , frames) < 0)
                     _debugAlsa ("Audio: XRUN handling failed");
-                }
 
                 _trigger_request = true;
 
@@ -616,8 +584,6 @@ AlsaLayer::write (void* buffer, int length, snd_pcm_t * handle)
 int
 AlsaLayer::read (void* buffer, int toCopy)
 {
-    int samples;
-
     if (snd_pcm_state (_CaptureHandle) == SND_PCM_STATE_XRUN) {
         prepareCaptureStream ();
         startCaptureStream ();
@@ -625,20 +591,19 @@ AlsaLayer::read (void* buffer, int toCopy)
 
     snd_pcm_uframes_t frames = snd_pcm_bytes_to_frames (_CaptureHandle, toCopy);
 
-    if ( (samples = snd_pcm_readi (_CaptureHandle, buffer, frames)) < 0) {
-        switch (samples) {
+    int err;
+    if ((err = snd_pcm_readi (_CaptureHandle, buffer, frames)) < 0) {
+        switch (err) {
 
             case -EPIPE:
-
             case -ESTRPIPE:
-
             case -EIO:
-                _debugAlsa ("Audio: XRUN capture ignored (%s)", snd_strerror (samples));
+                _debugAlsa ("Audio: XRUN capture ignored (%s)", snd_strerror (err));
                 handle_xrun_capture();
                 break;
 
             case EPERM:
-                _debugAlsa ("Audio: Capture EPERM (%s)", snd_strerror (samples));
+                _debugAlsa ("Audio: Capture EPERM (%s)", snd_strerror (err));
                 prepareCaptureStream ();
                 startCaptureStream ();
                 break;
@@ -661,9 +626,7 @@ AlsaLayer::handle_xrun_capture (void)
     snd_pcm_status_t* status;
     snd_pcm_status_alloca (&status);
 
-    int res = snd_pcm_status (_CaptureHandle, status);
-
-    if (res <= 0) {
+    if (snd_pcm_status(_CaptureHandle, status) <= 0) {
         if (snd_pcm_status_get_state (status) == SND_PCM_STATE_XRUN) {
             stopCaptureStream ();
             prepareCaptureStream ();
@@ -678,14 +641,14 @@ AlsaLayer::handle_xrun_playback (snd_pcm_t *handle)
 {
     _debugAlsa ("Audio: Handle xrun playback");
 
-    int state;
     snd_pcm_status_t* status;
     snd_pcm_status_alloca (&status);
 
-    if ( (state = snd_pcm_status (handle, status)) < 0)
+    int state;
+    if ((state = snd_pcm_status (handle, status)) < 0)
         _debugAlsa ("Audio: Error: Cannot get playback handle status (%s)" , snd_strerror (state));
     else {
-        state = snd_pcm_status_get_state (status);
+        int state = snd_pcm_status_get_state (status);
 
         if (state  == SND_PCM_STATE_XRUN) {
             _debug ("Audio: audio device in state SND_PCM_STATE_XRUN, restart device");
@@ -698,10 +661,10 @@ AlsaLayer::handle_xrun_playback (snd_pcm_t *handle)
 }
 
 std::string
-AlsaLayer::buildDeviceTopo (std::string plugin, int card, int subdevice)
+AlsaLayer::buildDeviceTopo (const std::string &plugin, int card, int subdevice)
 {
     std::stringstream ss,ss1;
-    std::string pcm = plugin;
+    std::string pcm(plugin);
 
     if (pcm == PCM_DEFAULT)
         return pcm;
@@ -726,9 +689,6 @@ AlsaLayer::buildDeviceTopo (std::string plugin, int card, int subdevice)
 std::vector<std::string>
 AlsaLayer::getSoundCardsInfo (int stream)
 {
-    std::vector<std::string> cards_id;
-    HwIDPair p;
-
     _debug ("Audio: Get sound cards info: ");
 
     snd_ctl_t* handle;
@@ -740,6 +700,7 @@ AlsaLayer::getSoundCardsInfo (int stream)
     int numCard = -1 ;
     std::string description;
 
+    std::vector<std::string> cards_id;
     if (snd_card_next (&numCard) < 0 || numCard < 0)
         return cards_id;
 
@@ -765,27 +726,23 @@ AlsaLayer::getSoundCardsInfo (int stream)
                     description.append (snd_pcm_info_get_name (pcminfo));
                     cards_id.push_back (description);
                     // The number of the sound card is associated with a string description
-                    p = HwIDPair (numCard , description);
-                    IDSoundCards.push_back (p);
-
+                    IDSoundCards_.push_back(HwIDPair(numCard , description));
                 }
             }
 
             snd_ctl_close (handle);
         }
 
-        if (snd_card_next (&numCard) < 0) {
+        if (snd_card_next (&numCard) < 0)
             break;
-        }
     }
 
     return cards_id;
 }
 
 
-
 bool
-AlsaLayer::soundCardIndexExist (int card , int stream)
+AlsaLayer::soundCardIndexExist (int card, int stream)
 {
     snd_ctl_t* handle;
     snd_pcm_info_t *pcminfo;
@@ -799,22 +756,17 @@ AlsaLayer::soundCardIndexExist (int card , int stream)
 		return false;
 
     snd_pcm_info_set_stream (pcminfo , (stream == SFL_PCM_PLAYBACK) ? SND_PCM_STREAM_PLAYBACK : SND_PCM_STREAM_CAPTURE);
-	bool ret =  snd_ctl_pcm_info (handle , pcminfo) >= 0;
+	bool ret = snd_ctl_pcm_info (handle , pcminfo) >= 0;
 	snd_ctl_close(handle);
 	return ret;
 }
 
 int
-AlsaLayer::soundCardGetIndex (std::string description)
+AlsaLayer::soundCardGetIndex (const std::string &description)
 {
-    unsigned int i;
-
-    for (i = 0 ; i < IDSoundCards.size() ; i++) {
-        HwIDPair p = IDSoundCards[i];
-
-        if (p.second == description)
-            return  p.first ;
-    }
+    for (std::vector<HwIDPair>::const_iterator iter = IDSoundCards_.begin(); iter != IDSoundCards_.end(); ++iter)
+        if (iter->second == description)
+            return iter->first;
 
     // else return the default one
     return 0;
@@ -822,33 +774,27 @@ AlsaLayer::soundCardGetIndex (std::string description)
 
 void AlsaLayer::audioCallback (void)
 {
-
-    int urgentAvailBytes;
-    unsigned short spkrVolume, micVolume;
-    AudioLoop *tone;
-    AudioLoop *file_tone;
     unsigned int _mainBufferSampleRate = getMainBuffer()->getInternalSamplingRate();
     bool resample = _audioSampleRate != _mainBufferSampleRate;
 
     notifyincomingCall();
 
-    spkrVolume = _manager->getSpkrVolume();
-    micVolume  = _manager->getMicVolume();
+    unsigned short spkrVolume = _manager->getSpkrVolume();
 
-    tone = _manager->getTelephoneTone();
-    file_tone = _manager->getTelephoneFile();
+    AudioLoop *tone = _manager->getTelephoneTone();
+    AudioLoop *file_tone = _manager->getTelephoneFile();
 
     // AvailForGet tell the number of chars inside the buffer
     // framePerBuffer are the number of data for one channel (left)
-    urgentAvailBytes = _urgentRingBuffer.AvailForGet();
+    int urgentAvailBytes = _urgentRingBuffer.AvailForGet();
 
-    if (!_PlaybackHandle || !_CaptureHandle)
+    if (!_PlaybackHandle or !_CaptureHandle)
         return;
 
     snd_pcm_wait (_PlaybackHandle, 20);
 
     int playbackAvailSmpl = snd_pcm_avail_update (_PlaybackHandle);
-    int playbackAvailBytes = playbackAvailSmpl*sizeof (SFLDataFormat);
+    int playbackAvailBytes = playbackAvailSmpl * sizeof (SFLDataFormat);
 
     if (urgentAvailBytes > 0) {
         // Urgent data (dtmf, incoming call signal) come first.
@@ -917,7 +863,6 @@ void AlsaLayer::audioCallback (void)
     }
 
     if (file_tone && _RingtoneHandle) {
-
         int ringtoneAvailSmpl = snd_pcm_avail_update (_RingtoneHandle);
         int ringtoneAvailBytes = ringtoneAvailSmpl*sizeof (SFLDataFormat);
         SFLDataFormat *out = (SFLDataFormat *) malloc (ringtoneAvailBytes);
@@ -925,7 +870,6 @@ void AlsaLayer::audioCallback (void)
 		write (out, ringtoneAvailBytes, _RingtoneHandle);
 		free (out);
     } else if (_RingtoneHandle) {
-
         int ringtoneAvailSmpl = snd_pcm_avail_update (_RingtoneHandle);
         int ringtoneAvailBytes = ringtoneAvailSmpl*sizeof (SFLDataFormat);
 
@@ -979,9 +923,9 @@ void AlsaLayer::audioCallback (void)
     free (in);
 }
 
-void AlsaLayer::adjustVolume (SFLDataFormat *src , int samples, int volume)
+void AlsaLayer::adjustVolume (SFLDataFormat *src , int samples, int volumePercentage)
 {
-    if (volume != 100)
+    if (volumePercentage != 100)
         for (int i = 0 ; i < samples; i++)
-            src[i] = src[i] * volume / 100 ;
+            src[i] = src[i] * volumePercentage * 0.01;
 }
diff --git a/daemon/src/audio/alsa/alsalayer.h b/daemon/src/audio/alsa/alsalayer.h
index f35f322a4b..9084808530 100644
--- a/daemon/src/audio/alsa/alsalayer.h
+++ b/daemon/src/audio/alsa/alsalayer.h
@@ -116,7 +116,7 @@ class AlsaLayer : public AudioLayer
          * @param subdevice the subdevice number
          * @return std::string the concatenated string
          */
-        std::string buildDeviceTopo (std::string plugin, int card, int subdevice);
+        std::string buildDeviceTopo (const std::string &plugin, int card, int subdevice);
 
         /**
          * Scan the sound card available on the system
@@ -145,13 +145,13 @@ class AlsaLayer : public AudioLayer
          * @param description The string description
          * @return	int	  Its index
          */
-        int soundCardGetIndex (std::string description);
+        int soundCardGetIndex (const std::string &description);
 
         /**
          * Get the current audio plugin.
          * @return std::string  The name of the audio plugin
          */
-        std::string getAudioPlugin (void) {
+        std::string getAudioPlugin (void) const {
             return _audioPlugin;
         }
 
@@ -260,7 +260,7 @@ class AlsaLayer : public AudioLayer
          */
         bool open_device (std::string pcm_p, std::string pcm_c, std::string pcm_r,  int flag);
 
-        bool alsa_set_params (snd_pcm_t *pcm_handle, int type, int rate);
+        bool alsa_set_params (snd_pcm_t *pcm_handle, int type);
 
         /**
          * Copy a data buffer in the internal ring buffer
@@ -292,7 +292,7 @@ class AlsaLayer : public AudioLayer
          */
         void handle_xrun_playback (snd_pcm_t *handle);
 
-        void adjustVolume (SFLDataFormat* buffer , int samples, int volume);
+        void adjustVolume (SFLDataFormat* buffer , int samples, int volumePercentage);
 
         /**
          * Handles to manipulate playback stream
@@ -323,7 +323,7 @@ class AlsaLayer : public AudioLayer
         std::string _audioPlugin;
 
         /** Vector to manage all soundcard index - description association of the system */
-        std::vector<HwIDPair> IDSoundCards;
+        std::vector<HwIDPair> IDSoundCards_;
 
         bool _is_prepared_playback;
         bool _is_prepared_capture;
-- 
GitLab