11 #include "ycbcr_interpretation.h"
14 int width = 1280, height = 720;
15 int min_num_cards = 2;
16 int max_num_cards = MAX_VIDEO_CARDS;
17 std::string va_display;
18 bool fake_cards_audio = false;
19 bool uncompressed_video_to_http = false;
20 bool x264_video_to_http = false;
21 bool x264_video_to_disk = false; // Disables Quick Sync entirely. Implies x264_video_to_http == true.
22 bool x264_separate_disk_encode = false; // Disables Quick Sync entirely. Implies x264_video_to_disk == true.
23 bool av1_video_to_http = false;
24 std::vector<std::string> theme_dirs { ".", PREFIX "/share/nageru" };
25 std::string recording_dir = ".";
26 std::string theme_filename = "theme.lua";
27 bool locut_enabled = true;
28 bool gain_staging_auto = true;
29 float initial_gain_staging_db = 0.0f;
30 bool compressor_enabled = true;
31 bool limiter_enabled = true;
32 bool final_makeup_gain_auto = true;
33 bool flush_pbos = true;
34 std::string stream_mux_name = DEFAULT_STREAM_MUX_NAME;
35 bool stream_coarse_timebase = false;
36 std::string stream_audio_codec_name; // Blank = use the same as for the recording.
37 int stream_audio_codec_bitrate = DEFAULT_AUDIO_OUTPUT_BIT_RATE; // Ignored if stream_audio_codec_name is blank.
38 std::string x264_preset; // Empty will be overridden by X264_DEFAULT_PRESET, unless speedcontrol is set.
39 std::string x264_tune = X264_DEFAULT_TUNE;
40 bool x264_speedcontrol = false;
41 bool x264_speedcontrol_verbose = false;
42 int x264_bitrate = -1; // In kilobit/sec. -1 = not set = DEFAULT_X264_OUTPUT_BIT_RATE.
43 float x264_crf = HUGE_VAL; // From 51 - QP_MAX_SPEC to 51. HUGE_VAL = not set = use x264_bitrate instead.
44 int x264_vbv_max_bitrate = -1; // In kilobits. 0 = no limit, -1 = same as <x264_bitrate> (CBR).
45 int x264_vbv_buffer_size = -1; // In kilobits. 0 = one-frame VBV, -1 = same as <x264_bitrate> (one-second VBV).
46 std::vector<std::string> x264_extra_param; // In “key[,value]” format.
48 int av1_preset = DEFAULT_AV1_PRESET;
49 int av1_bitrate = DEFAULT_AV1_OUTPUT_BIT_RATE;
50 int av1_fps_num = DEFAULT_AV1_FPS_NUM, av1_fps_den = DEFAULT_AV1_FPS_DEN;
51 std::vector<std::string> av1_extra_param; // In “key[,value]” format.
53 std::string x264_separate_disk_preset; // Empty will be overridden by X264_DEFAULT_PRESET, unless speedcontrol is set.
54 std::string x264_separate_disk_tune = X264_DEFAULT_TUNE;
55 int x264_separate_disk_bitrate = -1;
56 float x264_separate_disk_crf = HUGE_VAL;
57 std::vector<std::string> x264_separate_disk_extra_param; // In “key[,value]” format.
59 std::string v4l_output_device; // Empty if none.
60 bool enable_alsa_output = true;
61 std::map<int, int> default_stream_mapping;
62 bool multichannel_mapping_mode = false; // Implicitly true if input_mapping_filename is nonempty.
63 std::string input_mapping_filename; // Empty for none.
64 std::string midi_mapping_filename; // Empty for none.
65 bool default_hdmi_input = false;
66 bool print_video_latency = false;
67 double audio_queue_length_ms = 100.0;
68 bool ycbcr_rec709_coefficients = false; // Will be overridden by HDMI/SDI output if ycbcr_auto_coefficients == true.
69 bool ycbcr_auto_coefficients = true;
71 double output_buffer_frames = 6.0;
72 double output_slop_frames = 0.5;
73 bool output_card_is_master = true;
74 int max_input_queue_frames = 6;
75 int http_port = DEFAULT_HTTPD_PORT;
76 int srt_port = DEFAULT_SRT_PORT; // -1 for none.
77 bool enable_srt = true; // UI toggle; not settable from the command line. See also srt_port.
78 bool display_timecode_in_stream = false;
79 bool display_timecode_on_stdout = false;
80 bool enable_quick_cut_keys = false;
81 bool ten_bit_input = false;
82 bool ten_bit_output = false; // Implies x264_video_to_disk == true and x264_bit_depth == 10.
83 YCbCrInterpretation ycbcr_interpretation[MAX_VIDEO_CARDS];
84 bool transcode_video = true; // Kaeru only.
85 bool transcode_audio = true; // Kaeru only.
86 bool enable_audio = true; // Kaeru only. If false, then transcode_audio is also false.
87 int x264_bit_depth = 8; // Not user-settable.
88 bool use_zerocopy = false; // Not user-settable.
89 bool fullscreen = false;
90 std::map<unsigned, unsigned> card_to_mjpeg_stream_export; // If a card is not in the map, it is not exported.
92 extern Flags global_flags;
98 void usage(Program program);
99 void parse_flags(Program program, int argc, char * const argv[]);
101 #endif // !defined(_FLAGS_H)