From c971220cdd360b56efc0e67536bdf19501477aa4 Mon Sep 17 00:00:00 2001 From: wm4 Date: Thu, 31 Mar 2016 22:00:45 +0200 Subject: demux_lavf, ad_lavc, ad_spdif, vd_lavc: handle FFmpeg codecpar API change AVFormatContext.codec is deprecated now, and you're supposed to use AVFormatContext.codecpar instead. Handle this for all of the normal playback code. Encoding mode isn't touched. --- demux/demux_lavf.c | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) (limited to 'demux/demux_lavf.c') diff --git a/demux/demux_lavf.c b/demux/demux_lavf.c index 1c5d0fc05a..e4ad5881ca 100644 --- a/demux/demux_lavf.c +++ b/demux/demux_lavf.c @@ -550,8 +550,14 @@ static void handle_new_stream(demuxer_t *demuxer, int i) lavf_priv_t *priv = demuxer->priv; AVFormatContext *avfc = priv->avfc; AVStream *st = avfc->streams[i]; - AVCodecContext *codec = st->codec; struct sh_stream *sh = NULL; +#if HAVE_AVCODEC_HAS_CODECPAR + AVCodecParameters *codec = st->codecpar; + int lavc_delay = codec->initial_padding; +#else + AVCodecContext *codec = st->codec; + int lavc_delay = codec->delay; +#endif switch (codec->codec_type) { case AVMEDIA_TYPE_AUDIO: { @@ -566,7 +572,7 @@ static void handle_new_stream(demuxer_t *demuxer, int i) double delay = 0; if (codec->sample_rate > 0) - delay = codec->delay / (double)codec->sample_rate; + delay = lavc_delay / (double)codec->sample_rate; priv->seek_delay = MPMAX(priv->seek_delay, delay); export_replaygain(demuxer, sh->codec, st); @@ -647,9 +653,17 @@ static void handle_new_stream(demuxer_t *demuxer, int i) sh->ff_index = st->index; sh->codec->codec = mp_codec_from_av_codec_id(codec->codec_id); sh->codec->codec_tag = codec->codec_tag; +#if HAVE_AVCODEC_HAS_CODECPAR + sh->codec->lav_codecpar = avcodec_parameters_alloc(); + if (sh->codec->lav_codecpar) + avcodec_parameters_copy(sh->codec->lav_codecpar, codec); +#else + sh->codec->codec = mp_codec_from_av_codec_id(codec->codec_id); + sh->codec->codec_tag = codec->codec_tag; sh->codec->lav_headers = avcodec_alloc_context3(NULL); if (sh->codec->lav_headers) mp_copy_lav_codec_headers(sh->codec->lav_headers, codec); +#endif if (st->disposition & AV_DISPOSITION_DEFAULT) sh->default_track = true; -- cgit v1.2.3