Browse Source

picture: add MergeAncillaries() and MergeAndClearAncillaries()

pull/180/head
Thomas Guillem 1 year ago
committed by François Cartegnie
parent
commit
09dc8b44f9
  1. 25
      include/vlc_picture.h
  2. 2
      src/libvlccore.sym
  3. 14
      src/misc/picture.c

25
include/vlc_picture.h

@ -28,14 +28,12 @@
#include <assert.h>
#include <vlc_atomic.h>
#include <vlc_es.h>
#include <vlc_ancillary.h>
#ifdef __cplusplus
extern "C" {
#endif
struct vlc_ancillary;
typedef uint32_t vlc_ancillary_id;
/**
* \defgroup picture Generic picture API
* \ingroup output
@ -417,6 +415,27 @@ VLC_API void picture_Copy( picture_t *p_dst, const picture_t *p_src );
*/
VLC_API picture_t *picture_Clone(picture_t *pic);
/**
* Merge two ancillary arrays
*
* @param picture the picture that hold the destination ancillary array
* @param src_array pointer to an ancillary array
* @return VLC_SUCCESS in case of success, VLC_ENOMEM in case of alloc error
*/
VLC_API int
picture_MergeAncillaries(picture_t *pic, const vlc_ancillary_array *src_array);
/**
* Merge and clear two ancillary arrays
*
* @param picture the picture that hold the destination ancillary array
* @param src_array pointer to the source ancillary array, will point to empty
* data after this call.
* @return VLC_SUCCESS in case of success, VLC_ENOMEM in case of alloc error
*/
VLC_API int
picture_MergeAndClearAncillaries(picture_t *pic, vlc_ancillary_array *src_array);
/**
* Attach an ancillary to the picture
*

2
src/libvlccore.sym

@ -318,6 +318,8 @@ net_Read
net_SetCSCov
net_Write
picture_AttachAncillary
picture_MergeAncillaries
picture_MergeAndClearAncillaries
picture_AttachNewAncillary
picture_BlendSubpicture
picture_Clone

14
src/misc/picture.c

@ -484,6 +484,20 @@ picture_t *picture_Clone(picture_t *picture)
return clone;
}
int
picture_MergeAncillaries(picture_t *pic, const vlc_ancillary_array *src_array)
{
picture_priv_t *priv = container_of(pic, picture_priv_t, picture);
return vlc_ancillary_array_Merge(&priv->ancillaries, src_array);
}
int
picture_MergeAndClearAncillaries(picture_t *pic, vlc_ancillary_array *src_array)
{
picture_priv_t *priv = container_of(pic, picture_priv_t, picture);
return vlc_ancillary_array_MergeAndClear(&priv->ancillaries, src_array);
}
int
picture_AttachAncillary(picture_t *pic, struct vlc_ancillary *ancillary)
{

Loading…
Cancel
Save