- 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 (lexical_cast<string> (audio_channels ()));
+ node->add_child("AudioLength")->add_child_text (lexical_cast<string> (audio_length().get ()));
+ node->add_child("AudioFrameRate")->add_child_text (lexical_cast<string> (content_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 ()));
+}
+
+int
+SndfileContent::output_audio_frame_rate () const
+{
+ shared_ptr<const Film> film = _film.lock ();
+ assert (film);
+
+ return film->audio_frame_rate ();
+}
+
+void
+SndfileContent::set_audio_mapping (AudioMapping m)
+{
+ {
+ boost::mutex::scoped_lock lm (_mutex);
+ _audio_mapping = m;
+ }
+
+ signal_changed (AudioContentProperty::AUDIO_MAPPING);