X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=flags.cpp;h=f3d9b658d286c125d057a1384cec6c1aff5538ad;hb=ad9585b7a6671903cadcf6c74491646736db8e1e;hp=acbf497b834bb1cc8193b0ff272cae91d3b15077;hpb=531f923c4b280eaccb77c3cec97f749b82d093c4;p=nageru diff --git a/flags.cpp b/flags.cpp index acbf497..f3d9b65 100644 --- a/flags.cpp +++ b/flags.cpp @@ -13,7 +13,10 @@ Flags global_flags; // Long options that have no corresponding short option. enum LongOption { - OPTION_HTTP_UNCOMPRESSED_VIDEO = 1000, + OPTION_MULTICHANNEL = 1000, + OPTION_MIDI_MAPPING, + OPTION_FAKE_CARDS_AUDIO, + OPTION_HTTP_UNCOMPRESSED_VIDEO, OPTION_HTTP_X264_VIDEO, OPTION_X264_PRESET, OPTION_X264_TUNE, @@ -54,6 +57,10 @@ void usage() fprintf(stderr, " -v, --va-display=SPEC VA-API device for H.264 encoding\n"); fprintf(stderr, " ($DISPLAY spec or /dev/dri/render* path)\n"); fprintf(stderr, " -m, --map-signal=SIGNAL,CARD set a default card mapping (can be given multiple times)\n"); + fprintf(stderr, " -M, --input-mapping=FILE start with the given audio input mapping (implies --multichannel)\n"); + fprintf(stderr, " --multichannel start in multichannel audio mapping mode\n"); + fprintf(stderr, " --midi-mapping=FILE start with the given MIDI controller mapping (implies --multichannel)\n"); + fprintf(stderr, " --fake-cards-audio make fake (disconnected) cards output a simple tone\n"); fprintf(stderr, " --http-uncompressed-video send uncompressed NV12 video to HTTP clients\n"); fprintf(stderr, " --http-x264-video send x264-compressed video to HTTP clients\n"); fprintf(stderr, " --x264-preset x264 quality preset (default " X264_DEFAULT_PRESET ")\n"); @@ -98,7 +105,11 @@ void parse_flags(int argc, char * const argv[]) { "theme", required_argument, 0, 't' }, { "theme-dir", required_argument, 0, 'I' }, { "map-signal", required_argument, 0, 'm' }, + { "input-mapping", required_argument, 0, 'M' }, { "va-display", required_argument, 0, 'v' }, + { "multichannel", no_argument, 0, OPTION_MULTICHANNEL }, + { "midi-mapping", required_argument, 0, OPTION_MIDI_MAPPING }, + { "fake-cards-audio", no_argument, 0, OPTION_FAKE_CARDS_AUDIO }, { "http-uncompressed-video", no_argument, 0, OPTION_HTTP_UNCOMPRESSED_VIDEO }, { "http-x264-video", no_argument, 0, OPTION_HTTP_X264_VIDEO }, { "x264-preset", required_argument, 0, OPTION_X264_PRESET }, @@ -132,7 +143,7 @@ void parse_flags(int argc, char * const argv[]) vector theme_dirs; for ( ;; ) { int option_index = 0; - int c = getopt_long(argc, argv, "c:C:t:v:m:", long_options, &option_index); + int c = getopt_long(argc, argv, "c:t:I:v:m:M:", long_options, &option_index); if (c == -1) { break; @@ -164,9 +175,22 @@ void parse_flags(int argc, char * const argv[]) global_flags.default_stream_mapping[signal_num] = card_num; break; } + case 'M': + global_flags.input_mapping_filename = optarg; + break; + case OPTION_MULTICHANNEL: + global_flags.multichannel_mapping_mode = true; + break; case 'v': global_flags.va_display = optarg; break; + case OPTION_MIDI_MAPPING: + global_flags.midi_mapping_filename = optarg; + global_flags.multichannel_mapping_mode = true; + break; + case OPTION_FAKE_CARDS_AUDIO: + global_flags.fake_cards_audio = true; + break; case OPTION_HTTP_UNCOMPRESSED_VIDEO: global_flags.uncompressed_video_to_http = true; break;