Merge branch 'master' of ssh://git.carlh.net/home/carl/git/dcpomatic
[dcpomatic.git] / src / lib / sndfile_content.h
index 1ef4b3f026514526bbb26e0157d218581ab4fcc8..9dcf954b5e55b09b9c6e1a088dd78a80f0d370f2 100644 (file)
@@ -1,7 +1,5 @@
-/* -*- c-basic-offset: 8; default-tab-width: 8; -*- */
-
 /*
-    Copyright (C) 2013 Carl Hetherington <cth@carlh.net>
+    Copyright (C) 2013-2015 Carl Hetherington <cth@carlh.net>
 
     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
 
 */
 
-extern "C" {
-#include <libavutil/audioconvert.h>
-}
-#include "audio_content.h"
+#ifndef DCPOMATIC_SNDFILE_CONTENT_H
+#define DCPOMATIC_SNDFILE_CONTENT_H
 
-namespace cxml {
-       class Node;
-}
+#include "single_stream_audio_content.h"
 
-class SndfileContent : public AudioContent
+class SndfileContent : public SingleStreamAudioContent
 {
 public:
-       SndfileContent (boost::filesystem::path);
-       SndfileContent (boost::shared_ptr<const cxml::Node>);
+       SndfileContent (boost::shared_ptr<const Film>, boost::filesystem::path);
+       SndfileContent (boost::shared_ptr<const Film>, cxml::ConstNodePtr, int);
 
        boost::shared_ptr<SndfileContent> shared_from_this () {
                return boost::dynamic_pointer_cast<SndfileContent> (Content::shared_from_this ());
        }
-       
-       void examine (boost::shared_ptr<Film>, boost::shared_ptr<Job>, bool);
+
+       DCPTime full_length () const;
+
+       void examine (boost::shared_ptr<Job>);
        std::string summary () const;
+       std::string technical_summary () const;
        std::string information () const;
        void as_xml (xmlpp::Node *) const;
-       boost::shared_ptr<Content> clone () const;
-       Time length (boost::shared_ptr<const Film>) const;
 
-        /* AudioContent */
-        int audio_channels () const {
-               boost::mutex::scoped_lock lm (_mutex);
-               return _audio_channels;
-       }
-       
-        ContentAudioFrame 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;
-       }
+       void take_from_audio_examiner (boost::shared_ptr<AudioExaminer>);
 
-        int output_audio_frame_rate (boost::shared_ptr<const Film>) const;
+       static bool valid_file (boost::filesystem::path);
 
-       AudioMapping audio_mapping () const {
+private:
+       Frame audio_length () const {
                boost::mutex::scoped_lock lm (_mutex);
-               return _audio_mapping;
+               return _audio_length;
        }
-       
-       static bool valid_file (boost::filesystem::path);
 
-private:
-       int _audio_channels;
-       ContentAudioFrame _audio_length;
-       int _audio_frame_rate;
-       AudioMapping _audio_mapping;
+       Frame _audio_length;
 };
+
+#endif