From 8ade0b3b56c3bdad611eb62986f79e250a4def19 Mon Sep 17 00:00:00 2001 From: "Steinar H. Gunderson" Date: Fri, 29 Jul 2016 12:37:10 +0200 Subject: [PATCH] Support the new audio output from FakeCapture, with a (non-default) flag. --- bmusb | 2 +- flags.cpp | 8 +++++++- flags.h | 1 + mixer.cpp | 6 ++++-- 4 files changed, 13 insertions(+), 4 deletions(-) diff --git a/bmusb b/bmusb index b943327..e0837a1 160000 --- a/bmusb +++ b/bmusb @@ -1 +1 @@ -Subproject commit b9433278b3cca82312d3785e2e75a57375a8683c +Subproject commit e0837a17b5a497476d67237c768836e51f8a4ce7 diff --git a/flags.cpp b/flags.cpp index acbf497..2ff7d4b 100644 --- a/flags.cpp +++ b/flags.cpp @@ -13,7 +13,8 @@ Flags global_flags; // Long options that have no corresponding short option. enum LongOption { - OPTION_HTTP_UNCOMPRESSED_VIDEO = 1000, + OPTION_FAKE_CARDS_AUDIO = 1000, + OPTION_HTTP_UNCOMPRESSED_VIDEO, OPTION_HTTP_X264_VIDEO, OPTION_X264_PRESET, OPTION_X264_TUNE, @@ -54,6 +55,7 @@ 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, " --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"); @@ -99,6 +101,7 @@ void parse_flags(int argc, char * const argv[]) { "theme-dir", required_argument, 0, 'I' }, { "map-signal", required_argument, 0, 'm' }, { "va-display", required_argument, 0, 'v' }, + { "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 }, @@ -167,6 +170,9 @@ void parse_flags(int argc, char * const argv[]) case 'v': global_flags.va_display = optarg; 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; diff --git a/flags.h b/flags.h index f75ccd0..ba69db6 100644 --- a/flags.h +++ b/flags.h @@ -10,6 +10,7 @@ struct Flags { 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; std::vector theme_dirs { ".", "/usr/local/share/nageru" }; diff --git a/mixer.cpp b/mixer.cpp index fd33abb..52a8d84 100644 --- a/mixer.cpp +++ b/mixer.cpp @@ -201,7 +201,8 @@ Mixer::Mixer(const QSurfaceFormat &format, unsigned num_cards) unsigned num_fake_cards = 0; for ( ; card_index < num_cards; ++card_index, ++num_fake_cards) { - configure_card(card_index, new FakeCapture(WIDTH, HEIGHT, FAKE_FPS, OUTPUT_FREQUENCY, card_index), /*is_fake_capture=*/true); + FakeCapture *capture = new FakeCapture(WIDTH, HEIGHT, FAKE_FPS, OUTPUT_FREQUENCY, card_index, global_flags.fake_cards_audio); + configure_card(card_index, capture, /*is_fake_capture=*/true); } if (num_fake_cards > 0) { @@ -817,7 +818,8 @@ void Mixer::handle_hotplugged_cards() CaptureCard *card = &cards[card_index]; if (card->capture->get_disconnected()) { fprintf(stderr, "Card %u went away, replacing with a fake card.\n", card_index); - configure_card(card_index, new FakeCapture(WIDTH, HEIGHT, FAKE_FPS, OUTPUT_FREQUENCY, card_index), /*is_fake_capture=*/true); + FakeCapture *capture = new FakeCapture(WIDTH, HEIGHT, FAKE_FPS, OUTPUT_FREQUENCY, card_index, global_flags.fake_cards_audio); + configure_card(card_index, capture, /*is_fake_capture=*/true); card->queue_length_policy.reset(card_index); card->capture->start_bm_capture(); } -- 2.39.2