X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=flags.h;h=147c62a0b1b80c3406ce69fa01bd3fdbe5e480e2;hb=fa54f2630c56a1df0046923d6a77b1bd58abf240;hp=ba69db6af09cce6b0c32fbfb49740083cc7a97d6;hpb=8ade0b3b56c3bdad611eb62986f79e250a4def19;p=nageru diff --git a/flags.h b/flags.h index ba69db6..147c62a 100644 --- a/flags.h +++ b/flags.h @@ -1,19 +1,25 @@ #ifndef _FLAGS_H #define _FLAGS_H +#include + #include #include #include #include "defs.h" +#include "ycbcr_interpretation.h" struct Flags { + int width = 1280, height = 720; int num_cards = 2; std::string va_display; bool fake_cards_audio = false; bool uncompressed_video_to_http = false; bool x264_video_to_http = false; + bool x264_video_to_disk = false; // Disables Quick Sync entirely. Implies x264_video_to_http == true. std::vector theme_dirs { ".", "/usr/local/share/nageru" }; + std::string recording_dir = "."; std::string theme_filename = "theme.lua"; bool locut_enabled = true; bool gain_staging_auto = true; @@ -30,15 +36,43 @@ struct Flags { std::string x264_tune = X264_DEFAULT_TUNE; bool x264_speedcontrol = false; bool x264_speedcontrol_verbose = false; - int x264_bitrate = DEFAULT_X264_OUTPUT_BIT_RATE; // In kilobit/sec. + int x264_bitrate = -1; // In kilobit/sec. -1 = not set = DEFAULT_X264_OUTPUT_BIT_RATE. + float x264_crf = HUGE_VAL; // From 51 - QP_MAX_SPEC to 51. HUGE_VAL = not set = use x264_bitrate instead. int x264_vbv_max_bitrate = -1; // In kilobits. 0 = no limit, -1 = same as (CBR). int x264_vbv_buffer_size = -1; // In kilobits. 0 = one-frame VBV, -1 = same as (one-second VBV). std::vector x264_extra_param; // In “key[,value]” format. bool enable_alsa_output = true; std::map default_stream_mapping; + bool multichannel_mapping_mode = false; // Implicitly true if input_mapping_filename is nonempty. + std::string input_mapping_filename; // Empty for none. + std::string midi_mapping_filename; // Empty for none. + bool print_video_latency = false; + double audio_queue_length_ms = 100.0; + bool ycbcr_rec709_coefficients = false; // Will be overridden by HDMI/SDI output if ycbcr_auto_coefficients == true. + bool ycbcr_auto_coefficients = true; + int output_card = -1; + double output_buffer_frames = 6.0; + double output_slop_frames = 0.5; + int max_input_queue_frames = 6; + int http_port = DEFAULT_HTTPD_PORT; + bool display_timecode_in_stream = false; + bool display_timecode_on_stdout = false; + bool enable_quick_cut_keys = false; + bool ten_bit_input = false; + bool ten_bit_output = false; // Implies x264_video_to_disk == true and x264_bit_depth == 10. + YCbCrInterpretation ycbcr_interpretation[MAX_VIDEO_CARDS]; + bool transcode_audio = true; // Kaeru only. + int x264_bit_depth = 8; // Not user-settable. + bool use_zerocopy = false; // Not user-settable. + bool can_disable_srgb_decoder = false; // Not user-settable. }; extern Flags global_flags; -void parse_flags(int argc, char * const argv[]); +enum Program { + PROGRAM_NAGERU, + PROGRAM_KAERU +}; +void usage(Program program); +void parse_flags(Program program, int argc, char * const argv[]); #endif // !defined(_FLAGS_H)