func: int parse_optgroup(void *optctx,OptionGroup *g) int i ; int ret ; for (i = 0; i < g -> nb_opts; i++) Option * o = & g -> opts [ i ] ; ret = write_option ( optctx , o -> opt , o -> key , o -> val ); if ( ret < 0 )  static int write_option(void *optctx,const OptionDef *po,const char *opt,const char *arg) if ( po -> flags & 0x8000 )  char * p = strchr ( opt , ':' ) ; ( * so ) [ * dstcount - 1 ] . specifier = av_strdup ( ( ( p ? p + 1 : "" ) ) ); dst = ( & ( * so ) [ * dstcount - 1 ] . u ); * ( ( char * * ) dst ) = str; * ( ( int * ) dst ) = ( parse_number_or_die ( opt , arg , 0x0400 , ( - 2147483647 - 1 ) , 2147483647 ) ); double parse_number_or_die(const char *context,const char *numstr,int type,double min,double max) double d = av_strtod ( numstr , & tail ) ; if ( d < min || d > max )  if ( type == 0x0400 && ( ( int64_t ) d ) != d )  if ( type == 0x80 && ( ( int ) d ) != d )  return d ; av_log ( ( ( void * ) 0 ) , 8 , error , context , numstr , min , max ); * ( ( int64_t * ) dst ) = ( parse_number_or_die ( opt , arg , 0x0400 , ( - 9223372036854775807L - 1 ) , 9223372036854775807L ) ); double parse_number_or_die(const char *context,const char *numstr,int type,double min,double max) double d = av_strtod ( numstr , & tail ) ; if ( d < min || d > max )  if ( type == 0x0400 && ( ( int64_t ) d ) != d )  if ( type == 0x80 && ( ( int ) d ) != d )  return d ; av_log ( ( ( void * ) 0 ) , 8 , error , context , numstr , min , max ); * ( ( int64_t * ) dst ) = parse_time_or_die ( opt , arg , 1 ); int64_t parse_time_or_die(const char *context,const char *timestr,int is_duration) if ( av_parse_time ( & us , timestr , is_duration ) < 0 )  av_log ( ( ( void * ) 0 ) , 8 , "Invalid %s specification for %s: %s\n" , ( is_duration ? "duration" : "date" ) , context , timestr ); * ( ( float * ) dst ) = ( parse_number_or_die ( opt , arg , 0x00100 , ( - __builtin_inff ( ) ) , ( __builtin_inff ( ) ) ) ); double parse_number_or_die(const char *context,const char *numstr,int type,double min,double max) double d = av_strtod ( numstr , & tail ) ; if ( d < min || d > max )  if ( type == 0x0400 && ( ( int64_t ) d ) != d )  if ( type == 0x80 && ( ( int ) d ) != d )  return d ; av_log ( ( ( void * ) 0 ) , 8 , error , context , numstr , min , max ); * ( ( double * ) dst ) = parse_number_or_die ( opt , arg , 0x20000 , ( - __builtin_inff ( ) ) , ( __builtin_inff ( ) ) ); double parse_number_or_die(const char *context,const char *numstr,int type,double min,double max) double d = av_strtod ( numstr , & tail ) ; if ( d < min || d > max )  if ( type == 0x0400 && ( ( int64_t ) d ) != d )  if ( type == 0x80 && ( ( int ) d ) != d )  return d ; av_log ( ( ( void * ) 0 ) , 8 , error , context , numstr , min , max ); 