#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.
* @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.
* @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 */