--- /dev/null
+/*
+ Copyright (C) 2016 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
+ 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.
+
+*/
+
+#include <boost/weak_ptr.hpp>
+
+class Content;
+class Film;
+
+class ContentPart
+{
+public:
+ ContentPart (Content* parent, boost::shared_ptr<const Film> film)
+ : _parent (parent)
+ , _film (film)
+ {}
+
+protected:
+ Content* _parent;
+ boost::weak_ptr<const Film> _film;
+ mutable boost::mutex _mutex;
+};
using boost::dynamic_pointer_cast;
VideoContent::VideoContent (Content* parent, shared_ptr<const Film> film)
- : _parent (parent)
- , _film (film)
+ : ContentPart (parent, film)
, _video_length (0)
, _video_frame_type (VIDEO_FRAME_TYPE_2D)
, _scale (VideoContentScale (Ratio::from_id ("178")))
}
VideoContent::VideoContent (Content* parent, shared_ptr<const Film> film, cxml::ConstNodePtr node, int version)
- : _parent (parent)
- , _film (film)
+ : ContentPart (parent, film)
{
_video_size.width = node->number_child<int> ("VideoWidth");
_video_size.height = node->number_child<int> ("VideoHeight");
}
VideoContent::VideoContent (Content* parent, shared_ptr<const Film> film, vector<shared_ptr<Content> > c)
- : _parent (parent)
- , _film (film)
+ : ContentPart (parent, film)
, _video_length (0)
, _yuv (false)
{
#include "dcpomatic_time.h"
#include "user_property.h"
#include "types.h"
+#include "content_part.h"
#include <boost/thread/mutex.hpp>
#include <boost/weak_ptr.hpp>
#include <boost/enable_shared_from_this.hpp>
static int const VIDEO_FADE_OUT;
};
-class VideoContent : public boost::enable_shared_from_this<VideoContent>
+class VideoContent : public ContentPart, public boost::enable_shared_from_this<VideoContent>
{
public:
VideoContent (Content* parent, boost::shared_ptr<const Film>);
private:
- Content* _parent;
- boost::weak_ptr<const Film> _film;
- mutable boost::mutex _mutex;
Frame _video_length;
/** Video frame rate, or not set if this content should use the DCP's frame rate */
boost::optional<double> _video_frame_rate;