introduce a benchmark mode

This commit is contained in:
tildearrow 2022-07-19 17:01:19 -05:00
parent a4741861ce
commit cd7b333b2d
4 changed files with 119 additions and 2 deletions

View file

@ -49,6 +49,7 @@ FurnaceGUI g;
String outName;
String vgmOutName;
int loops=1;
int benchMode=0;
DivAudioExportModes outMode=DIV_EXPORT_MODE_ONE;
#ifdef HAVE_GUI
@ -220,6 +221,19 @@ TAParamResult pOutMode(String val) {
return TA_PARAM_SUCCESS;
}
TAParamResult pBenchmark(String val) {
if (val=="render") {
benchMode=1;
} else if (val=="seek") {
benchMode=2;
} else {
logE("invalid value for benchmark! valid values are: render and seek.");
return TA_PARAM_ERROR;
}
e.setAudio(DIV_AUDIO_DUMMY);
return TA_PARAM_SUCCESS;
}
TAParamResult pOutput(String val) {
outName=val;
e.setAudio(DIV_AUDIO_DUMMY);
@ -254,6 +268,8 @@ void initParams() {
params.push_back(TAParam("l","loops",true,pLoops,"<count>","set number of loops (-1 means loop forever)"));
params.push_back(TAParam("o","outmode",true,pOutMode,"one|persys|perchan","set file output mode"));
params.push_back(TAParam("B","benchmark",true,pBenchmark,"render|seek","run performance test"));
params.push_back(TAParam("V","version",false,pVersion,"","view information about Furnace."));
params.push_back(TAParam("W","warranty",false,pWarranty,"","view warranty disclaimer."));
}
@ -414,6 +430,15 @@ int main(int argc, char** argv) {
displayEngineFailError=true;
}
}
if (benchMode) {
logI("starting benchmark!");
if (benchMode==2) {
e.benchmarkSeek();
} else {
e.benchmarkPlayback();
}
return 0;
}
if (outName!="" || vgmOutName!="") {
if (vgmOutName!="") {
SafeWriter* w=e.saveVGM();