VLC 4.0.0-dev
All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
Collaboration diagram for Ancillary API:

Data Structures

struct  vlc_ancillary_array
 

Macros

#define VLC_ANCILLARY_ARRAY_INITIALIZER   VLC_VECTOR_INITIALIZER
 
#define VLC_ANCILLARY_ID(a, b, c, d)   VLC_FOURCC(a,b,c,d)
 

Typedefs

typedef uint32_t vlc_ancillary_id
 ID of an ancillary.
 
typedef void(* vlc_ancillary_free_cb) (void *data)
 Callback to free an ancillary data.
 

Functions

struct vlc_ancillaryvlc_ancillary_CreateWithFreeCb (void *data, vlc_ancillary_id id, vlc_ancillary_free_cb free_cb)
 Create an ancillary.
 
static struct vlc_ancillaryvlc_ancillary_Create (void *data, vlc_ancillary_id id)
 Helper to create an ancillary holding an allocated data.
 
void vlc_ancillary_Release (struct vlc_ancillary *ancillary)
 Release an ancillary.
 
struct vlc_ancillaryvlc_ancillary_Hold (struct vlc_ancillary *ancillary)
 Hold an ancillary.
 
void * vlc_ancillary_GetData (const struct vlc_ancillary *ancillary)
 Get the data of the ancillary.
 

Detailed Description

Macro Definition Documentation

◆ VLC_ANCILLARY_ARRAY_INITIALIZER

#define VLC_ANCILLARY_ARRAY_INITIALIZER   VLC_VECTOR_INITIALIZER

◆ VLC_ANCILLARY_ID

#define VLC_ANCILLARY_ID (   a,
  b,
  c,
 
)    VLC_FOURCC(a,b,c,d)

Typedef Documentation

◆ vlc_ancillary_free_cb

typedef void(* vlc_ancillary_free_cb) (void *data)

Callback to free an ancillary data.

◆ vlc_ancillary_id

typedef uint32_t vlc_ancillary_id

ID of an ancillary.

Each ancillary user can create its own unique ID via VLC_ANCILLARY_ID.

Function Documentation

◆ vlc_ancillary_Create()

static struct vlc_ancillary * vlc_ancillary_Create ( void *  data,
vlc_ancillary_id  id 
)
inlinestatic

Helper to create an ancillary holding an allocated data.

References vlc_ancillary::data, and vlc_ancillary_CreateWithFreeCb().

Referenced by picture_AttachNewAncillary().

◆ vlc_ancillary_CreateWithFreeCb()

struct vlc_ancillary * vlc_ancillary_CreateWithFreeCb ( void *  data,
vlc_ancillary_id  id,
vlc_ancillary_free_cb  free_cb 
)

Create an ancillary.

Parameters
dataan opaque ancillary, can't be NULL
idid of ancillary
free_cbcallback to release the data, can be NULL
Returns
a valid vlc_ancillary pointer or NULL in case of allocation error

References vlc_ancillary::data, vlc_ancillary::free_cb, vlc_ancillary::id, vlc_ancillary::rc, and vlc_atomic_rc_init().

Referenced by vlc_ancillary_Create().

◆ vlc_ancillary_GetData()

void * vlc_ancillary_GetData ( const struct vlc_ancillary ancillary)

Get the data of the ancillary.

Parameters
ancillaryancillary to get data from
Returns
data used when created the ancillary, same lifetime than the ancillary

References vlc_ancillary::data.

◆ vlc_ancillary_Hold()

struct vlc_ancillary * vlc_ancillary_Hold ( struct vlc_ancillary ancillary)

Hold an ancillary.

Parameters
ancillaryancillary to hold
Returns
the same ancillary

References vlc_ancillary::rc, and vlc_atomic_rc_inc().

Referenced by vlc_ancillary_array_Insert().

◆ vlc_ancillary_Release()

void vlc_ancillary_Release ( struct vlc_ancillary ancillary)

Release an ancillary.

If the refcount reaches 0, the free_cb provided by vlc_ancillary_CreateWithFreeCb() is called.

Parameters
ancillaryancillary to release

References vlc_ancillary::data, vlc_ancillary::free_cb, vlc_ancillary::rc, and vlc_atomic_rc_dec().

Referenced by picture_AttachNewAncillary(), vlc_ancillary_array_Clear(), and vlc_ancillary_array_Insert().