+ BOOST_CHECK_EQUAL (film->isdcf_name(false), "LikeShouting_XSN-2_F-133_DE-fr_US-R_MOS_4K_DI_20140704_PPF_SMPTE_OV");
+
+ /* Test audio channel markup */
+
+ film->set_audio_channels (6);
+ auto sound = make_shared<FFmpegContent>("test/data/sine_440.wav");
+ film->examine_and_add_content (sound);
+ BOOST_REQUIRE (!wait_for_jobs());
+ BOOST_CHECK_EQUAL (film->isdcf_name(false), "LikeShouting_XSN-2_F-133_DE-fr_US-R_10_4K_DI_20140704_PPF_SMPTE_OV");
+
+ AudioMapping mapping = sound->audio->mapping ();
+
+ mapping.set (0, dcp::Channel::LEFT, 1.0);
+ sound->audio->set_mapping (mapping);
+ BOOST_CHECK_EQUAL (film->isdcf_name(false), "LikeShouting_XSN-2_F-133_DE-fr_US-R_20_4K_DI_20140704_PPF_SMPTE_OV");
+ mapping.set (0, dcp::Channel::RIGHT, 1.0);
+ sound->audio->set_mapping (mapping);
+ BOOST_CHECK_EQUAL (film->isdcf_name(false), "LikeShouting_XSN-2_F-133_DE-fr_US-R_30_4K_DI_20140704_PPF_SMPTE_OV");
+ mapping.set (0, dcp::Channel::LFE, 1.0);
+ sound->audio->set_mapping (mapping);
+ BOOST_CHECK_EQUAL (film->isdcf_name(false), "LikeShouting_XSN-2_F-133_DE-fr_US-R_31_4K_DI_20140704_PPF_SMPTE_OV");
+ mapping.set (0, dcp::Channel::LS, 1.0);
+ sound->audio->set_mapping (mapping);
+ BOOST_CHECK_EQUAL (film->isdcf_name(false), "LikeShouting_XSN-2_F-133_DE-fr_US-R_41_4K_DI_20140704_PPF_SMPTE_OV");
+ mapping.set (0, dcp::Channel::RS, 1.0);
+ sound->audio->set_mapping (mapping);
+ BOOST_CHECK_EQUAL (film->isdcf_name(false), "LikeShouting_XSN-2_F-133_DE-fr_US-R_51_4K_DI_20140704_PPF_SMPTE_OV");
+ mapping.set (0, dcp::Channel::HI, 1.0);
+ sound->audio->set_mapping (mapping);
+ BOOST_CHECK_EQUAL (film->isdcf_name(false), "LikeShouting_XSN-2_F-133_DE-fr_US-R_51_4K_DI_20140704_PPF_SMPTE_OV");
+
+ film->set_audio_channels (8);
+ mapping.set (0, dcp::Channel::HI, 1.0);
+ sound->audio->set_mapping (mapping);
+ BOOST_CHECK_EQUAL (film->isdcf_name(false), "LikeShouting_XSN-2_F-133_DE-fr_US-R_51-HI_4K_DI_20140704_PPF_SMPTE_OV");
+ mapping.set (0, dcp::Channel::VI, 1.0);
+ sound->audio->set_mapping (mapping);
+ BOOST_CHECK_EQUAL (film->isdcf_name(false), "LikeShouting_XSN-2_F-133_DE-fr_US-R_51-HI-VI_4K_DI_20140704_PPF_SMPTE_OV");
+
+ film->set_audio_channels(10);
+ mapping.set (0, dcp::Channel::HI, 0.0);
+ mapping.set (0, dcp::Channel::VI, 0.0);
+ sound->audio->set_mapping (mapping);
+ BOOST_CHECK_EQUAL (film->isdcf_name(false), "LikeShouting_XSN-2_F-133_DE-fr_US-R_51_4K_DI_20140704_PPF_SMPTE_OV");
+ mapping.set (0, dcp::Channel::HI, 1.0);
+ sound->audio->set_mapping (mapping);
+ BOOST_CHECK_EQUAL (film->isdcf_name(false), "LikeShouting_XSN-2_F-133_DE-fr_US-R_51-HI_4K_DI_20140704_PPF_SMPTE_OV");
+ mapping.set (0, dcp::Channel::VI, 1.0);
+ sound->audio->set_mapping (mapping);
+ BOOST_CHECK_EQUAL (film->isdcf_name(false), "LikeShouting_XSN-2_F-133_DE-fr_US-R_51-HI-VI_4K_DI_20140704_PPF_SMPTE_OV");
+
+ film->set_audio_channels(12);
+ mapping.set (0, dcp::Channel::BSL, 1.0);
+ mapping.set (0, dcp::Channel::BSR, 1.0);
+ mapping.set (0, dcp::Channel::HI, 0.0);
+ mapping.set (0, dcp::Channel::VI, 0.0);
+ sound->audio->set_mapping (mapping);
+ BOOST_CHECK_EQUAL (film->isdcf_name(false), "LikeShouting_XSN-2_F-133_DE-fr_US-R_71_4K_DI_20140704_PPF_SMPTE_OV");
+ mapping.set (0, dcp::Channel::HI, 1.0);
+ sound->audio->set_mapping (mapping);
+ BOOST_CHECK_EQUAL (film->isdcf_name(false), "LikeShouting_XSN-2_F-133_DE-fr_US-R_71-HI_4K_DI_20140704_PPF_SMPTE_OV");
+ mapping.set (0, dcp::Channel::VI, 1.0);
+ sound->audio->set_mapping (mapping);
+ BOOST_CHECK_EQUAL (film->isdcf_name(false), "LikeShouting_XSN-2_F-133_DE-fr_US-R_71-HI-VI_4K_DI_20140704_PPF_SMPTE_OV");
+
+ /* Check that the proper codes are used, not just part of the language code; in this case, QBP instead of PT (#2235) */
+ film->set_audio_language(dcp::LanguageTag("pt-BR"));
+ BOOST_CHECK_EQUAL (film->isdcf_name(false), "LikeShouting_XSN-2_F-133_QBP-fr_US-R_71-HI-VI_4K_DI_20140704_PPF_SMPTE_OV");