X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=nageru%2Fmixer.cpp;fp=nageru%2Fmixer.cpp;h=5de75c6db2d826c66bbd050e819362d7ca5eeac9;hb=403942c08c2403321fcfd5e6c5f2e6aa7c099874;hp=3a137d68a9b0d39b2a52388f699be0b9fa004c4b;hpb=c443b4ca0f527ed039d4b1014c1dd654c230eb15;p=nageru diff --git a/nageru/mixer.cpp b/nageru/mixer.cpp index 3a137d6..5de75c6 100644 --- a/nageru/mixer.cpp +++ b/nageru/mixer.cpp @@ -543,6 +543,7 @@ Mixer::Mixer(const QSurfaceFormat &format) if (global_flags.enable_alsa_output) { alsa.reset(new ALSAOutput(OUTPUT_FREQUENCY, /*num_channels=*/2)); } + output_card_is_master = global_flags.output_card_is_master; if (global_flags.output_card != -1) { desired_output_card_index = global_flags.output_card; set_output_card_internal(global_flags.output_card); @@ -899,7 +900,7 @@ void Mixer::set_output_card_internal(int card_index) card->jitter_history.clear(); card->capture->start_bm_capture(); desired_output_video_mode = output_video_mode = card->output->pick_video_mode(desired_output_video_mode); - card->output->start_output(desired_output_video_mode, pts_int); + card->output->start_output(desired_output_video_mode, pts_int, /*is_master_card=*/output_card_is_master); } output_card_index = card_index; output_jitter_history.clear(); @@ -1286,7 +1287,7 @@ void Mixer::thread_func() DeckLinkOutput *output = cards[output_card_index].output.get(); output->end_output(); desired_output_video_mode = output_video_mode = output->pick_video_mode(desired_output_video_mode); - output->start_output(desired_output_video_mode, pts_int); + output->start_output(desired_output_video_mode, pts_int, /*is_master_card=*/output_card_is_master); } { @@ -1299,7 +1300,7 @@ void Mixer::thread_func() bool master_card_is_output; unsigned master_card_index; - if (output_card_index != -1) { + if (output_card_index != -1 && output_card_is_master) { master_card_is_output = true; master_card_index = output_card_index; } else { @@ -1406,7 +1407,7 @@ void Mixer::thread_func() bool Mixer::input_card_is_master_clock(unsigned card_index, unsigned master_card_index) const { - if (output_card_index != -1) { + if (output_card_index != -1 && output_card_is_master) { // The output card (ie., cards[output_card_index].output) is the master clock, // so no input card (ie., cards[card_index].capture) is. return false;