diff options
Diffstat (limited to 'src/filter/convert_filter_plugin.c')
-rw-r--r-- | src/filter/convert_filter_plugin.c | 38 |
1 files changed, 13 insertions, 25 deletions
diff --git a/src/filter/convert_filter_plugin.c b/src/filter/convert_filter_plugin.c index 40be67f6..2c2c3b0d 100644 --- a/src/filter/convert_filter_plugin.c +++ b/src/filter/convert_filter_plugin.c @@ -97,32 +97,20 @@ convert_filter_close(struct filter *_filter) sizeof(filter->out_audio_format)); } -static const void * -convert_filter_filter(struct filter *_filter, const void *src, size_t src_size, - size_t *dest_size_r, GError **error_r) +static AVFrame *convert_filter_filter(struct filter *_filter, AVFrame *src) { - struct convert_filter *filter = (struct convert_filter *)_filter; - const void *dest; - - if (audio_format_equals(&filter->in_audio_format, - &filter->out_audio_format)) { - /* optimized special case: no-op */ - *dest_size_r = src_size; - return src; - } - - // FIXME - return NULL; -#if 0 - dest = pcm_convert(&filter->state, &filter->in_audio_format, - src, src_size, - &filter->out_audio_format, dest_size_r, - error_r); - if (dest == NULL) - return NULL; - - return dest; -#endif + struct convert_filter *filter = (struct convert_filter *)_filter; + AVFrame *dst; + + /* optimized special case: no-op */ + if (audio_format_equals(&filter->in_audio_format, + &filter->out_audio_format)) + return src; + + dst = pcm_convert(&filter->state, &filter->in_audio_format, + &filter->out_audio_format, src); + av_frame_free(&src); + return dst; } const struct filter_plugin convert_filter_plugin = { |