VLC
3.0.15
|
Data Structures | |
struct | picture_pool_t |
Macros | |
#define | POOL_MAX (CHAR_BIT * sizeof (unsigned long long)) |
Functions | |
static void | picture_pool_Destroy (picture_pool_t *pool) |
void | picture_pool_Release (picture_pool_t *pool) |
Releases a pool created by picture_pool_NewExtended(), picture_pool_New() or picture_pool_NewFromFormat(). More... | |
static void | picture_pool_ReleasePicture (picture_t *clone) |
static picture_t * | picture_pool_ClonePicture (picture_pool_t *pool, unsigned offset) |
picture_pool_t * | picture_pool_NewExtended (const picture_pool_configuration_t *cfg) |
Creates a pool of preallocated pictures. More... | |
picture_pool_t * | picture_pool_New (unsigned count, picture_t *const *tab) |
Creates a picture pool with pictures in a given array. More... | |
picture_pool_t * | picture_pool_NewFromFormat (const video_format_t *fmt, unsigned count) |
Allocates pictures from the heap and creates a picture pool with them. More... | |
picture_pool_t * | picture_pool_Reserve (picture_pool_t *master, unsigned count) |
Reserves pictures from a pool and creates a new pool with those. More... | |
static int | fnsll (unsigned long long x, unsigned i) |
Find next (bit) set. More... | |
picture_t * | picture_pool_Get (picture_pool_t *pool) |
Obtains a picture from a pool if any is immediately available. More... | |
picture_t * | picture_pool_Wait (picture_pool_t *pool) |
Obtains a picture from a pool. More... | |
void | picture_pool_Cancel (picture_pool_t *pool, bool canceled) |
Cancel the picture pool. More... | |
bool | picture_pool_OwnsPic (picture_pool_t *pool, picture_t *pic) |
Test if a picture belongs to the picture pool. More... | |
unsigned | picture_pool_GetSize (const picture_pool_t *pool) |
void | picture_pool_Enum (picture_pool_t *pool, void(*cb)(void *, picture_t *), void *opaque) |
Enumerates all pictures in a pool, both free and allocated. More... | |
#define POOL_MAX (CHAR_BIT * sizeof (unsigned long long)) |
|
static |
void picture_pool_Cancel | ( | picture_pool_t * | , |
bool | canceled | ||
) |
Cancel the picture pool.
It won't return any pictures via picture_pool_Get or picture_pool_Wait if canceled is true. This function will also unblock picture_pool_Wait. picture_pool_Reset will also reset the cancel state to false.
References picture_pool_t::canceled, picture_pool_t::lock, picture_pool_t::refs, vlc_cond_broadcast(), vlc_mutex_lock(), vlc_mutex_unlock(), and picture_pool_t::wait.
|
static |
References picture_t::format, plane_t::i_lines, picture_resource_t::i_lines, plane_t::i_pitch, picture_resource_t::i_pitch, picture_t::i_planes, likely, picture_t::p, picture_resource_t::p, plane_t::p_pixels, picture_resource_t::p_pixels, picture_t::p_sys, picture_resource_t::p_sys, picture_pool_t::picture, picture_Hold(), picture_NewFromResource(), and picture_pool_ReleasePicture().
Referenced by picture_pool_Get(), and picture_pool_Wait().
|
static |
References aligned_free, picture_pool_t::lock, picture_pool_t::refs, vlc_cond_destroy(), vlc_mutex_destroy(), and picture_pool_t::wait.
Referenced by picture_pool_Release(), and picture_pool_ReleasePicture().
void picture_pool_Enum | ( | picture_pool_t * | , |
void(*)(void *, picture_t *) | cb, | ||
void * | data | ||
) |
Enumerates all pictures in a pool, both free and allocated.
cb | callback to invoke once for each picture |
data | opaque data parameter for the callback (first argument) |
References picture_pool_t::picture, and picture_pool_t::picture_count.
picture_t* picture_pool_Get | ( | picture_pool_t * | ) |
Obtains a picture from a pool if any is immediately available.
The picture must be released with picture_Release().
< No error
References picture_pool_t::available, picture_pool_t::canceled, ffsll(), fnsll(), picture_pool_t::lock, picture_t::p_next, picture_pool_t::pic_lock, picture_pool_t::picture, picture_pool_ClonePicture(), picture_pool_t::refs, vlc_mutex_lock(), vlc_mutex_unlock(), and VLC_SUCCESS.
Referenced by picture_pool_Reserve(), and VideoBufferNew().
unsigned picture_pool_GetSize | ( | const picture_pool_t * | ) |
References picture_pool_t::picture_count.
picture_pool_t* picture_pool_New | ( | unsigned | count, |
picture_t *const * | tab | ||
) |
Creates a picture pool with pictures in a given array.
This is a convenience wrapper for picture_pool_NewExtended() without the lock and unlock callbacks.
count | number of pictures in the array |
tab | array of pictures |
References count, picture_pool_configuration_t::picture_count, and picture_pool_NewExtended().
Referenced by picture_pool_NewFromFormat(), and picture_pool_Reserve().
picture_pool_t* picture_pool_NewExtended | ( | const picture_pool_configuration_t * | ) |
Creates a pool of preallocated pictures.
Free pictures can be allocated from the pool, and are returned to the pool when they are no longer referenced.
This avoids allocating and deallocationg pictures repeatedly, and ensures that memory consumption remains within limits.
To obtain a picture from the pool, use picture_pool_Get(). To increase and decrease the reference count, use picture_Hold() and picture_Release() respectively.
If defined, picture_pool_configuration_t::lock will be called before a picture is used, and picture_pool_configuration_t::unlock will be called as soon as a picture is returned to the pool. Those callbacks can modify picture_t::p and access picture_t::p_sys.
References aligned_alloc(), picture_pool_t::available, picture_pool_t::canceled, picture_pool_t::lock, picture_pool_configuration_t::lock, picture_pool_t::pic_lock, picture_pool_t::pic_unlock, picture_pool_configuration_t::picture, picture_pool_t::picture, picture_pool_configuration_t::picture_count, picture_pool_t::picture_count, POOL_MAX, picture_pool_t::refs, unlikely, picture_pool_configuration_t::unlock, vlc_cond_init(), vlc_mutex_init(), and picture_pool_t::wait.
Referenced by picture_pool_New().
picture_pool_t* picture_pool_NewFromFormat | ( | const video_format_t * | fmt, |
unsigned | count | ||
) |
Allocates pictures from the heap and creates a picture pool with them.
This is a convenience wrapper for picture_NewFromFormat() and picture_pool_New().
fmt | video format of pictures to allocate from the heap |
count | number of pictures to allocate |
References count, picture_NewFromFormat(), picture_pool_New(), and picture_Release().
bool picture_pool_OwnsPic | ( | picture_pool_t * | , |
picture_t * | |||
) |
Test if a picture belongs to the picture pool.
FIXME: remove this function when the vout_PutPicture() hack is fixed.
References picture_priv_t::destroy, picture_priv_t::gc, picture_priv_t::opaque, picture_pool_ReleasePicture(), and POOL_MAX.
Referenced by vout_PutPicture().
void picture_pool_Release | ( | picture_pool_t * | ) |
Releases a pool created by picture_pool_NewExtended(), picture_pool_New() or picture_pool_NewFromFormat().
References picture_pool_t::picture, picture_pool_t::picture_count, picture_pool_Destroy(), and picture_Release().
|
static |
References picture_priv_t::gc, picture_priv_t::opaque, picture_pool_Destroy(), picture_Release(), POOL_MAX, vlc_cond_signal(), vlc_mutex_lock(), and vlc_mutex_unlock().
Referenced by picture_pool_ClonePicture(), and picture_pool_OwnsPic().
picture_pool_t* picture_pool_Reserve | ( | picture_pool_t * | , |
unsigned | count | ||
) |
Reserves pictures from a pool and creates a new pool with those.
When the new pool is released, pictures are returned to the master pool. If the master pool was already released, pictures will be destroyed.
count | number of picture to reserve |
References count, picture_pool_Get(), picture_pool_New(), and picture_Release().
picture_t* picture_pool_Wait | ( | picture_pool_t * | ) |
Obtains a picture from a pool.
The picture must be released with picture_Release().
< No error
References picture_pool_t::available, picture_pool_t::canceled, ffsll(), picture_pool_t::lock, picture_t::p_next, picture_pool_t::pic_lock, picture_pool_t::picture, picture_pool_ClonePicture(), picture_pool_t::refs, vlc_cond_signal(), vlc_cond_wait(), vlc_mutex_lock(), vlc_mutex_unlock(), VLC_SUCCESS, and picture_pool_t::wait.
Referenced by vout_GetPicture().