From a9ce0218c1879a752c9d9ec6ef21fcf44eab51ab Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Fri, 1 Feb 2013 18:40:36 +0100 Subject: FilterInternal: convert struct filter to a OO interface --- src/filter/NormalizeFilterPlugin.cxx | 69 +++++++++++++----------------------- 1 file changed, 24 insertions(+), 45 deletions(-) (limited to 'src/filter/NormalizeFilterPlugin.cxx') diff --git a/src/filter/NormalizeFilterPlugin.cxx b/src/filter/NormalizeFilterPlugin.cxx index af7a5efbd..e18c5cdf9 100644 --- a/src/filter/NormalizeFilterPlugin.cxx +++ b/src/filter/NormalizeFilterPlugin.cxx @@ -28,68 +28,51 @@ #include #include -struct normalize_filter { - struct filter filter; - +class NormalizeFilter final : public Filter { struct Compressor *compressor; struct pcm_buffer buffer; + +public: + virtual const audio_format *Open(audio_format &af, GError **error_r); + virtual void Close(); + virtual const void *FilterPCM(const void *src, size_t src_size, + size_t *dest_size_r, GError **error_r); }; -static struct filter * +static Filter * normalize_filter_init(gcc_unused const struct config_param *param, gcc_unused GError **error_r) { - struct normalize_filter *filter = g_new(struct normalize_filter, 1); - - filter_init(&filter->filter, &normalize_filter_plugin); - - return &filter->filter; + return new NormalizeFilter(); } -static void -normalize_filter_finish(struct filter *filter) +const struct audio_format * +NormalizeFilter::Open(audio_format &audio_format, gcc_unused GError **error_r) { - g_free(filter); -} + audio_format.format = SAMPLE_FORMAT_S16; -static const struct audio_format * -normalize_filter_open(struct filter *_filter, - struct audio_format *audio_format, - gcc_unused GError **error_r) -{ - struct normalize_filter *filter = (struct normalize_filter *)_filter; + compressor = Compressor_new(0); + pcm_buffer_init(&buffer); - audio_format->format = SAMPLE_FORMAT_S16; - - filter->compressor = Compressor_new(0); - - pcm_buffer_init(&filter->buffer); - - return audio_format; + return &audio_format; } -static void -normalize_filter_close(struct filter *_filter) +void +NormalizeFilter::Close() { - struct normalize_filter *filter = (struct normalize_filter *)_filter; - - pcm_buffer_deinit(&filter->buffer); - Compressor_delete(filter->compressor); + pcm_buffer_deinit(&buffer); + Compressor_delete(compressor); } -static const void * -normalize_filter_filter(struct filter *_filter, - const void *src, size_t src_size, size_t *dest_size_r, - gcc_unused GError **error_r) +const void * +NormalizeFilter::FilterPCM(const void *src, size_t src_size, + size_t *dest_size_r, gcc_unused GError **error_r) { - struct normalize_filter *filter = (struct normalize_filter *)_filter; - - int16_t *dest = (int16_t *)pcm_buffer_get(&filter->buffer, src_size); - + int16_t *dest = (int16_t *)pcm_buffer_get(&buffer, src_size); memcpy(dest, src, src_size); - Compressor_Process_int16(filter->compressor, dest, src_size / 2); + Compressor_Process_int16(compressor, dest, src_size / 2); *dest_size_r = src_size; return dest; @@ -98,8 +81,4 @@ normalize_filter_filter(struct filter *_filter, const struct filter_plugin normalize_filter_plugin = { "normalize", normalize_filter_init, - normalize_filter_finish, - normalize_filter_open, - normalize_filter_close, - normalize_filter_filter, }; -- cgit v1.2.3