From 53d8b454579a2343c0976d9aafb3013e2a9d432a Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Wed, 16 Dec 2015 18:46:44 +0100 Subject: session-utils: use session's sample-rate --- session_utils/common.cc | 29 +++++++++++++++++++++++------ 1 file changed, 23 insertions(+), 6 deletions(-) diff --git a/session_utils/common.cc b/session_utils/common.cc index d7f92871b9..9353c760bd 100644 --- a/session_utils/common.cc +++ b/session_utils/common.cc @@ -1,6 +1,6 @@ #include #include - +#include #include "pbd/debug.h" #include "pbd/event_loop.h" @@ -9,6 +9,8 @@ #include "pbd/pthread_utils.h" #include "ardour/audioengine.h" +#include "ardour/filename_extensions.h" +#include "ardour/types.h" #include "common.h" @@ -88,7 +90,7 @@ SessionUtils::init () { if (!ARDOUR::init (false, true, localedir)) { cerr << "Ardour failed to initialize\n" << endl; - ::exit (1); + ::exit (EXIT_FAILURE); } event_loop = new MyEventLoop ("util"); @@ -101,6 +103,7 @@ SessionUtils::init () test_receiver.listen_to (warning); } +// TODO return NULL, rather than exit() ?! static Session * _load_session (string dir, string state) { AudioEngine* engine = AudioEngine::create (); @@ -110,6 +113,20 @@ static Session * _load_session (string dir, string state) ::exit (EXIT_FAILURE); } + float sr; + SampleFormat sf; + + std::string s = Glib::build_filename (dir, state + statefile_suffix); + if (Session::get_info_from_path (s, sr, sf) == 0) { + if (engine->set_sample_rate (sr)) { + std::cerr << "Cannot set session's samplerate.\n"; + ::exit (EXIT_FAILURE); + } + } else { + std::cerr << "Cannot get samplerate from session.\n"; + ::exit (EXIT_FAILURE); + } + init_post_engine (); if (engine->start () != 0) { @@ -130,16 +147,16 @@ SessionUtils::load_session (string dir, string state) s = _load_session (dir, state); } catch (failed_constructor& e) { cerr << "failed_constructor: " << e.what() << "\n"; - exit (EXIT_FAILURE); + ::exit (EXIT_FAILURE); } catch (AudioEngine::PortRegistrationFailure& e) { cerr << "PortRegistrationFailure: " << e.what() << "\n"; - exit (EXIT_FAILURE); + ::exit (EXIT_FAILURE); } catch (exception& e) { cerr << "exception: " << e.what() << "\n"; - exit (EXIT_FAILURE); + ::exit (EXIT_FAILURE); } catch (...) { cerr << "unknown exception.\n"; - exit (EXIT_FAILURE); + ::exit (EXIT_FAILURE); } return s; } -- cgit v1.2.3