vlc | branch: master | David Fuhrmann <[email protected]> | Fri Apr 5 20:36:09 2013 +0200| [dd306ec4c4619ab97e54bd797c0d3dbcd6e51b16] | committer: David Fuhrmann
auhal: fix device setup when no spidf available refs #8286 > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=dd306ec4c4619ab97e54bd797c0d3dbcd6e51b16 --- modules/audio_output/auhal.c | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/modules/audio_output/auhal.c b/modules/audio_output/auhal.c index 462b14d..b520dc6 100644 --- a/modules/audio_output/auhal.c +++ b/modules/audio_output/auhal.c @@ -233,6 +233,8 @@ static int Start(audio_output_t *p_aout, audio_sample_format_t *restrict fmt) * property size */ int b_alive = false; + bool b_start_digital = false; + p_sys = p_aout->sys; p_sys->b_digital = false; p_sys->au_component = NULL; @@ -247,9 +249,6 @@ static int Start(audio_output_t *p_aout, audio_sample_format_t *restrict fmt) aout_FormatPrint(p_aout, "VLC is looking for:", fmt); - if (p_sys->b_selected_dev_is_digital) - msg_Dbg(p_aout, "audio device supports digital output"); - msg_Dbg(p_aout, "attempting to use device %i", p_sys->i_selected_dev); /* Check if the desired device is alive and usable */ @@ -267,10 +266,19 @@ static int Start(audio_output_t *p_aout, audio_sample_format_t *restrict fmt) } if (!b_alive) { - msg_Warn(p_aout, "selected audio device is not alive, switching to default device"); + msg_Warn(p_aout, "selected audio device is not alive, switching to default device with id %i", p_sys->i_default_dev); p_sys->i_selected_dev = p_sys->i_default_dev; + p_sys->b_selected_dev_is_digital = false; } + // recheck if device still supports digital + b_start_digital = p_sys->b_selected_dev_is_digital; + if(!AudioDeviceSupportsDigital(p_aout, p_sys->i_selected_dev)) + b_start_digital = false; + + if (b_start_digital) + msg_Dbg(p_aout, "Use audio device for digital output"); + /* add a callback to see if the device dies later on */ err = AudioObjectAddPropertyListener(p_sys->i_selected_dev, &audioDeviceAliveAddress, HardwareListener, (void *)p_aout); if (err != noErr) { @@ -302,7 +310,7 @@ static int Start(audio_output_t *p_aout, audio_sample_format_t *restrict fmt) bool b_success = false; /* Check for Digital mode or Analog output mode */ - if (AOUT_FMT_SPDIF (fmt) && p_sys->b_selected_dev_is_digital) { + if (AOUT_FMT_SPDIF (fmt) && b_start_digital) { if (StartSPDIF (p_aout, fmt)) { msg_Dbg(p_aout, "digital output successfully opened"); b_success = true; _______________________________________________ vlc-commits mailing list [email protected] http://mailman.videolan.org/listinfo/vlc-commits
