+vector<uint32_t>
+EngineControl::get_buffer_sizes_for_all_devices ()
+{
+ boost::shared_ptr<ARDOUR::AudioBackend> backend =
+ ARDOUR::AudioEngine::instance ()->current_backend ();
+ vector<uint32_t> input_sizes;
+ vector<uint32_t> output_sizes;
+ vector<uint32_t> all_sizes;
+
+ if (backend->use_separate_input_and_output_devices ()) {
+ input_sizes = backend->available_buffer_sizes (get_input_device_name ());
+ output_sizes = backend->available_buffer_sizes (get_output_device_name ());
+
+ std::set_union (input_sizes.begin (),
+ input_sizes.end (),
+ output_sizes.begin (),
+ output_sizes.end (),
+ std::back_inserter (all_sizes));
+ } else {
+ all_sizes = backend->available_buffer_sizes (get_device_name ());
+ }
+ return all_sizes;
+}
+