session: add support to auto detect input format (for init file)
authorGerhard Sittig <gerhard.sittig@gmx.net>
Sun, 13 May 2018 06:59:02 +0000 (08:59 +0200)
committerGerhard Sittig <gerhard.sittig@gmx.net>
Sun, 13 May 2018 22:10:00 +0000 (00:10 +0200)
Extend the Session::load_init_file() method, to have the input format
automatically detected in the absence of an -I spec upon startup.

This fixes part of bug 1015. Input files specified at the command line
when pulseview gets invoked are handled. Files that interactively get
loaded while pulseview is running are not handled yet.

pv/session.cpp

index 80dad66ee929ef36974da0573cb982f3843b4e06..50e89e567041c2ec186e47e0d387457808f452a3 100644 (file)
@@ -483,6 +483,7 @@ void Session::load_init_file(const string &file_name, const string &format)
        map<string, Glib::VariantBase> input_opts;
 
        if (!format.empty()) {
+               // Got a user provided input format spec.
                const map<string, shared_ptr<InputFormat> > formats =
                        device_manager_.context()->input_formats();
                auto user_opts = pv::util::split_string(format, ":");
@@ -499,6 +500,11 @@ void Session::load_init_file(const string &file_name, const string &format)
                input_format = (*iter).second;
                input_opts = input_format_options(user_opts,
                        input_format->options());
+       } else {
+               // (Try to) auto detect the input format. Lookup failure
+               // is not fatal, when no input module claimed responsibility,
+               // then a session file gets loaded.
+               input_format = device_manager_.context()->input_format_match(file_name);
        }
 
        load_file(QString::fromStdString(file_name), input_format, input_opts);