]> git.sesse.net Git - ffmpeg/blobdiff - libavfilter/framepool.h
aarch64: vp9itxfm: Don't repeatedly set x9 when nothing overwrites it
[ffmpeg] / libavfilter / framepool.h
index 2a6c9e8636b25cb615de3cdf4da611e2b3fdfcf8..e5560e4c6e8b8b09be5ab8b74d838556e7c47b17 100644 (file)
 #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 */