avutil/frame: add helper for getting side data from array

This commit is contained in:
Jan Ekström 2023-03-19 15:37:40 +02:00
parent 3c52f73e25
commit f287a285d9
2 changed files with 29 additions and 5 deletions

View File

@ -813,14 +813,24 @@ int av_frame_side_data_clone(AVFrameSideData ***sd, int *nb_sd,
return 0;
}
const AVFrameSideData *av_frame_side_data_get(const AVFrameSideData **sd,
const int nb_sd,
enum AVFrameSideDataType type)
{
for (int i = 0; i < nb_sd; i++) {
if (sd[i]->type == type)
return sd[i];
}
return NULL;
}
AVFrameSideData *av_frame_get_side_data(const AVFrame *frame,
enum AVFrameSideDataType type)
{
for (int i = 0; i < frame->nb_side_data; i++) {
if (frame->side_data[i]->type == type)
return frame->side_data[i];
}
return NULL;
return (AVFrameSideData *)av_frame_side_data_get(
(const AVFrameSideData **)frame->side_data, frame->nb_side_data,
type
);
}
static int frame_copy_video(AVFrame *dst, const AVFrame *src)

View File

@ -1041,6 +1041,20 @@ AVFrameSideData *av_frame_side_data_new(AVFrameSideData ***sd, int *nb_sd,
int av_frame_side_data_clone(AVFrameSideData ***sd, int *nb_sd,
const AVFrameSideData *src, unsigned int flags);
/**
* Get a side data entry of a specific type from an array.
*
* @param sd array of side data.
* @param nb_sd integer containing the number of entries in the array.
* @param type type of side data to be queried
*
* @return a pointer to the side data of a given type on success, NULL if there
* is no side data with such type in this set.
*/
const AVFrameSideData *av_frame_side_data_get(const AVFrameSideData **sd,
const int nb_sd,
enum AVFrameSideDataType type);
/**
* @}
*/