https://sourceforge.net/p/qmmp-dev/code/7849/

--- src/plugins/Input/ffmpeg/decoder_ffmpeg.cpp.orig	2017-11-25 10:42:37 UTC
+++ src/plugins/Input/ffmpeg/decoder_ffmpeg.cpp
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2006-2017 by Ilya Kotov                                 *
+ *   Copyright (C) 2006-2018 by Ilya Kotov                                 *
  *   forkotov02@ya.ru                                                      *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
@@ -22,7 +22,7 @@
 #include <QFile>
 #include "replaygainreader.h"
 #include "decoder_ffmpeg.h"
-#if (LIBAVCODEC_VERSION_INT >= ((55<<16)+(34<<8)+0)) //libav-10: 55.34.1; ffmpeg-2.1: 55.39.100
+#if (LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(55,34,0)) //libav-10: 55.34.1; ffmpeg-2.1: 55.39.100
 extern "C"{
 #include <libavutil/channel_layout.h>
 #include <libavutil/frame.h>
@@ -92,14 +92,14 @@ DecoderFFmpeg::~DecoderFFmpeg()
 {
     m_bitrate = 0;
     m_temp_pkt.size = 0;
-#if (LIBAVCODEC_VERSION_INT >= ((57<<16)+(48<<8)+0)) //ffmpeg-3.1:  57.48.101
+#if (LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(57,48,0)) //ffmpeg-3.1:  57.48.101
     if(c)
         avcodec_free_context(&c);
 #endif
     if (ic)
         avformat_free_context(ic);
     if(m_pkt.data)
-#if (LIBAVCODEC_VERSION_INT >= ((57<<16)+(24<<8)+102)) //ffmpeg-3.0
+#if (LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(57,24,102)) //ffmpeg-3.0
         av_packet_unref(&m_pkt);
 #else
         av_free_packet(&m_pkt);
@@ -108,7 +108,7 @@ DecoderFFmpeg::~DecoderFFmpeg()
         av_free(m_stream);
 
     if(m_decoded_frame)
-#if (LIBAVCODEC_VERSION_INT >= ((55<<16)+(34<<8)+0)) //libav-10: 55.34.1; ffmpeg-2.1:  55.39.100
+#if (LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(55,34,0)) //libav-10: 55.34.1; ffmpeg-2.1:  55.39.100
         av_frame_free(&m_decoded_frame);
 #else
         av_free(m_decoded_frame);
@@ -208,7 +208,7 @@ bool DecoderFFmpeg::initialize()
     ReplayGainReader rg(ic);
     setReplayGainInfo(rg.replayGainInfo());
 
-#if (LIBAVCODEC_VERSION_INT >= ((57<<16)+(48<<8)+0)) //ffmpeg-3.1:  57.48.101
+#if (LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(57,4,0)) //ffmpeg-3.1:  57.48.101
     c = avcodec_alloc_context3(NULL);
 #endif
 
@@ -221,13 +221,13 @@ bool DecoderFFmpeg::initialize()
         return false;
     }
 
-#if (LIBAVCODEC_VERSION_INT >= ((57<<16)+(48<<8)+0)) //ffmpeg-3.1:  57.48.101
+#if (LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(57,48,0)) //ffmpeg-3.1:  57.48.101
     avcodec_parameters_to_context(c, ic->streams[audioIndex]->codecpar);
 #else
     c = ic->streams[audioIndex]->codec;
 #endif
 
-#if (LIBAVCODEC_VERSION_INT >= ((55<<16)+(34<<8)+0)) //libav-10: 55.34.1; ffmpeg-2.1:  55.39.100
+#if (LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(55,34,0)) //libav-10: 55.34.1; ffmpeg-2.1:  55.39.100
     if (c->channels == 1)
     {
         c->request_channel_layout = AV_CH_LAYOUT_MONO;
@@ -262,7 +262,7 @@ bool DecoderFFmpeg::initialize()
         return false;
     }
 
-#if (LIBAVCODEC_VERSION_INT >= ((55<<16)+(34<<8)+0)) //libav-10: 55.34.1; ffmpeg-2.1:  55.39.100
+#if (LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(55,34,0)) //libav-10: 55.34.1; ffmpeg-2.1:  55.39.100
     m_decoded_frame = av_frame_alloc();
 #else
     m_decoded_frame = avcodec_alloc_frame();
@@ -270,7 +270,7 @@ bool DecoderFFmpeg::initialize()
 
     m_totalTime = input()->isSequential() ? 0 : ic->duration * 1000 / AV_TIME_BASE;
 
-#if (LIBAVCODEC_VERSION_INT >= ((55<<16)+(34<<8)+0)) //libav 10
+#if (LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(55,34,0)) //libav 10
     if(c->codec_id == AV_CODEC_ID_SHORTEN) //ffmpeg bug workaround
         m_totalTime = 0;
 #else
@@ -373,13 +373,13 @@ qint64 DecoderFFmpeg::ffmpeg_decode()
     if(m_pkt.stream_index == audioIndex)
     {
 
-#if (LIBAVCODEC_VERSION_INT >= ((55<<16)+(34<<8)+0)) //libav-10: 55.34.1; ffmpeg-2.1:  55.39.100
+#if (LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(55,34,0)) //libav-10: 55.34.1; ffmpeg-2.1:  55.39.100
 
 #else
         avcodec_get_frame_defaults(m_decoded_frame);
 #endif
 
-#if (LIBAVCODEC_VERSION_INT >= ((57<<16)+(48<<8)+0)) //ffmpeg-3.1:  57.48.101
+#if (LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(57,48,0)) //ffmpeg-3.1:  57.48.101
         int err = avcodec_send_packet(c, &m_temp_pkt);
         if(err != 0 && err != AVERROR(EAGAIN) && err != AVERROR(EINVAL))
         {
@@ -396,7 +396,7 @@ qint64 DecoderFFmpeg::ffmpeg_decode()
             qWarning("DecoderFFmpeg: avcodec_receive_frame error: %d", err);
             return -1;
         }
-        got_frame = av_frame_get_pkt_size(m_decoded_frame);
+        got_frame = m_decoded_frame->pkt_size;
 #else
         int l = avcodec_decode_audio4(c, m_decoded_frame, &got_frame, &m_temp_pkt);
 #endif
@@ -417,7 +417,7 @@ qint64 DecoderFFmpeg::ffmpeg_decode()
         m_temp_pkt.size -= l;
     }
     if (!m_temp_pkt.size && m_pkt.data)
-#if (LIBAVCODEC_VERSION_INT >= ((57<<16)+(24<<8)+102)) //ffmpeg-3.0
+#if (LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(57,24,102)) //ffmpeg-3.0
         av_packet_unref(&m_pkt);
 #else
         av_free_packet(&m_pkt);
@@ -434,7 +434,7 @@ void DecoderFFmpeg::seek(qint64 pos)
     m_seekTime = timestamp;
     av_seek_frame(ic, -1, timestamp, AVSEEK_FLAG_BACKWARD);
     avcodec_flush_buffers(c);
-#if (LIBAVCODEC_VERSION_INT >= ((57<<16)+(24<<8)+102)) //ffmpeg-3.0
+#if (LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(57,24,102)) //ffmpeg-3.0
     av_packet_unref(&m_pkt);
 #else
     av_free_packet(&m_pkt);
@@ -459,7 +459,7 @@ void DecoderFFmpeg::fillBuffer()
             if(m_pkt.stream_index != audioIndex)
             {
                 if(m_pkt.data)
-#if (LIBAVCODEC_VERSION_INT >= ((57<<16)+(24<<8)+102)) //ffmpeg-3.0
+#if (LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(57,24,102)) //ffmpeg-3.0
                     av_packet_unref(&m_pkt);
 #else
                     av_free_packet(&m_pkt);
@@ -467,7 +467,7 @@ void DecoderFFmpeg::fillBuffer()
                 m_temp_pkt.size = 0;
                 continue;
             }
-#if (LIBAVCODEC_VERSION_INT >= ((55<<16)+(34<<8)+0)) //libav 10
+#if (LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(55,34,0)) //libav 10
             if(m_seekTime && c->codec_id == AV_CODEC_ID_APE)
 #else
             if(m_seekTime && c->codec_id == CODEC_ID_APE)
@@ -481,7 +481,7 @@ void DecoderFFmpeg::fillBuffer()
             }
             m_seekTime = 0;
         }
-#if (LIBAVCODEC_VERSION_INT >= ((55<<16)+(34<<8)+0)) //libav 10
+#if (LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(55,34,0)) //libav 10
         if(m_skipBytes > 0 && c->codec_id == AV_CODEC_ID_APE)
 #else
         if(m_skipBytes > 0 && c->codec_id == CODEC_ID_APE)
@@ -524,14 +524,14 @@ void DecoderFFmpeg::fillBuffer()
             m_output_at = 0;
             m_temp_pkt.size = 0;
 
-#if (LIBAVCODEC_VERSION_INT >= ((55<<16)+(34<<8)+0)) //libav 10
+#if (LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(55,34,0)) //libav 10
             if(c->codec_id == AV_CODEC_ID_SHORTEN || c->codec_id == AV_CODEC_ID_TWINVQ)
 #else
             if(c->codec_id == CODEC_ID_SHORTEN || c->codec_id == CODEC_ID_TWINVQ)
 #endif
             {
                 if(m_pkt.data)
-#if (LIBAVCODEC_VERSION_INT >= ((57<<16)+(24<<8)+102)) //ffmpeg-3.0
+#if (LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(57,24,102)) //ffmpeg-3.0
                     av_packet_unref(&m_pkt);
 #else
                     av_free_packet(&m_pkt);
@@ -545,7 +545,7 @@ void DecoderFFmpeg::fillBuffer()
         else if(m_output_at == 0)
         {
             if(m_pkt.data)
-#if (LIBAVCODEC_VERSION_INT >= ((57<<16)+(24<<8)+102)) //ffmpeg-3.0
+#if (LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(57,24,102)) //ffmpeg-3.0
                 av_packet_unref(&m_pkt);
 #else
                 av_free_packet(&m_pkt);
--- src/plugins/Input/ffmpeg/decoder_ffmpeg.h.orig	2017-11-25 10:42:37 UTC
+++ src/plugins/Input/ffmpeg/decoder_ffmpeg.h
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2006-2017 by Ilya Kotov                                 *
+ *   Copyright (C) 2006-2018 by Ilya Kotov                                 *
  *   forkotov02@ya.ru                                                      *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
@@ -61,7 +61,12 @@ class DecoderFFmpeg : public Decoder (private)
     AVPacket m_pkt;
     AVPacket m_temp_pkt;
     qint64 m_output_at;
+
+#if (LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(58,10,100)) //ffmpeg-3.5
+    uchar m_input_buf[INPUT_BUFFER_SIZE + AV_INPUT_BUFFER_PADDING_SIZE];
+#else
     uchar m_input_buf[INPUT_BUFFER_SIZE + FF_INPUT_BUFFER_PADDING_SIZE];
+#endif
     int64_t m_seekTime;
     qint64  m_skipBytes;
     int m_channels;
--- src/plugins/Input/ffmpeg/decoderffmpegfactory.cpp.orig	2017-11-25 10:42:37 UTC
+++ src/plugins/Input/ffmpeg/decoderffmpegfactory.cpp
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2008-2017 by Ilya Kotov                                 *
+ *   Copyright (C) 2008-2018 by Ilya Kotov                                 *
  *   forkotov02@ya.ru                                                      *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
@@ -40,9 +40,11 @@ extern "C"{
 
 DecoderFFmpegFactory::DecoderFFmpegFactory()
 {
+#if (LIBAVCODEC_VERSION_INT < AV_VERSION_INT(58,10,100)) //ffmpeg-3.5
     avcodec_register_all();
     avformat_network_init();
     av_register_all();
+#endif
 }
 
 bool DecoderFFmpegFactory::canDecode(QIODevice *i) const
@@ -93,7 +95,7 @@ const DecoderProperties DecoderFFmpegFactory::properti
     filters = settings.value("FFMPEG/filters", filters).toStringList();
 
     //remove unsupported filters
-#if (LIBAVCODEC_VERSION_INT >= ((54<<16) + (51<<8) + 100)) //libav 10
+#if (LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(54,51,100)) //libav 10
     if(!avcodec_find_decoder(AV_CODEC_ID_WMAV1))
         filters.removeAll("*.wma");
     if(!avcodec_find_decoder(AV_CODEC_ID_APE))
--- src/plugins/Input/ffmpeg/ffmpegmetadatamodel.cpp.orig	2017-11-25 10:42:37 UTC
+++ src/plugins/Input/ffmpeg/ffmpegmetadatamodel.cpp
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2009-2017 by Ilya Kotov                                 *
+ *   Copyright (C) 2009-2018 by Ilya Kotov                                 *
  *   forkotov02@ya.ru                                                      *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
@@ -55,7 +55,7 @@ QHash<QString, QString> FFmpegMetaDataModel::audioProp
 
     if(idx >= 0)
     {
-#if (LIBAVCODEC_VERSION_INT >= ((57<<16)+(48<<8)+0)) //ffmpeg-3.1:  57.48.101
+#if (LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(57,48,0)) //ffmpeg-3.1:  57.48.101
         AVCodecParameters *c = m_in->streams[idx]->codecpar;
 #else
         AVCodecContext *c = m_in->streams[idx]->codec;
@@ -70,7 +70,7 @@ QPixmap FFmpegMetaDataModel::cover()
 {
     if(!m_in)
         return QPixmap();
-#if (LIBAVCODEC_VERSION_INT >= ((57<<16)+(48<<8)+0)) //ffmpeg-3.1:  57.48.101
+#if (LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(57,48,0)) //ffmpeg-3.1:  57.48.101
     AVCodecParameters *c = 0;
 #else
     AVCodecContext *c = 0;
@@ -78,13 +78,13 @@ QPixmap FFmpegMetaDataModel::cover()
 
     for (uint idx = 0; idx < m_in->nb_streams; idx++)
     {
-#if (LIBAVCODEC_VERSION_INT >= ((57<<16)+(48<<8)+0)) //ffmpeg-3.1:  57.48.101
+#if (LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(57,48,0)) //ffmpeg-3.1:  57.48.101
         c = m_in->streams[idx]->codecpar;
 #else
         c = m_in->streams[idx]->codec;
 #endif
 
-#if (LIBAVCODEC_VERSION_INT >= ((55<<16)+(34<<8)+0)) //libav 10
+#if (LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(55,34,0)) //libav 10
         if (c->codec_type == AVMEDIA_TYPE_VIDEO && c->codec_id == AV_CODEC_ID_MJPEG)
 #else
         if (c->codec_type == AVMEDIA_TYPE_VIDEO && c->codec_id == CODEC_ID_MJPEG)
--- src/plugins/Input/ffmpeg/ffmpegmetadatamodel.h.orig	2017-11-25 10:42:37 UTC
+++ src/plugins/Input/ffmpeg/ffmpegmetadatamodel.h
@@ -24,7 +24,7 @@
 extern "C"{
 #include <libavformat/avformat.h>
 #include <libavcodec/avcodec.h>
-#if (LIBAVUTIL_VERSION_INT >= ((51<<16)+(32<<8)+0))
+#if (LIBAVUTIL_VERSION_INT >= AV_VERSION_INT(51,32,0))
 #include <libavutil/dict.h>
 #endif
 }
