Commit 91e7f05a authored by Benjamin Pracht's avatar Benjamin Pracht

Backport of the latest alsa fix

parent 7932c484
...@@ -355,11 +355,11 @@ static int Open( vlc_object_t *p_this ) ...@@ -355,11 +355,11 @@ static int Open( vlc_object_t *p_this )
/* Choose the linear PCM format (read the comment above about FPU /* Choose the linear PCM format (read the comment above about FPU
and float32) */ and float32) */
if( p_aout->p_libvlc->i_cpu & CPU_CAPABILITY_FPU ) if( p_aout->p_libvlc->i_cpu & CPU_CAPABILITY_FPU )
{ /* {
i_vlc_pcm_format = VLC_FOURCC('f','l','3','2'); i_vlc_pcm_format = VLC_FOURCC('f','l','3','2');
i_snd_pcm_format = SND_PCM_FORMAT_FLOAT; i_snd_pcm_format = SND_PCM_FORMAT_FLOAT;
} }
else else */
{ {
i_vlc_pcm_format = AOUT_FMT_S16_NE; i_vlc_pcm_format = AOUT_FMT_S16_NE;
i_snd_pcm_format = SND_PCM_FORMAT_S16; i_snd_pcm_format = SND_PCM_FORMAT_S16;
...@@ -501,6 +501,24 @@ static int Open( vlc_object_t *p_this ) ...@@ -501,6 +501,24 @@ static int Open( vlc_object_t *p_this )
goto error; goto error;
} }
/* Set rate. */
i_old_rate = p_aout->output.output.i_rate;
#ifdef HAVE_ALSA_NEW_API
i_snd_rc = snd_pcm_hw_params_set_rate_near( p_sys->p_snd_pcm, p_hw,
&(p_aout->output.output.i_rate),
NULL );
#else
i_snd_rc = snd_pcm_hw_params_set_rate_near( p_sys->p_snd_pcm, p_hw,
p_aout->output.output.i_rate,
NULL );
#endif
if( i_snd_rc < 0 || p_aout->output.output.i_rate != i_old_rate )
{
msg_Warn( p_aout, "The rate %d Hz is not supported by your hardware. "
"Using %d Hz instead.\n", i_old_rate,
p_aout->output.output.i_rate );
}
/* Set format. */ /* Set format. */
if ( ( i_snd_rc = snd_pcm_hw_params_set_format( p_sys->p_snd_pcm, p_hw, if ( ( i_snd_rc = snd_pcm_hw_params_set_format( p_sys->p_snd_pcm, p_hw,
i_snd_pcm_format ) ) < 0 ) i_snd_pcm_format ) ) < 0 )
...@@ -547,24 +565,6 @@ static int Open( vlc_object_t *p_this ) ...@@ -547,24 +565,6 @@ static int Open( vlc_object_t *p_this )
goto error; goto error;
} }
/* Set rate. */
i_old_rate = p_aout->output.output.i_rate;
#ifdef HAVE_ALSA_NEW_API
i_snd_rc = snd_pcm_hw_params_set_rate_near( p_sys->p_snd_pcm, p_hw,
&p_aout->output.output.i_rate,
NULL );
#else
i_snd_rc = snd_pcm_hw_params_set_rate_near( p_sys->p_snd_pcm, p_hw,
p_aout->output.output.i_rate,
NULL );
#endif
if( i_snd_rc < 0 || p_aout->output.output.i_rate != i_old_rate )
{
msg_Warn( p_aout, "The rate %d Hz is not supported by your hardware. "
"Using %d Hz instead.\n", i_old_rate,
p_aout->output.output.i_rate );
}
/* Set buffer size. */ /* Set buffer size. */
#ifdef HAVE_ALSA_NEW_API #ifdef HAVE_ALSA_NEW_API
if ( ( i_snd_rc = snd_pcm_hw_params_set_buffer_size_near( p_sys->p_snd_pcm, if ( ( i_snd_rc = snd_pcm_hw_params_set_buffer_size_near( p_sys->p_snd_pcm,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment