aboutsummaryrefslogtreecommitdiff
path: root/src/filter/normalize_filter_plugin.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/filter/normalize_filter_plugin.c')
-rw-r--r--src/filter/normalize_filter_plugin.c31
1 files changed, 13 insertions, 18 deletions
diff --git a/src/filter/normalize_filter_plugin.c b/src/filter/normalize_filter_plugin.c
index 2151482e..b17a8773 100644
--- a/src/filter/normalize_filter_plugin.c
+++ b/src/filter/normalize_filter_plugin.c
@@ -21,19 +21,19 @@
#include "filter_plugin.h"
#include "filter_internal.h"
#include "filter_registry.h"
-#include "pcm_buffer.h"
#include "audio_format.h"
#include "AudioCompress/compress.h"
#include <assert.h>
#include <string.h>
+#include <libavutil/frame.h>
+#include <libavutil/samplefmt.h>
+
struct normalize_filter {
struct filter filter;
struct Compressor *compressor;
-
- struct pcm_buffer buffer;
};
static inline GQuark
@@ -70,8 +70,6 @@ normalize_filter_open(struct filter *_filter,
filter->compressor = Compressor_new(0);
- pcm_buffer_init(&filter->buffer);
-
return audio_format;
}
@@ -80,26 +78,23 @@ normalize_filter_close(struct filter *_filter)
{
struct normalize_filter *filter = (struct normalize_filter *)_filter;
- pcm_buffer_deinit(&filter->buffer);
Compressor_delete(filter->compressor);
}
-static const void *
-normalize_filter_filter(struct filter *_filter,
- const void *src, size_t src_size, size_t *dest_size_r,
- G_GNUC_UNUSED GError **error_r)
+static AVFrame *normalize_filter_filter(struct filter *_filter,
+ AVFrame *frame)
{
- struct normalize_filter *filter = (struct normalize_filter *)_filter;
- void *dest;
-
- dest = pcm_buffer_get(&filter->buffer, src_size);
+ struct normalize_filter *filter = (struct normalize_filter *)_filter;
+ int ret = av_frame_make_writable(frame);
- memcpy(dest, src, src_size);
+ if (ret < 0) {
+ av_frame_free(&frame);
+ return NULL;
+ }
- Compressor_Process_int16(filter->compressor, dest, src_size / 2);
+ Compressor_Process_int16(filter->compressor, (uint16_t*)frame->data[0], frame->linesize[0] / 2);
- *dest_size_r = src_size;
- return dest;
+ return frame;
}
const struct filter_plugin normalize_filter_plugin = {