X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavfilter%2Fframepool.h;h=e5560e4c6e8b8b09be5ab8b74d838556e7c47b17;hb=37cb224e3e65b92eb6d77f1a788d882fbee972c3;hp=2a6c9e8636b25cb615de3cdf4da611e2b3fdfcf8;hpb=1398ded7a77b2057a3e9983e3df512855b7ff0eb;p=ffmpeg diff --git a/libavfilter/framepool.h b/libavfilter/framepool.h index 2a6c9e8636b..e5560e4c6e8 100644 --- a/libavfilter/framepool.h +++ b/libavfilter/framepool.h @@ -25,11 +25,11 @@ #include "libavutil/frame.h" /** - * Video frame pool. This structure is opaque and not meant to be accessed - * directly. It is allocated with ff_video_frame_pool_init() and freed with - * ff_video_frame_pool_uninit(). + * Frame pool. This structure is opaque and not meant to be accessed + * directly. It is allocated with ff_frame_pool_init() and freed with + * ff_frame_pool_uninit(). */ -typedef struct FFVideoFramePool FFVideoFramePool; +typedef struct FFFramePool FFFramePool; /** * Allocate and initialize a video frame pool. @@ -43,19 +43,37 @@ typedef struct FFVideoFramePool FFVideoFramePool; * @param align buffers alignement of each frame in this pool * @return newly created video frame pool on success, NULL on error. */ -FFVideoFramePool *ff_video_frame_pool_init(AVBufferRef* (*alloc)(int size), - int width, - int height, - enum AVPixelFormat format, - int align); +FFFramePool *ff_frame_pool_video_init(AVBufferRef* (*alloc)(int size), + int width, + int height, + enum AVPixelFormat format, + int align); /** - * Deallocate the video frame pool. It is safe to call this function while - * some of the allocated video frame are still in use. + * Allocate and initialize an audio frame pool. * - * @param pool pointer to the video frame pool to be freed. It will be set to NULL. + * @param alloc a function that will be used to allocate new frame buffers when + * the pool is empty. May be NULL, then the default allocator will be used + * (av_buffer_alloc()). + * @param channels channels of each frame in this pool + * @param nb_samples number of samples of each frame in this pool + * @param format format of each frame in this pool + * @param align buffers alignement of each frame in this pool + * @return newly created audio frame pool on success, NULL on error. + */ +FFFramePool *ff_frame_pool_audio_init(AVBufferRef* (*alloc)(int size), + int channels, + int samples, + enum AVSampleFormat format, + int align); + +/** + * Deallocate the frame pool. It is safe to call this function while + * some of the allocated frame are still in use. + * + * @param pool pointer to the frame pool to be freed. It will be set to NULL. */ -void ff_video_frame_pool_uninit(FFVideoFramePool **pool); +void ff_frame_pool_uninit(FFFramePool **pool); /** * Get the video frame pool configuration. @@ -66,19 +84,35 @@ void ff_video_frame_pool_uninit(FFVideoFramePool **pool); * @param align buffers alignement of each frame in this pool * @return 0 on success, a negative AVERROR otherwise. */ -int ff_video_frame_pool_get_config(FFVideoFramePool *pool, +int ff_frame_pool_get_video_config(FFFramePool *pool, int *width, int *height, enum AVPixelFormat *format, int *align); +/** + * Get the audio frame pool configuration. + * + * @param channels channels of each frame in this pool + * @param nb_samples number of samples of each frame in this pool + * @param format format of each frame in this pool + * @param align buffers alignement of each frame in this pool + * @return 0 on success, a negative AVERROR otherwise. + */ +int ff_frame_pool_get_audio_config(FFFramePool *pool, + int *channels, + int *nb_samples, + enum AVSampleFormat *format, + int *align); + + /** * Allocate a new AVFrame, reussing old buffers from the pool when available. * This function may be called simultaneously from multiple threads. * * @return a new AVFrame on success, NULL on error. */ -AVFrame *ff_video_frame_pool_get(FFVideoFramePool *pool); +AVFrame *ff_frame_pool_get(FFFramePool *pool); #endif /* AVFILTER_FRAMEPOOL_H */