<p dir="ltr"></p>
<p dir="ltr">Le 22 sept. 2016 11:32, git@videolan.org a écrit :<br>
><br>
> vlc | branch: master | Thomas Guillem <thomas@gllm.fr> | Thu Sep 22 16:40:43 2016 +0200| [a3925097aa23b6179ddf61bb04e43cd9a90e6f7f] | committer: Thomas Guillem<br>
><br>
> pulse: restart when we need to move a passthrough input</p>
<p dir="ltr">Why? If the moved-to sink supports pass-through, there should be no problems. If it doesn't, then we should get a format-lost event so the change seems redundant. If our input is movef by another client or by the daemon, this patch has no effects. And if somehow policy rejects the change, the code just breakd audio needlessly.</p>
<p dir="ltr">><br>
> > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=a3925097aa23b6179ddf61bb04e43cd9a90e6f7f<br>
> ---<br>
><br>
> modules/audio_output/pulse.c | 11 +++++++++++<br>
> 1 file changed, 11 insertions(+)<br>
><br>
> diff --git a/modules/audio_output/pulse.c b/modules/audio_output/pulse.c<br>
> index a088e44..bde37d3 100644<br>
> --- a/modules/audio_output/pulse.c<br>
> +++ b/modules/audio_output/pulse.c<br>
> @@ -75,6 +75,7 @@ struct aout_sys_t<br>
>      char *sink_force; /**< Forced sink name (stream must be NULL) */<br>
><br>
>      struct sink *sinks; /**< Locally-cached list of sinks */<br>
> +    bool passthrough;<br>
> };<br>
><br>
> static void VolumeReport(audio_output_t *aout)<br>
> @@ -655,6 +656,15 @@ static int StreamMove(audio_output_t *aout, const char *name)<br>
>          aout_DeviceReport(aout, name);<br>
>          return 0;<br>
>      }<br>
> +    else if (sys->passthrough)<br>
> +    {<br>
> +        /* A sink connected with a passthrough input cannot be moved */<br>
> +        msg_Dbg(aout, "request restart to connect to sink %s", name);<br>
> +        free(sys->sink_force);<br>
> +        sys->sink_force = strdup(name);<br>
> +        aout_RestartRequest(aout, AOUT_RESTART_OUTPUT);<br>
> +        return 0;<br>
> +    }<br>
><br>
>      pa_operation *op;<br>
>      uint32_t idx = pa_stream_get_index(sys->stream);<br>
> @@ -924,6 +934,7 @@ static int Start(audio_output_t *aout, audio_sample_format_t *restrict fmt)<br>
>      sys->flags_force = PA_STREAM_NOFLAGS;<br>
>      free(sys->sink_force);<br>
>      sys->sink_force = NULL;<br>
> +    sys->passthrough = fmt->i_format == VLC_CODEC_SPDIFL;<br>
><br>
>      if (encoding == PA_ENCODING_INVALID)<br>
>      {<br>
><br>
> _______________________________________________<br>
> vlc-commits mailing list<br>
> vlc-commits@videolan.org<br>
> https://mailman.videolan.org/listinfo/vlc-commits<br></p>