Fix export of projects with fewer than 6 channels.
authorCarl Hetherington <cth@carlh.net>
Mon, 27 Jul 2020 22:25:57 +0000 (22:25 +0000)
committerCarl Hetherington <cth@carlh.net>
Mon, 27 Jul 2020 22:25:57 +0000 (22:25 +0000)
src/lib/ffmpeg_encoder.cc

index 68575d11adc072c69b9a2bc1e16f93a223fd1b0f..afba7c18750a56b36b16a387295d4122d4bd9ed1 100644 (file)
@@ -93,12 +93,23 @@ FFmpegEncoder::FFmpegEncoder (
                map = AudioMapping (ch, 2);
                float const overall_gain = 2 / (4 + sqrt(2));
                float const minus_3dB = 1 / sqrt(2);
                map = AudioMapping (ch, 2);
                float const overall_gain = 2 / (4 + sqrt(2));
                float const minus_3dB = 1 / sqrt(2);
-               map.set (dcp::LEFT,   0, overall_gain);
-               map.set (dcp::RIGHT,  1, overall_gain);
-               map.set (dcp::CENTRE, 0, overall_gain * minus_3dB);
-               map.set (dcp::CENTRE, 1, overall_gain * minus_3dB);
-               map.set (dcp::LS,     0, overall_gain);
-               map.set (dcp::RS,     1, overall_gain);
+               if (ch == 2) {
+                       map.set (dcp::LEFT, 0, 1);
+                       map.set (dcp::RIGHT, 1, 1);
+               } else if (ch == 4) {
+                       map.set (dcp::LEFT,   0, overall_gain);
+                       map.set (dcp::RIGHT,  1, overall_gain);
+                       map.set (dcp::CENTRE, 0, overall_gain * minus_3dB);
+                       map.set (dcp::CENTRE, 1, overall_gain * minus_3dB);
+                       map.set (dcp::LS,     0, overall_gain);
+               } else if (ch >= 6) {
+                       map.set (dcp::LEFT,   0, overall_gain);
+                       map.set (dcp::RIGHT,  1, overall_gain);
+                       map.set (dcp::CENTRE, 0, overall_gain * minus_3dB);
+                       map.set (dcp::CENTRE, 1, overall_gain * minus_3dB);
+                       map.set (dcp::LS,     0, overall_gain);
+                       map.set (dcp::RS,     1, overall_gain);
+               }
        } else {
                _output_audio_channels = ch;
                map = AudioMapping (ch, ch);
        } else {
                _output_audio_channels = ch;
                map = AudioMapping (ch, ch);