diff options
author | Błażej Szczygieł | 2024-01-29 20:06:52 +0100 |
---|---|---|
committer | Błażej Szczygieł | 2024-01-29 20:06:52 +0100 |
commit | b48cab3a282bc2015c0718ea06553d4a8918b015 (patch) | |
tree | 669ae344605eb45b47907b072d26d91ef947a034 | |
parent | 88450c359f56ca068ec09636a39be7f3bf8e5ad6 (diff) | |
download | aur-b48cab3a282bc2015c0718ea06553d4a8918b015.tar.gz |
Apply fed57c8cf746812bdc93704af7d0ebcfa69a5156
-rw-r--r-- | .SRCINFO | 6 | ||||
-rw-r--r-- | 41da371d47099cd486c748887826489456ee20ab.patch | 356 | ||||
-rw-r--r-- | PKGBUILD | 8 | ||||
-rw-r--r-- | fed57c8cf746812bdc93704af7d0ebcfa69a5156.patch | 214 |
4 files changed, 221 insertions, 363 deletions
@@ -1,7 +1,7 @@ pkgbase = qmplay2 pkgdesc = QMPlay2 is a video and audio player which can play most formats and codecs pkgver = 23.10.22 - pkgrel = 2 + pkgrel = 3 url = https://github.com/zaps166/QMPlay2 arch = i686 arch = x86_64 @@ -37,8 +37,8 @@ pkgbase = qmplay2 optdepends = pulseaudio: PulseAudio support optdepends = game_music_emu-kode54-git: Better chiptune support (less bugs in sound, AUR package) source = https://github.com/zaps166/QMPlay2/releases/download/23.10.22/QMPlay2-src-23.10.22.tar.xz - source = 41da371d47099cd486c748887826489456ee20ab.patch + source = fed57c8cf746812bdc93704af7d0ebcfa69a5156.patch sha256sums = d81c5a81a8839ac441eb7466eb16931aab92f71fd784a3b3e1d709272c4237cf - sha256sums = b76d770764166499d43b5f63944286160401d5c2dd405d6d5f8f981615deb531 + sha256sums = d746e7750e08833f0d9daa7b998f18e51f7edd1d97be65b08dadc7088b5f1468 pkgname = qmplay2 diff --git a/41da371d47099cd486c748887826489456ee20ab.patch b/41da371d47099cd486c748887826489456ee20ab.patch deleted file mode 100644 index 8b2f68daa023..000000000000 --- a/41da371d47099cd486c748887826489456ee20ab.patch +++ /dev/null @@ -1,356 +0,0 @@ -From 41da371d47099cd486c748887826489456ee20ab Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?B=C5=82a=C5=BCej=20Szczygie=C5=82?= <mumei6102@gmail.com> -Date: Sun, 3 Dec 2023 00:08:35 +0100 -Subject: [PATCH] Use new FFT API for FFmpeg >= 6.1 - -Use new API when compiling with FFmpeg >= 6.1, because FFmpeg 6.1 has -a bug in old API wrapper which leads to QMPlay2 crash. ---- - src/modules/AudioFilters/Equalizer.cpp | 32 ++----- - src/modules/AudioFilters/Equalizer.hpp | 10 +- - src/modules/Visualizations/FFTSpectrum.cpp | 27 ++---- - src/modules/Visualizations/FFTSpectrum.hpp | 8 +- - src/qmplay2/CMakeLists.txt | 1 + - src/qmplay2/FFT.hpp | 104 +++++++++++++++++++++ - 6 files changed, 130 insertions(+), 52 deletions(-) - create mode 100644 src/qmplay2/FFT.hpp - -diff --git a/src/modules/AudioFilters/Equalizer.cpp b/src/modules/AudioFilters/Equalizer.cpp -index 7b51b090e..21cf8eec3 100644 ---- a/src/modules/AudioFilters/Equalizer.cpp -+++ b/src/modules/AudioFilters/Equalizer.cpp -@@ -18,20 +18,8 @@ - - #include <Equalizer.hpp> - --extern "C" --{ -- #include <libavutil/mem.h> -- #include <libavcodec/avfft.h> --} -- - #include <cmath> - --static inline void fft_calc(FFTContext *fft_ctx, FFTComplex *cplx) --{ -- av_fft_permute(fft_ctx, cplx); -- av_fft_calc(fft_ctx, cplx); --} -- - static inline float cosI(const float y1, const float y2, float p) - { - p = (1.0f - cos(p * static_cast<float>(M_PI))) / 2.0f; -@@ -178,7 +166,7 @@ double Equalizer::filter(QByteArray &data, bool flush) - else - m_input[c].clear(); - -- fft_calc(m_fftIn, m_complex); -+ m_fftIn.calc(m_complex); - for (int i = 0; i < fftSizeDiv2; ++i) - { - const float coeff = m_f[i] * m_preamp; -@@ -187,7 +175,7 @@ double Equalizer::filter(QByteArray &data, bool flush) - m_complex[fftSize - 1 - i].re *= coeff; - m_complex[fftSize - 1 - i].im *= coeff; - } -- fft_calc(m_fftOut, m_complex); -+ m_fftOut.calc(m_complex); - - if (m_lastSamples[c].empty()) - { -@@ -212,14 +200,12 @@ double Equalizer::filter(QByteArray &data, bool flush) - void Equalizer::alloc(bool b) - { - QMutexLocker locker(&m_mutex); -- if (!b && (m_fftIn || m_fftOut)) -+ if (!b && (m_fftIn.isValid() || m_fftOut.isValid())) - { - m_canFilter = false; - m_fftNBits = m_fftSize = 0; -- av_fft_end(m_fftIn); -- av_fft_end(m_fftOut); -- m_fftIn = nullptr; -- m_fftOut = nullptr; -+ m_fftIn.finish(); -+ m_fftOut.finish(); - av_free(m_complex); - m_complex = nullptr; - m_input.clear(); -@@ -233,13 +219,13 @@ void Equalizer::alloc(bool b) - } - else if (b) - { -- if (!m_fftIn || !m_fftOut) -+ if (!m_fftIn.isValid() || !m_fftOut.isValid()) - { - m_fftNBits = sets().getInt("Equalizer/nbits"); - m_fftSize = 1 << m_fftNBits; -- m_fftIn = av_fft_init(m_fftNBits, false); -- m_fftOut = av_fft_init(m_fftNBits, true); -- m_complex = (FFTComplex *)av_malloc(m_fftSize * sizeof(FFTComplex)); -+ m_fftIn.init(m_fftNBits, false); -+ m_fftOut.init(m_fftNBits, true); -+ m_complex = FFT::allocComplex(m_fftSize); - m_input.resize(m_chn); - m_lastSamples.resize(m_chn); - m_windF.resize(m_fftSize); -diff --git a/src/modules/AudioFilters/Equalizer.hpp b/src/modules/AudioFilters/Equalizer.hpp -index 963cf6513..48777933c 100644 ---- a/src/modules/AudioFilters/Equalizer.hpp -+++ b/src/modules/AudioFilters/Equalizer.hpp -@@ -19,12 +19,10 @@ - #pragma once - - #include <AudioFilter.hpp> -+#include <FFT.hpp> - - #include <vector> - --struct FFTContext; --struct FFTComplex; -- - class Equalizer final : public AudioFilter - { - public: -@@ -63,9 +61,9 @@ class Equalizer final : public AudioFilter - #else - mutable QMutex m_mutex; - #endif -- FFTContext *m_fftIn = nullptr; -- FFTContext *m_fftOut = nullptr; -- FFTComplex *m_complex = nullptr; -+ FFT m_fftIn; -+ FFT m_fftOut; -+ FFT::Complex *m_complex = nullptr; - std::vector<std::vector<float>> m_input, m_lastSamples; - std::vector<float> m_windF, m_f; - float m_preamp = 0.0f; -diff --git a/src/modules/Visualizations/FFTSpectrum.cpp b/src/modules/Visualizations/FFTSpectrum.cpp -index 0fdbb8958..de401e169 100644 ---- a/src/modules/Visualizations/FFTSpectrum.cpp -+++ b/src/modules/Visualizations/FFTSpectrum.cpp -@@ -23,15 +23,9 @@ - #include <QPainterPath> - #include <qevent.h> - --extern "C" --{ -- #include <libavutil/mem.h> -- #include <libavcodec/avfft.h> --} -- - #include <cmath> - --static inline void fltmix(FFTComplex *dest, const float *winFunc, const float *src, const int size, const uchar chn) -+static inline void fltmix(FFT::Complex *dest, const float *winFunc, const float *src, const int size, const uchar chn) - { - for (int i = 0, j = 0; i < size; i += chn) - { -@@ -144,7 +138,7 @@ void FFTSpectrumW::stop() - /**/ - - FFTSpectrum::FFTSpectrum(Module &module) : -- w(*this), fft_ctx(nullptr), tmpData(nullptr), tmpDataSize(0), tmpDataPos(0), m_linearScale(false) -+ w(*this), tmpDataSize(0), tmpDataPos(0), m_linearScale(false) - { - SetModule(module); - } -@@ -156,17 +150,15 @@ void FFTSpectrum::soundBuffer(const bool enable) - if (arrSize != tmpDataSize) - { - tmpDataPos = 0; -- av_free(tmpData); -- tmpData = nullptr; -+ FFT::freeComplex(m_complex); - m_winFunc.clear(); - w.spectrumData.clear(); - w.lastData.clear(); -- av_fft_end(fft_ctx); -- fft_ctx = nullptr; -+ m_fft.finish(); - if ((tmpDataSize = arrSize)) - { -- fft_ctx = av_fft_init(w.fftSize, false); -- tmpData = (FFTComplex *)av_malloc(tmpDataSize * sizeof(FFTComplex)); -+ m_fft.init(w.fftSize, false); -+ m_complex = FFT::allocComplex(tmpDataSize); - m_winFunc.resize(tmpDataSize); - for (int i = 0; i < tmpDataSize; ++i) - m_winFunc[i] = 0.5f - 0.5f * cos(2.0f * static_cast<float>(M_PI) * i / (tmpDataSize - 1)); -@@ -240,18 +232,17 @@ void FFTSpectrum::sendSoundData(const QByteArray &data) - const int size = qMin((data.size() - newDataPos) / (int)sizeof(float), (tmpDataSize - tmpDataPos) * w.chn); - if (!size) - break; -- fltmix(tmpData + tmpDataPos, m_winFunc.data() + tmpDataPos, (const float *)(data.constData() + newDataPos), size, w.chn); -+ fltmix(m_complex + tmpDataPos, m_winFunc.data() + tmpDataPos, (const float *)(data.constData() + newDataPos), size, w.chn); - newDataPos += size * sizeof(float); - tmpDataPos += size / w.chn; - if (tmpDataPos == tmpDataSize) - { -- av_fft_permute(fft_ctx, tmpData); -- av_fft_calc(fft_ctx, tmpData); -+ m_fft.calc(m_complex); - tmpDataPos /= 2; - float *spectrumData = w.spectrumData.data(); - for (int i = 0; i < tmpDataPos; ++i) - { -- spectrumData[i] = sqrt(tmpData[i].re * tmpData[i].re + tmpData[i].im * tmpData[i].im) / tmpDataPos; -+ spectrumData[i] = sqrt(m_complex[i].re * m_complex[i].re + m_complex[i].im * m_complex[i].im) / tmpDataPos; - if (m_linearScale) - spectrumData[i] *= 2.0f; - else -diff --git a/src/modules/Visualizations/FFTSpectrum.hpp b/src/modules/Visualizations/FFTSpectrum.hpp -index bd69e6bb5..9cd3e4768 100644 ---- a/src/modules/Visualizations/FFTSpectrum.hpp -+++ b/src/modules/Visualizations/FFTSpectrum.hpp -@@ -20,6 +20,7 @@ - - #include <QMPlay2Extensions.hpp> - #include <VisWidget.hpp> -+#include <FFT.hpp> - - #include <QCoreApplication> - #include <QLinearGradient> -@@ -52,9 +53,6 @@ class FFTSpectrumW final : public VisWidget - - /**/ - --struct FFTContext; --struct FFTComplex; -- - class FFTSpectrum final : public QMPlay2Extensions - { - public: -@@ -76,8 +74,8 @@ class FFTSpectrum final : public QMPlay2Extensions - - FFTSpectrumW w; - -- FFTContext *fft_ctx; -- FFTComplex *tmpData; -+ FFT m_fft; -+ FFT::Complex *m_complex = nullptr; - std::vector<float> m_winFunc; - int tmpDataSize, tmpDataPos; - bool m_linearScale; -diff --git a/src/qmplay2/CMakeLists.txt b/src/qmplay2/CMakeLists.txt -index babb2d03a..1793f50fa 100644 ---- a/src/qmplay2/CMakeLists.txt -+++ b/src/qmplay2/CMakeLists.txt -@@ -50,6 +50,7 @@ set(QMPLAY2_HDR - VideoOutputCommon.hpp - HWDecContext.hpp - GPUInstance.hpp -+ FFT.hpp - ) - - set(QMPLAY2_SRC -diff --git a/src/qmplay2/FFT.hpp b/src/qmplay2/FFT.hpp -new file mode 100644 -index 000000000..b175fbd87 ---- /dev/null -+++ b/src/qmplay2/FFT.hpp -@@ -0,0 +1,104 @@ -+#pragma once -+ -+extern "C" -+{ -+ #include <libavutil/version.h> -+ #include <libavutil/mem.h> -+ #if LIBAVUTIL_VERSION_INT >= AV_VERSION_INT(58, 29, 100) -+ # include <libavutil/tx.h> -+ #else -+ # include <libavcodec/avfft.h> -+ #endif -+} -+ -+class FFT -+{ -+public: -+ struct Complex -+ { -+ float re, im; -+ }; -+ -+ static inline Complex *allocComplex(int n); -+ static inline void freeComplex(Complex *&complex); -+ -+public: -+ inline FFT() = default; -+ inline ~FFT(); -+ -+ inline bool isValid() const; -+ -+ inline void init(int nbits, int inverse); -+ inline void calc(Complex *complex); -+ inline void finish(); -+ -+private: -+#if LIBAVUTIL_VERSION_INT >= AV_VERSION_INT(58, 29, 100) -+ AVTXContext *m_ctx = nullptr; -+ av_tx_fn m_fn = nullptr; -+#else -+ FFTContext *m_ctx = nullptr; -+#endif -+}; -+ -+/* Inline implementation */ -+ -+FFT::Complex *FFT::allocComplex(int n) -+{ -+ return reinterpret_cast<Complex *>(av_malloc(n * sizeof(Complex))); -+} -+void FFT::freeComplex(Complex *&complex) -+{ -+ av_freep(&complex); -+} -+ -+FFT::~FFT() -+{ -+ finish(); -+} -+ -+bool FFT::isValid() const -+{ -+ return static_cast<bool>(m_ctx); -+} -+ -+#if LIBAVUTIL_VERSION_INT >= AV_VERSION_INT(58, 29, 100) -+void FFT::init(int nbits, int inverse) -+{ -+ finish(); -+ -+ const float scale = 1.0f; -+ av_tx_init(&m_ctx, &m_fn, AV_TX_FLOAT_FFT, inverse, 1 << nbits, &scale, AV_TX_INPLACE); -+} -+void FFT::calc(Complex *complex) -+{ -+ if (m_ctx && m_fn) -+ { -+ m_fn(m_ctx, complex, complex, sizeof(Complex)); -+ } -+} -+void FFT::finish() -+{ -+ av_tx_uninit(&m_ctx); -+} -+#else -+void FFT::init(int nbits, int inverse) -+{ -+ finish(); -+ -+ m_ctx = av_fft_init(nbits, inverse); -+} -+void FFT::calc(Complex *complex) -+{ -+ if (m_ctx) -+ { -+ av_fft_permute(m_ctx, reinterpret_cast<FFTComplex *>(complex)); -+ av_fft_calc(m_ctx, reinterpret_cast<FFTComplex *>(complex)); -+ } -+} -+void FFT::finish() -+{ -+ av_fft_end(m_ctx); -+ m_ctx = nullptr; -+} -+#endif @@ -2,7 +2,7 @@ pkgname=qmplay2 pkgver=23.10.22 -pkgrel=2 +pkgrel=3 pkgdesc='QMPlay2 is a video and audio player which can play most formats and codecs' arch=('i686' 'x86_64' 'armv7h' 'armv6h' 'aarch64') url='https://github.com/zaps166/QMPlay2' @@ -12,17 +12,17 @@ optdepends=('pulseaudio: PulseAudio support' 'game_music_emu-kode54-git: Better chiptune support (less bugs in sound, AUR package)') makedepends=('ninja' 'clang' 'pkg-config' 'qt5-tools' 'cmake' 'fakeroot' 'patch') source=("https://github.com/zaps166/QMPlay2/releases/download/${pkgver}/QMPlay2-src-${pkgver}.tar.xz" - "41da371d47099cd486c748887826489456ee20ab.patch" + "fed57c8cf746812bdc93704af7d0ebcfa69a5156.patch" ) sha256sums=(d81c5a81a8839ac441eb7466eb16931aab92f71fd784a3b3e1d709272c4237cf - b76d770764166499d43b5f63944286160401d5c2dd405d6d5f8f981615deb531 + d746e7750e08833f0d9daa7b998f18e51f7edd1d97be65b08dadc7088b5f1468 ) prepare() { mkdir -p $srcdir/QMPlay2-build cd $srcdir/QMPlay2-src-${pkgver} - patch -p1 < $srcdir/41da371d47099cd486c748887826489456ee20ab.patch + patch -p1 < $srcdir/fed57c8cf746812bdc93704af7d0ebcfa69a5156.patch } build() diff --git a/fed57c8cf746812bdc93704af7d0ebcfa69a5156.patch b/fed57c8cf746812bdc93704af7d0ebcfa69a5156.patch new file mode 100644 index 000000000000..0a7b0fafacc3 --- /dev/null +++ b/fed57c8cf746812bdc93704af7d0ebcfa69a5156.patch @@ -0,0 +1,214 @@ +From fed57c8cf746812bdc93704af7d0ebcfa69a5156 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?B=C5=82a=C5=BCej=20Szczygie=C5=82?= <mumei6102@gmail.com> +Date: Mon, 29 Jan 2024 20:00:41 +0100 +Subject: [PATCH] TagLib: Add support for 2.0, remove support for 1.9 and 1.10 + +Closes #680 +--- + README.md | 2 +- + src/gui/TagEditor.cpp | 78 ++++++++----------------------------------- + 2 files changed, 15 insertions(+), 65 deletions(-) + +diff --git a/README.md b/README.md +index 81b72f9e6..34025d084 100644 +--- a/README.md ++++ b/README.md +@@ -198,7 +198,7 @@ For CMake build be sure that you have CMake 3.9 or higher. + - libavdevice - for FFmpeg module only, optional (enabled on Linux as default), + + #### Important: +-- TagLib >= 1.9, ++- TagLib >= 1.11, + - libass - for OSD and non-graphical subtitles. + + #### For modules (some of them can be automatically disabled if not found): +diff --git a/src/gui/TagEditor.cpp b/src/gui/TagEditor.cpp +index d1f101b7d..55756cd60 100644 +--- a/src/gui/TagEditor.cpp ++++ b/src/gui/TagEditor.cpp +@@ -21,19 +21,12 @@ + #include <Functions.hpp> + #include <Main.hpp> + +-#define TAGLIB_VERSION ((TAGLIB_MAJOR_VERSION << 8) | TAGLIB_MINOR_VERSION) +-#define TAGLIB1B (TAGLIB_VERSION >= 0x10B) +- + #ifdef TAGLIB_FULL_INCLUDE_PATH + #include <taglib/taglib.h> + #else + #include <taglib.h> + #endif + +-#if TAGLIB_VERSION < 0x109 +- #error Taglib 1.9 or newer is needed! +-#endif +- + #ifdef TAGLIB_FULL_INCLUDE_PATH + #include <taglib/trueaudiofile.h> + #include <taglib/oggflacfile.h> +@@ -54,6 +47,7 @@ + #include <taglib/itfile.h> + #include <taglib/xmfile.h> + #include <taglib/opusfile.h> ++ #include <taglib/attachedpictureframe.h> + #else + #include <trueaudiofile.h> + #include <oggflacfile.h> +@@ -74,6 +68,7 @@ + #include <itfile.h> + #include <xmfile.h> + #include <opusfile.h> ++ #include <attachedpictureframe.h> + #endif + using namespace TagLib; + +@@ -136,17 +131,9 @@ static void removeXiphComment(Ogg::XiphComment *xiphComment) + { + if (xiphComment) + { +-#if TAGLIB1B + xiphComment->removeAllPictures(); + xiphComment->removeAllFields(); +-#else +- const Ogg::FieldListMap &fieldListMap = xiphComment->fieldListMap(); +- for (Ogg::FieldListMap::ConstIterator it = fieldListMap.begin(); it != fieldListMap.end(); ++it) +- { +- if (xiphComment->contains(it->first)) +- xiphComment->removeField(it->first); +- } +-#endif ++ + } + } + +@@ -312,10 +299,10 @@ bool TagEditor::open(const QString &fileName) + } + else if (instanceOf(file, MP4::File)) + { +- MP4::ItemListMap &itemListMap = ((MP4::File &)file).tag()->itemListMap(); +- MP4::ItemListMap::ConstIterator it = itemListMap.find("covr"); ++ auto &&itemMap = ((MP4::File &)file).tag()->itemMap(); ++ auto it = itemMap.find("covr"); + pictureB->setEnabled(true); +- if (it != itemListMap.end()) ++ if (it != itemMap.end()) + { + MP4::CoverArtList coverArtList = it->second.toCoverArtList(); + if (!coverArtList.isEmpty()) +@@ -355,25 +342,12 @@ bool TagEditor::open(const QString &fileName) + { + FLAC::Picture *flacPicture = nullptr; + pictureB->setEnabled(true); +-#if TAGLIB1B + const List<FLAC::Picture *> pictures = xiphComment->pictureList(); + if (!pictures.isEmpty()) + { + flacPicture = pictures[0]; + hasTags = true; + } +-#else +- const Ogg::FieldListMap &fieldListMap = xiphComment->fieldListMap(); +- Ogg::FieldListMap::ConstIterator it = fieldListMap.find("METADATA_BLOCK_PICTURE"); +- FLAC::Picture tmpFlacPicture; +- if (it != fieldListMap.end() && !it->second.isEmpty()) +- { +- /* OGG picture and FLAC picture are the same except OGG picture is encoded into Base64 */ +- const QByteArray pict_frame_decoded = QByteArray::fromBase64(it->second.front().toCString()); +- if (tmpFlacPicture.parse(ByteVector(pict_frame_decoded.data(), pict_frame_decoded.size()))) +- flacPicture = &tmpFlacPicture; +- } +-#endif + if (flacPicture) + { + pictureMimeType = flacPicture->mimeType().toCString(); +@@ -489,12 +463,12 @@ bool TagEditor::save() + } + else if (instanceOf(file, MP4::File)) + { +- MP4::ItemListMap &itemListMap = ((MP4::File &)file).tag()->itemListMap(); +- if (itemListMap.contains("covr")) +- itemListMap.erase("covr"); ++ auto &itemMap = const_cast<MP4::ItemMap &>(((MP4::File &)file).tag()->itemMap()); ++ if (itemMap.contains("covr")) ++ itemMap.erase("covr"); + if (hasPicture) + { +- MP4::CoverArt::Format format = (MP4::CoverArt::Format)0; ++ auto format = MP4::CoverArt::Format::Unknown; + if (pictureMimeType == "image/jpeg") + format = MP4::CoverArt::JPEG; + else if (pictureMimeType == "image/png") +@@ -503,11 +477,11 @@ bool TagEditor::save() + format = MP4::CoverArt::BMP; + else if (pictureMimeType == "image/gif") + format = MP4::CoverArt::GIF; +- if (format) ++ if (format != MP4::CoverArt::Format::Unknown) + { + MP4::CoverArtList coverArtList; + coverArtList.append(MP4::CoverArt(format, *picture)); +- itemListMap.insert("covr", coverArtList); ++ itemMap.insert("covr", coverArtList); + } + } + mustSave = true; +@@ -525,19 +499,9 @@ bool TagEditor::save() + flacPicture->setType(FLAC::Picture::FrontCover); + flacPicture->setData(*picture); + } +-#if TAGLIB1B + xiphComment->removeAllPictures(); + if (flacPicture) + xiphComment->addPicture(flacPicture); +-#else +- xiphComment->removeField("METADATA_BLOCK_PICTURE"); +- if (flacPicture) +- { +- const ByteVector pict_data = flacPicture->render(); +- xiphComment->addField("METADATA_BLOCK_PICTURE", QByteArray::fromRawData(pict_data.data(), pict_data.size()).toBase64().data()); +- delete flacPicture; +- } +-#endif + mustSave = true; + } + } +@@ -557,7 +521,7 @@ bool TagEditor::save() + else if (instanceOf(file, APE::File)) + ((APE::File &)file).strip(); + else if (instanceOf(file, MP4::File)) +- ((MP4::File &)file).tag()->itemListMap().clear(); ++ const_cast<MP4::ItemMap &>(((MP4::File &)file).tag()->itemMap()).clear(); + else if (instanceOf(file, ASF::File)) + ((ASF::File &)file).tag()->attributeListMap().clear(); + else if (isOgg(file)) +@@ -591,7 +555,7 @@ bool TagEditor::save() + else if (instanceOf(file, XM::File)) + modTag = ((XM::File &)file).tag(); + if (modTag) +- modTag->setTrackerName(String::null); ++ modTag->setTrackerName(String()); + } + } + +@@ -601,21 +565,7 @@ bool TagEditor::save() + FLAC::File &flacF = (FLAC::File &)file; + if (flacF.hasID3v1Tag() || flacF.hasID3v2Tag()) + { +-#if TAGLIB1B + flacF.strip(FLAC::File::ID3v1 | FLAC::File::ID3v2); +-#else +- #ifdef Q_OS_WIN +- const FileName fName = file.name(); //Class with "std::string" +- #else +- const QByteArray fName = file.name(); //Raw pointer, so copy it +- #endif +- result = fRef->save(); +- delete fRef; +- fRef = nullptr; +- if (result) +- result = MPEG::File(fName, false).save(MPEG::File::NoTags); +- mustSave = false; +-#endif + } + } + |