summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2020-07-27 22:25:57 +0000
committerCarl Hetherington <cth@carlh.net>2020-07-27 22:25:57 +0000
commite5c629b805bcf3d819c9b15d32bb8a3a9f93ab41 (patch)
treec8d7b064f6d23a015313b8d6b284bb005eea6683
parentd1e98e61303b5cc0087554c12129961f04ff8d73 (diff)
Fix export of projects with fewer than 6 channels.
-rw-r--r--src/lib/ffmpeg_encoder.cc23
1 files changed, 17 insertions, 6 deletions
diff --git a/src/lib/ffmpeg_encoder.cc b/src/lib/ffmpeg_encoder.cc
index 68575d11a..afba7c187 100644
--- a/src/lib/ffmpeg_encoder.cc
+++ b/src/lib/ffmpeg_encoder.cc
@@ -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.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);