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

Functions

static void vlc_ancillary_array_Init (vlc_ancillary_array *array)
 Init an ancillary array.
 
void vlc_ancillary_array_Clear (vlc_ancillary_array *array)
 Clear an ancillary array.
 
int vlc_ancillary_array_Merge (vlc_ancillary_array *dst_array, const vlc_ancillary_array *src_array)
 Merge two ancillary arrays.
 
int vlc_ancillary_array_MergeAndClear (vlc_ancillary_array *dst_array, vlc_ancillary_array *src_array)
 Merge and clear two ancillary arrays.
 
int vlc_ancillary_array_Insert (vlc_ancillary_array *array, struct vlc_ancillary *ancillary)
 Insert a new ancillary in the array.
 
struct vlc_ancillaryvlc_ancillary_array_Get (const vlc_ancillary_array *array, vlc_ancillary_id id)
 Get a specific ancillary from the array.
 

Detailed Description

Function Documentation

◆ vlc_ancillary_array_Clear()

void vlc_ancillary_array_Clear ( vlc_ancillary_array array)

Clear an ancillary array.

This will release the refcount on all ancillaries and free the vector data

Parameters
arraypointer to the ancillary array to clear

References vlc_ancillary_Release(), vlc_vector_clear, and vlc_vector_foreach.

Referenced by picture_Destroy(), picture_Reset(), vlc_ancillary_array_MergeAndClear(), and vlc_frame_Release().

◆ vlc_ancillary_array_Get()

struct vlc_ancillary * vlc_ancillary_array_Get ( const vlc_ancillary_array array,
vlc_ancillary_id  id 
)

Get a specific ancillary from the array.

Parameters
arraypointer to the ancillary array
idid of the ancillary
Returns
a valid ancillary or NULL if not found, no need to release it.

References vlc_ancillary::id, and vlc_vector_foreach.

Referenced by picture_GetAncillary(), and vlc_frame_GetAncillary().

◆ vlc_ancillary_array_Init()

static void vlc_ancillary_array_Init ( vlc_ancillary_array array)
inlinestatic

Init an ancillary array.

Parameters
arraypointer to the ancillary array to initialize

References vlc_vector_init.

Referenced by picture_InitPrivate(), vlc_ancillary_array_MergeAndClear(), and vlc_frame_Init().

◆ vlc_ancillary_array_Insert()

int vlc_ancillary_array_Insert ( vlc_ancillary_array array,
struct vlc_ancillary ancillary 
)

Insert a new ancillary in the array.

Note
Several ancillaries can be attached to an array, but if two ancillaries are identified by the same ID, only the last one take precedence.
Parameters
arraypointer to the ancillary array
ancillarypointer to the ancillary to add
Returns
VLC_SUCCESS in case of success, VLC_ENOMEM in case of alloc error

References vlc_ancillary_array::data, vlc_ancillary::id, vlc_ancillary_array::size, vlc_ancillary_Hold(), vlc_ancillary_Release(), VLC_ENOMEM, VLC_SUCCESS, and vlc_vector_push.

Referenced by picture_AttachAncillary(), vlc_ancillary_array_Merge(), and vlc_frame_AttachAncillary().

◆ vlc_ancillary_array_Merge()

int vlc_ancillary_array_Merge ( vlc_ancillary_array dst_array,
const vlc_ancillary_array src_array 
)

Merge two ancillary arrays.

Copy all ancillaries from src_array to dst_array, preserving all previous ancillaries. In case of ancillary id conflict, the one from src_array will have precedence.

Parameters
dst_arraypointer to an initialized ancillary array, if not empty, previous ancillaries will be preserved.
src_arraypointer to the source ancillary array
Returns
VLC_SUCCESS in case of success, VLC_ENOMEM in case of alloc error

References vlc_ancillary_array::data, vlc_ancillary_array::size, vlc_ancillary_array_Insert(), and VLC_SUCCESS.

Referenced by picture_Clone(), picture_CopyProperties(), picture_MergeAncillaries(), vlc_ancillary_array_MergeAndClear(), vlc_frame_CopyProperties(), and vlc_frame_MergeAncillaries().

◆ vlc_ancillary_array_MergeAndClear()

int vlc_ancillary_array_MergeAndClear ( vlc_ancillary_array dst_array,
vlc_ancillary_array src_array 
)

Merge and clear two ancillary arrays.

The src array will be moved to the dst array if the dst array is empty (fast path). Otherwise, both arrays will be merged into dst_array and the src_array will be cleared afterward.

Parameters
dst_arraypointer to a valid ancillary array, if not empty, previous ancillaries will be preserved.
src_arraypointer to the source ancillary array, will point to empty data after this call.
Returns
VLC_SUCCESS in case of success, VLC_ENOMEM in case of alloc error

References vlc_ancillary_array::size, vlc_ancillary_array_Clear(), vlc_ancillary_array_Init(), vlc_ancillary_array_Merge(), and VLC_SUCCESS.

Referenced by picture_MergeAndClearAncillaries(), and vlc_frame_MergeAndClearAncillaries().