Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/FFmpeg/FFmpeg.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorClément Bœsch <ubitux@gmail.com>2013-04-11 18:49:33 +0400
committerClément Bœsch <ubitux@gmail.com>2013-04-11 19:28:02 +0400
commit64ce15b9f433a59e11183fddc89324ca0afcb2b8 (patch)
tree94dae671eed923f428a183700344ba86a544ffae /libavfilter/asrc_aevalsrc.c
parent94d13df34c2db532ab0c1a2916984a38e610d592 (diff)
lavfi/aevalsrc: switch to an AVOptions-based system.
Diffstat (limited to 'libavfilter/asrc_aevalsrc.c')
-rw-r--r--libavfilter/asrc_aevalsrc.c22
1 files changed, 6 insertions, 16 deletions
diff --git a/libavfilter/asrc_aevalsrc.c b/libavfilter/asrc_aevalsrc.c
index 0dbfdd2703..86e29cc125 100644
--- a/libavfilter/asrc_aevalsrc.c
+++ b/libavfilter/asrc_aevalsrc.c
@@ -56,7 +56,7 @@ typedef struct {
int nb_channels;
int64_t pts;
AVExpr *expr[8];
- char *expr_str[8];
+ char *exprs;
int nb_samples; ///< number of samples per requested frame
char *duration_str; ///< total duration of the generated audio
double duration;
@@ -68,6 +68,7 @@ typedef struct {
#define FLAGS AV_OPT_FLAG_AUDIO_PARAM|AV_OPT_FLAG_FILTERING_PARAM
static const AVOption aevalsrc_options[]= {
+ { "exprs", "set the '|'-separated list of channels expressions", OFFSET(exprs), AV_OPT_TYPE_STRING, {.str = NULL}, .flags = FLAGS },
{ "nb_samples", "set the number of samples per requested frame", OFFSET(nb_samples), AV_OPT_TYPE_INT, {.i64 = 1024}, 0, INT_MAX, FLAGS },
{ "n", "set the number of samples per requested frame", OFFSET(nb_samples), AV_OPT_TYPE_INT, {.i64 = 1024}, 0, INT_MAX, FLAGS },
{ "sample_rate", "set the sample rate", OFFSET(sample_rate_str), AV_OPT_TYPE_STRING, {.str = "44100"}, CHAR_MIN, CHAR_MAX, FLAGS },
@@ -84,15 +85,12 @@ AVFILTER_DEFINE_CLASS(aevalsrc);
static int init(AVFilterContext *ctx, const char *args)
{
EvalContext *eval = ctx->priv;
- char *args1 = av_strdup(args);
- char *expr, *buf, *bufptr;
+ char *args1 = av_strdup(eval->exprs);
+ char *expr, *buf;
int ret, i;
- eval->class = &aevalsrc_class;
- av_opt_set_defaults(eval);
-
if (!args1) {
- av_log(ctx, AV_LOG_ERROR, "Argument is empty\n");
+ av_log(ctx, AV_LOG_ERROR, "Channels expressions list is empty\n");
ret = args ? AVERROR(ENOMEM) : AVERROR(EINVAL);
goto end;
}
@@ -100,23 +98,15 @@ static int init(AVFilterContext *ctx, const char *args)
/* parse expressions */
buf = args1;
i = 0;
- while (expr = av_strtok(buf, ":", &bufptr)) {
+ while (i < FF_ARRAY_ELEMS(eval->expr) && (expr = av_strtok(buf, "|", &buf))) {
ret = av_expr_parse(&eval->expr[i], expr, var_names,
NULL, NULL, NULL, NULL, 0, ctx);
if (ret < 0)
goto end;
i++;
- if (bufptr && *bufptr == ':') { /* found last expression */
- bufptr++;
- break;
- }
- buf = NULL;
}
eval->nb_channels = i;
- if (bufptr && (ret = av_set_options_string(eval, bufptr, "=", ":")) < 0)
- goto end;
-
if (eval->chlayout_str) {
int n;
ret = ff_parse_channel_layout(&eval->chlayout, eval->chlayout_str, ctx);