}
check_error();
break;
+ default:
+ assert(false);
}
userdata->last_width[field] = width;
userdata->last_height[field] = height;
CaptureCard *card = &cards[card_index];
if (card->new_frames.empty()) { // Starvation.
++card->metric_input_duped_frames;
+#ifdef HAVE_CEF
if (card->is_cef_capture && card->may_have_dropped_last_frame) {
// Unlike other sources, CEF is not guaranteed to send us a steady
// stream of frames, so we'll have to ask it to repaint the frame
// get a new frame.)
((CEFCapture *)card->capture.get())->request_new_frame();
}
+#endif
} else {
new_frames[card_index] = move(card->new_frames.front());
has_new_frame[card_index] = true;
theme_main_chain.setup_chain();
//theme_main_chain.chain->enable_phase_timing(true);
- // The theme can't (or at least shouldn't!) call connect_signal() on
- // each FFmpeg or CEF input, so we'll do it here.
- for (const pair<LiveInputWrapper *, FFmpegCapture *> &conn : theme->get_video_signal_connections()) {
- conn.first->connect_signal_raw(conn.second->get_card_index(), input_state);
- }
-#ifdef HAVE_CEF
- for (const pair<LiveInputWrapper *, CEFCapture *> &conn : theme->get_html_signal_connections()) {
- conn.first->connect_signal_raw(conn.second->get_card_index(), input_state);
- }
-#endif
-
// If HDMI/SDI output is active and the user has requested auto mode,
// its mode overrides the existing Y'CbCr setting for the chain.
YCbCrLumaCoefficients ycbcr_output_coefficients;