mirror of https://github.com/mpv-player/mpv
audio: more alignment nonsense
It's hard to see what FFmpeg does or what its API requires. It looks like the alignment in our own allocation code might be slightly too lenient, but who knows. Even if this is not needed, upping the alignment only wastes memory and doesn't do anything bad. (Note that the only reason why we have our own code is because FFmpeg doesn't even provide it as API. API users are forced to recreate this, even if they have no need for custom allocation!)
This commit is contained in:
parent
4667b3a182
commit
20c9538e32
|
@ -598,7 +598,11 @@ int mp_aframe_pool_allocate(struct mp_aframe_pool *pool, struct mp_aframe *frame
|
||||||
{
|
{
|
||||||
int planes = mp_aframe_get_planes(frame);
|
int planes = mp_aframe_get_planes(frame);
|
||||||
size_t sstride = mp_aframe_get_sstride(frame);
|
size_t sstride = mp_aframe_get_sstride(frame);
|
||||||
int plane_size = MP_ALIGN_UP(sstride * MPMAX(samples, 1), 32);
|
// FFmpeg hardcodes similar hidden possibly-requirements in a number of
|
||||||
|
// places: av_frame_get_buffer(), libavcodec's get_buffer(), mem.c,
|
||||||
|
// probably more.
|
||||||
|
int align_samples = MP_ALIGN_UP(MPMAX(samples, 1), 32);
|
||||||
|
int plane_size = MP_ALIGN_UP(sstride * align_samples, 64);
|
||||||
int size = plane_size * planes;
|
int size = plane_size * planes;
|
||||||
|
|
||||||
if (size <= 0 || mp_aframe_is_allocated(frame))
|
if (size <= 0 || mp_aframe_is_allocated(frame))
|
||||||
|
|
Loading…
Reference in New Issue