#include "content_audio.h"
#include "content_text.h"
#include "content_video.h"
+#include "dcp_text_track.h"
#include "empty.h"
#include "enum_indexed_vector.h"
-#include "film.h"
+#include "film_property.h"
#include "image.h"
#include "player_text.h"
#include "position_image.h"
class AtmosContent;
class AudioBuffers;
class Content;
+class Film;
class PlayerVideo;
class Playlist;
class ReferencedReelAsset;
/** @class Player
* @brief A class which can play a Playlist.
*/
-class Player : public std::enable_shared_from_this<Player>
+class Player
{
public:
Player (std::shared_ptr<const Film>, Image::Alignment subtitle_alignment);
void set_fast ();
void set_play_referenced ();
void set_dcp_decode_reduction (boost::optional<int> reduction);
+ void set_disable_audio_processor();
boost::optional<dcpomatic::DCPTime> content_time_to_dcp (std::shared_ptr<const Content> content, dcpomatic::ContentTime t) const;
boost::optional<dcpomatic::ContentTime> dcp_to_content_time (std::shared_ptr<const Content> content, dcpomatic::DCPTime t) const;
void construct ();
void connect();
void setup_pieces ();
- void film_change (ChangeType, Film::Property);
+ void film_change(ChangeType, FilmProperty);
void playlist_change (ChangeType);
void playlist_content_change (ChangeType, int, bool);
Frame dcp_to_content_video (std::shared_ptr<const Piece> piece, dcpomatic::DCPTime t) const;
/** > 0 if we are suspended (i.e. pass() and seek() do nothing) */
boost::atomic<int> _suspended;
- std::list<std::shared_ptr<Piece>> _pieces;
+ std::vector<std::shared_ptr<Piece>> _pieces;
/** Size of the image we are rendering to; this may be the DCP frame size, or
* the size of preview in a window.
public:
StreamState () {}
- StreamState (std::shared_ptr<Piece> p, dcpomatic::DCPTime l)
+ explicit StreamState(std::shared_ptr<Piece> p)
: piece(p)
- , last_push_end(l)
{}
std::shared_ptr<Piece> piece;
- dcpomatic::DCPTime last_push_end;
+ boost::optional<dcpomatic::DCPTime> last_push_end;
};
std::map<AudioStreamPtr, StreamState> _stream_states;
EnumIndexedVector<ActiveText, TextType> _active_texts;
std::shared_ptr<AudioProcessor> _audio_processor;
+ bool _disable_audio_processor = false;
boost::atomic<dcpomatic::DCPTime> _playback_length;