[vlc-commits] aout: dummy: handle pass through

Thomas Guillem git at videolan.org
Wed Aug 23 16:08:43 CEST 2017


vlc | branch: master | Thomas Guillem <thomas at gllm.fr> | Wed Aug 23 16:04:40 2017 +0200| [439f579904750ad034b814da13b8e28c4ce5fd25] | committer: Thomas Guillem

aout: dummy: handle pass through

In case of pass through, change the audio format to trigger the spdif audio
converter.

Refs #18655

> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=439f579904750ad034b814da13b8e28c4ce5fd25
---

 modules/audio_output/adummy.c | 31 ++++++++++++++++++++++---------
 1 file changed, 22 insertions(+), 9 deletions(-)

diff --git a/modules/audio_output/adummy.c b/modules/audio_output/adummy.c
index ace03fd1f6..8c40bdddde 100644
--- a/modules/audio_output/adummy.c
+++ b/modules/audio_output/adummy.c
@@ -55,19 +55,32 @@ static void Flush(audio_output_t *aout, bool wait)
 
 static int Start(audio_output_t *aout, audio_sample_format_t *restrict fmt)
 {
-    if (aout_FormatNbChannels(fmt) == 0)
-        return VLC_EGENERIC;
+    (void) aout;
 
-    if (AOUT_FMT_SPDIF(fmt) && var_InheritBool(aout, "spdif"))
+    switch (fmt->i_format)
     {
-        fmt->i_format = VLC_CODEC_SPDIFL;
-        fmt->i_bytes_per_frame = AOUT_SPDIF_SIZE;
-        fmt->i_frame_length = A52_FRAME_NB;
+        case VLC_CODEC_A52:
+        case VLC_CODEC_EAC3:
+            fmt->i_format = VLC_CODEC_SPDIFL;
+            fmt->i_bytes_per_frame = 4;
+            fmt->i_frame_length = 1;
+            break;
+        case VLC_CODEC_DTS:
+        case VLC_CODEC_TRUEHD:
+        case VLC_CODEC_MLP:
+            fmt->i_format = VLC_CODEC_SPDIFL;
+            fmt->i_rate = 768000;
+            fmt->i_bytes_per_frame = 16;
+            fmt->i_frame_length = 1;
+            break;
+        default:
+            assert(AOUT_FMT_LINEAR(fmt));
+            assert(aout_FormatNbChannels(fmt) > 0);
+            fmt->i_format = HAVE_FPU ? VLC_CODEC_FL32 : VLC_CODEC_S16N;
+            fmt->channel_type = AUDIO_CHANNEL_TYPE_BITMAP;
+            break;
     }
-    else
-        fmt->i_format = HAVE_FPU ? VLC_CODEC_FL32 : VLC_CODEC_S16N;
 
-    fmt->channel_type = AUDIO_CHANNEL_TYPE_BITMAP;
     return VLC_SUCCESS;
 }
 



More information about the vlc-commits mailing list