From 709f37d4b7a6be426782b3afb1bbc32cdec8f076 Mon Sep 17 00:00:00 2001 From: "Steinar H. Gunderson" Date: Wed, 25 Jan 2017 00:03:57 +0100 Subject: [PATCH] Fix transitioning into having no HDMI/SDI output (output_card_index=1). --- mixer.cpp | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/mixer.cpp b/mixer.cpp index 855a73f..b5311a3 100644 --- a/mixer.cpp +++ b/mixer.cpp @@ -281,18 +281,19 @@ void Mixer::set_output_card(int card_index) old_card->is_fake_capture = false; old_card->capture->start_bm_capture(); } - - CaptureCard *card = &cards[card_index]; - bmusb::CaptureInterface *capture = card->capture.get(); - lock.unlock(); - capture->stop_dequeue_thread(); - lock.lock(); - card->parked_capture = move(card->capture); - bmusb::CaptureInterface *fake_capture = new FakeCapture(global_flags.width, global_flags.height, FAKE_FPS, OUTPUT_FREQUENCY, card_index, global_flags.fake_cards_audio); - configure_card(card_index, fake_capture, /*is_fake_capture=*/true, card->output.release()); - card->queue_length_policy.reset(card_index); - card->capture->start_bm_capture(); - card->output->start_output(bmdModeHD720p5994, pts_int); // FIXME + if (card_index != -1) { + CaptureCard *card = &cards[card_index]; + bmusb::CaptureInterface *capture = card->capture.get(); + lock.unlock(); + capture->stop_dequeue_thread(); + lock.lock(); + card->parked_capture = move(card->capture); + bmusb::CaptureInterface *fake_capture = new FakeCapture(global_flags.width, global_flags.height, FAKE_FPS, OUTPUT_FREQUENCY, card_index, global_flags.fake_cards_audio); + configure_card(card_index, fake_capture, /*is_fake_capture=*/true, card->output.release()); + card->queue_length_policy.reset(card_index); + card->capture->start_bm_capture(); + card->output->start_output(bmdModeHD720p5994, pts_int); // FIXME + } output_card_index = card_index; } -- 2.39.2