audio: add frame alloc function

Meh, why is this so roundabout?
This commit is contained in:
wm4 2020-05-25 01:54:04 +02:00
parent 7c9543577a
commit afb6f1c7e9
2 changed files with 14 additions and 0 deletions

View File

@ -100,6 +100,19 @@ void mp_aframe_unref_data(struct mp_aframe *frame)
talloc_free(tmp);
}
// Allocate this much data. Returns false for failure (data already allocated,
// invalid sample count or format, allocation failures).
// Normally you're supposed to use a frame pool and mp_aframe_pool_allocate().
bool mp_aframe_alloc_data(struct mp_aframe *frame, int samples)
{
if (mp_aframe_is_allocated(frame))
return false;
struct mp_aframe_pool *p = mp_aframe_pool_create(NULL);
int r = mp_aframe_pool_allocate(p, frame, samples);
talloc_free(p);
return r >= 0;
}
// Return a new reference to the data in av_frame. av_frame itself is not
// touched. Returns NULL if not representable, or if input is NULL.
// Does not copy the timestamps.

View File

@ -20,6 +20,7 @@ struct AVFrame *mp_aframe_to_avframe_and_unref(struct mp_aframe *frame);
struct AVFrame *mp_aframe_get_raw_avframe(struct mp_aframe *frame);
bool mp_aframe_is_allocated(struct mp_aframe *frame);
bool mp_aframe_alloc_data(struct mp_aframe *frame, int samples);
void mp_aframe_config_copy(struct mp_aframe *dst, struct mp_aframe *src);
bool mp_aframe_config_equals(struct mp_aframe *a, struct mp_aframe *b);