using namespace std;
-DB::DB(const char *filename)
+DB::DB(const std::string &filename)
{
- int ret = sqlite3_open(filename, &db);
+ int ret = sqlite3_open(filename.c_str(), &db);
if (ret != SQLITE_OK) {
- fprintf(stderr, "%s: %s\n", filename, sqlite3_errmsg(db));
+ fprintf(stderr, "%s: %s\n", filename.c_str(), sqlite3_errmsg(db));
exit(1);
}
#include "state.pb.h"
#include <sqlite3.h>
+#include <string>
class DB {
public:
- explicit DB(const char *filename);
+ explicit DB(const std::string &filename);
DB(const DB &) = delete;
StateProto get_state();
fprintf(stderr, " 2 = default (realtime 720p on fast embedded GPUs)\n");
fprintf(stderr, " 3 = good (realtime 720p on GTX 970 or so)\n");
fprintf(stderr, " 4 = best (not realtime on any current GPU)\n");
+ fprintf(stderr, " -d, --working-directory DIR where to store frames and database\n");
}
void parse_flags(int argc, char * const argv[])
{ "help", no_argument, 0, OPTION_HELP },
{ "slow-down-input", no_argument, 0, OPTION_SLOW_DOWN_INPUT },
{ "interpolation-quality", required_argument, 0, 'q' },
+ { "working-directory", required_argument, 0, 'd' },
{ 0, 0, 0, 0 }
};
for ( ;; ) {
int option_index = 0;
- int c = getopt_long(argc, argv, "q:", long_options, &option_index);
+ int c = getopt_long(argc, argv, "q:d:", long_options, &option_index);
if (c == -1) {
break;
case 'q':
global_flags.interpolation_quality = atoi(optarg);
break;
+ case 'd':
+ global_flags.working_directory = optarg;
+ break;
case OPTION_HELP:
usage();
exit(0);
struct Flags {
std::string stream_source;
+ std::string working_directory = ".";
bool slow_down_input = false;
int interpolation_quality = 2;
};
string filename_for_frame(unsigned stream_idx, int64_t pts)
{
char filename[256];
- snprintf(filename, sizeof(filename), "frames/cam%d-pts%09ld.jpeg", stream_idx, pts);
+ snprintf(filename, sizeof(filename), "%s/frames/cam%d-pts%09ld.jpeg",
+ global_flags.working_directory.c_str(), stream_idx, pts);
return filename;
}
#include "clip_list.h"
#include "disk_space_estimator.h"
+#include "flags.h"
#include "player.h"
#include "post_to_main_thread.h"
#include "timebase.h"
MainWindow::MainWindow()
: ui(new Ui::MainWindow),
- db("futatabi.db")
+ db(global_flags.working_directory + "/futatabi.db")
{
global_mainwindow = this;
ui->setupUi(this);