[packages/qmmp] - fix building with ffmpeg 3.x - rel 5

baggins baggins at pld-linux.org
Sat Apr 16 19:27:05 CEST 2016


commit a9b4842dff519f52e34fe3d055fd60314f26c957
Author: Jan Rękorajski <baggins at pld-linux.org>
Date:   Sat Apr 16 19:26:50 2016 +0200

    - fix building with ffmpeg 3.x
    - rel 5

 ffmpeg3.patch | 195 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 qmmp.spec     |   4 +-
 2 files changed, 198 insertions(+), 1 deletion(-)
---
diff --git a/qmmp.spec b/qmmp.spec
index 7067a31..df87451 100644
--- a/qmmp.spec
+++ b/qmmp.spec
@@ -3,11 +3,12 @@ Summary(hu.UTF-8):	XMMS-szerű Qt alapú audio-lejátszó
 Summary(pl.UTF-8):	Odtwarzacz muzyki w stylu XMMS napisany w Qt
 Name:		qmmp
 Version:	0.7.1
-Release:	4
+Release:	5
 License:	GPL v2
 Group:		X11/Applications/Multimedia
 Source0:	http://qmmp.googlecode.com/files/%{name}-%{version}.tar.bz2
 # Source0-md5:	d5ecc15134eefc1b8af4220540a65f19
+Patch0:		ffmpeg3.patch
 URL:		http://code.google.com/p/qmmp/
 BuildRequires:	Qt3Support-devel
 BuildRequires:	QtCore-devel >= 4.6
@@ -80,6 +81,7 @@ Pliki nagłówkowe qmmp
 
 %prep
 %setup -q
+%patch0 -p1
 
 %build
 install -d build
diff --git a/ffmpeg3.patch b/ffmpeg3.patch
new file mode 100644
index 0000000..a26d798
--- /dev/null
+++ b/ffmpeg3.patch
@@ -0,0 +1,195 @@
+diff -ur qmmp-0.7.1/src/plugins/Input/ffmpeg/decoder_ffmpeg.cpp qmmp-0.7.1.ffmpeg3/src/plugins/Input/ffmpeg/decoder_ffmpeg.cpp
+--- qmmp-0.7.1/src/plugins/Input/ffmpeg/decoder_ffmpeg.cpp	2013-05-31 11:03:32.000000000 +0200
++++ qmmp-0.7.1.ffmpeg3/src/plugins/Input/ffmpeg/decoder_ffmpeg.cpp	2016-04-16 19:21:32.427821767 +0200
+@@ -187,9 +187,9 @@
+     }
+ 
+     if (c->channels > 0)
+-         c->request_channels = qMin(2, c->channels);
++         c->request_channel_layout = av_get_default_channel_layout(qMin(2, c->channels));
+     else
+-         c->request_channels = 2;
++         c->request_channel_layout = av_get_default_channel_layout(2);
+ 
+     av_dump_format(ic,0,0,0);
+ 
+@@ -207,11 +207,11 @@
+         return false;
+     }
+ 
+-    m_decoded_frame = avcodec_alloc_frame();
++    m_decoded_frame = av_frame_alloc();
+ 
+     m_totalTime = input()->isSequential() ? 0 : ic->duration * 1000 / AV_TIME_BASE;
+ 
+-    if(c->codec_id == CODEC_ID_SHORTEN) //ffmpeg bug workaround
++    if(c->codec_id == AV_CODEC_ID_SHORTEN) //ffmpeg bug workaround
+         m_totalTime = 0;
+ 
+     Qmmp::AudioFormat format = Qmmp::PCM_UNKNOWM;
+@@ -236,7 +236,7 @@
+         return false;
+     }
+ 
+-    configure(c->sample_rate, c->request_channels, format);
++    configure(c->sample_rate, av_get_channel_layout_nb_channels(c->request_channel_layout), format);
+ 
+     if(ic->bit_rate)
+         m_bitrate = ic->bit_rate/1000;
+@@ -273,7 +273,7 @@
+         return 0;
+     qint64 len = qMin(m_output_at, maxSize);
+ 
+-    if(av_sample_fmt_is_planar(c->sample_fmt) && c->request_channels > 1)
++    if(av_sample_fmt_is_planar(c->sample_fmt) && av_get_channel_layout_nb_channels(c->request_channel_layout) > 1)
+     {
+         int bps = av_get_bytes_per_sample(c->sample_fmt);
+         for(int i = 0; i < len >> 1; i+=bps)
+@@ -314,7 +314,7 @@
+     int got_frame = 0;
+     if((m_pkt.stream_index == wma_idx))
+     {
+-        avcodec_get_frame_defaults(m_decoded_frame);
++        av_frame_unref(m_decoded_frame);
+ 
+         int  l = avcodec_decode_audio4(c, m_decoded_frame, &got_frame, &m_temp_pkt);
+ 
+@@ -372,7 +372,7 @@
+                 m_temp_pkt.size = 0;
+                 continue;
+             }
+-            if(m_seekTime && c->codec_id == CODEC_ID_APE)
++            if(m_seekTime && c->codec_id == AV_CODEC_ID_APE)
+             {
+                 int64_t rescaledPts = av_rescale(m_pkt.pts,
+                                                  AV_TIME_BASE * (int64_t)
+@@ -385,7 +385,7 @@
+             m_seekTime = 0;
+         }
+ 
+-        if(m_skipBytes > 0 && c->codec_id == CODEC_ID_APE)
++        if(m_skipBytes > 0 && c->codec_id == AV_CODEC_ID_APE)
+         {
+             while (m_skipBytes > 0)
+             {
+@@ -414,7 +414,7 @@
+             m_output_at = 0;
+             m_temp_pkt.size = 0;
+ 
+-            if(c->codec_id == CODEC_ID_SHORTEN || c->codec_id == CODEC_ID_TWINVQ)
++            if(c->codec_id == AV_CODEC_ID_SHORTEN || c->codec_id == AV_CODEC_ID_TWINVQ)
+             {
+                 if(m_pkt.data)
+                     av_free_packet(&m_pkt);
+@@ -425,7 +425,7 @@
+         }
+         else if(m_output_at == 0)
+         {
+-            if(c->codec_id == CODEC_ID_SHORTEN || c->codec_id == CODEC_ID_TWINVQ)
++            if(c->codec_id == AV_CODEC_ID_SHORTEN || c->codec_id == AV_CODEC_ID_TWINVQ)
+                 continue;
+ 
+             if(m_pkt.data)
+diff -ur qmmp-0.7.1/src/plugins/Input/ffmpeg/decoderffmpegfactory.cpp qmmp-0.7.1.ffmpeg3/src/plugins/Input/ffmpeg/decoderffmpegfactory.cpp
+--- qmmp-0.7.1/src/plugins/Input/ffmpeg/decoderffmpegfactory.cpp	2013-05-31 11:03:32.000000000 +0200
++++ qmmp-0.7.1.ffmpeg3/src/plugins/Input/ffmpeg/decoderffmpegfactory.cpp	2016-04-16 19:21:58.867842241 +0200
+@@ -95,29 +95,29 @@
+     filters = settings.value("FFMPEG/filters", filters).toStringList();
+ 
+     //removed unsupported filters
+-    if(!avcodec_find_decoder(CODEC_ID_WMAV1))
++    if(!avcodec_find_decoder(AV_CODEC_ID_WMAV1))
+         filters.removeAll("*.wma");
+-    if(!avcodec_find_decoder(CODEC_ID_APE))
++    if(!avcodec_find_decoder(AV_CODEC_ID_APE))
+         filters.removeAll("*.ape");
+-    if(!avcodec_find_decoder(CODEC_ID_TTA))
++    if(!avcodec_find_decoder(AV_CODEC_ID_TTA))
+         filters.removeAll("*.tta");
+-    if(!avcodec_find_decoder(CODEC_ID_AAC))
++    if(!avcodec_find_decoder(AV_CODEC_ID_AAC))
+         filters.removeAll("*.aac");
+-    if(!avcodec_find_decoder(CODEC_ID_MP3))
++    if(!avcodec_find_decoder(AV_CODEC_ID_MP3))
+         filters.removeAll("*.mp3");
+-    if(!avcodec_find_decoder(CODEC_ID_AAC) && !avcodec_find_decoder(CODEC_ID_ALAC))
++    if(!avcodec_find_decoder(AV_CODEC_ID_AAC) && !avcodec_find_decoder(AV_CODEC_ID_ALAC))
+         filters.removeAll("*.m4a");
+-    if(!avcodec_find_decoder(CODEC_ID_RA_288))
++    if(!avcodec_find_decoder(AV_CODEC_ID_RA_288))
+         filters.removeAll("*.ra");
+-    if(!avcodec_find_decoder(CODEC_ID_SHORTEN))
++    if(!avcodec_find_decoder(AV_CODEC_ID_SHORTEN))
+         filters.removeAll("*.shn");
+-    if(!avcodec_find_decoder(CODEC_ID_EAC3))
++    if(!avcodec_find_decoder(AV_CODEC_ID_EAC3))
+         filters.removeAll("*.ac3");
+-    if(!avcodec_find_decoder(CODEC_ID_DTS))
++    if(!avcodec_find_decoder(AV_CODEC_ID_DTS))
+         filters.removeAll("*.dts");
+-    if(!avcodec_find_decoder(CODEC_ID_TRUEHD))
++    if(!avcodec_find_decoder(AV_CODEC_ID_TRUEHD))
+         filters.removeAll("*.mka");
+-    if(!avcodec_find_decoder(CODEC_ID_TWINVQ))
++    if(!avcodec_find_decoder(AV_CODEC_ID_TWINVQ))
+         filters.removeAll("*.vqf");
+ 
+ 
+diff -ur qmmp-0.7.1/src/plugins/Input/ffmpeg/settingsdialog.cpp qmmp-0.7.1.ffmpeg3/src/plugins/Input/ffmpeg/settingsdialog.cpp
+--- qmmp-0.7.1/src/plugins/Input/ffmpeg/settingsdialog.cpp	2013-05-31 11:03:32.000000000 +0200
++++ qmmp-0.7.1.ffmpeg3/src/plugins/Input/ffmpeg/settingsdialog.cpp	2016-04-16 19:22:24.964510907 +0200
+@@ -38,30 +38,30 @@
+     QStringList filters;
+     filters << "*.wma" << "*.ape" << "*.tta" << "*.m4a" << "*.ra" << "*.shn" << "*.vqf" << "*.ac3";
+     filters = settings.value("FFMPEG/filters", filters).toStringList();
+-    ui.wmaCheckBox->setEnabled(avcodec_find_decoder(CODEC_ID_WMAV1));
+-    ui.wmaCheckBox->setChecked(filters.contains("*.wma") && avcodec_find_decoder(CODEC_ID_WMAV1));
+-    ui.apeCheckBox->setEnabled(avcodec_find_decoder(CODEC_ID_APE));
+-    ui.apeCheckBox->setChecked(filters.contains("*.ape") && avcodec_find_decoder(CODEC_ID_APE));
+-    ui.ttaCheckBox->setEnabled(avcodec_find_decoder(CODEC_ID_TTA));
+-    ui.ttaCheckBox->setChecked(filters.contains("*.tta") && avcodec_find_decoder(CODEC_ID_TTA));
+-    ui.aacCheckBox->setEnabled(avcodec_find_decoder(CODEC_ID_AAC));
+-    ui.aacCheckBox->setChecked(filters.contains("*.aac") && avcodec_find_decoder(CODEC_ID_AAC));
+-    ui.mp3CheckBox->setEnabled(avcodec_find_decoder(CODEC_ID_MP3));
+-    ui.mp3CheckBox->setChecked(filters.contains("*.mp3") && avcodec_find_decoder(CODEC_ID_MP3));
+-    ui.mp4CheckBox->setEnabled(avcodec_find_decoder(CODEC_ID_AAC));
+-    ui.mp4CheckBox->setChecked(filters.contains("*.m4a") && (avcodec_find_decoder(CODEC_ID_AAC)
+-                                                             || avcodec_find_decoder(CODEC_ID_ALAC)));
+-    ui.raCheckBox->setEnabled(avcodec_find_decoder(CODEC_ID_RA_288));
+-    ui.raCheckBox->setChecked(filters.contains("*.ra") && avcodec_find_decoder(CODEC_ID_RA_288));
+-    ui.shCheckBox->setChecked(filters.contains("*.shn") && avcodec_find_decoder(CODEC_ID_SHORTEN));
+-    ui.ac3CheckBox->setEnabled(avcodec_find_decoder(CODEC_ID_EAC3));
+-    ui.ac3CheckBox->setChecked(filters.contains("*.ac3") && avcodec_find_decoder(CODEC_ID_EAC3));
+-    ui.dtsCheckBox->setEnabled(avcodec_find_decoder(CODEC_ID_DTS));
+-    ui.dtsCheckBox->setChecked(filters.contains("*.dts") && avcodec_find_decoder(CODEC_ID_DTS));
+-    ui.mkaCheckBox->setEnabled(avcodec_find_decoder(CODEC_ID_TRUEHD));
+-    ui.mkaCheckBox->setChecked(filters.contains("*.mka") && avcodec_find_decoder(CODEC_ID_TRUEHD));
+-    ui.vqfCheckBox->setEnabled(avcodec_find_decoder(CODEC_ID_TWINVQ));
+-    ui.vqfCheckBox->setChecked(filters.contains("*.vqf") && avcodec_find_decoder(CODEC_ID_TWINVQ));
++    ui.wmaCheckBox->setEnabled(avcodec_find_decoder(AV_CODEC_ID_WMAV1));
++    ui.wmaCheckBox->setChecked(filters.contains("*.wma") && avcodec_find_decoder(AV_CODEC_ID_WMAV1));
++    ui.apeCheckBox->setEnabled(avcodec_find_decoder(AV_CODEC_ID_APE));
++    ui.apeCheckBox->setChecked(filters.contains("*.ape") && avcodec_find_decoder(AV_CODEC_ID_APE));
++    ui.ttaCheckBox->setEnabled(avcodec_find_decoder(AV_CODEC_ID_TTA));
++    ui.ttaCheckBox->setChecked(filters.contains("*.tta") && avcodec_find_decoder(AV_CODEC_ID_TTA));
++    ui.aacCheckBox->setEnabled(avcodec_find_decoder(AV_CODEC_ID_AAC));
++    ui.aacCheckBox->setChecked(filters.contains("*.aac") && avcodec_find_decoder(AV_CODEC_ID_AAC));
++    ui.mp3CheckBox->setEnabled(avcodec_find_decoder(AV_CODEC_ID_MP3));
++    ui.mp3CheckBox->setChecked(filters.contains("*.mp3") && avcodec_find_decoder(AV_CODEC_ID_MP3));
++    ui.mp4CheckBox->setEnabled(avcodec_find_decoder(AV_CODEC_ID_AAC));
++    ui.mp4CheckBox->setChecked(filters.contains("*.m4a") && (avcodec_find_decoder(AV_CODEC_ID_AAC)
++                                                             || avcodec_find_decoder(AV_CODEC_ID_ALAC)));
++    ui.raCheckBox->setEnabled(avcodec_find_decoder(AV_CODEC_ID_RA_288));
++    ui.raCheckBox->setChecked(filters.contains("*.ra") && avcodec_find_decoder(AV_CODEC_ID_RA_288));
++    ui.shCheckBox->setChecked(filters.contains("*.shn") && avcodec_find_decoder(AV_CODEC_ID_SHORTEN));
++    ui.ac3CheckBox->setEnabled(avcodec_find_decoder(AV_CODEC_ID_EAC3));
++    ui.ac3CheckBox->setChecked(filters.contains("*.ac3") && avcodec_find_decoder(AV_CODEC_ID_EAC3));
++    ui.dtsCheckBox->setEnabled(avcodec_find_decoder(AV_CODEC_ID_DTS));
++    ui.dtsCheckBox->setChecked(filters.contains("*.dts") && avcodec_find_decoder(AV_CODEC_ID_DTS));
++    ui.mkaCheckBox->setEnabled(avcodec_find_decoder(AV_CODEC_ID_TRUEHD));
++    ui.mkaCheckBox->setChecked(filters.contains("*.mka") && avcodec_find_decoder(AV_CODEC_ID_TRUEHD));
++    ui.vqfCheckBox->setEnabled(avcodec_find_decoder(AV_CODEC_ID_TWINVQ));
++    ui.vqfCheckBox->setChecked(filters.contains("*.vqf") && avcodec_find_decoder(AV_CODEC_ID_TWINVQ));
+ }
+ 
+ SettingsDialog::~SettingsDialog()
================================================================

---- gitweb:

http://git.pld-linux.org/gitweb.cgi/packages/qmmp.git/commitdiff/a9b4842dff519f52e34fe3d055fd60314f26c957



More information about the pld-cvs-commit mailing list