summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2018-06-10 00:31:35 +0100
committerCarl Hetherington <cth@carlh.net>2018-06-10 00:31:35 +0100
commit79a9da3ed267f2fa95aa9615dd662a1cea2e9d81 (patch)
treee7f7ba3a13844385d11f0e7899ee1d42f8ff44aa
parentf3db6f37c85352ad7631078907439ce8ff151b3d (diff)
Modify the downmix mapping so that we include Ls, Rs and Lfe (#1281).v2.13.29
-rw-r--r--ChangeLog4
-rw-r--r--src/wx/film_viewer.cc17
2 files changed, 15 insertions, 6 deletions
diff --git a/ChangeLog b/ChangeLog
index 7f4c185f2..ad96a4aad 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2018-06-10 Carl Hetherington <cth@carlh.net>
+
+ * Include Ls/Rs and Lfe in 5.1-to-stereo downmix in the player.
+
2018-06-09 Carl Hetherington <cth@carlh.net>
* Fix bad parsing of ASS lines embedded into FFmpeg files
diff --git a/src/wx/film_viewer.cc b/src/wx/film_viewer.cc
index 2c0712e92..a7e040bb5 100644
--- a/src/wx/film_viewer.cc
+++ b/src/wx/film_viewer.cc
@@ -251,13 +251,18 @@ FilmViewer::recreate_butler ()
map.set (i, i, 1);
}
} else {
- /* Special case: stereo output, at least 3 channel input, map L+R to L/R and
- C to both, all 3dB down.
+ /* Special case: stereo output, at least 3 channel input.
+ Map so that Lt = L(-3dB) + Ls(-3dB) + C(-6dB) + Lfe(-10dB)
+ Rt = R(-3dB) + Rs(-3dB) + C(-6dB) + Lfe(-10dB)
*/
- map.set (0, 0, 1 / sqrt(2)); // L -> L
- map.set (1, 1, 1 / sqrt(2)); // R -> R
- map.set (2, 0, 1 / sqrt(2)); // C -> L
- map.set (2, 1, 1 / sqrt(2)); // C -> R
+ map.set (dcp::LEFT, 0, 1 / sqrt(2)); // L -> Lt
+ map.set (dcp::RIGHT, 1, 1 / sqrt(2)); // R -> Rt
+ map.set (dcp::CENTRE, 0, 1 / 2.0); // C -> Lt
+ map.set (dcp::CENTRE, 1, 1 / 2.0); // C -> Rt
+ map.set (dcp::LFE, 0, 1 / sqrt(10)); // Lfe -> Lt
+ map.set (dcp::LFE, 1, 1 / sqrt(10)); // Lfe -> Rt
+ map.set (dcp::LS, 0, 1 / sqrt(2)); // Ls -> Lt
+ map.set (dcp::RS, 1, 1 / sqrt(2)); // Rs -> Rt
}
_butler.reset (new Butler (_player, _film->log(), map, _audio_channels));