+ /* Find all mapped channels */
+
+ list<dcp::Channel> mapped;
+ for (ContentList::const_iterator i = cl.begin(); i != cl.end(); ++i) {
+ shared_ptr<const AudioContent> ac = dynamic_pointer_cast<const AudioContent> (*i);
+ if (ac) {
+ list<dcp::Channel> c = ac->audio_mapping().mapped_dcp_channels ();
+ copy (c.begin(), c.end(), back_inserter (mapped));
+ }
+ }
+
+ mapped.sort ();
+ mapped.unique ();
+
+ /* Count them */
+
+ int non_lfe = 0;
+ int lfe = 0;
+ for (list<dcp::Channel>::const_iterator i = mapped.begin(); i != mapped.end(); ++i) {
+ if ((*i) == dcp::LFE) {
+ ++lfe;
+ } else {
+ ++non_lfe;
+ }
+ }
+
+ if (non_lfe) {
+ d << "_" << non_lfe << lfe;