X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Flib%2Fsndfile_content.cc;h=a573d43c407f8ac8a825190a1784600ba37ac873;hb=04eebe07e2f64bd15f6887a10ab51fb92c52901a;hp=0cf65967f2172ac1f8ad7d57a6a648cfcd05a45d;hpb=1dcfb3a26085ebb3703f40e2f51e43ce3d98be50;p=dcpomatic.git diff --git a/src/lib/sndfile_content.cc b/src/lib/sndfile_content.cc index 0cf65967f..a573d43c4 100644 --- a/src/lib/sndfile_content.cc +++ b/src/lib/sndfile_content.cc @@ -18,6 +18,7 @@ */ #include +#include #include "sndfile_content.h" #include "sndfile_decoder.h" #include "film.h" @@ -31,28 +32,31 @@ using std::string; using std::stringstream; using std::cout; using boost::shared_ptr; -using boost::lexical_cast; +using dcp::raw_convert; SndfileContent::SndfileContent (shared_ptr f, boost::filesystem::path p) : Content (f, p) - , AudioContent (f, p) - , _audio_channels (0) - , _audio_length (0) - , _audio_frame_rate (0) + , SingleStreamAudioContent (f, p) { } -SndfileContent::SndfileContent (shared_ptr f, shared_ptr node, int version) +SndfileContent::SndfileContent (shared_ptr f, cxml::ConstNodePtr node, int version) : Content (f, node) - , AudioContent (f, node) - , _audio_mapping (node->node_child ("AudioMapping"), version) + , SingleStreamAudioContent (f, node, version) { - _audio_channels = node->number_child ("AudioChannels"); - _audio_length = ContentTime (node->number_child ("AudioLength")); - _audio_frame_rate = node->number_child ("AudioFrameRate"); + +} + +void +SndfileContent::as_xml (xmlpp::Node* node) const +{ + node->add_child("Type")->add_child_text ("Sndfile"); + Content::as_xml (node); + SingleStreamAudioContent::as_xml (node); } + string SndfileContent::summary () const { @@ -101,41 +105,8 @@ SndfileContent::examine (shared_ptr job) { job->set_progress_unknown (); Content::examine (job); - - SndfileDecoder dec (shared_from_this()); - - { - boost::mutex::scoped_lock lm (_mutex); - _audio_channels = dec.audio_channels (); - _audio_length = dec.audio_length (); - _audio_frame_rate = dec.audio_frame_rate (); - } - - signal_changed (AudioContentProperty::AUDIO_CHANNELS); - signal_changed (AudioContentProperty::AUDIO_LENGTH); - signal_changed (AudioContentProperty::AUDIO_FRAME_RATE); - - { - boost::mutex::scoped_lock lm (_mutex); - /* XXX: do this in signal_changed...? */ - _audio_mapping = AudioMapping (_audio_channels); - _audio_mapping.make_default (); - } - - signal_changed (AudioContentProperty::AUDIO_MAPPING); -} - -void -SndfileContent::as_xml (xmlpp::Node* node) const -{ - node->add_child("Type")->add_child_text ("Sndfile"); - Content::as_xml (node); - AudioContent::as_xml (node); - - node->add_child("AudioChannels")->add_child_text (lexical_cast (audio_channels ())); - node->add_child("AudioLength")->add_child_text (lexical_cast (audio_length().get ())); - node->add_child("AudioFrameRate")->add_child_text (lexical_cast (audio_frame_rate ())); - _audio_mapping.as_xml (node->add_child("AudioMapping")); + shared_ptr dec (new SndfileDecoder (shared_from_this())); + take_from_audio_examiner (dec); } DCPTime @@ -146,14 +117,3 @@ SndfileContent::full_length () const 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); -} -