X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=futatabi%2Fplayer.h;h=c8ed083fd544899124f749926c9598a0b0f9d235;hb=b3a7a9eddd8b800f1b921332e8fdacb72e0d9b20;hp=a581a54f79dd41ae076403bb2a8b3b2831b0d029;hpb=2b37c51ea17b77b88e2f7fda443109acc260aa8f;p=nageru diff --git a/futatabi/player.h b/futatabi/player.h index a581a54..c8ed083 100644 --- a/futatabi/player.h +++ b/futatabi/player.h @@ -20,8 +20,6 @@ class VideoStream; class QSurface; class QSurfaceFormat; -double compute_time_left(const std::vector &clips, const std::map &progress); - class Player : public QueueInterface { public: enum StreamOutput { @@ -34,7 +32,7 @@ public: struct ClipWithRow { Clip clip; - unsigned row; // Used for progress callback only. + size_t row; // Used for progress callback only. }; void play(const Clip &clip) { @@ -51,7 +49,7 @@ public: // Not thread-safe to set concurrently with playing. // Will be called back from the player thread. // The keys in the given map are row members in the vector given to play(). - using progress_callback_func = std::function &progress)>; + using progress_callback_func = std::function &progress, double time_remaining)>; void set_progress_callback(progress_callback_func cb) { progress_callback = cb; } // QueueInterface. @@ -107,4 +105,11 @@ private: const StreamOutput stream_output; }; +double compute_time_left(const std::vector &clips, size_t currently_playing_idx, double progress_currently_playing); + +static inline double compute_total_time(const std::vector &clips) +{ + return compute_time_left(clips, 0, 0.0); +} + #endif // !defined(_PLAYER_H)