projects
/
dcpomatic.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Emit no audio from DCPs if none is mapped
[dcpomatic.git]
/
src
/
lib
/
playlist.h
diff --git
a/src/lib/playlist.h
b/src/lib/playlist.h
index d7db75d0fb9ed44feccfb7a70a0561780eea5eb6..e2662eb4581d78293f7d344c6e35619eaae9c400 100644
(file)
--- a/
src/lib/playlist.h
+++ b/
src/lib/playlist.h
@@
-1,5
+1,5
@@
/*
/*
- Copyright (C) 2013-20
18
Carl Hetherington <cth@carlh.net>
+ Copyright (C) 2013-20
21
Carl Hetherington <cth@carlh.net>
This file is part of DCP-o-matic.
This file is part of DCP-o-matic.
@@
-18,81
+18,87
@@
*/
*/
+
#ifndef DCPOMATIC_PLAYLIST_H
#define DCPOMATIC_PLAYLIST_H
#ifndef DCPOMATIC_PLAYLIST_H
#define DCPOMATIC_PLAYLIST_H
-#include "util.h"
+
+#include "change_signaller.h"
+#include "dcpomatic_time.h"
#include "frame_rate_change.h"
#include "frame_rate_change.h"
-#include "
atomicity_checker
.h"
+#include "
types
.h"
#include <libcxml/cxml.h>
#include <libcxml/cxml.h>
-#include <boost/shared_ptr.hpp>
#include <boost/signals2.hpp>
#include <boost/signals2.hpp>
+#include <boost/thread.hpp>
#include <list>
#include <list>
+
class Film;
class Film;
-struct ContentSorter
-{
- bool operator() (boost::shared_ptr<Content> a, boost::shared_ptr<Content> b);
-};
/** @class Playlist
* @brief A set of Content objects with knowledge of how they should be arranged into
* a DCP.
*/
/** @class Playlist
* @brief A set of Content objects with knowledge of how they should be arranged into
* a DCP.
*/
-class Playlist
: public boost::noncopyable
+class Playlist
{
public:
{
public:
- Playlist ();
+ Playlist() = default;
+
~Playlist ();
~Playlist ();
+ Playlist (Playlist const&) = delete;
+ Playlist& operator= (Playlist const&) = delete;
+
void as_xml (xmlpp::Node *, bool with_content_paths);
void as_xml (xmlpp::Node *, bool with_content_paths);
- void set_from_xml (
boost
::shared_ptr<const Film> film, cxml::ConstNodePtr node, int version, std::list<std::string>& notes);
+ void set_from_xml (
std
::shared_ptr<const Film> film, cxml::ConstNodePtr node, int version, std::list<std::string>& notes);
- void add (
boost::shared_ptr<const Film> film, boost
::shared_ptr<Content>);
- void remove (
boost
::shared_ptr<Content>);
+ void add (
std::shared_ptr<const Film> film, std
::shared_ptr<Content>);
+ void remove (
std
::shared_ptr<Content>);
void remove (ContentList);
void remove (ContentList);
- void move_earlier (
boost::shared_ptr<const Film> film, boost
::shared_ptr<Content>);
- void move_later (
boost::shared_ptr<const Film> film, boost
::shared_ptr<Content>);
+ void move_earlier (
std::shared_ptr<const Film> film, std
::shared_ptr<Content>);
+ void move_later (
std::shared_ptr<const Film> film, std
::shared_ptr<Content>);
ContentList content () const;
std::string video_identifier () const;
ContentList content () const;
std::string video_identifier () const;
- dcpomatic::DCPTime length (
boost
::shared_ptr<const Film> film) const;
+ dcpomatic::DCPTime length (
std
::shared_ptr<const Film> film) const;
boost::optional<dcpomatic::DCPTime> start () const;
boost::optional<dcpomatic::DCPTime> start () const;
- int64_t required_disk_space (
boost
::shared_ptr<const Film> film, int j2k_bandwidth, int audio_channels, int audio_frame_rate) const;
+ int64_t required_disk_space (
std
::shared_ptr<const Film> film, int j2k_bandwidth, int audio_channels, int audio_frame_rate) const;
int best_video_frame_rate () const;
int best_video_frame_rate () const;
- dcpomatic::DCPTime video_end (
boost
::shared_ptr<const Film> film) const;
- dcpomatic::DCPTime text_end (
boost
::shared_ptr<const Film> film) const;
+ dcpomatic::DCPTime video_end (
std
::shared_ptr<const Film> film) const;
+ dcpomatic::DCPTime text_end (
std
::shared_ptr<const Film> film) const;
FrameRateChange active_frame_rate_change (dcpomatic::DCPTime, int dcp_frame_rate) const;
FrameRateChange active_frame_rate_change (dcpomatic::DCPTime, int dcp_frame_rate) const;
- std::string content_summary (
boost
::shared_ptr<const Film> film, dcpomatic::DCPTimePeriod period) const;
+ std::string content_summary (
std
::shared_ptr<const Film> film, dcpomatic::DCPTimePeriod period) const;
std::pair<double, double> speed_up_range (int dcp_video_frame_rate) const;
void set_sequence (bool);
std::pair<double, double> speed_up_range (int dcp_video_frame_rate) const;
void set_sequence (bool);
- void maybe_sequence (
boost
::shared_ptr<const Film> film);
+ void maybe_sequence (
std
::shared_ptr<const Film> film);
- void repeat (
boost
::shared_ptr<const Film> film, ContentList, int);
+ void repeat (
std
::shared_ptr<const Film> film, ContentList, int);
- /** Emitted when content has been added to or removed from the playlist; implies OrderChange
d
*/
+ /** Emitted when content has been added to or removed from the playlist; implies OrderChange */
mutable boost::signals2::signal<void (ChangeType)> Change;
mutable boost::signals2::signal<void (ChangeType)> Change;
- mutable boost::signals2::signal<void ()> OrderChanged;
+ mutable boost::signals2::signal<void ()> OrderChange;
+ /** Emitted when the length might have changed; may sometimes be emitted when it has not */
+ mutable boost::signals2::signal<void ()> LengthChange;
- mutable boost::signals2::signal<void (ChangeType,
boost
::weak_ptr<Content>, int, bool)> ContentChange;
+ mutable boost::signals2::signal<void (ChangeType,
std
::weak_ptr<Content>, int, bool)> ContentChange;
private:
private:
- void content_change (
boost::weak_ptr<const Film>, ChangeType, boost
::weak_ptr<Content>, int, bool);
+ void content_change (
std::weak_ptr<const Film>, ChangeType, std
::weak_ptr<Content>, int, bool);
void disconnect ();
void disconnect ();
- void reconnect (
boost
::shared_ptr<const Film> film);
+ void reconnect (
std
::shared_ptr<const Film> film);
mutable boost::mutex _mutex;
mutable boost::mutex _mutex;
- /** List of content
. Kept sorted in position order.
*/
+ /** List of content
, kept sorted by ContentSorter()
*/
ContentList _content;
ContentList _content;
- bool _sequence;
- bool _sequencing;
+ bool _sequence
= true
;
+ bool _sequencing
= false
;
std::list<boost::signals2::connection> _content_connections;
std::list<boost::signals2::connection> _content_connections;
- AtomicityChecker _checker;
};
};
+
#endif
#endif