summaryrefslogtreecommitdiff
path: root/session_utils
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2015-12-16 18:46:44 +0100
committerRobin Gareus <robin@gareus.org>2015-12-16 23:22:05 +0100
commit53d8b454579a2343c0976d9aafb3013e2a9d432a (patch)
treef45a81e1de6c87f975a456de78e54d4bebb95c3e /session_utils
parent8bb4ac0ac71c84f9ba588df76fa94be3710f7dfe (diff)
session-utils: use session's sample-rate
Diffstat (limited to 'session_utils')
-rw-r--r--session_utils/common.cc29
1 files 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 <iostream>
#include <cstdlib>
-
+#include <glibmm.h>
#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;
}