| @@ -54,35 +54,19 @@ typedef struct { · 53 unmodified lines |
| 54 | 54 | #define FLAGS AV_OPT_FLAG_FILTERING_PARAM|AV_OPT_FLAG_VIDEO_PARAM |
| 55 | 55 | |
| 56 | 56 | static const AVOption showwaves_options[] = { |
| 57 | | − { "rate", "set video rate", OFFSET(rate), AV_OPT_TYPE_VIDEO_RATE, {.str = "25"}, 0, 0, FLAGS }, |
| 58 | | − { "r", "set video rate", OFFSET(rate), AV_OPT_TYPE_VIDEO_RATE, {.str = "25"}, 0, 0, FLAGS }, |
| 59 | 57 | { "size", "set video size", OFFSET(w), AV_OPT_TYPE_IMAGE_SIZE, {.str = "600x240"}, 0, 0, FLAGS }, |
| 60 | 58 | { "s", "set video size", OFFSET(w), AV_OPT_TYPE_IMAGE_SIZE, {.str = "600x240"}, 0, 0, FLAGS }, |
| 59 | + { "mode", "select display mode", OFFSET(mode), AV_OPT_TYPE_INT, {.i64=MODE_POINT}, 0, MODE_NB-1, FLAGS, "mode"}, |
| 60 | + { "point", "draw a point for each sample", 0, AV_OPT_TYPE_CONST, {.i64=MODE_POINT}, .flags=FLAGS, .unit="mode"}, |
| 61 | + { "line", "draw a line for each sample", 0, AV_OPT_TYPE_CONST, {.i64=MODE_LINE}, .flags=FLAGS, .unit="mode"}, |
| 61 | 62 | { "n", "set how many samples to show in the same point", OFFSET(n), AV_OPT_TYPE_INT, {.i64 = 0}, 0, INT_MAX, FLAGS }, |
| 62 | | − |
| 63 | | − {"mode", "select display mode", OFFSET(mode), AV_OPT_TYPE_INT, {.i64=MODE_POINT}, 0, MODE_NB-1, FLAGS, "mode"}, |
| 64 | | − {"point", "draw a point for each sample", 0, AV_OPT_TYPE_CONST, {.i64=MODE_POINT}, .flags=FLAGS, .unit="mode"}, |
| 65 | | − {"line", "draw a line for each sample", 0, AV_OPT_TYPE_CONST, {.i64=MODE_LINE}, .flags=FLAGS, .unit="mode"}, |
| 63 | + { "rate", "set video rate", OFFSET(rate), AV_OPT_TYPE_VIDEO_RATE, {.str = "25"}, 0, 0, FLAGS }, |
| 64 | + { "r", "set video rate", OFFSET(rate), AV_OPT_TYPE_VIDEO_RATE, {.str = "25"}, 0, 0, FLAGS }, |
| 66 | 65 | { NULL }, |
| 67 | 66 | }; |
| 68 | 67 | |
| 69 | 68 | AVFILTER_DEFINE_CLASS(showwaves); |
| 70 | 69 | |
| 71 | | −static av_cold int init(AVFilterContext *ctx, const char *args) |
| 72 | | −{ |
| 73 | | − ShowWavesContext *showwaves = ctx->priv; |
| 74 | | − int err; |
| 75 | | − |
| 76 | | − showwaves->class = &showwaves_class; |
| 77 | | − av_opt_set_defaults(showwaves); |
| 78 | | − showwaves->buf_idx = 0; |
| 79 | | − |
| 80 | | − if ((err = av_set_options_string(showwaves, args, "=", ":")) < 0) |
| 81 | | − return err; |
| 82 | | − |
| 83 | | − return 0; |
| 84 | | −} |
| 85 | | − |
| 86 | 70 | static av_cold void uninit(AVFilterContext *ctx) |
| 87 | 71 | { |
| 88 | 72 | ShowWavesContext *showwaves = ctx->priv; |
| @@ -133,6 +117,7 @@ static int config_output(AVFilterLink *outlink) · 44 unmodified lines |
| 133 | 117 | if (!showwaves->n) |
| 134 | 118 | showwaves->n = FFMAX(1, ((double)inlink->sample_rate / (showwaves->w * av_q2d(showwaves->rate))) + 0.5); |
| 135 | 119 | |
| 120 | + showwaves->buf_idx = 0; |
| 136 | 121 | outlink->w = showwaves->w; |
| 137 | 122 | outlink->h = showwaves->h; |
| 138 | 123 | outlink->sample_aspect_ratio = (AVRational){1,1}; |
| @@ -261,7 +246,6 @@ static const AVFilterPad showwaves_outputs[] = { · 122 unmodified lines |
| 261 | 246 | AVFilter avfilter_avf_showwaves = { |
| 262 | 247 | .name = "showwaves", |
| 263 | 248 | .description = NULL_IF_CONFIG_SMALL("Convert input audio to a video output."), |
| 264 | | − .init = init, |
| 265 | 249 | .uninit = uninit, |
| 266 | 250 | .query_formats = query_formats, |
| 267 | 251 | .priv_size = sizeof(ShowWavesContext), |