void Player::play(const vector<Clip> &clips)
{
- {
- lock_guard<mutex> lock(queue_state_mu);
- new_clip_ready = true;
- queued_clip_list = clips;
- override_stream_idx = -1;
- new_clip_changed.notify_all();
- }
+ lock_guard<mutex> lock(queue_state_mu);
+ new_clip_ready = true;
+ queued_clip_list = clips;
+ override_stream_idx = -1;
+ new_clip_changed.notify_all();
}
void Player::override_angle(unsigned stream_idx)
{
+ int64_t last_pts;
+
// Corner case: If a new clip is waiting to be played, change its stream and then we're done.
{
- unique_lock<mutex> lock(queue_state_mu);
+ lock_guard<mutex> lock(queue_state_mu);
if (new_clip_ready) {
assert(queued_clip_list.size() == 1);
queued_clip_list[0].stream_idx = stream_idx;
new_clip_changed.notify_all();
return;
}
- }
- // OK, so we're standing still, presumably at the end of a clip.
- // Look at the last frame played (if it exists), and show the closest
- // thing we've got.
- int64_t last_pts;
- {
- lock_guard<mutex> lock(queue_state_mu);
+ // OK, so we're standing still, presumably at the end of a clip.
+ // Look at the last frame played (if it exists), and show the closest
+ // thing we've got.
if (last_pts_played < 0) {
return;
}
void Player::take_queue_spot()
{
- unique_lock<mutex> lock(queue_state_mu);
+ lock_guard<mutex> lock(queue_state_mu);
++num_queued_frames;
}
void Player::release_queue_spot()
{
- unique_lock<mutex> lock(queue_state_mu);
+ lock_guard<mutex> lock(queue_state_mu);
assert(num_queued_frames > 0);
--num_queued_frames;
new_clip_changed.notify_all();