diff options
| author | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2018-02-10 20:10:23 +0000 |
|---|---|---|
| committer | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2018-02-10 20:10:23 +0000 |
| commit | c820141600c192a62fb416311977982c87a8f174 (patch) | |
| tree | 04034b8607aa95bc77a17f305120e7f0e7bfb988 /src/plugins | |
| parent | 0061860cdf914452963c039aa51a8a722311b215 (diff) | |
| download | qmmp-c820141600c192a62fb416311977982c87a8f174.tar.gz qmmp-c820141600c192a62fb416311977982c87a8f174.tar.bz2 qmmp-c820141600c192a62fb416311977982c87a8f174.zip | |
ffmpeg plugin: fixed ffmpeg 3.5 support
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@7842 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src/plugins')
| -rw-r--r-- | src/plugins/Input/ffmpeg/decoder_ffmpeg.cpp | 34 | ||||
| -rw-r--r-- | src/plugins/Input/ffmpeg/decoder_ffmpeg.h | 7 | ||||
| -rw-r--r-- | src/plugins/Input/ffmpeg/decoderffmpegfactory.cpp | 4 | ||||
| -rw-r--r-- | src/plugins/Input/ffmpeg/ffmpegmetadatamodel.cpp | 8 |
4 files changed, 30 insertions, 23 deletions
diff --git a/src/plugins/Input/ffmpeg/decoder_ffmpeg.cpp b/src/plugins/Input/ffmpeg/decoder_ffmpeg.cpp index 524273d23..5361a56ce 100644 --- a/src/plugins/Input/ffmpeg/decoder_ffmpeg.cpp +++ b/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(); @@ -368,13 +368,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)) { @@ -391,7 +391,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 @@ -412,7 +412,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); @@ -429,7 +429,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); @@ -454,7 +454,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); @@ -516,7 +516,7 @@ void DecoderFFmpeg::fillBuffer() if(c->codec_id == AV_CODEC_ID_SHORTEN || c->codec_id == AV_CODEC_ID_TWINVQ) { 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); @@ -530,7 +530,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); diff --git a/src/plugins/Input/ffmpeg/decoder_ffmpeg.h b/src/plugins/Input/ffmpeg/decoder_ffmpeg.h index ee3724802..e824a4f7e 100644 --- a/src/plugins/Input/ffmpeg/decoder_ffmpeg.h +++ b/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 @@ 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; diff --git a/src/plugins/Input/ffmpeg/decoderffmpegfactory.cpp b/src/plugins/Input/ffmpeg/decoderffmpegfactory.cpp index 4728a8f7f..eaf4d9edf 100644 --- a/src/plugins/Input/ffmpeg/decoderffmpegfactory.cpp +++ b/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 * @@ -38,9 +38,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 diff --git a/src/plugins/Input/ffmpeg/ffmpegmetadatamodel.cpp b/src/plugins/Input/ffmpeg/ffmpegmetadatamodel.cpp index 488dd08a5..adef44a30 100644 --- a/src/plugins/Input/ffmpeg/ffmpegmetadatamodel.cpp +++ b/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::audioProperties() 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,7 +78,7 @@ 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; |
