X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=nageru%2Fmixer.cpp;h=464b92008b946729c4bf4f3756e1c54ac26662f6;hb=0490c42536a845dd6d718a7c58cfb3e3ab02b1ab;hp=9a86682daa91ca19b2325e3858093f55e80a0a27;hpb=6cf87ad853439f8565c575fb29dc539a15fdba87;p=nageru diff --git a/nageru/mixer.cpp b/nageru/mixer.cpp index 9a86682..464b920 100644 --- a/nageru/mixer.cpp +++ b/nageru/mixer.cpp @@ -801,7 +801,8 @@ void Mixer::bm_frame(unsigned card_index, uint16_t timecode, // // Only bother doing MJPEG encoding if there are any connected clients // that want the stream. - if (httpd.get_num_connected_multicam_clients() > 0) { + if (httpd.get_num_connected_multicam_clients() > 0 || + httpd.get_num_connected_siphon_clients(card_index) > 0) { vector converted_samples = convert_audio_to_fixed32(audio_frame.data + audio_offset, num_samples, audio_format, 2); lock_guard lock(card_mutex); if (card->new_raw_audio.empty()) { @@ -1076,7 +1077,7 @@ void Mixer::thread_func() master_card_index = output_card_index; } else { master_card_is_output = false; - master_card_index = theme->map_signal(master_clock_channel); + master_card_index = theme->map_signal_to_card(master_clock_channel); assert(master_card_index < num_cards + num_video_inputs); } @@ -1137,12 +1138,9 @@ void Mixer::thread_func() last_received_neutral_color[card_index] = new_frame->neutral_color; } - if (new_frame->frame->data_copy != nullptr) { - int mjpeg_card_index = mjpeg_encoder->get_mjpeg_stream_for_card(card_index); - if (mjpeg_card_index != -1) { - RGBTriplet neutral_color = theme->get_white_balance_for_signal(card_index); - mjpeg_encoder->upload_frame(pts_int, mjpeg_card_index, new_frame->frame, new_frame->video_format, new_frame->y_offset, new_frame->cbcr_offset, move(raw_audio[card_index]), neutral_color); - } + if (new_frame->frame->data_copy != nullptr && mjpeg_encoder->should_encode_mjpeg_for_card(card_index)) { + RGBTriplet neutral_color = theme->get_white_balance_for_signal(card_index); + mjpeg_encoder->upload_frame(pts_int, card_index, new_frame->frame, new_frame->video_format, new_frame->y_offset, new_frame->cbcr_offset, move(raw_audio[card_index]), neutral_color); } } @@ -1240,11 +1238,11 @@ void Mixer::trim_queue(CaptureCard *card, size_t safe_queue_length) pair Mixer::get_channels_json() { Channels ret; - for (int channel_idx = 2; channel_idx < theme->get_num_channels(); ++channel_idx) { + for (int channel_idx = 0; channel_idx < theme->get_num_channels(); ++channel_idx) { Channel *channel = ret.add_channel(); - channel->set_index(channel_idx); - channel->set_name(theme->get_channel_name(channel_idx)); - channel->set_color(theme->get_channel_color(channel_idx)); + channel->set_index(channel_idx + 2); + channel->set_name(theme->get_channel_name(channel_idx + 2)); + channel->set_color(theme->get_channel_color(channel_idx + 2)); } string contents; google::protobuf::util::MessageToJsonString(ret, &contents); // Ignore any errors.