mirror of
https://github.com/mpv-player/mpv
synced 2025-03-23 20:00:56 +00:00
mp_image: replace rude function with less rude FFmpeg upstream function
This is new, thus a dependency bump is required.
This commit is contained in:
parent
14c2f20bff
commit
fd90c003d2
@ -365,51 +365,3 @@ int mp_set_avopts(struct mp_log *log, void *avobj, char **kv)
|
|||||||
}
|
}
|
||||||
return success;
|
return success;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if LIBAVUTIL_VERSION_MICRO >= 100
|
|
||||||
AVFrameSideData *ffmpeg_garbage(AVFrame *frame,
|
|
||||||
enum AVFrameSideDataType type,
|
|
||||||
AVBufferRef *buf)
|
|
||||||
{
|
|
||||||
AVFrameSideData *ret, **tmp;
|
|
||||||
|
|
||||||
if (!buf)
|
|
||||||
return NULL;
|
|
||||||
|
|
||||||
if (frame->nb_side_data > INT_MAX / sizeof(*frame->side_data) - 1)
|
|
||||||
goto fail;
|
|
||||||
|
|
||||||
tmp = av_realloc(frame->side_data,
|
|
||||||
(frame->nb_side_data + 1) * sizeof(*frame->side_data));
|
|
||||||
if (!tmp)
|
|
||||||
goto fail;
|
|
||||||
frame->side_data = tmp;
|
|
||||||
|
|
||||||
ret = av_mallocz(sizeof(*ret));
|
|
||||||
if (!ret)
|
|
||||||
goto fail;
|
|
||||||
|
|
||||||
ret->buf = buf;
|
|
||||||
ret->data = ret->buf->data;
|
|
||||||
ret->size = buf->size;
|
|
||||||
ret->type = type;
|
|
||||||
|
|
||||||
frame->side_data[frame->nb_side_data++] = ret;
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
fail:
|
|
||||||
av_buffer_unref(&buf);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
AVFrameSideData *ffmpeg_garbage(AVFrame *frame,
|
|
||||||
enum AVFrameSideDataType type,
|
|
||||||
AVBufferRef *buf)
|
|
||||||
{
|
|
||||||
AVFrameSideData *sd = av_frame_new_side_data(frame, type, buf->size);
|
|
||||||
if (sd)
|
|
||||||
memcpy(sd->data, buf->data, buf->size);
|
|
||||||
av_buffer_unref(&buf);
|
|
||||||
return sd;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
@ -47,8 +47,5 @@ const char *mp_codec_from_av_codec_id(int codec_id);
|
|||||||
void mp_set_avdict(struct AVDictionary **dict, char **kv);
|
void mp_set_avdict(struct AVDictionary **dict, char **kv);
|
||||||
void mp_avdict_print_unset(struct mp_log *log, int msgl, struct AVDictionary *d);
|
void mp_avdict_print_unset(struct mp_log *log, int msgl, struct AVDictionary *d);
|
||||||
int mp_set_avopts(struct mp_log *log, void *avobj, char **kv);
|
int mp_set_avopts(struct mp_log *log, void *avobj, char **kv);
|
||||||
AVFrameSideData *ffmpeg_garbage(AVFrame *frame,
|
|
||||||
enum AVFrameSideDataType type,
|
|
||||||
AVBufferRef *buf);
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -988,7 +988,8 @@ struct AVFrame *mp_image_to_av_frame(struct mp_image *src)
|
|||||||
#if LIBAVUTIL_VERSION_MICRO >= 100
|
#if LIBAVUTIL_VERSION_MICRO >= 100
|
||||||
if (src->icc_profile) {
|
if (src->icc_profile) {
|
||||||
AVFrameSideData *sd =
|
AVFrameSideData *sd =
|
||||||
ffmpeg_garbage(dst, AV_FRAME_DATA_ICC_PROFILE, new_ref->icc_profile);
|
av_frame_new_side_data_from_buf(dst, AV_FRAME_DATA_ICC_PROFILE,
|
||||||
|
new_ref->icc_profile);
|
||||||
if (!sd)
|
if (!sd)
|
||||||
abort();
|
abort();
|
||||||
new_ref->icc_profile = NULL;
|
new_ref->icc_profile = NULL;
|
||||||
@ -1007,7 +1008,8 @@ struct AVFrame *mp_image_to_av_frame(struct mp_image *src)
|
|||||||
for (int n = 0; n < new_ref->num_ff_side_data; n++) {
|
for (int n = 0; n < new_ref->num_ff_side_data; n++) {
|
||||||
struct mp_ff_side_data *mpsd = &new_ref->ff_side_data[n];
|
struct mp_ff_side_data *mpsd = &new_ref->ff_side_data[n];
|
||||||
if (!av_frame_get_side_data(dst, mpsd->type)) {
|
if (!av_frame_get_side_data(dst, mpsd->type)) {
|
||||||
AVFrameSideData *sd = ffmpeg_garbage(dst, mpsd->type, mpsd->buf);
|
AVFrameSideData *sd = av_frame_new_side_data_from_buf(dst, mpsd->type,
|
||||||
|
mpsd->buf);
|
||||||
if (!sd)
|
if (!sd)
|
||||||
abort();
|
abort();
|
||||||
mpsd->buf = NULL;
|
mpsd->buf = NULL;
|
||||||
|
2
wscript
2
wscript
@ -412,7 +412,7 @@ iconv support use --disable-iconv.",
|
|||||||
]
|
]
|
||||||
|
|
||||||
ffmpeg_pkg_config_checks = [
|
ffmpeg_pkg_config_checks = [
|
||||||
'libavutil', '>= 56.7.100',
|
'libavutil', '>= 56.8.100',
|
||||||
'libavcodec', '>= 58.10.100',
|
'libavcodec', '>= 58.10.100',
|
||||||
'libavformat', '>= 58.9.100',
|
'libavformat', '>= 58.9.100',
|
||||||
'libswscale', '>= 5.0.101',
|
'libswscale', '>= 5.0.101',
|
||||||
|
Loading…
Reference in New Issue
Block a user