mirror of
https://github.com/mpv-player/mpv
synced 2025-01-28 18:53:02 +00:00
Take care of libavcodec convergence_duration deprecation
This AVPacket field was a hack against the fact that the duration field was merely an int (too small for things like subtitle durations). Newer libavcodec drops this field and makes duration 64 bit.
This commit is contained in:
parent
12cd48a8a9
commit
b4491c00c4
@ -816,6 +816,12 @@ api_statement_check \
|
||||
libavutil/pixdesc.h \
|
||||
'AVComponentDescriptor d; int x = d.depth'
|
||||
|
||||
api_statement_check \
|
||||
"libavcodec 64 bit AVPacket.duration" \
|
||||
HAVE_AV_AVPACKET_INT64_DURATION \
|
||||
libavcodec/avcodec.h \
|
||||
'int x[(int)sizeof(((AVPacket){0}).duration) - 7]'
|
||||
|
||||
check_pkg_config "libavfilter" $_libavfilter LIBAVFILTER 'libavfilter >= 5.0.0'
|
||||
|
||||
check_pkg_config "libavdevice" $_libavdevice LIBAVDEVICE 'libavdevice >= 55.0.0'
|
||||
|
@ -882,8 +882,10 @@ static int demux_lavf_fill_buffer(demuxer_t *demux)
|
||||
if (pkt->dts != AV_NOPTS_VALUE)
|
||||
dp->dts = pkt->dts * av_q2d(st->time_base);
|
||||
dp->duration = pkt->duration * av_q2d(st->time_base);
|
||||
#if !HAVE_AV_AVPACKET_INT64_DURATION
|
||||
if (pkt->convergence_duration > 0)
|
||||
dp->duration = pkt->convergence_duration * av_q2d(st->time_base);
|
||||
#endif
|
||||
dp->pos = pkt->pos;
|
||||
dp->keyframe = pkt->flags & AV_PKT_FLAG_KEY;
|
||||
if (dp->pts != MP_NOPTS_VALUE) {
|
||||
|
@ -202,7 +202,9 @@ static int parse_webvtt(AVPacket *in, AVPacket *pkt)
|
||||
|
||||
pkt->pts = in->pts;
|
||||
pkt->duration = in->duration;
|
||||
#if !HAVE_AV_AVPACKET_INT64_DURATION
|
||||
pkt->convergence_duration = in->convergence_duration;
|
||||
#endif
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
8
wscript
8
wscript
@ -458,7 +458,13 @@ FFmpeg/Libav libraries. You need at least {0}. Aborting.".format(libav_versions_
|
||||
'func': check_statement('libavutil/pixdesc.h',
|
||||
'AVComponentDescriptor d; int x = d.depth',
|
||||
use='libav'),
|
||||
}
|
||||
}, {
|
||||
'name': 'av-avpacket-int64-duration',
|
||||
'desc': 'libavcodec 64 bit AVPacket.duration',
|
||||
'func': check_statement('libavcodec/avcodec.h',
|
||||
'int x[(int)sizeof(((AVPacket){0}).duration) - 7]',
|
||||
use='libav'),
|
||||
},
|
||||
]
|
||||
|
||||
audio_output_features = [
|
||||
|
Loading…
Reference in New Issue
Block a user