X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Flib%2Fsndfile_content.h;h=701ff16b24bd0dbbdf2d75e5708e2be3c7ce9e45;hb=797c7543dc7fe5a9f9ddaf4c2035f9b9a7188758;hp=ab8a04e4d96baee9949daa3fbfbe9dd141567805;hpb=7ebb57db2013c9e929d44d0e547ab1f27c59cc7f;p=dcpomatic.git diff --git a/src/lib/sndfile_content.h b/src/lib/sndfile_content.h index ab8a04e4d..701ff16b2 100644 --- a/src/lib/sndfile_content.h +++ b/src/lib/sndfile_content.h @@ -1,3 +1,28 @@ +/* + Copyright (C) 2013 Carl Hetherington + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +*/ + +#ifndef DCPOMATIC_SNDFILE_CONTENT_H +#define DCPOMATIC_SNDFILE_CONTENT_H + +extern "C" { +#include +} #include "audio_content.h" namespace cxml { @@ -7,18 +32,52 @@ namespace cxml { class SndfileContent : public AudioContent { public: - SndfileContent (boost::filesystem::path); - SndfileContent (boost::shared_ptr); + SndfileContent (boost::shared_ptr, boost::filesystem::path); + SndfileContent (boost::shared_ptr, boost::shared_ptr, int); + + boost::shared_ptr shared_from_this () { + return boost::dynamic_pointer_cast (Content::shared_from_this ()); + } + void examine (boost::shared_ptr); std::string summary () const; + std::string technical_summary () const; std::string information () const; - boost::shared_ptr clone () const; + void as_xml (xmlpp::Node *) const; + Time full_length () const; - /* AudioContent */ - int audio_channels () const; - ContentAudioFrame audio_length () const; - int audio_frame_rate () const; - int64_t audio_channel_layout () const; + /* AudioContent */ + int audio_channels () const { + boost::mutex::scoped_lock lm (_mutex); + return _audio_channels; + } + + AudioContent::Frame audio_length () const { + boost::mutex::scoped_lock lm (_mutex); + return _audio_length; + } + + int content_audio_frame_rate () const { + boost::mutex::scoped_lock lm (_mutex); + return _audio_frame_rate; + } + + int output_audio_frame_rate () const; + + AudioMapping audio_mapping () const { + boost::mutex::scoped_lock lm (_mutex); + return _audio_mapping; + } + void set_audio_mapping (AudioMapping); + static bool valid_file (boost::filesystem::path); + +private: + int _audio_channels; + AudioContent::Frame _audio_length; + int _audio_frame_rate; + AudioMapping _audio_mapping; }; + +#endif