annotate eval.h @ 4443:54bed3ee58f3 libavcodec

simpify state and make code 2% faster reimar, dont hesitate to flame me for not sending patches and feel free to revert any or all of my changes to lzo.c if you dont like them
author michael
date Wed, 31 Jan 2007 10:34:13 +0000
parents 8772709e26d0
children beeb03aad909
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
3790
7b289e4ae034 Add forgotten eval.h...
takis
parents:
diff changeset
1 /*
7b289e4ae034 Add forgotten eval.h...
takis
parents:
diff changeset
2 * simple arithmetic expression evaluator
7b289e4ae034 Add forgotten eval.h...
takis
parents:
diff changeset
3 *
7b289e4ae034 Add forgotten eval.h...
takis
parents:
diff changeset
4 * Copyright (c) 2002 Michael Niedermayer <michaelni@gmx.at>
7b289e4ae034 Add forgotten eval.h...
takis
parents:
diff changeset
5 *
3947
c8c591fe26f8 Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents: 3790
diff changeset
6 * This file is part of FFmpeg.
c8c591fe26f8 Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents: 3790
diff changeset
7 *
c8c591fe26f8 Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents: 3790
diff changeset
8 * FFmpeg is free software; you can redistribute it and/or
3790
7b289e4ae034 Add forgotten eval.h...
takis
parents:
diff changeset
9 * modify it under the terms of the GNU Lesser General Public
7b289e4ae034 Add forgotten eval.h...
takis
parents:
diff changeset
10 * License as published by the Free Software Foundation; either
3947
c8c591fe26f8 Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents: 3790
diff changeset
11 * version 2.1 of the License, or (at your option) any later version.
3790
7b289e4ae034 Add forgotten eval.h...
takis
parents:
diff changeset
12 *
3947
c8c591fe26f8 Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents: 3790
diff changeset
13 * FFmpeg is distributed in the hope that it will be useful,
3790
7b289e4ae034 Add forgotten eval.h...
takis
parents:
diff changeset
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
7b289e4ae034 Add forgotten eval.h...
takis
parents:
diff changeset
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
7b289e4ae034 Add forgotten eval.h...
takis
parents:
diff changeset
16 * Lesser General Public License for more details.
7b289e4ae034 Add forgotten eval.h...
takis
parents:
diff changeset
17 *
7b289e4ae034 Add forgotten eval.h...
takis
parents:
diff changeset
18 * You should have received a copy of the GNU Lesser General Public
3947
c8c591fe26f8 Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents: 3790
diff changeset
19 * License along with FFmpeg; if not, write to the Free Software
3790
7b289e4ae034 Add forgotten eval.h...
takis
parents:
diff changeset
20 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
7b289e4ae034 Add forgotten eval.h...
takis
parents:
diff changeset
21 */
7b289e4ae034 Add forgotten eval.h...
takis
parents:
diff changeset
22
7b289e4ae034 Add forgotten eval.h...
takis
parents:
diff changeset
23 /**
7b289e4ae034 Add forgotten eval.h...
takis
parents:
diff changeset
24 * @file eval.h
7b289e4ae034 Add forgotten eval.h...
takis
parents:
diff changeset
25 * eval header.
7b289e4ae034 Add forgotten eval.h...
takis
parents:
diff changeset
26 */
7b289e4ae034 Add forgotten eval.h...
takis
parents:
diff changeset
27
7b289e4ae034 Add forgotten eval.h...
takis
parents:
diff changeset
28 #ifndef AVCODEC_EVAL_H
7b289e4ae034 Add forgotten eval.h...
takis
parents:
diff changeset
29 #define AVCODEC_EVAL_H
7b289e4ae034 Add forgotten eval.h...
takis
parents:
diff changeset
30
7b289e4ae034 Add forgotten eval.h...
takis
parents:
diff changeset
31 #if LIBAVCODEC_VERSION_INT < ((52<<16)+(0<<8)+0)
7b289e4ae034 Add forgotten eval.h...
takis
parents:
diff changeset
32 double ff_eval(char *s, double *const_value, const char **const_name,
7b289e4ae034 Add forgotten eval.h...
takis
parents:
diff changeset
33 double (**func1)(void *, double), const char **func1_name,
7b289e4ae034 Add forgotten eval.h...
takis
parents:
diff changeset
34 double (**func2)(void *, double, double), char **func2_name,
7b289e4ae034 Add forgotten eval.h...
takis
parents:
diff changeset
35 void *opaque);
7b289e4ae034 Add forgotten eval.h...
takis
parents:
diff changeset
36 #endif
4138
michael
parents: 4081
diff changeset
37
michael
parents: 4081
diff changeset
38 /**
michael
parents: 4081
diff changeset
39 * Parses and evaluates an expression.
4139
8772709e26d0 ministry of english grammar :) then->than
ods15
parents: 4138
diff changeset
40 * Note, this is significantly slower than ff_parse_eval()
4138
michael
parents: 4081
diff changeset
41 * @param s expression as a zero terminated string for example "1+2^3+5*5+sin(2/3)"
michael
parents: 4081
diff changeset
42 * @param func1 NULL terminated array of function pointers for functions which take 1 argument
michael
parents: 4081
diff changeset
43 * @param func2 NULL terminated array of function pointers for functions which take 2 arguments
michael
parents: 4081
diff changeset
44 * @param const_name NULL terminated array of zero terminated strings of constant identifers for example {"PI", "E", 0}
michael
parents: 4081
diff changeset
45 * @param func1_name NULL terminated array of zero terminated strings of func1 identifers
michael
parents: 4081
diff changeset
46 * @param func2_name NULL terminated array of zero terminated strings of func2 identifers
michael
parents: 4081
diff changeset
47 * @param error pointer to a char* which is set to an error message if something goes wrong
michael
parents: 4081
diff changeset
48 * @param const_value a zero terminated array of values for the identifers from const_name
michael
parents: 4081
diff changeset
49 * @param opaque a pointer which will be passed to all functions from func1 and func2
michael
parents: 4081
diff changeset
50 * @return the value of the expression
michael
parents: 4081
diff changeset
51 */
3790
7b289e4ae034 Add forgotten eval.h...
takis
parents:
diff changeset
52 double ff_eval2(char *s, double *const_value, const char **const_name,
7b289e4ae034 Add forgotten eval.h...
takis
parents:
diff changeset
53 double (**func1)(void *, double), const char **func1_name,
7b289e4ae034 Add forgotten eval.h...
takis
parents:
diff changeset
54 double (**func2)(void *, double, double), char **func2_name,
7b289e4ae034 Add forgotten eval.h...
takis
parents:
diff changeset
55 void *opaque, char **error);
7b289e4ae034 Add forgotten eval.h...
takis
parents:
diff changeset
56
4081
cedb63307f3d new optimized eval method, by seperating parsing and runtime
ods15
parents: 3947
diff changeset
57 typedef struct ff_expr_s AVEvalExpr;
4138
michael
parents: 4081
diff changeset
58
michael
parents: 4081
diff changeset
59 /**
michael
parents: 4081
diff changeset
60 * Parses a expression.
michael
parents: 4081
diff changeset
61 * @param s expression as a zero terminated string for example "1+2^3+5*5+sin(2/3)"
michael
parents: 4081
diff changeset
62 * @param func1 NULL terminated array of function pointers for functions which take 1 argument
michael
parents: 4081
diff changeset
63 * @param func2 NULL terminated array of function pointers for functions which take 2 arguments
michael
parents: 4081
diff changeset
64 * @param const_name NULL terminated array of zero terminated strings of constant identifers for example {"PI", "E", 0}
michael
parents: 4081
diff changeset
65 * @param func1_name NULL terminated array of zero terminated strings of func1 identifers
michael
parents: 4081
diff changeset
66 * @param func2_name NULL terminated array of zero terminated strings of func2 identifers
michael
parents: 4081
diff changeset
67 * @param error pointer to a char* which is set to an error message if something goes wrong
michael
parents: 4081
diff changeset
68 * @return AVEvalExpr which must be freed with ff_eval_free by the user when its not needed anymore
michael
parents: 4081
diff changeset
69 * NULL if anything went wrong
michael
parents: 4081
diff changeset
70 */
4081
cedb63307f3d new optimized eval method, by seperating parsing and runtime
ods15
parents: 3947
diff changeset
71 AVEvalExpr * ff_parse(char *s, const char **const_name,
cedb63307f3d new optimized eval method, by seperating parsing and runtime
ods15
parents: 3947
diff changeset
72 double (**func1)(void *, double), const char **func1_name,
cedb63307f3d new optimized eval method, by seperating parsing and runtime
ods15
parents: 3947
diff changeset
73 double (**func2)(void *, double, double), char **func2_name,
cedb63307f3d new optimized eval method, by seperating parsing and runtime
ods15
parents: 3947
diff changeset
74 char **error);
4138
michael
parents: 4081
diff changeset
75 /**
michael
parents: 4081
diff changeset
76 * Evaluates a previously parsed expression.
michael
parents: 4081
diff changeset
77 * @param const_value a zero terminated array of values for the identifers from ff_parse const_name
michael
parents: 4081
diff changeset
78 * @param opaque a pointer which will be passed to all functions from func1 and func2
michael
parents: 4081
diff changeset
79 * @return the value of the expression
michael
parents: 4081
diff changeset
80 */
4081
cedb63307f3d new optimized eval method, by seperating parsing and runtime
ods15
parents: 3947
diff changeset
81 double ff_parse_eval(AVEvalExpr * e, double *const_value, void *opaque);
cedb63307f3d new optimized eval method, by seperating parsing and runtime
ods15
parents: 3947
diff changeset
82 void ff_eval_free(AVEvalExpr * e);
cedb63307f3d new optimized eval method, by seperating parsing and runtime
ods15
parents: 3947
diff changeset
83
3790
7b289e4ae034 Add forgotten eval.h...
takis
parents:
diff changeset
84 #endif /* AVCODEC_EVAL_H */