@ -19,6 +19,8 @@ Options:
- s , - - start Start from < seconds >
- s , - - start Start from < seconds >
- x , - - playback Playback < speed >
- x , - - playback Playback < speed >
- - demo Use a demo route instead of providing your own
- - demo Use a demo route instead of providing your own
- - auto Auto load the route from the best available source ( no video ) :
internal , openpilotci , comma_api , car_segments , testing_closet
- d , - - data_dir Local directory with routes
- d , - - data_dir Local directory with routes
- p , - - prefix Set OPENPILOT_PREFIX
- p , - - prefix Set OPENPILOT_PREFIX
- - dcam Load driver camera
- - dcam Load driver camera
@ -39,6 +41,7 @@ struct ReplayConfig {
std : : string data_dir ;
std : : string data_dir ;
std : : string prefix ;
std : : string prefix ;
uint32_t flags = REPLAY_FLAG_NONE ;
uint32_t flags = REPLAY_FLAG_NONE ;
bool auto_source = false ;
int start_seconds = 0 ;
int start_seconds = 0 ;
int cache_segments = - 1 ;
int cache_segments = - 1 ;
float playback_speed = - 1 ;
float playback_speed = - 1 ;
@ -52,6 +55,7 @@ bool parseArgs(int argc, char *argv[], ReplayConfig &config) {
{ " start " , required_argument , nullptr , ' s ' } ,
{ " start " , required_argument , nullptr , ' s ' } ,
{ " playback " , required_argument , nullptr , ' x ' } ,
{ " playback " , required_argument , nullptr , ' x ' } ,
{ " demo " , no_argument , nullptr , 0 } ,
{ " demo " , no_argument , nullptr , 0 } ,
{ " auto " , no_argument , nullptr , 0 } ,
{ " data_dir " , required_argument , nullptr , ' d ' } ,
{ " data_dir " , required_argument , nullptr , ' d ' } ,
{ " prefix " , required_argument , nullptr , ' p ' } ,
{ " prefix " , required_argument , nullptr , ' p ' } ,
{ " dcam " , no_argument , nullptr , 0 } ,
{ " dcam " , no_argument , nullptr , 0 } ,
@ -94,11 +98,9 @@ bool parseArgs(int argc, char *argv[], ReplayConfig &config) {
case ' p ' : config . prefix = optarg ; break ;
case ' p ' : config . prefix = optarg ; break ;
case 0 : {
case 0 : {
std : : string name = cli_options [ option_index ] . name ;
std : : string name = cli_options [ option_index ] . name ;
if ( name = = " demo " ) {
if ( name = = " demo " ) config . route = DEMO_ROUTE ;
config . route = DEMO_ROUTE ;
else if ( name = = " auto " ) config . auto_source = true ;
} else {
else config . flags | = flag_map . at ( name ) ;
config . flags | = flag_map . at ( name ) ;
}
break ;
break ;
}
}
case ' h ' : std : : cout < < helpText ; return false ;
case ' h ' : std : : cout < < helpText ; return false ;
@ -136,7 +138,7 @@ int main(int argc, char *argv[]) {
op_prefix = std : : make_unique < OpenpilotPrefix > ( config . prefix ) ;
op_prefix = std : : make_unique < OpenpilotPrefix > ( config . prefix ) ;
}
}
Replay replay ( config . route , config . allow , config . block , nullptr , config . flags , config . data_dir ) ;
Replay replay ( config . route , config . allow , config . block , nullptr , config . flags , config . data_dir , config . auto_source ) ;
if ( config . cache_segments > 0 ) {
if ( config . cache_segments > 0 ) {
replay . setSegmentCacheLimit ( config . cache_segments ) ;
replay . setSegmentCacheLimit ( config . cache_segments ) ;
}
}