Support some more random MCA tags seen in the field (EasyDCP 4.2.0).
authorCarl Hetherington <cth@carlh.net>
Mon, 13 May 2024 11:19:18 +0000 (13:19 +0200)
committerCarl Hetherington <cth@carlh.net>
Mon, 13 May 2024 18:35:23 +0000 (20:35 +0200)
src/types.cc
src/types.h
test/cpl_metadata_test.cc
test/stream_operators.cc

index f4bf8db0504f68555bccb4164fa566fa1c7166dc..e2165548331f6797d90949e1660bd69a14793c3f 100644 (file)
@@ -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;
index 183ce6383e6cc0f440977bf8e61e180c2a369b99..65840e6dd37383a8180bf657e819087364ef9491 100644 (file)
@@ -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,
index a811e56f2ff29e10d63c0fd2835f292d6f3d18cb..906f1bc4386ab8bc1ab1721f09355e7af264ab8a 100644 (file)
@@ -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.
  */
index 87949e8455597ec2486c51c7c8854ec28030e2fc..0ed0d05ff40b1474f476fec58998e09789f1e385 100644 (file)
@@ -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;