diff -r b0fe8c8d0bb5 -r 8fd36e1b66ed QTfrontend/util/LibavInteraction.cpp --- a/QTfrontend/util/LibavInteraction.cpp Mon Aug 10 12:56:53 2020 +0300 +++ b/QTfrontend/util/LibavInteraction.cpp Sat Feb 05 10:42:50 2022 -0500 @@ -73,7 +73,11 @@ QMap formats; // test if given format supports given codec +#if LIBAVCODEC_VERSION_MAJOR >= 59 +bool FormatQueryCodec(const AVOutputFormat *ofmt, enum AVCodecID codec_id) +#else bool FormatQueryCodec(AVOutputFormat *ofmt, enum AVCodecID codec_id) +#endif { #if LIBAVFORMAT_VERSION_MAJOR >= 54 return avformat_query_codec(ofmt, codec_id, FF_COMPLIANCE_NORMAL) == 1; @@ -86,12 +90,20 @@ LibavInteraction::LibavInteraction() : QObject() { +#if LIBAVCODEC_VERSION_MAJOR < 59 // initialize libav and register all codecs and formats av_register_all(); +#endif // get list of all codecs +#if LIBAVCODEC_VERSION_MAJOR >= 59 + const AVCodec* pCodec = NULL; + void* i = 0; + while ((pCodec = av_codec_iterate(&i))) +#else AVCodec* pCodec = NULL; while ((pCodec = av_codec_next(pCodec))) +#endif { if (!av_codec_is_encoder(pCodec)) continue; @@ -179,8 +191,14 @@ } // get list of all formats +#if LIBAVCODEC_VERSION_MAJOR >= 59 + const AVOutputFormat* pFormat = NULL; + i = 0; + while ((pFormat = av_muxer_iterate(&i))) +#else AVOutputFormat* pFormat = NULL; while ((pFormat = av_oformat_next(pFormat))) +#endif { if (!pFormat->extensions) continue; @@ -296,12 +314,22 @@ AVStream* pStream = pContext->streams[i]; if (!pStream) continue; +#if LIBAVCODEC_VERSION_MAJOR >= 59 + const AVCodec *st_codec = avcodec_find_decoder(pContext->streams[i]->codecpar->codec_id); + AVCodecContext* pCodec = avcodec_alloc_context3(st_codec); + avcodec_parameters_to_context(pCodec, pContext->streams[i]->codecpar); +#else AVCodecContext* pCodec = pContext->streams[i]->codec; +#endif if (!pCodec) continue; +#if LIBAVCODEC_VERSION_MAJOR >= 59 + const AVCodec* pDecoder = avcodec_find_decoder(pCodec->codec_id); +#else AVCodec* pDecoder = avcodec_find_decoder(pCodec->codec_id); +#endif QString decoderName = pDecoder ? pDecoder->name : tr("unknown"); if (pCodec->codec_type == AVMEDIA_TYPE_VIDEO) {