+ /** The time after the last video that we emitted */
+ DCPTime _video_position;
+ /** The time after the last audio that we emitted */
+ DCPTime _audio_position;
+
+ AudioMerger _audio_merger;
+
+ dcp::Size _video_container_size;
+ boost::shared_ptr<PlayerImage> _black_frame;
+
+ struct {
+ boost::weak_ptr<Piece> piece;
+ boost::shared_ptr<DecodedImageSubtitle> subtitle;
+ } _image_subtitle;
+
+ struct {
+ boost::weak_ptr<Piece> piece;
+ boost::shared_ptr<DecodedTextSubtitle> subtitle;
+ } _text_subtitle;
+
+ struct {
+ Position<int> position;
+ boost::shared_ptr<Image> image;
+ DCPTime from;
+ DCPTime to;
+ } _out_subtitle;
+
+#ifdef DCPOMATIC_DEBUG
+ boost::shared_ptr<Content> _last_video;
+#endif
+
+ bool _last_emit_was_black;
+
+ struct {
+ boost::weak_ptr<Piece> weak_piece;
+ boost::shared_ptr<DecodedVideo> video;
+ } _last_incoming_video;
+
+ bool _just_did_inaccurate_seek;
+ bool _approximate_size;
+
+ PlayerStatistics _statistics;