]> git.sesse.net Git - nageru/blobdiff - player.cpp
Move transitioning to the next clip away from the done callback.
[nageru] / player.cpp
index 3a958917fff5639942bba4c8e713c562044bd2d5..079f5cf3116d3f603e181d05bdfc3bdc8c930d51 100644 (file)
@@ -69,6 +69,7 @@ void Player::thread_func(bool also_output_to_stream)
                        clip = current_clip;
                        stream_idx = current_stream_idx;
                }
+got_clip:
                steady_clock::time_point origin = steady_clock::now();
                int64_t in_pts_origin = clip.pts_in;
                int64_t out_pts_origin = pts;
@@ -176,6 +177,18 @@ void Player::thread_func(bool also_output_to_stream)
                        }
                }
 
+               if (next_clip_callback != nullptr) {
+                       Clip next_clip = next_clip_callback();
+                       if (next_clip.pts_in != -1) {
+                               clip = next_clip;
+                               stream_idx = next_clip.stream_idx;  // Override is used for previews only, and next_clip is used for live ony.
+                               if (done_callback != nullptr) {
+                                       done_callback();
+                               }
+                               goto got_clip;
+                       }
+               }
+
                {
                        unique_lock<mutex> lock(queue_state_mu);
                        playing = false;