* Audio silence detector
*/
+#include "libavutil/audioconvert.h"
#include "libavutil/opt.h"
#include "libavutil/timestamp.h"
#include "audio.h"
#include "formats.h"
#include "avfilter.h"
+#include "internal.h"
typedef struct {
const AVClass *class;
{ NULL },
};
-static const AVClass silencedetect_class = {
- .class_name = "SilenceDetectContext",
- .item_name = av_default_item_name,
- .option = silencedetect_options,
-};
+AVFILTER_DEFINE_CLASS(silencedetect);
-static av_cold int init(AVFilterContext *ctx, const char *args, void *opaque)
+static av_cold int init(AVFilterContext *ctx, const char *args)
{
int ret;
char *tail;
silence->class = &silencedetect_class;
av_opt_set_defaults(silence);
- if ((ret = av_set_options_string(silence, args, "=", ":")) < 0) {
- av_log(ctx, AV_LOG_ERROR, "Error parsing options string: '%s'\n", args);
+ if ((ret = av_set_options_string(silence, args, "=", ":")) < 0)
return ret;
- }
silence->noise = strtod(silence->noise_str, &tail);
if (!strcmp(tail, "dB")) {
return 0;
}
-static void filter_samples(AVFilterLink *inlink, AVFilterBufferRef *insamples)
+static int filter_samples(AVFilterLink *inlink, AVFilterBufferRef *insamples)
{
int i;
SilenceDetectContext *silence = inlink->dst->priv;
}
}
- ff_filter_samples(inlink->dst->outputs[0], insamples);
+ return ff_filter_samples(inlink->dst->outputs[0], insamples);
}
static int query_formats(AVFilterContext *ctx)
return AVERROR(ENOMEM);
ff_set_common_channel_layouts(ctx, layouts);
- formats = avfilter_make_format_list(sample_fmts);
+ formats = ff_make_format_list(sample_fmts);
if (!formats)
return AVERROR(ENOMEM);
- avfilter_set_common_sample_formats(ctx, formats);
+ ff_set_common_formats(ctx, formats);
formats = ff_all_samplerates();
if (!formats)