FFmpeg
Data Structures | Functions
framepool.c File Reference
#include "framepool.h"
#include "libavutil/avassert.h"
#include "libavutil/avutil.h"
#include "libavutil/buffer.h"
#include "libavutil/frame.h"
#include "libavutil/imgutils.h"
#include "libavutil/imgutils_internal.h"
#include "libavutil/mem.h"
#include "libavutil/pixfmt.h"

Go to the source code of this file.

Data Structures

struct  FFFramePool
 Frame pool. More...
 

Functions

FFFramePoolff_frame_pool_video_init (AVBufferRef *(*alloc)(size_t size), int width, int height, enum AVPixelFormat format, int align)
 Allocate and initialize a video frame pool. More...
 
FFFramePoolff_frame_pool_audio_init (AVBufferRef *(*alloc)(size_t size), int channels, int nb_samples, enum AVSampleFormat format, int align)
 Allocate and initialize an audio frame pool. More...
 
int ff_frame_pool_get_video_config (FFFramePool *pool, int *width, int *height, enum AVPixelFormat *format, int *align)
 Get the video frame pool configuration. More...
 
int ff_frame_pool_get_audio_config (FFFramePool *pool, int *channels, int *nb_samples, enum AVSampleFormat *format, int *align)
 Get the audio frame pool configuration. More...
 
AVFrameff_frame_pool_get (FFFramePool *pool)
 Allocate a new AVFrame, reussing old buffers from the pool when available. More...
 
void ff_frame_pool_uninit (FFFramePool **pool)
 Deallocate the frame pool. More...
 

Function Documentation

◆ ff_frame_pool_video_init()

FFFramePool* ff_frame_pool_video_init ( AVBufferRef *(*)(size_t size alloc,
int  width,
int  height,
enum AVPixelFormat  format,
int  align 
)

Allocate and initialize a video frame pool.

Parameters
alloca 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()).
widthwidth of each frame in this pool
heightheight of each frame in this pool
formatformat of each frame in this pool
alignbuffers alignement of each frame in this pool
Returns
newly created video frame pool on success, NULL on error.

Definition at line 52 of file framepool.c.

Referenced by ff_default_get_video_buffer2().

◆ ff_frame_pool_audio_init()

FFFramePool* ff_frame_pool_audio_init ( AVBufferRef *(*)(size_t size alloc,
int  channels,
int  samples,
enum AVSampleFormat  format,
int  align 
)

Allocate and initialize an audio frame pool.

Parameters
alloca 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()).
channelschannels of each frame in this pool
nb_samplesnumber of samples of each frame in this pool
formatformat of each frame in this pool
alignbuffers alignement of each frame in this pool
Returns
newly created audio frame pool on success, NULL on error.

Definition at line 115 of file framepool.c.

Referenced by ff_default_get_audio_buffer().

◆ ff_frame_pool_get_video_config()

int ff_frame_pool_get_video_config ( FFFramePool pool,
int *  width,
int *  height,
enum AVPixelFormat format,
int *  align 
)

Get the video frame pool configuration.

Parameters
widthwidth of each frame in this pool
heightheight of each frame in this pool
formatformat of each frame in this pool
alignbuffers alignement of each frame in this pool
Returns
0 on success, a negative AVERROR otherwise.

Definition at line 155 of file framepool.c.

Referenced by ff_default_get_video_buffer2().

◆ ff_frame_pool_get_audio_config()

int ff_frame_pool_get_audio_config ( FFFramePool pool,
int *  channels,
int *  nb_samples,
enum AVSampleFormat format,
int *  align 
)

Get the audio frame pool configuration.

Parameters
channelschannels of each frame in this pool
nb_samplesnumber of samples of each frame in this pool
formatformat of each frame in this pool
alignbuffers alignement of each frame in this pool
Returns
0 on success, a negative AVERROR otherwise.

Definition at line 174 of file framepool.c.

Referenced by ff_default_get_audio_buffer().

◆ ff_frame_pool_get()

AVFrame* ff_frame_pool_get ( FFFramePool pool)

Allocate a new AVFrame, reussing old buffers from the pool when available.

This function may be called simultaneously from multiple threads.

Returns
a new AVFrame on success, NULL on error.

Definition at line 193 of file framepool.c.

Referenced by ff_default_get_audio_buffer(), and ff_default_get_video_buffer2().

◆ ff_frame_pool_uninit()

void ff_frame_pool_uninit ( FFFramePool **  pool)

Deallocate the frame pool.

It is safe to call this function while some of the allocated frame are still in use.

Parameters
poolpointer to the frame pool to be freed. It will be set to NULL.

Definition at line 283 of file framepool.c.

Referenced by ff_default_get_audio_buffer(), ff_default_get_video_buffer2(), ff_frame_pool_audio_init(), ff_frame_pool_video_init(), and link_free().