* 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)