boost::optional<DCPTime> content_time_to_dcp (boost::shared_ptr<Content> content, ContentTime t);
- /* The player's internal state may be about to change such so
- that its emissions from Video and Audio will suddenly be
- from an undefined position. Listeners should prepare
- themselves for this possibility.
- */
- boost::signals2::signal<void ()> MayChange;
-
- /** The player's internal state has now changed.
- *
- * The first parameter is what changed.
- * The second parameter is true if these signals are currently likely to be frequent.
- */
- boost::signals2::signal<void (int, bool)> Changed;
-
- /** The change suggested by a MayChange did not happen */
- boost::signals2::signal<void ()> NotChanged;
+ boost::signals2::signal<void (ChangeType, int, bool)> Change;
/** Emitted when a video frame is ready. These emissions happen in the correct order. */
boost::signals2::signal<void (boost::shared_ptr<PlayerVideo>, DCPTime)> Video;
/** Emitted when a text is ready. This signal may be emitted considerably
* after the corresponding Video.
*/
- boost::signals2::signal<void (PlayerText, TextType, DCPTimePeriod)> Text;
+ boost::signals2::signal<void (PlayerText, TextType, boost::optional<DCPTextTrack>, DCPTimePeriod)> Text;
private:
friend class PlayerWrapper;
friend struct player_time_calculation_test2;
friend struct player_time_calculation_test3;
friend struct player_subframe_test;
+ friend struct empty_test1;
+ friend struct empty_test2;
void setup_pieces ();
void setup_pieces_unlocked ();
void flush ();
- void film_changed (Film::Property);
- void playlist_changed ();
- void playlist_content_may_change ();
- void playlist_content_changed (boost::weak_ptr<Content>, int, bool);
- void playlist_content_not_changed ();
- std::list<PositionImage> transform_bitmap_texts (std::list<BitmapText>) const;
+ void film_change (ChangeType, Film::Property);
+ void playlist_change (ChangeType);
+ void playlist_content_change (ChangeType, int, bool);
Frame dcp_to_content_video (boost::shared_ptr<const Piece> piece, DCPTime t) const;
DCPTime content_video_to_dcp (boost::shared_ptr<const Piece> piece, Frame f) const;
Frame dcp_to_resampled_audio (boost::shared_ptr<const Piece> piece, DCPTime t) const;
void audio (boost::weak_ptr<Piece>, AudioStreamPtr, ContentAudio);
void bitmap_text_start (boost::weak_ptr<Piece>, boost::weak_ptr<const TextContent>, ContentBitmapText);
void plain_text_start (boost::weak_ptr<Piece>, boost::weak_ptr<const TextContent>, ContentStringText);
- void subtitle_stop (boost::weak_ptr<Piece>, boost::weak_ptr<const TextContent>, ContentTime, TextType);
+ void subtitle_stop (boost::weak_ptr<Piece>, boost::weak_ptr<const TextContent>, ContentTime);
DCPTime one_video_frame () const;
void fill_audio (DCPTimePeriod period);
std::pair<boost::shared_ptr<AudioBuffers>, DCPTime> discard_audio (
boost::shared_ptr<const Film> _film;
boost::shared_ptr<const Playlist> _playlist;
- /** true if we are suspended (i.e. pass() and seek() do nothing */
+ /** true if we are suspended (i.e. pass() and seek() do nothing) */
bool _suspended;
std::list<boost::shared_ptr<Piece> > _pieces;
boost::shared_ptr<AudioProcessor> _audio_processor;
boost::signals2::scoped_connection _film_changed_connection;
- boost::signals2::scoped_connection _playlist_changed_connection;
- boost::signals2::scoped_connection _playlist_content_may_change_connection;
- boost::signals2::scoped_connection _playlist_content_changed_connection;
- boost::signals2::scoped_connection _playlist_content_not_changed_connection;
+ boost::signals2::scoped_connection _playlist_change_connection;
+ boost::signals2::scoped_connection _playlist_content_change_connection;
};
#endif