mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-11-21 10:55:51 +02:00
avutil/frame: add helper for adding side data w/ AVBufferRef to array
Signed-off-by: James Almer <jamrial@gmail.com>
This commit is contained in:
parent
e4f5c2414b
commit
a16338089c
@ -821,6 +821,25 @@ AVFrameSideData *av_frame_side_data_new(AVFrameSideData ***sd, int *nb_sd,
|
||||
return ret;
|
||||
}
|
||||
|
||||
AVFrameSideData *av_frame_side_data_add(AVFrameSideData ***sd, int *nb_sd,
|
||||
enum AVFrameSideDataType type,
|
||||
AVBufferRef **pbuf, unsigned int flags)
|
||||
{
|
||||
const AVSideDataDescriptor *desc = av_frame_side_data_desc(type);
|
||||
AVFrameSideData *sd_dst = NULL;
|
||||
AVBufferRef *buf = *pbuf;
|
||||
|
||||
if (flags & AV_FRAME_SIDE_DATA_FLAG_UNIQUE)
|
||||
remove_side_data(sd, nb_sd, type);
|
||||
|
||||
sd_dst = add_side_data_from_buf(sd, nb_sd, type, buf);
|
||||
if (!sd_dst)
|
||||
return NULL;
|
||||
|
||||
*pbuf = NULL;
|
||||
return sd_dst;
|
||||
}
|
||||
|
||||
int av_frame_side_data_clone(AVFrameSideData ***sd, int *nb_sd,
|
||||
const AVFrameSideData *src, unsigned int flags)
|
||||
{
|
||||
|
@ -1062,6 +1062,30 @@ AVFrameSideData *av_frame_side_data_new(AVFrameSideData ***sd, int *nb_sd,
|
||||
enum AVFrameSideDataType type,
|
||||
size_t size, unsigned int flags);
|
||||
|
||||
/**
|
||||
* Add a new side data entry to an array from an existing AVBufferRef.
|
||||
*
|
||||
* @param sd pointer to array of side data to which to add another entry,
|
||||
* or to NULL in order to start a new array.
|
||||
* @param nb_sd pointer to an integer containing the number of entries in
|
||||
* the array.
|
||||
* @param type type of the added side data
|
||||
* @param buf Pointer to AVBufferRef to add to the array. On success,
|
||||
* the function takes ownership of the AVBufferRef and *buf is
|
||||
* set to NULL, unless AV_FRAME_SIDE_DATA_FLAG_NEW_REF is set
|
||||
* in which case the ownership will remain with the caller.
|
||||
* @param flags Some combination of AV_FRAME_SIDE_DATA_FLAG_* flags, or 0.
|
||||
*
|
||||
* @return newly added side data on success, NULL on error.
|
||||
* @note In case of AV_FRAME_SIDE_DATA_FLAG_UNIQUE being set, entries of
|
||||
* matching AVFrameSideDataType will be removed before the addition
|
||||
* is attempted.
|
||||
*
|
||||
*/
|
||||
AVFrameSideData *av_frame_side_data_add(AVFrameSideData ***sd, int *nb_sd,
|
||||
enum AVFrameSideDataType type,
|
||||
AVBufferRef **buf, unsigned int flags);
|
||||
|
||||
/**
|
||||
* Add a new side data entry to an array based on existing side data, taking
|
||||
* a reference towards the contained AVBufferRef.
|
||||
|
Loading…
Reference in New Issue
Block a user