X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=nageru%2Fmixer.h;h=9aa375636722d0e6d06be47bc8ca90c232b04d9b;hb=5e9f3fe04e04a7c53a8e64106797e14e44fe9024;hp=b4ed76f4575ff0403b4865a470af8925d548ddd1;hpb=eeda8995329601f9f4e35047358400833eeae68e;p=nageru diff --git a/nageru/mixer.h b/nageru/mixer.h index b4ed76f..9aa3756 100644 --- a/nageru/mixer.h +++ b/nageru/mixer.h @@ -288,6 +288,11 @@ public: theme->set_wb(channel, r, g, b); } + std::string format_status_line(const std::string &disk_space_left_text, double file_length_seconds) + { + return theme->format_status_line(disk_space_left_text, file_length_seconds); + } + // Note: You can also get this through the global variable global_audio_mixer. AudioMixer *get_audio_mixer() { return audio_mixer.get(); } const AudioMixer *get_audio_mixer() const { return audio_mixer.get(); } @@ -413,7 +418,7 @@ public: return httpd.get_num_connected_clients(); } - std::vector get_theme_menu() { return theme->get_theme_menu(); } + Theme::MenuEntry *get_theme_menu() { return theme->get_theme_menu(); } void theme_menu_entry_clicked(int lua_ref) { return theme->theme_menu_entry_clicked(lua_ref); } @@ -456,7 +461,7 @@ private: HTTPD httpd; unsigned num_cards, num_video_inputs, num_html_inputs = 0; - QSurface *mixer_surface, *h264_encoder_surface, *decklink_output_surface; + QSurface *mixer_surface, *h264_encoder_surface, *decklink_output_surface, *image_update_surface; std::unique_ptr resource_pool; std::unique_ptr theme; std::atomic audio_source_channel{0}; @@ -541,9 +546,10 @@ private: }; std::deque new_frames; std::condition_variable new_frames_changed; // Set whenever new_frames is changed. - QueueLengthPolicy queue_length_policy; // Refers to the "new_frames" queue. + std::vector new_raw_audio; + int last_timecode = -1; // Unwrapped. JitterHistory jitter_history; @@ -578,7 +584,7 @@ private: bool is_preroll; std::chrono::steady_clock::time_point frame_timestamp; }; - OutputFrameInfo get_one_frame_from_each_card(unsigned master_card_index, bool master_card_is_output, CaptureCard::NewFrame new_frames[MAX_VIDEO_CARDS], bool has_new_frame[MAX_VIDEO_CARDS]); + OutputFrameInfo get_one_frame_from_each_card(unsigned master_card_index, bool master_card_is_output, CaptureCard::NewFrame new_frames[MAX_VIDEO_CARDS], bool has_new_frame[MAX_VIDEO_CARDS], std::vector raw_audio[MAX_VIDEO_CARDS]); InputState input_state;