]> git.sesse.net Git - nageru/blob - flags.h
Support 4:2:2 v210 (10-bit) output for DeckLink.
[nageru] / flags.h
1 #ifndef _FLAGS_H
2 #define _FLAGS_H
3
4 #include <map>
5 #include <string>
6 #include <vector>
7
8 #include "defs.h"
9
10 struct Flags {
11         int width = 1280, height = 720;
12         int num_cards = 2;
13         std::string va_display;
14         bool fake_cards_audio = false;
15         bool uncompressed_video_to_http = false;
16         bool x264_video_to_http = false;
17         bool x264_video_to_disk = false;  // Disables Quick Sync entirely. Implies x264_video_to_http == true.
18         std::vector<std::string> theme_dirs { ".", "/usr/local/share/nageru" };
19         std::string theme_filename = "theme.lua";
20         bool locut_enabled = true;
21         bool gain_staging_auto = true;
22         float initial_gain_staging_db = 0.0f;
23         bool compressor_enabled = true;
24         bool limiter_enabled = true;
25         bool final_makeup_gain_auto = true;
26         bool flush_pbos = true;
27         std::string stream_mux_name = DEFAULT_STREAM_MUX_NAME;
28         bool stream_coarse_timebase = false;
29         std::string stream_audio_codec_name;  // Blank = use the same as for the recording.
30         int stream_audio_codec_bitrate = DEFAULT_AUDIO_OUTPUT_BIT_RATE;  // Ignored if stream_audio_codec_name is blank.
31         std::string x264_preset;  // Empty will be overridden by X264_DEFAULT_PRESET, unless speedcontrol is set.
32         std::string x264_tune = X264_DEFAULT_TUNE;
33         bool x264_speedcontrol = false;
34         bool x264_speedcontrol_verbose = false;
35         int x264_bitrate = DEFAULT_X264_OUTPUT_BIT_RATE;  // In kilobit/sec.
36         int x264_vbv_max_bitrate = -1;  // In kilobits. 0 = no limit, -1 = same as <x264_bitrate> (CBR).
37         int x264_vbv_buffer_size = -1;  // In kilobits. 0 = one-frame VBV, -1 = same as <x264_bitrate> (one-second VBV).
38         std::vector<std::string> x264_extra_param;  // In “key[,value]” format.
39         bool enable_alsa_output = true;
40         std::map<int, int> default_stream_mapping;
41         bool multichannel_mapping_mode = false;  // Implicitly true if input_mapping_filename is nonempty.
42         std::string input_mapping_filename;  // Empty for none.
43         std::string midi_mapping_filename;  // Empty for none.
44         bool print_video_latency = false;
45         double audio_queue_length_ms = 100.0;
46         bool ycbcr_rec709_coefficients = false;  // Will be overridden by HDMI/SDI output if ycbcr_auto_coefficients == true.
47         bool ycbcr_auto_coefficients = true;
48         int output_card = -1;
49         double output_buffer_frames = 6.0;
50         double output_slop_frames = 0.5;
51         int max_input_queue_frames = 6;
52         bool display_timecode_in_stream = false;
53         bool display_timecode_on_stdout = false;
54         bool ten_bit_input = false;
55         bool ten_bit_output = false;  // Implies x264_video_to_disk == true and x264_bit_depth == 10.
56         int x264_bit_depth = 8;  // Not user-settable.
57 };
58 extern Flags global_flags;
59
60 void parse_flags(int argc, char * const argv[]);
61
62 #endif  // !defined(_FLAGS_H)