X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=nageru%2Fglwidget.cpp;h=f5f350a6865188194f7bf58c7a778521cd0dad92;hb=ecaec75dd52d076ba53cafa1fed716ebc0d93da6;hp=8316824693ce010826128ddc8f969812fc30deb4;hpb=7188e3e948c60f78f5e2cd8756337f716de06d99;p=nageru diff --git a/nageru/glwidget.cpp b/nageru/glwidget.cpp index 8316824..f5f350a 100644 --- a/nageru/glwidget.cpp +++ b/nageru/glwidget.cpp @@ -20,7 +20,7 @@ #include #include "audio_mixer.h" -#include "context.h" +#include "shared/context.h" #include "context_menus.h" #include "flags.h" #include "mainwindow.h" @@ -72,7 +72,7 @@ void GLWidget::grab_white_balance(unsigned channel, unsigned x, unsigned y) { // Set the white balance to neutral for the grab. It's probably going to // flicker a bit, but hopefully this display is not live anyway. - global_mixer->set_wb(output, 0.5, 0.5, 0.5); + global_mixer->set_wb(output, 1.0, 1.0, 1.0); global_mixer->wait_for_next_frame(); // Mark that the next paintGL() should grab the given pixel. @@ -88,7 +88,7 @@ void GLWidget::initializeGL() { static once_flag flag; call_once(flag, [this]{ - global_mixer = new Mixer(QGLFormat::toSurfaceFormat(format()), global_flags.num_cards); + global_mixer = new Mixer(QGLFormat::toSurfaceFormat(format())); global_audio_mixer = global_mixer->get_audio_mixer(); global_mainwindow->mixer_created(global_mixer); global_mixer->start(); @@ -96,15 +96,15 @@ void GLWidget::initializeGL() global_mixer->add_frame_ready_callback(output, this, [this]{ QMetaObject::invokeMethod(this, "update", Qt::AutoConnection); }); + global_mixer->set_name_updated_callback(output, [this](const string &name){ + emit name_updated(output, name); + }); if (output == Mixer::OUTPUT_LIVE) { global_mixer->set_transition_names_updated_callback(output, [this](const vector &names){ emit transition_names_updated(names); }); } if (output >= Mixer::OUTPUT_INPUT0) { - global_mixer->set_name_updated_callback(output, [this](const string &name){ - emit name_updated(output, name); - }); global_mixer->set_color_updated_callback(output, [this](const string &color){ emit color_updated(output, color); }); @@ -174,7 +174,7 @@ void GLWidget::show_context_menu(const QPoint &pos) show_live_context_menu(pos); } if (output >= Mixer::OUTPUT_INPUT0) { - int signal_num = global_mixer->get_channel_signal(output); + int signal_num = global_mixer->map_channel_to_signal(output); if (signal_num != -1) { show_preview_context_menu(signal_num, pos); } @@ -227,12 +227,13 @@ void GLWidget::show_preview_context_menu(unsigned signal_num, const QPoint &pos) QMenu mode_submenu; QActionGroup mode_group(&mode_submenu); - unsigned num_cards = global_mixer->get_num_cards(); - unsigned current_card = global_mixer->map_signal(signal_num); + unsigned current_card = global_mixer->map_signal_to_card(signal_num); bool is_ffmpeg = global_mixer->card_is_ffmpeg(current_card); - if (!is_ffmpeg) { // FFmpeg inputs are not connected to any card; they're locked to a given input and have a given Y'CbCr interpretatio and have a given Y'CbCr interpretationn. - for (unsigned card_index = 0; card_index < num_cards; ++card_index) { + if (!is_ffmpeg) { // FFmpeg inputs are not connected to any card; they're locked to a given input and have a given Y'CbCr interpretatio and have a given Y'CbCr interpretation. + for (unsigned card_index = 0; card_index < MAX_VIDEO_CARDS; ++card_index) { + if (!global_mixer->card_is_active(card_index)) continue; + if (global_mixer->card_is_cef(card_index) || global_mixer->card_is_ffmpeg(card_index)) continue; QString description(QString::fromStdString(global_mixer->get_card_description(card_index))); QAction *action = new QAction(description, &card_group); action->setCheckable(true); @@ -292,10 +293,8 @@ void GLWidget::show_preview_context_menu(unsigned signal_num, const QPoint &pos) if (is_ffmpeg) { // Add a menu to change the source URL if we're an FFmpeg card. // (The theme can still override.) - if (global_mixer->card_is_ffmpeg(current_card)) { - change_url_action = new QAction("Change source filename/URL…", &menu); - menu.addAction(change_url_action); - } + change_url_action = new QAction("Change source filename/URL…", &menu); + menu.addAction(change_url_action); } else { // Add a submenu for selecting video input, with an action for each input. std::map video_inputs = global_mixer->get_available_video_inputs(current_card);