alsa: introduce AUDIOHW_MUTE_ON_PAUSE, and have rocker use it.
Change-Id: I1edbb8e71a9c73baaeecb01b66cbee6c3f7b5f8f
This commit is contained in:
parent
d18157608d
commit
d4a620e85a
|
@ -62,6 +62,7 @@ void audiohw_preinit(void)
|
||||||
{
|
{
|
||||||
alsa_controls_init();
|
alsa_controls_init();
|
||||||
hw_open();
|
hw_open();
|
||||||
|
audiohw_mute(true); /* Start muted to avoid the POP */
|
||||||
}
|
}
|
||||||
|
|
||||||
void audiohw_postinit(void)
|
void audiohw_postinit(void)
|
||||||
|
@ -69,7 +70,7 @@ void audiohw_postinit(void)
|
||||||
long int hp = 2;
|
long int hp = 2;
|
||||||
|
|
||||||
/* Output port switch set to Headphones */
|
/* Output port switch set to Headphones */
|
||||||
alsa_controls_set_ints("Output Port Switch", 1, &hp);
|
alsa_controls_set_ints("Output Port Switch", 1, &hp); /* Unmutes */
|
||||||
}
|
}
|
||||||
|
|
||||||
void audiohw_close(void)
|
void audiohw_close(void)
|
||||||
|
|
|
@ -5,4 +5,6 @@
|
||||||
AUDIOHW_SETTING(VOLUME, "dB", 0, 1, -127, 0, -30)
|
AUDIOHW_SETTING(VOLUME, "dB", 0, 1, -127, 0, -30)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#define AUDIOHW_MUTE_ON_PAUSE
|
||||||
|
|
||||||
void audiohw_mute(int mute);
|
void audiohw_mute(int mute);
|
||||||
|
|
|
@ -471,10 +471,6 @@ void pcm_play_dma_init(void)
|
||||||
if ((err = snd_pcm_nonblock(handle, 1)))
|
if ((err = snd_pcm_nonblock(handle, 1)))
|
||||||
panicf("Could not set non-block mode: %s\n", snd_strerror(err));
|
panicf("Could not set non-block mode: %s\n", snd_strerror(err));
|
||||||
|
|
||||||
#if defined(HAVE_XDUOO_LINUX_CODEC) || defined(HAVE_FIIO_LINUX_CODEC) || defined(HAVE_ROCKER_CODEC)
|
|
||||||
audiohw_mute(true);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
if ((err = set_hwparams(handle)) < 0)
|
if ((err = set_hwparams(handle)) < 0)
|
||||||
{
|
{
|
||||||
panicf("Setting of hwparams failed: %s\n", snd_strerror(err));
|
panicf("Setting of hwparams failed: %s\n", snd_strerror(err));
|
||||||
|
@ -525,10 +521,12 @@ static void pcm_dma_apply_settings_nolock(void)
|
||||||
logf("PCM DMA Settings %d %d", sample_rate, pcm_sampr);
|
logf("PCM DMA Settings %d %d", sample_rate, pcm_sampr);
|
||||||
if (sample_rate != pcm_sampr)
|
if (sample_rate != pcm_sampr)
|
||||||
{
|
{
|
||||||
|
#ifdef AUDIOHW_MUTE_ON_PAUSE
|
||||||
audiohw_mute(true);
|
audiohw_mute(true);
|
||||||
|
#endif
|
||||||
snd_pcm_drop(handle);
|
snd_pcm_drop(handle);
|
||||||
set_hwparams(handle);
|
set_hwparams(handle);
|
||||||
// audiohw_mute(false); /// Play DMA will unmute us.
|
/* Will be unmuted by pcm resuming */
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
|
@ -555,7 +553,13 @@ void pcm_dma_apply_settings(void)
|
||||||
void pcm_play_dma_pause(bool pause)
|
void pcm_play_dma_pause(bool pause)
|
||||||
{
|
{
|
||||||
logf("PCM DMA pause %d", pause);
|
logf("PCM DMA pause %d", pause);
|
||||||
|
#ifdef AUDIOHW_MUTE_ON_PAUSE
|
||||||
|
if (pause) audiohw_mute(true);
|
||||||
|
#endif
|
||||||
snd_pcm_pause(handle, pause);
|
snd_pcm_pause(handle, pause);
|
||||||
|
#ifdef AUDIOHW_MUTE_ON_PAUSE
|
||||||
|
if (!pause) audiohw_mute(false);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void pcm_play_dma_stop(void)
|
void pcm_play_dma_stop(void)
|
||||||
|
@ -564,7 +568,7 @@ void pcm_play_dma_stop(void)
|
||||||
snd_pcm_drain(handle);
|
snd_pcm_drain(handle);
|
||||||
snd_pcm_nonblock(handle, 1);
|
snd_pcm_nonblock(handle, 1);
|
||||||
sample_rate = 0;
|
sample_rate = 0;
|
||||||
#if defined(HAVE_XDUOO_LINUX_CODEC) || defined(HAVE_FIIO_LINUX_CODEC) || defined(HAVE_ROCKER_CODEC)
|
#ifdef AUDIOHW_MUTE_ON_PAUSE
|
||||||
audiohw_mute(true);
|
audiohw_mute(true);
|
||||||
#endif
|
#endif
|
||||||
logf("PCM DMA stopped");
|
logf("PCM DMA stopped");
|
||||||
|
@ -610,7 +614,7 @@ void pcm_play_dma_start(const void *addr, size_t size)
|
||||||
logf("Start error: %s\n", snd_strerror(err));
|
logf("Start error: %s\n", snd_strerror(err));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
#if defined(HAVE_XDUOO_LINUX_CODEC) || defined(HAVE_FIIO_LINUX_CODEC) || defined(HAVE_ROCKER_CODEC)
|
#ifdef AUDIOHW_MUTE_ON_PAUSE
|
||||||
audiohw_mute(false);
|
audiohw_mute(false);
|
||||||
#endif
|
#endif
|
||||||
if (err == 0)
|
if (err == 0)
|
||||||
|
|
Loading…
Reference in New Issue