| @@ -54,35 +54,19 @@ typedef struct { · 53 unmodified lines |
| 54 | #define FLAGS AV_OPT_FLAG_FILTERING_PARAM|AV_OPT_FLAG_VIDEO_PARAM | 54 | #define FLAGS AV_OPT_FLAG_FILTERING_PARAM|AV_OPT_FLAG_VIDEO_PARAM |
| 55 | | 55 | |
| 56 | static const AVOption showwaves_options[] = { | 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 | { "size", "set video size", OFFSET(w), AV_OPT_TYPE_IMAGE_SIZE, {.str = "600x240"}, 0, 0, FLAGS }, | 57 | { "size", "set video size", OFFSET(w), AV_OPT_TYPE_IMAGE_SIZE, {.str = "600x240"}, 0, 0, FLAGS }, |
| 60 | { "s", "set video size", OFFSET(w), AV_OPT_TYPE_IMAGE_SIZE, {.str = "600x240"}, 0, 0, FLAGS }, | 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 | { "n", "set how many samples to show in the same point", OFFSET(n), AV_OPT_TYPE_INT, {.i64 = 0}, 0, INT_MAX, FLAGS }, | 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 | { "rate", "set video rate", OFFSET(rate), AV_OPT_TYPE_VIDEO_RATE, {.str = "25"}, 0, 0, FLAGS }, |
| 63 | {"mode", "select display mode", OFFSET(mode), AV_OPT_TYPE_INT, {.i64=MODE_POINT}, 0, MODE_NB-1, FLAGS, "mode"}, | 64 | { "r", "set video rate", OFFSET(rate), AV_OPT_TYPE_VIDEO_RATE, {.str = "25"}, 0, 0, FLAGS }, |
| 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"}, | | |
| 66 | { NULL }, | 65 | { NULL }, |
| 67 | }; | 66 | }; |
| 68 | | 67 | |
| 69 | AVFILTER_DEFINE_CLASS(showwaves); | 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 | static av_cold void uninit(AVFilterContext *ctx) | 70 | static av_cold void uninit(AVFilterContext *ctx) |
| 87 | { | 71 | { |
| 88 | ShowWavesContext *showwaves = ctx->priv; | 72 | ShowWavesContext *showwaves = ctx->priv; |
| @@ -133,6 +117,7 @@ static int config_output(AVFilterLink *outlink) · 44 unmodified lines |
| 133 | if (!showwaves->n) | 117 | if (!showwaves->n) |
| 134 | showwaves->n = FFMAX(1, ((double)inlink->sample_rate / (showwaves->w * av_q2d(showwaves->rate))) + 0.5); | 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 | outlink->w = showwaves->w; | 121 | outlink->w = showwaves->w; |
| 137 | outlink->h = showwaves->h; | 122 | outlink->h = showwaves->h; |
| 138 | outlink->sample_aspect_ratio = (AVRational){1,1}; | 123 | outlink->sample_aspect_ratio = (AVRational){1,1}; |
| @@ -261,7 +246,6 @@ static const AVFilterPad showwaves_outputs[] = { · 122 unmodified lines |
| 261 | AVFilter avfilter_avf_showwaves = { | 246 | AVFilter avfilter_avf_showwaves = { |
| 262 | .name = "showwaves", | 247 | .name = "showwaves", |
| 263 | .description = NULL_IF_CONFIG_SMALL("Convert input audio to a video output."), | 248 | .description = NULL_IF_CONFIG_SMALL("Convert input audio to a video output."), |
| 264 | .init = init, | | |
| 265 | .uninit = uninit, | 249 | .uninit = uninit, |
| 266 | .query_formats = query_formats, | 250 | .query_formats = query_formats, |
| 267 | .priv_size = sizeof(ShowWavesContext), | 251 | .priv_size = sizeof(ShowWavesContext), |