+ void play(const Clip &clip)
+ {
+ play({ ClipWithID{ clip, 0 } });
+ }
+ void play(const std::vector<ClipWithID> &clips);
+ void override_angle(unsigned stream_idx); // Assumes one-clip playlist only.
+
+ // Replace the part of the playlist that we haven't started playing yet
+ // (ie., from the point immediately after the last current playing clip
+ // and to the end) with the given one.
+ //
+ // E.g., if we have the playlist A, B, C, D, E, F, we're currently in a fade
+ // from B to C and run splice_play() with the list G, C, H, I, the resulting
+ // list will be A, B, C, H, I. (If the new list doesn't contain B nor C,
+ // there will be some heuristics.) Note that we always compare on ID only;
+ // changes will be ignored for the purposes of setting the split point,
+ // although the newly-spliced entries will of course get the new in/out points
+ // etc., which is the main reason for going through this exercise in the first
+ // place.
+ //
+ // If nothing is playing, the call will be ignored.
+ void splice_play(const std::vector<ClipWithID> &clips);
+
+ // Set the status string that will be used for the video stream's status subtitles
+ // whenever we are not playing anything.
+ void set_pause_status(const std::string &status)
+ {
+ std::lock_guard<std::mutex> lock(queue_state_mu);
+ pause_status = status;
+ }
+
+ void set_master_speed(float speed)
+ {
+ change_master_speed = speed;
+ }