return !cards[master_card_index].new_frames.empty() ||
cards[master_card_index].capture->get_disconnected();
});
+ if (timed_out) {
+ fprintf(stderr, "WARNING: Master card (%s) did not deliver a frame for 100 ms, creating a fake one.\n",
+ description_for_card(master_card_index).c_str());
+ }
}
if (timed_out) {
fractional_samples = num_samples_times_timebase % TIMEBASE;
assert(output_frame_info.num_samples >= 0);
+ if (timed_out) {
+ DeviceSpec device{InputSourceType::CAPTURE_CARD, master_card_index};
+ bool success;
+ do {
+ success = audio_mixer->add_silence(device, output_frame_info.num_samples, /*dropped_frames=*/0);
+ } while (!success);
+ }
+
return output_frame_info;
}