]> git.sesse.net Git - nageru/blobdiff - nageru/flags.cpp
Move texture uploading out of a lambda.
[nageru] / nageru / flags.cpp
index 57e58aecf423053b57d0bdfb00e399bda711dd0c..9c58ad9c0d7bf4aa0d0bfebe46e81a3b8b29b191 100644 (file)
@@ -19,6 +19,7 @@ enum LongOption {
        OPTION_MIDI_MAPPING,
        OPTION_DEFAULT_HDMI_INPUT,
        OPTION_FAKE_CARDS_AUDIO,
+       OPTION_V4L_OUTPUT,
        OPTION_HTTP_UNCOMPRESSED_VIDEO,
        OPTION_HTTP_X264_VIDEO,
        OPTION_RECORD_X264_VIDEO,
@@ -36,7 +37,10 @@ enum LongOption {
        OPTION_HTTP_AUDIO_CODEC,
        OPTION_HTTP_AUDIO_BITRATE,
        OPTION_HTTP_PORT,
+       OPTION_SRT_PORT,
+       OPTION_NO_SRT,
        OPTION_NO_TRANSCODE_AUDIO,
+       OPTION_DISABLE_AUDIO,
        OPTION_FLAT_AUDIO,
        OPTION_GAIN_STAGING,
        OPTION_DISABLE_LOCUT,
@@ -142,6 +146,7 @@ void usage(Program program)
                fprintf(stderr, "      --midi-mapping=FILE         start with the given MIDI controller mapping (implies --multichannel)\n");
                fprintf(stderr, "      --default-hdmi-input        default to HDMI over SDI inputs for cards that have both\n");
                fprintf(stderr, "      --fake-cards-audio          make fake (disconnected) cards output a simple tone\n");
+               fprintf(stderr, "      --v4l-output DEVICE         send video (no audio) to V4L2 output/loopback\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, "      --record-x264-video         store x264-compressed video to disk (implies --http-x264-video,\n");
@@ -167,9 +172,13 @@ void usage(Program program)
                DEFAULT_AUDIO_OUTPUT_BIT_RATE / 1000);
        fprintf(stderr, "      --http-port=PORT            which port to use for the built-in HTTP server\n");
        fprintf(stderr, "                                  (default is %d)\n", DEFAULT_HTTPD_PORT);
+       fprintf(stderr, "      --srt-port=PORT             which port to use for receiving SRT streams\n");
+       fprintf(stderr, "                                  (default is %d)\n", DEFAULT_SRT_PORT);
+       fprintf(stderr, "      --no-srt                    disable receiving SRT streams\n");
        if (program == PROGRAM_KAERU) {
                fprintf(stderr, "      --no-transcode-audio        copy encoded audio raw from the source stream\n");
                fprintf(stderr, "                                    (requires --http-audio-codec= to be set)\n");
+               fprintf(stderr, "      --disable-audio             do not include any audio in the stream\n");
        }
        if (program == PROGRAM_NAGERU) {
                fprintf(stderr, "      --flat-audio                start with most audio processing turned off\n");
@@ -235,6 +244,7 @@ void parse_flags(Program program, int argc, char * const argv[])
                { "midi-mapping", required_argument, 0, OPTION_MIDI_MAPPING },
                { "default-hdmi-input", no_argument, 0, OPTION_DEFAULT_HDMI_INPUT },
                { "fake-cards-audio", no_argument, 0, OPTION_FAKE_CARDS_AUDIO },
+               { "v4l-output", required_argument, 0, OPTION_V4L_OUTPUT },
                { "http-uncompressed-video", no_argument, 0, OPTION_HTTP_UNCOMPRESSED_VIDEO },
                { "http-x264-video", no_argument, 0, OPTION_HTTP_X264_VIDEO },
                { "record-x264-video", no_argument, 0, OPTION_RECORD_X264_VIDEO },
@@ -251,7 +261,10 @@ void parse_flags(Program program, int argc, char * const argv[])
                { "http-audio-codec", required_argument, 0, OPTION_HTTP_AUDIO_CODEC },
                { "http-audio-bitrate", required_argument, 0, OPTION_HTTP_AUDIO_BITRATE },
                { "http-port", required_argument, 0, OPTION_HTTP_PORT },
+               { "srt-port", required_argument, 0, OPTION_SRT_PORT },
+               { "no-srt", no_argument, 0, OPTION_NO_SRT },
                { "no-transcode-audio", no_argument, 0, OPTION_NO_TRANSCODE_AUDIO },
+               { "disable-audio", no_argument, 0, OPTION_DISABLE_AUDIO },
                { "flat-audio", no_argument, 0, OPTION_FLAT_AUDIO },
                { "gain-staging", required_argument, 0, OPTION_GAIN_STAGING },
                { "disable-locut", no_argument, 0, OPTION_DISABLE_LOCUT },
@@ -349,6 +362,9 @@ void parse_flags(Program program, int argc, char * const argv[])
                case OPTION_FAKE_CARDS_AUDIO:
                        global_flags.fake_cards_audio = true;
                        break;
+               case OPTION_V4L_OUTPUT:
+                       global_flags.v4l_output_device = optarg;
+                       break;
                case OPTION_HTTP_UNCOMPRESSED_VIDEO:
                        global_flags.uncompressed_video_to_http = true;
                        break;
@@ -364,9 +380,19 @@ void parse_flags(Program program, int argc, char * const argv[])
                case OPTION_HTTP_PORT:
                        global_flags.http_port = atoi(optarg);
                        break;
+               case OPTION_SRT_PORT:
+                       global_flags.srt_port = atoi(optarg);
+                       break;
+               case OPTION_NO_SRT:
+                       global_flags.srt_port = -1;
+                       break;
                case OPTION_NO_TRANSCODE_AUDIO:
                        global_flags.transcode_audio = false;
                        break;
+               case OPTION_DISABLE_AUDIO:
+                       global_flags.transcode_audio = false;
+                       global_flags.enable_audio = false;
+                       break;
                case OPTION_HTTP_X264_VIDEO:
                        global_flags.x264_video_to_http = true;
                        break;
@@ -570,7 +596,7 @@ void parse_flags(Program program, int argc, char * const argv[])
                fprintf(stderr, "ERROR: --output-card points to a nonexistant card\n");
                exit(1);
        }
-       if (!global_flags.transcode_audio && global_flags.stream_audio_codec_name.empty()) {
+       if (global_flags.enable_audio && !global_flags.transcode_audio && global_flags.stream_audio_codec_name.empty()) {
                fprintf(stderr, "ERROR: If not transcoding audio, you must specify ahead-of-time what audio codec is in use\n");
                fprintf(stderr, "       (using --http-audio-codec).\n");
                exit(1);