- node->add_child("AudioChannels")->add_child_text (lexical_cast<string> (_audio_channels));
- node->add_child("AudioLength")->add_child_text (lexical_cast<string> (_audio_length));
- node->add_child("AudioFrameRate")->add_child_text (lexical_cast<string> (_audio_frame_rate));
+ AudioContent::as_xml (node);
+
+ node->add_child("AudioChannels")->add_child_text (raw_convert<string> (audio_channels ()));
+ node->add_child("AudioLength")->add_child_text (raw_convert<string> (audio_length().get ()));
+ node->add_child("AudioFrameRate")->add_child_text (raw_convert<string> (audio_frame_rate ()));
+ _audio_mapping.as_xml (node->add_child("AudioMapping"));
+}
+
+DCPTime
+SndfileContent::full_length () const
+{
+ shared_ptr<const Film> film = _film.lock ();
+ assert (film);
+ return DCPTime (audio_length(), film->active_frame_rate_change (position ()));
+}
+
+void
+SndfileContent::set_audio_mapping (AudioMapping m)
+{
+ {
+ boost::mutex::scoped_lock lm (_mutex);
+ _audio_mapping = m;
+ }
+
+ AudioContent::set_audio_mapping (m);