#include <vlc_plugin.h>
#include <errno.h> /* ENOMEM */
-#include <vlc_interface.h>
+#include <vlc_dialog.h>
#include <vlc_aout.h>
+#include <vlc_cpu.h>
/* ALSA part
Note: we use the new API which is available since 0.9.0beta10a. */
snd_output_t * p_snd_stderr;
#endif
- int b_playing; /* playing status */
+ bool b_playing; /* playing status */
mtime_t start_date;
vlc_mutex_t lock;
*****************************************************************************/
static const char *const ppsz_devices[] = { "default" };
static const char *const ppsz_devices_text[] = { N_("Default") };
-vlc_module_begin();
- set_shortname( "ALSA" );
- set_description( N_("ALSA audio output") );
- set_category( CAT_AUDIO );
- set_subcategory( SUBCAT_AUDIO_AOUT );
+vlc_module_begin ()
+ set_shortname( "ALSA" )
+ set_description( N_("ALSA audio output") )
+ set_category( CAT_AUDIO )
+ set_subcategory( SUBCAT_AUDIO_AOUT )
add_string( "alsa-audio-device", DEFAULT_ALSA_DEVICE, aout_FindAndRestart,
- N_("ALSA Device Name"), NULL, false );
- change_string_list( ppsz_devices, ppsz_devices_text, FindDevicesCallback );
- change_action_add( FindDevicesCallback, N_("Refresh list") );
+ N_("ALSA Device Name"), NULL, false )
+ add_deprecated_alias( "alsadev" ) /* deprecated since 0.9.3 */
+ change_string_list( ppsz_devices, ppsz_devices_text, FindDevicesCallback )
+ change_action_add( FindDevicesCallback, N_("Refresh list") )
- set_capability( "audio output", 150 );
- set_callbacks( Open, Close );
-vlc_module_end();
+ set_capability( "audio output", 150 )
+ set_callbacks( Open, Close )
+vlc_module_end ()
/*****************************************************************************
* Probe: probe the audio device for available formats and channels
{
case 1:
val.i_int = AOUT_VAR_MONO;
- text.psz_string = (char*)N_("Mono");
+ text.psz_string = _("Mono");
var_Change( p_aout, "audio-device",
VLC_VAR_ADDCHOICE, &val, &text );
break;
case 2:
val.i_int = AOUT_VAR_STEREO;
- text.psz_string = (char*)N_("Stereo");
+ text.psz_string = _("Stereo");
var_Change( p_aout, "audio-device",
VLC_VAR_ADDCHOICE, &val, &text );
var_Set( p_aout, "audio-device", val );
break;
case 4:
val.i_int = AOUT_VAR_2F2R;
- text.psz_string = (char*)N_("2 Front 2 Rear");
+ text.psz_string = _("2 Front 2 Rear");
var_Change( p_aout, "audio-device",
VLC_VAR_ADDCHOICE, &val, &text );
break;
case 6:
val.i_int = AOUT_VAR_5_1;
- text.psz_string = (char*)"5.1";
+ text.psz_string = "5.1";
var_Change( p_aout, "audio-device",
VLC_VAR_ADDCHOICE, &val, &text );
break;
if( val.i_int <= 0 )
{
/* Probe() has failed. */
- msg_Dbg( p_aout, "failed to find a useable alsa configuration" );
+ msg_Dbg( p_aout, "failed to find a usable alsa configuration" );
var_Destroy( p_aout, "audio-device" );
return;
}
/* Add final settings to the variable */
var_AddCallback( p_aout, "audio-device", aout_ChannelsRestart, NULL );
- val.b_bool = true;
- var_Set( p_aout, "intf-change", val );
+ var_SetBool( p_aout, "intf-change", true );
}
/*****************************************************************************
if( (psz_device = config_GetPsz( p_aout, "alsa-audio-device" )) == NULL )
{
msg_Err( p_aout, "no audio device given (maybe \"default\" ?)" );
- intf_UserFatal( p_aout, false, _("No Audio Device"),
+ dialog_Fatal( p_aout, _("No Audio Device"), "%s",
_("No audio device name was given. You might want to " \
"enter \"default\".") );
free( p_sys );
and float32) */
if( vlc_CPU() & CPU_CAPABILITY_FPU )
{
- i_vlc_pcm_format = VLC_FOURCC('f','l','3','2');
+ i_vlc_pcm_format = VLC_CODEC_FL32;
i_snd_pcm_format = SND_PCM_FORMAT_FLOAT;
}
else
{
- i_vlc_pcm_format = AOUT_FMT_S16_NE;
+ i_vlc_pcm_format = VLC_CODEC_S16N;
i_snd_pcm_format = SND_PCM_FORMAT_S16;
}
{
msg_Err( p_aout, "cannot open ALSA device `%s' (%s)",
psz_iec_device, snd_strerror( i_snd_rc ) );
- intf_UserFatal( p_aout, false, _("Audio output failed"),
+ dialog_Fatal( p_aout, _("Audio output failed"),
_("VLC could not open the ALSA device \"%s\" (%s)."),
psz_iec_device, snd_strerror( i_snd_rc ) );
free( p_sys );
i_snd_pcm_format = SND_PCM_FORMAT_S16;
i_channels = 2;
- i_vlc_pcm_format = VLC_FOURCC('s','p','d','i');
+ i_vlc_pcm_format = VLC_CODEC_SPDIFL;
p_aout->output.i_nb_samples = i_period_size = ALSA_SPDIF_PERIOD_SIZE;
p_aout->output.output.i_bytes_per_frame = AOUT_SPDIF_SIZE;
p_aout->output.output.i_frame_length = A52_FRAME_NB;
{
msg_Err( p_aout, "audio device: %s is already in use",
psz_device );
- intf_UserFatal( p_aout, false, _("Audio output failed"),
+ dialog_Fatal( p_aout, _("Audio output failed"),
_("The audio device \"%s\" is already in use."),
psz_device );
}
{
msg_Err( p_aout, "cannot open ALSA device `%s' (%s)",
psz_device, snd_strerror( i_snd_rc ) );
- intf_UserFatal( p_aout, false, _("Audio output failed"),
+ dialog_Fatal( p_aout, _("Audio output failed"),
_("VLC could not open the ALSA device \"%s\" (%s)."),
psz_device, snd_strerror( i_snd_rc ) );
free( p_sys );
goto error;
}
}
- if( i_vlc_pcm_format != VLC_FOURCC('s','p','d','i') )
+ if( i_vlc_pcm_format != VLC_CODEC_SPDIFL )
switch( i_snd_pcm_format )
{
case SND_PCM_FORMAT_FLOAT:
- i_vlc_pcm_format = VLC_FOURCC('f','l','3','2');
+ i_vlc_pcm_format = VLC_CODEC_FL32;
break;
case SND_PCM_FORMAT_S16:
- i_vlc_pcm_format = AOUT_FMT_S16_NE;
+ i_vlc_pcm_format = VLC_CODEC_S16N;
break;
}
p_aout->output.output.i_format = i_vlc_pcm_format;
/* 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 " \
}
/* Set period size. */
-#ifdef HAVE_ALSA_NEW_API
if ( ( i_snd_rc = snd_pcm_hw_params_set_period_size_near( p_sys->p_snd_pcm,
p_hw, &i_period_size, NULL ) ) < 0 )
-#else
- if ( ( i_snd_rc = snd_pcm_hw_params_set_period_size_near( p_sys->p_snd_pcm,
- p_hw, i_period_size, NULL ) ) < 0 )
-#endif
{
msg_Err( p_aout, "unable to set period size (%s)",
snd_strerror( i_snd_rc ) );
p_aout->output.i_nb_samples = i_period_size;
/* Set buffer size. */
-#ifdef HAVE_ALSA_NEW_API
if ( ( i_snd_rc = snd_pcm_hw_params_set_buffer_size_near( p_sys->p_snd_pcm,
p_hw, &i_buffer_size ) ) < 0 )
-#else
- if ( ( i_snd_rc = snd_pcm_hw_params_set_buffer_size_near( p_sys->p_snd_pcm,
- p_hw, i_buffer_size ) ) < 0 )
-#endif
{
msg_Err( p_aout, "unable to set buffer size (%s)",
snd_strerror( i_snd_rc ) );
{
b_retry = true;
i_snd_pcm_format = SND_PCM_FORMAT_S16;
- p_aout->output.output.i_format = AOUT_FMT_S16_NE;
+ p_aout->output.output.i_format = VLC_CODEC_S16N;
msg_Warn( p_aout, "unable to commit hardware configuration "
"with fl32 samples. Retrying with s16l (%s)", snd_strerror( i_snd_rc ) );
}
}
}
-#ifdef HAVE_ALSA_NEW_API
if( ( i_snd_rc = snd_pcm_hw_params_get_period_time( p_hw,
&p_sys->i_period_time, NULL ) ) < 0 )
-#else
- if( ( p_sys->i_period_time =
- (int)snd_pcm_hw_params_get_period_time( p_hw, NULL ) ) < 0 )
-#endif
{
msg_Err( p_aout, "unable to get period time (%s)",
snd_strerror( i_snd_rc ) );
/* Create ALSA thread and wait for its readiness. */
if( vlc_thread_create( p_aout, "aout", ALSAThread,
- VLC_THREAD_PRIORITY_OUTPUT, false ) )
+ VLC_THREAD_PRIORITY_OUTPUT ) )
{
msg_Err( p_aout, "cannot create ALSA thread (%m)" );
goto error;
{
if( !p_aout->output.p_sys->b_playing )
{
- p_aout->output.p_sys->b_playing = 1;
+ p_aout->output.p_sys->b_playing = true;
/* get the playing date of the first aout buffer */
+ vlc_mutex_lock( &p_aout->output.p_sys->lock );
p_aout->output.p_sys->start_date =
aout_FifoFirstDate( p_aout, &p_aout->output.fifo );
/* wake up the audio output thread */
- vlc_mutex_lock( &p_aout->output.p_sys->lock );
vlc_cond_signal( &p_aout->output.p_sys->wait );
vlc_mutex_unlock( &p_aout->output.p_sys->lock );
}
vlc_mutex_unlock( &p_sys->lock );
if( !vlc_object_alive (p_aout) )
- goto cleanup;
+ goto cleanup;
mwait( p_sys->start_date - AOUT_PTS_TOLERANCE / 4 );
}
p_buffer = aout_OutputNextBuffer( p_aout, next_date,
- (p_aout->output.output.i_format == VLC_FOURCC('s','p','d','i')) );
+ (p_aout->output.output.i_format == VLC_CODEC_SPDIFL) );
/* Audio output buffer shortage -> stop the fill process and wait */
if( p_buffer == NULL )