diff options
author | Paul B Mahol <onemda@gmail.com> | 2022-02-20 19:06:52 +0100 |
---|---|---|
committer | Paul B Mahol <onemda@gmail.com> | 2022-02-22 09:22:03 +0100 |
commit | 17a59a634c39b00a680c6ebbaea58db95594d13d (patch) | |
tree | f665e2d362590dbbbf49cfc507539e10b622198a /libavfilter/audio.c | |
parent | 9da19c290960e976d9da42b5ee92f887a74dc8a5 (diff) |
avfilter/framepool: fix alignment requirements for audio and video filters
Diffstat (limited to 'libavfilter/audio.c')
-rw-r--r-- | libavfilter/audio.c | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/libavfilter/audio.c b/libavfilter/audio.c index cebc9709dd..a0408226a3 100644 --- a/libavfilter/audio.c +++ b/libavfilter/audio.c @@ -22,15 +22,13 @@ #include "libavutil/avassert.h" #include "libavutil/channel_layout.h" #include "libavutil/common.h" +#include "libavutil/cpu.h" #include "audio.h" #include "avfilter.h" #include "framepool.h" #include "internal.h" -#define BUFFER_ALIGN 0 - - AVFrame *ff_null_get_audio_buffer(AVFilterLink *link, int nb_samples) { return ff_get_audio_buffer(link->dst->outputs[0], nb_samples); @@ -41,12 +39,13 @@ AVFrame *ff_default_get_audio_buffer(AVFilterLink *link, int nb_samples) AVFrame *frame = NULL; int channels = link->channels; int channel_layout_nb_channels = av_get_channel_layout_nb_channels(link->channel_layout); + int align = av_cpu_max_align(); av_assert0(channels == channel_layout_nb_channels || !channel_layout_nb_channels); if (!link->frame_pool) { link->frame_pool = ff_frame_pool_audio_init(av_buffer_allocz, channels, - nb_samples, link->format, BUFFER_ALIGN); + nb_samples, link->format, align); if (!link->frame_pool) return NULL; } else { @@ -62,11 +61,11 @@ AVFrame *ff_default_get_audio_buffer(AVFilterLink *link, int nb_samples) } if (pool_channels != channels || pool_nb_samples < nb_samples || - pool_format != link->format || pool_align != BUFFER_ALIGN) { + pool_format != link->format || pool_align != align) { ff_frame_pool_uninit((FFFramePool **)&link->frame_pool); link->frame_pool = ff_frame_pool_audio_init(av_buffer_allocz, channels, - nb_samples, link->format, BUFFER_ALIGN); + nb_samples, link->format, align); if (!link->frame_pool) return NULL; } |