]> git.sesse.net Git - vlc/commitdiff
Decklink access: set physical channels config
authorRafaël Carré <funman@videolan.org>
Thu, 6 Jun 2013 11:41:37 +0000 (13:41 +0200)
committerRafaël Carré <funman@videolan.org>
Thu, 6 Jun 2013 20:52:39 +0000 (22:52 +0200)
modules/access/decklink.cpp

index 4cc50dba5dab6e7d75dea88628cac261950a99c7..149920d7510815d9af247132aa07841d8f999bf7 100644 (file)
@@ -518,6 +518,7 @@ static int Open(vlc_object_t *p_this)
     int         ret = VLC_EGENERIC;
     int         card_index;
     int         width = 0, height, fps_num, fps_den;
+    int         physical_channels = 0;
     int         rate;
     unsigned    aspect_num, aspect_den;
 
@@ -650,6 +651,20 @@ static int Open(vlc_object_t *p_this)
 
     /* Set up audio. */
     sys->channels = var_InheritInteger(demux, "decklink-audio-channels");
+    switch (sys->channels) {
+    case 0:
+        break;
+    case 2:
+        physical_channels = AOUT_CHANS_STEREO;
+        break;
+    case 8:
+        physical_channels = AOUT_CHANS_7_1;
+        break;
+    //case 16:
+    default:
+        msg_Err(demux, "Invalid number of channels (%d), disabling audio", sys->channels);
+        sys->channels = 0;
+    }
     rate = var_InheritInteger(demux, "decklink-audio-rate");
     if (rate > 0 && sys->channels > 0) {
         if (sys->input->EnableAudioInput(rate, bmdAudioSampleType16bitInteger, sys->channels) != S_OK) {
@@ -692,6 +707,7 @@ static int Open(vlc_object_t *p_this)
     es_format_t audio_fmt;
     es_format_Init(&audio_fmt, AUDIO_ES, VLC_CODEC_S16N);
     audio_fmt.audio.i_channels = sys->channels;
+    audio_fmt.audio.i_physical_channels = physical_channels;
     audio_fmt.audio.i_rate = rate;
     audio_fmt.audio.i_bitspersample = 16;
     audio_fmt.audio.i_blockalign = audio_fmt.audio.i_channels * audio_fmt.audio.i_bitspersample / 8;