annotate eval.h @ 5707:c46509aca422 libavcodec

Remove check for input buffer size as it does not guarantee that decoder will not run out of output buffer bounds (and all suspected decoders have their own checks now).
author kostya
date Mon, 24 Sep 2007 16:50:32 +0000
parents 0244bba24b43
children 1d83e9c34641
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)
4889
beeb03aad909 patch so that the deprecated items show up correctly
benoit
parents: 4139
diff changeset
32 /**
beeb03aad909 patch so that the deprecated items show up correctly
benoit
parents: 4139
diff changeset
33 * @deprecated Use ff_eval2 instead
beeb03aad909 patch so that the deprecated items show up correctly
benoit
parents: 4139
diff changeset
34 */
3790
7b289e4ae034 Add forgotten eval.h...
takis
parents:
diff changeset
35 double ff_eval(char *s, double *const_value, const char **const_name,
7b289e4ae034 Add forgotten eval.h...
takis
parents:
diff changeset
36 double (**func1)(void *, double), const char **func1_name,
7b289e4ae034 Add forgotten eval.h...
takis
parents:
diff changeset
37 double (**func2)(void *, double, double), char **func2_name,
7b289e4ae034 Add forgotten eval.h...
takis
parents:
diff changeset
38 void *opaque);
7b289e4ae034 Add forgotten eval.h...
takis
parents:
diff changeset
39 #endif
4138
michael
parents: 4081
diff changeset
40
michael
parents: 4081
diff changeset
41 /**
michael
parents: 4081
diff changeset
42 * Parses and evaluates an expression.
4139
8772709e26d0 ministry of english grammar :) then->than
ods15
parents: 4138
diff changeset
43 * Note, this is significantly slower than ff_parse_eval()
4138
michael
parents: 4081
diff changeset
44 * @param s expression as a zero terminated string for example "1+2^3+5*5+sin(2/3)"
michael
parents: 4081
diff changeset
45 * @param func1 NULL terminated array of function pointers for functions which take 1 argument
michael
parents: 4081
diff changeset
46 * @param func2 NULL terminated array of function pointers for functions which take 2 arguments
michael
parents: 4081
diff changeset
47 * @param const_name NULL terminated array of zero terminated strings of constant identifers for example {"PI", "E", 0}
michael
parents: 4081
diff changeset
48 * @param func1_name NULL terminated array of zero terminated strings of func1 identifers
michael
parents: 4081
diff changeset
49 * @param func2_name NULL terminated array of zero terminated strings of func2 identifers
michael
parents: 4081
diff changeset
50 * @param error pointer to a char* which is set to an error message if something goes wrong
michael
parents: 4081
diff changeset
51 * @param const_value a zero terminated array of values for the identifers from const_name
michael
parents: 4081
diff changeset
52 * @param opaque a pointer which will be passed to all functions from func1 and func2
michael
parents: 4081
diff changeset
53 * @return the value of the expression
michael
parents: 4081
diff changeset
54 */
3790
7b289e4ae034 Add forgotten eval.h...
takis
parents:
diff changeset
55 double ff_eval2(char *s, double *const_value, const char **const_name,
7b289e4ae034 Add forgotten eval.h...
takis
parents:
diff changeset
56 double (**func1)(void *, double), const char **func1_name,
7b289e4ae034 Add forgotten eval.h...
takis
parents:
diff changeset
57 double (**func2)(void *, double, double), char **func2_name,
7b289e4ae034 Add forgotten eval.h...
takis
parents:
diff changeset
58 void *opaque, char **error);
7b289e4ae034 Add forgotten eval.h...
takis
parents:
diff changeset
59
4081
cedb63307f3d new optimized eval method, by seperating parsing and runtime
ods15
parents: 3947
diff changeset
60 typedef struct ff_expr_s AVEvalExpr;
4138
michael
parents: 4081
diff changeset
61
michael
parents: 4081
diff changeset
62 /**
michael
parents: 4081
diff changeset
63 * Parses a expression.
michael
parents: 4081
diff changeset
64 * @param s expression as a zero terminated string for example "1+2^3+5*5+sin(2/3)"
michael
parents: 4081
diff changeset
65 * @param func1 NULL terminated array of function pointers for functions which take 1 argument
michael
parents: 4081
diff changeset
66 * @param func2 NULL terminated array of function pointers for functions which take 2 arguments
michael
parents: 4081
diff changeset
67 * @param const_name NULL terminated array of zero terminated strings of constant identifers for example {"PI", "E", 0}
michael
parents: 4081
diff changeset
68 * @param func1_name NULL terminated array of zero terminated strings of func1 identifers
michael
parents: 4081
diff changeset
69 * @param func2_name NULL terminated array of zero terminated strings of func2 identifers
michael
parents: 4081
diff changeset
70 * @param error pointer to a char* which is set to an error message if something goes wrong
5129
0244bba24b43 misc typo fixes
diego
parents: 4889
diff changeset
71 * @return AVEvalExpr which must be freed with ff_eval_free by the user when it is not needed anymore
4138
michael
parents: 4081
diff changeset
72 * NULL if anything went wrong
michael
parents: 4081
diff changeset
73 */
4081
cedb63307f3d new optimized eval method, by seperating parsing and runtime
ods15
parents: 3947
diff changeset
74 AVEvalExpr * ff_parse(char *s, const char **const_name,
cedb63307f3d new optimized eval method, by seperating parsing and runtime
ods15
parents: 3947
diff changeset
75 double (**func1)(void *, double), const char **func1_name,
cedb63307f3d new optimized eval method, by seperating parsing and runtime
ods15
parents: 3947
diff changeset
76 double (**func2)(void *, double, double), char **func2_name,
cedb63307f3d new optimized eval method, by seperating parsing and runtime
ods15
parents: 3947
diff changeset
77 char **error);
4138
michael
parents: 4081
diff changeset
78 /**
michael
parents: 4081
diff changeset
79 * Evaluates a previously parsed expression.
michael
parents: 4081
diff changeset
80 * @param const_value a zero terminated array of values for the identifers from ff_parse const_name
michael
parents: 4081
diff changeset
81 * @param opaque a pointer which will be passed to all functions from func1 and func2
michael
parents: 4081
diff changeset
82 * @return the value of the expression
michael
parents: 4081
diff changeset
83 */
4081
cedb63307f3d new optimized eval method, by seperating parsing and runtime
ods15
parents: 3947
diff changeset
84 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
85 void ff_eval_free(AVEvalExpr * e);
cedb63307f3d new optimized eval method, by seperating parsing and runtime
ods15
parents: 3947
diff changeset
86
3790
7b289e4ae034 Add forgotten eval.h...
takis
parents:
diff changeset
87 #endif /* AVCODEC_EVAL_H */