diff options
| author | Carl Hetherington <cth@carlh.net> | 2024-05-13 13:19:18 +0200 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2024-05-13 20:35:23 +0200 |
| commit | 4d03b76ff759e30ea079944c31a87e2b3e7a21ac (patch) | |
| tree | 15d6dc10168a25b81e246727d4b3f6eea0f8a98e | |
| parent | 869462070671b273ac528e075ac1c00a417cc8a0 (diff) | |
Support some more random MCA tags seen in the field (EasyDCP 4.2.0).
| -rw-r--r-- | src/types.cc | 6 | ||||
| -rw-r--r-- | src/types.h | 3 | ||||
| -rw-r--r-- | test/cpl_metadata_test.cc | 24 | ||||
| -rw-r--r-- | test/stream_operators.cc | 6 |
4 files changed, 37 insertions, 2 deletions
diff --git a/src/types.cc b/src/types.cc index f4bf8db0..e2165548 100644 --- a/src/types.cc +++ b/src/types.cc @@ -547,11 +547,15 @@ dcp::mca_id_to_channel (string id) return Channel::HI; } else if (id == "vin" || id == "vi-n") { return Channel::VI; + } else if (id == "lc") { + return Channel::LC; + } else if (id == "rc") { + return Channel::RC; } else if (id == "lrs" || id == "lsr") { return Channel::BSL; } else if (id == "rrs" || id == "rsr") { return Channel::BSR; - } else if (id == "dbox") { + } else if (id == "dbox" || id == "mtn") { return Channel::MOTION_DATA; } else if (id == "sync" || id == "fsksync") { return Channel::SYNC_SIGNAL; diff --git a/src/types.h b/src/types.h index 183ce638..65840e6d 100644 --- a/src/types.h +++ b/src/types.h @@ -99,7 +99,8 @@ enum class Channel { RS = 5, ///< right surround HI = 6, VI = 7, - /* 8 and 9 are not used */ + LC = 8, ///< not used, but referred to in MainSoundConfiguration in some CPLs + RC = 9, ///< not used, but referred to in MainSoundConfiguration in some CPLs BSL = 10, BSR = 11, MOTION_DATA = 12, diff --git a/test/cpl_metadata_test.cc b/test/cpl_metadata_test.cc index a811e56f..906f1bc4 100644 --- a/test/cpl_metadata_test.cc +++ b/test/cpl_metadata_test.cc @@ -154,6 +154,30 @@ BOOST_AUTO_TEST_CASE (main_sound_configuration_test5) } +BOOST_AUTO_TEST_CASE(main_sound_configuration_test6) +{ + dcp::MainSoundConfiguration msc("WTF/L,R,C,LFE,LsLss,RsRss,HI,VIN,Lc,Rc,Lrs,Rrs,Mtn,FSKSync,SLVS,-"); + BOOST_CHECK_EQUAL(msc.channels(), 16); + BOOST_CHECK_EQUAL(msc.field(), dcp::MCASoundField::OTHER); + BOOST_CHECK_EQUAL(msc.mapping(0).get(), dcp::Channel::LEFT); + BOOST_CHECK_EQUAL(msc.mapping(1).get(), dcp::Channel::RIGHT); + BOOST_CHECK_EQUAL(msc.mapping(2).get(), dcp::Channel::CENTRE); + BOOST_CHECK_EQUAL(msc.mapping(3).get(), dcp::Channel::LFE); + BOOST_CHECK_EQUAL(msc.mapping(4).get(), dcp::Channel::LS); + BOOST_CHECK_EQUAL(msc.mapping(5).get(), dcp::Channel::RS); + BOOST_CHECK_EQUAL(msc.mapping(6).get(), dcp::Channel::HI); + BOOST_CHECK_EQUAL(msc.mapping(7).get(), dcp::Channel::VI); + BOOST_CHECK_EQUAL(msc.mapping(8).get(), dcp::Channel::LC); + BOOST_CHECK_EQUAL(msc.mapping(9).get(), dcp::Channel::RC); + BOOST_CHECK_EQUAL(msc.mapping(10).get(), dcp::Channel::BSL); + BOOST_CHECK_EQUAL(msc.mapping(11).get(), dcp::Channel::BSR); + BOOST_CHECK_EQUAL(msc.mapping(12).get(), dcp::Channel::MOTION_DATA); + BOOST_CHECK_EQUAL(msc.mapping(13).get(), dcp::Channel::SYNC_SIGNAL); + BOOST_CHECK_EQUAL(msc.mapping(14).get(), dcp::Channel::SIGN_LANGUAGE); + BOOST_CHECK(!msc.mapping(15)); +} + + /* 482-12 says that implementations may use case-insensitive comparisons for the channel identifiers, * and there is one DCP in the private test suite (made by Disney) that uses LS for left surround. */ diff --git a/test/stream_operators.cc b/test/stream_operators.cc index 87949e84..0ed0d05f 100644 --- a/test/stream_operators.cc +++ b/test/stream_operators.cc @@ -130,6 +130,12 @@ dcp::operator<<(ostream& s, Channel c) case Channel::VI: s << "vi(7)"; break; + case Channel::LC: + s << "lc(8)"; + break; + case Channel::RC: + s << "rc(9)"; + break; case Channel::BSL: s << "bsl(10)"; break; |
