mirror of
https://git.ffmpeg.org/ffmpeg.git
synced 2025-03-08 13:38:07 +00:00
avutil/frame: split side_data_from_buf to base and AVFrame func
This commit is contained in:
parent
919c9cdbe6
commit
28783896dc
@ -679,7 +679,8 @@ AVBufferRef *av_frame_get_plane_buffer(const AVFrame *frame, int plane)
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
AVFrameSideData *av_frame_new_side_data_from_buf(AVFrame *frame,
|
static AVFrameSideData *add_side_data_from_buf(AVFrameSideData ***sd,
|
||||||
|
int *nb_sd,
|
||||||
enum AVFrameSideDataType type,
|
enum AVFrameSideDataType type,
|
||||||
AVBufferRef *buf)
|
AVBufferRef *buf)
|
||||||
{
|
{
|
||||||
@ -688,14 +689,13 @@ AVFrameSideData *av_frame_new_side_data_from_buf(AVFrame *frame,
|
|||||||
if (!buf)
|
if (!buf)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
if (frame->nb_side_data > INT_MAX / sizeof(*frame->side_data) - 1)
|
if (*nb_sd > INT_MAX / sizeof(*sd) - 1)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
tmp = av_realloc(frame->side_data,
|
tmp = av_realloc(*sd, (*nb_sd + 1) * sizeof(*sd));
|
||||||
(frame->nb_side_data + 1) * sizeof(*frame->side_data));
|
|
||||||
if (!tmp)
|
if (!tmp)
|
||||||
return NULL;
|
return NULL;
|
||||||
frame->side_data = tmp;
|
*sd = tmp;
|
||||||
|
|
||||||
ret = av_mallocz(sizeof(*ret));
|
ret = av_mallocz(sizeof(*ret));
|
||||||
if (!ret)
|
if (!ret)
|
||||||
@ -706,11 +706,20 @@ AVFrameSideData *av_frame_new_side_data_from_buf(AVFrame *frame,
|
|||||||
ret->size = buf->size;
|
ret->size = buf->size;
|
||||||
ret->type = type;
|
ret->type = type;
|
||||||
|
|
||||||
frame->side_data[frame->nb_side_data++] = ret;
|
(*sd)[(*nb_sd)++] = ret;
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
AVFrameSideData *av_frame_new_side_data_from_buf(AVFrame *frame,
|
||||||
|
enum AVFrameSideDataType type,
|
||||||
|
AVBufferRef *buf)
|
||||||
|
{
|
||||||
|
return
|
||||||
|
add_side_data_from_buf(
|
||||||
|
&frame->side_data, &frame->nb_side_data, type, buf);
|
||||||
|
}
|
||||||
|
|
||||||
AVFrameSideData *av_frame_new_side_data(AVFrame *frame,
|
AVFrameSideData *av_frame_new_side_data(AVFrame *frame,
|
||||||
enum AVFrameSideDataType type,
|
enum AVFrameSideDataType type,
|
||||||
size_t size)
|
size_t size)
|
||||||
|
Loading…
Reference in New Issue
Block a user