FFmpeg
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Functions
eval.h File Reference

simple arithmetic expression evaluator More...

#include "avutil.h"

Go to the source code of this file.

Functions

int av_expr_parse_and_eval (double *res, const char *s, const char *const *const_names, const double *const_values, const char *const *func1_names, double(*const *funcs1)(void *, double), const char *const *func2_names, double(*const *funcs2)(void *, double, double), void *opaque, int log_offset, void *log_ctx)
 Parse and evaluate an expression.
 
int av_expr_parse (AVExpr **expr, const char *s, const char *const *const_names, const char *const *func1_names, double(*const *funcs1)(void *, double), const char *const *func2_names, double(*const *funcs2)(void *, double, double), int log_offset, void *log_ctx)
 Parse an expression.
 
double av_expr_eval (AVExpr *e, const double *const_values, void *opaque)
 Evaluate a previously parsed expression.
 
void av_expr_free (AVExpr *e)
 Free a parsed expression previously created with av_expr_parse().
 
double av_strtod (const char *numstr, char **tail)
 Parse the string in numstr and return its value as a double.
 

Detailed Description

simple arithmetic expression evaluator

Definition in file eval.h.

Function Documentation

int av_expr_parse_and_eval ( double *  res,
const char *  s,
const char *const *  const_names,
const double *  const_values,
const char *const *  func1_names,
double(**)(void *, double)  funcs1,
const char *const *  func2_names,
double(**)(void *, double, double)  funcs2,
void opaque,
int  log_offset,
void log_ctx 
)

Parse and evaluate an expression.

Note, this is significantly slower than av_expr_eval().

Parameters
resa pointer to a double where is put the result value of the expression, or NAN in case of error
sexpression as a zero terminated string, for example "1+2^3+5*5+sin(2/3)"
const_namesNULL terminated array of zero terminated strings of constant identifiers, for example {"PI", "E", 0}
const_valuesa zero terminated array of values for the identifiers from const_names
func1_namesNULL terminated array of zero terminated strings of funcs1 identifiers
funcs1NULL terminated array of function pointers for functions which take 1 argument
func2_namesNULL terminated array of zero terminated strings of funcs2 identifiers
funcs2NULL terminated array of function pointers for functions which take 2 arguments
opaquea pointer which will be passed to all functions from funcs1 and funcs2
log_ctxparent logging context
Returns
>= 0 in case of success, a negative value corresponding to an AVERROR code otherwise

Definition at line 713 of file eval.c.

Referenced by av_parse_ratio(), config_input(), config_output_props(), config_props(), filter_frame(), func_eval_expr(), func_eval_expr_int_format(), get_aspect_ratio(), init(), main(), and set_string_number().

int av_expr_parse ( AVExpr **  expr,
const char *  s,
const char *const *  const_names,
const char *const *  func1_names,
double(**)(void *, double)  funcs1,
const char *const *  func2_names,
double(**)(void *, double, double)  funcs2,
int  log_offset,
void log_ctx 
)

Parse an expression.

Parameters
expra pointer where is put an AVExpr containing the parsed value in case of successful parsing, or NULL otherwise. The pointed to AVExpr must be freed with av_expr_free() by the user when it is not needed anymore.
sexpression as a zero terminated string, for example "1+2^3+5*5+sin(2/3)"
const_namesNULL terminated array of zero terminated strings of constant identifiers, for example {"PI", "E", 0}
func1_namesNULL terminated array of zero terminated strings of funcs1 identifiers
funcs1NULL terminated array of function pointers for functions which take 1 argument
func2_namesNULL terminated array of zero terminated strings of funcs2 identifiers
funcs2NULL terminated array of function pointers for functions which take 2 arguments
log_ctxparent logging context
Returns
>= 0 in case of success, a negative value corresponding to an AVERROR code otherwise

Definition at line 652 of file eval.c.

Referenced by av_expr_parse_and_eval(), config_input(), config_output(), config_props(), ff_rate_control_init(), geq_init(), init(), modplug_read_header(), process_command(), set_enable_expr(), set_expr(), and transcode_init().

double av_expr_eval ( AVExpr e,
const double *  const_values,
void opaque 
)

Evaluate a previously parsed expression.

Parameters
const_valuesa zero terminated array of values for the identifiers from av_expr_parse() const_names
opaquea pointer which will be passed to all functions from funcs1 and funcs2
Returns
the value of the expression

Definition at line 703 of file eval.c.

Referenced by av_expr_parse_and_eval(), config_output(), config_props(), DEFINE_BLEND(), do_video_out(), draw_text(), eval_expr(), ff_filter_frame_framed(), filter_frame(), geq_filter_frame(), get_qscale(), init(), modplug_read_packet(), request_frame(), select_frame(), send_next(), set_volume(), and update_context().

void av_expr_free ( AVExpr e)
double av_strtod ( const char *  numstr,
char **  tail 
)

Parse the string in numstr and return its value as a double.

If the string is empty, contains only whitespaces, or does not contain an initial substring that has the expected syntax for a floating-point number, no conversion is performed. In this case, returns a value of zero and the value returned in tail is the value of numstr.

Parameters
numstra string representing a number, may contain one of the International System number postfixes, for example 'K', 'M', 'G'. If 'i' is appended after the postfix, powers of 2 are used instead of powers of 10. The 'B' postfix multiplies the value for 8, and can be appended after another postfix or used alone. This allows using for example 'KB', 'MiB', 'G' and 'B' as postfix.
tailif non-NULL puts here the pointer to the char next after the last parsed character

Definition at line 92 of file eval.c.

Referenced by ff_parse_sample_rate(), parse_number_or_die(), parse_points_str(), parse_primary(), var_read_float(), X264_init(), and yae_set_tempo().