void DeckLinkOutput::send_frame(GLuint y_tex, GLuint cbcr_tex, const vector<RefCountedFrame> &input_frames, int64_t pts, int64_t duration)
{
+ assert(!should_quit);
+
unique_ptr<Frame> frame = move(get_frame());
chroma_subsampler->create_uyvy(y_tex, cbcr_tex, width, height, frame->uyvy_tex);
}
}
-void DeckLinkOutput::wait_for_frame(int64_t pts, int *dropped_frames, int64_t *frame_duration)
+void DeckLinkOutput::wait_for_frame(int64_t pts, int *dropped_frames, int64_t *frame_duration, bool *is_preroll)
{
+ assert(!should_quit);
+
*dropped_frames = 0;
*frame_duration = this->frame_duration;
// While prerolling, we send out frames as quickly as we can.
if (target_time < base_pts) {
+ *is_preroll = true;
return;
}
+ *is_preroll = !playback_started;
+
if (!playback_started) {
if (output->EndAudioPreroll() != S_OK) {
fprintf(stderr, "Could not end audio preroll\n");