You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
73 lines
2.4 KiB
73 lines
2.4 KiB
--- pulse.c 2008-09-18 22:03:35.000000000 +0100
|
|
+++ vlc-0.9.4/modules/audio_output/pulse.c 2008-12-04 11:43:43.000000000 +0000
|
|
@@ -123,13 +123,52 @@
|
|
|
|
PULSE_DEBUG( "Pulse start initialization");
|
|
|
|
- ss.rate = p_aout->output.output.i_rate;
|
|
- ss.channels = 2;
|
|
+ ss.channels = aout_FormatNbChannels( &p_aout->output.output ); /* Get the input stream channel count */
|
|
+
|
|
+ /* Setup the pulse audio stream based on the input stream count */
|
|
+ switch(ss.channels)
|
|
+ {
|
|
+ case 8:
|
|
+ p_aout->output.output.i_physical_channels
|
|
+ = AOUT_CHAN_LEFT | AOUT_CHAN_RIGHT | AOUT_CHAN_CENTER
|
|
+ | AOUT_CHAN_MIDDLELEFT | AOUT_CHAN_MIDDLERIGHT
|
|
+ | AOUT_CHAN_REARLEFT | AOUT_CHAN_REARRIGHT
|
|
+ | AOUT_CHAN_LFE;
|
|
+ break;
|
|
+
|
|
+ case 6:
|
|
+ p_aout->output.output.i_physical_channels
|
|
+ = AOUT_CHAN_LEFT | AOUT_CHAN_RIGHT | AOUT_CHAN_CENTER
|
|
+ | AOUT_CHAN_REARLEFT | AOUT_CHAN_REARRIGHT
|
|
+ | AOUT_CHAN_LFE;
|
|
+ break;
|
|
+
|
|
+ case 4:
|
|
+ p_aout->output.output.i_physical_channels
|
|
+ = AOUT_CHAN_LEFT | AOUT_CHAN_RIGHT
|
|
+ | AOUT_CHAN_REARLEFT | AOUT_CHAN_REARRIGHT;
|
|
+ break;
|
|
+
|
|
+ case 2:
|
|
+ p_aout->output.output.i_physical_channels
|
|
+ = AOUT_CHAN_LEFT | AOUT_CHAN_RIGHT;
|
|
+ break;
|
|
+
|
|
+ case 1:
|
|
+ p_aout->output.output.i_physical_channels = AOUT_CHAN_CENTER;
|
|
+ break;
|
|
+
|
|
+ default:
|
|
+ msg_Err(p_aout,"Invalid number of channels");
|
|
+ goto fail;
|
|
+ }
|
|
+
|
|
+ /* Add a quick command line info message */
|
|
+ msg_Info(p_aout, "No. of Audio Channels: %d", ss.channels);
|
|
|
|
- ss.format = PA_SAMPLE_S16LE;
|
|
- p_aout->output.output.i_physical_channels =
|
|
- AOUT_CHAN_LEFT | AOUT_CHAN_RIGHT;
|
|
- p_aout->output.output.i_format = AOUT_FMT_S16_NE;
|
|
+ ss.rate = p_aout->output.output.i_rate;
|
|
+ ss.format = PA_SAMPLE_FLOAT32NE;
|
|
+ p_aout->output.output.i_format = VLC_FOURCC('f','l','3','2');
|
|
|
|
if (!pa_sample_spec_valid(&ss)) {
|
|
msg_Err(p_aout,"Invalid sample spec");
|
|
@@ -148,8 +187,8 @@
|
|
|
|
p_sys->buffer_size = a.minreq;
|
|
|
|
- pa_channel_map_init_stereo(&map);
|
|
-
|
|
+ /* Initialise the speaker map setup above */
|
|
+ pa_channel_map_init_auto(&map, ss.channels, PA_CHANNEL_MAP_ALSA);
|
|
|
|
if (!(p_sys->mainloop = pa_threaded_mainloop_new())) {
|
|
msg_Err(p_aout, "Failed to allocate main loop");
|