#include #include #include "qmpvisrendercore.hpp" #include "qmpsettingsro.hpp" int main(int argc,char **argv) { QCoreApplication::setApplicationName("qmpvisrender"); QCoreApplication::setApplicationVersion("0.0.0"); QCoreApplication a(argc,argv); QCommandLineParser clp; clp.setApplicationDescription("Renderer a visualization of a midi file."); clp.addHelpOption(); clp.addVersionOption(); clp.addOption({{"f","output-file"},"File name of the output file.","filename","output.mp4"}); clp.addOption({ "receiver", "Specify a program and its arguments to process the rendered frames. Supports parameter substitution. See documentation for details.", "command", "ffmpeg %i -vf vflip -pix_fmt yuv420p -c:v libx264 -preset slow -crf 22 %o" }); clp.addOption({ {"e","receiver-execution"}, "Execution mode of the receiver command. Valid options are 'one-shot' and 'per-frame'", "mode", "one-shot" }); clp.addOption({{"s","show-window"},"Do not hide the visualization window."}); clp.addOption({{"c","config"},"Load options from the configuration file.","qmprc file"}); clp.addOption({{"o","option"},"Set option for the visualization module.","key-value pair"}); clp.addOption({"list-options","Show a list of recognized options and quit."}); clp.addPositionalArgument("file","MIDI file to render"); clp.process(a.arguments()); qmpVisRenderCore core(&clp); if(clp.positionalArguments().empty()&&!clp.isSet("list-options")) clp.showHelp(1); core.loadSettings(); if(!core.loadVisualizationLibrary()) return 1; if(clp.positionalArguments().size()) core.setMIDIFile(clp.positionalArguments().front().toStdString().c_str()); core.startRender(); int retval=a.exec(); core.unloadVisualizationLibrary(); return retval; }