mirror of https://git.ffmpeg.org/ffmpeg.git
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;
|
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,
|
int av_frame_side_data_clone(AVFrameSideData ***sd, int *nb_sd,
|
||||||
const AVFrameSideData *src, unsigned int flags)
|
const AVFrameSideData *src, unsigned int flags)
|
||||||
{
|
{
|
||||||
|
|
|
@ -1062,6 +1062,30 @@ AVFrameSideData *av_frame_side_data_new(AVFrameSideData ***sd, int *nb_sd,
|
||||||
enum AVFrameSideDataType type,
|
enum AVFrameSideDataType type,
|
||||||
size_t size, unsigned int flags);
|
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
|
* Add a new side data entry to an array based on existing side data, taking
|
||||||
* a reference towards the contained AVBufferRef.
|
* a reference towards the contained AVBufferRef.
|
||||||
|
|
Loading…
Reference in New Issue