vlc/vlc-2.2 | branch: master | Rémi Denis-Courmont <[email protected]> | Mon Mar 16 20:01:05 2015 +0200| [6d7114a6f3524f26c4e8f122755ecb4310b0eb93] | committer: Rémi Denis-Courmont
ALSA: only append AES parameters to iec958 and hdmi plugs Other ALSA plugs do not support those parameters. Regresion from 7a19c0b41e4c43392f423338d41b0bcebc3e5329. (cherry picked from commit 8add728fb5bd34a73e97462960343f604660a48f) > http://git.videolan.org/gitweb.cgi/vlc/vlc-2.2.git/?a=commit;h=6d7114a6f3524f26c4e8f122755ecb4310b0eb93 --- modules/audio_output/alsa.c | 43 +++++++++++++++++++++++++------------------ 1 file changed, 25 insertions(+), 18 deletions(-) diff --git a/modules/audio_output/alsa.c b/modules/audio_output/alsa.c index 1aafeb6..9e0fe10 100644 --- a/modules/audio_output/alsa.c +++ b/modules/audio_output/alsa.c @@ -325,10 +325,32 @@ static int Start (audio_output_t *aout, audio_sample_format_t *restrict fmt) } const char *device = sys->device; - char *devbuf = NULL; + /* Choose the IEC device for S/PDIF output */ + char sep = '\0'; if (spdif) { + const char *opt; + + if (!strcmp (device, "default")) + device = "iec958"; /* TODO: hdmi */ + + if (!strncmp (device, "iec958", 6)) + opt = device + 6; + if (!strncmp (device, "hdmi", 4)) + opt = device + 4; + + if (opt != NULL) + switch (*opt) + { + case ':': sep = ','; break; + case '\0': sep = ':'; break; + } + } + + char *devbuf = NULL; + if (sep != '\0') + { unsigned aes3; switch (fmt->i_rate) @@ -345,23 +367,8 @@ static int Start (audio_output_t *aout, audio_sample_format_t *restrict fmt) break; } - char *opt = NULL; - if (!strcmp (device, "default")) - device = "iec958"; /* TODO: hdmi */ - else - { - opt = strchr(device, ':'); - if (opt && opt[1] == '\0') { - /* if device is terminated by : but there's no options, - * remove ':', we'll add it back in the format string. */ - *opt = '\0'; - opt = NULL; - } - } - - if (asprintf (&devbuf, - "%s%cAES0=0x%x,AES1=0x%x,AES2=0x%x,AES3=0x%x", device, - opt ? ',' : ':', + if (asprintf (&devbuf, "%s%cAES0=0x%x,AES1=0x%x,AES2=0x%x,AES3=0x%x", + device, sep, IEC958_AES0_CON_EMPHASIS_NONE | IEC958_AES0_NONAUDIO, IEC958_AES1_CON_ORIGINAL | IEC958_AES1_CON_PCM_CODER, 0, aes3) == -1) _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
