diff --git a/doc/Changelog.html b/doc/Changelog.html
index 3c629ca8..c47396e0 100644
--- a/doc/Changelog.html
+++ b/doc/Changelog.html
@@ -95,6 +95,7 @@
Updated MediaInfo to v0.7.85 (2016-04-29), compiled with ICL 15.0 and MSVC 12.0
Updated QAAC add-in to the to QAAC v2.58 (2016-01-05)
Updated FhgAacEnc add-in to "Case" edition (2015-10-24)
+Updated mpg123 decoder to v1.23.4 (2016-05-11), compiled with GCC 5.3.0
Updated ALAC decoder to refalac v1.58 (2016-01-05)
Improved auto-update function (faster Internet connectivity check)
diff --git a/doc/Changelog.md b/doc/Changelog.md
index 8acbbec3..2382957f 100644
--- a/doc/Changelog.md
+++ b/doc/Changelog.md
@@ -15,6 +15,7 @@
* Updated MediaInfo to v0.7.85 (2016-04-29), compiled with ICL 15.0 and MSVC 12.0
* Updated QAAC add-in to the to QAAC v2.58 (2016-01-05)
* Updated FhgAacEnc add-in to "Case" edition (2015-10-24)
+* Updated mpg123 decoder to v1.23.4 (2016-05-11), compiled with GCC 5.3.0
* Updated ALAC decoder to refalac v1.58 (2016-01-05)
* Improved auto-update function (faster Internet connectivity check)
diff --git a/res/Tools_Decd_A.qrc b/res/Tools_Decd_A.qrc
index 748c0307..24a79e20 100644
--- a/res/Tools_Decd_A.qrc
+++ b/res/Tools_Decd_A.qrc
@@ -6,7 +6,9 @@
tools/mac.i386.exe
tools/mac.sse2.exe
tools/mpcdec.exe
- tools/mpg123.exe
+ tools/mpg123.i386.exe
+ tools/mpg123.sse2.exe
+ tools/mpg123.avx.exe
tools/oggdec.exe
tools/opusdec.i386.exe
tools/opusdec.sse2.exe
diff --git a/res/tools/mpg123.avx.exe b/res/tools/mpg123.avx.exe
new file mode 100644
index 00000000..a10b7e88
Binary files /dev/null and b/res/tools/mpg123.avx.exe differ
diff --git a/res/tools/mpg123.exe b/res/tools/mpg123.exe
deleted file mode 100644
index f86c6afa..00000000
Binary files a/res/tools/mpg123.exe and /dev/null differ
diff --git a/res/tools/mpg123.i386.exe b/res/tools/mpg123.i386.exe
new file mode 100644
index 00000000..7e567a36
Binary files /dev/null and b/res/tools/mpg123.i386.exe differ
diff --git a/res/tools/mpg123.sse2.exe b/res/tools/mpg123.sse2.exe
new file mode 100644
index 00000000..cf7658d8
Binary files /dev/null and b/res/tools/mpg123.sse2.exe differ
diff --git a/src/Config.h b/src/Config.h
index 429472c5..86293cba 100644
--- a/src/Config.h
+++ b/src/Config.h
@@ -35,7 +35,7 @@
#define VER_LAMEXP_MINOR_LO 4
#define VER_LAMEXP_TYPE Beta
#define VER_LAMEXP_PATCH 2
-#define VER_LAMEXP_BUILD 1888
+#define VER_LAMEXP_BUILD 1889
#define VER_LAMEXP_CONFG 1818
///////////////////////////////////////////////////////////////////////////////
diff --git a/src/Decoder_MP3.cpp b/src/Decoder_MP3.cpp
index 8567c814..794e0d76 100644
--- a/src/Decoder_MP3.cpp
+++ b/src/Decoder_MP3.cpp
@@ -26,6 +26,7 @@
#include "Global.h"
//MUtils
+#include
#include
//Qt
@@ -64,7 +65,7 @@ bool MP3Decoder::decode(const QString &sourceFile, const QString &outputFile, vo
bool bAborted = false;
int prevProgress = -1;
- QRegExp regExp("\\s+Time:\\s+(\\d+):(\\d+)\\.(\\d+)\\s+\\[(\\d+):(\\d+)\\.(\\d+)\\],");
+ QRegExp regExp("\\b\\d+\\+\\d+\\s+(\\d+):(\\d+)\\.(\\d+)\\+(\\d+):(\\d+)\\.(\\d+)\\b");
while(process.state() != QProcess::NotRunning)
{
@@ -90,22 +91,19 @@ bool MP3Decoder::decode(const QString &sourceFile, const QString &outputFile, vo
QString text = QString::fromUtf8(line.constData()).simplified();
if(regExp.lastIndexIn(text) >= 0)
{
- int values[6];
- for(int i = 0; i < 6; i++)
+ quint32 values[6];
+ if (MUtils::regexp_parse_uint32(regExp, values, 6))
{
- bool ok = false;
- int temp = regExp.cap(i+1).toInt(&ok);
- values[i] = (ok ? temp : 0);
- }
- int timeDone = (60 * values[0]) + values[1];
- int timeLeft = (60 * values[3]) + values[4];
- if(timeDone > 0 || timeLeft > 0)
- {
- int newProgress = qRound((static_cast(timeDone) / static_cast(timeDone + timeLeft)) * 100.0);
- if(newProgress > prevProgress)
+ const double timeDone = (60.0 * double(values[0])) + double(values[1]) + (double(values[2]) / 100.0);
+ const double timeLeft = (60.0 * double(values[3])) + double(values[4]) + (double(values[5]) / 100.0);
+ if ((timeDone >= 0.005) || (timeLeft >= 0.005))
{
- emit statusUpdated(newProgress);
- prevProgress = qMin(newProgress + 2, 99);
+ const int newProgress = qRound((static_cast(timeDone) / static_cast(timeDone + timeLeft)) * 100.0);
+ if (newProgress > prevProgress)
+ {
+ emit statusUpdated(newProgress);
+ prevProgress = qMin(newProgress + 2, 99);
+ }
}
}
}
diff --git a/src/Tools.h b/src/Tools.h
index b7fca22e..15ec51ca 100644
--- a/src/Tools.h
+++ b/src/Tools.h
@@ -85,7 +85,9 @@ g_lamexp_tools[] =
{"7f93334bfcdcb977dceda6a6520b1e0172ee0041dbfda9cb31f9a08aeb61f2b3711fe624536d9e5b036b5f2313dc08ee", CPU_TYPE_X86_ALL, "mediainfo.i386.exe", 785, ""},
{"d750a9890da829e18b2128d67c729a3e1a23c310a6561394c935533a37132f2aa3ebfc629b7bae376b90d3e2d69c924e", CPU_TYPE_X64_ALL, "mediainfo.x64.exe", 785, ""},
{"7e6346a057634ff07b2e1f427035324f7f02100cc996425990f87f71d767fce4c7b101588c7d944ba49cb2d7e51c9bdb", CPU_TYPE_ALL_ALL, "mpcdec.exe", 475, ""},
- {"02f3e52fca662c97fc15ee5d5c6ded2966d716ec5e5ab958accd4761eb864cc7c62ace97198b876a78cf75ab11c555b2", CPU_TYPE_ALL_ALL, "mpg123.exe", 1224, ""},
+ {"e54c62b0f4e799e823e66b2e7f7dd630f212a86e8eba1bfacd80eb951347b03165027c6bb1a83b7e584a81a21e5bf049", CPU_TYPE_ALL_GEN, "mpg123.i386.exe", 1234, ""},
+ {"b47b47e71311d99cdd544aaa8ee7bbcbb63dcbcf14229df6a50fdd02c8d1d37e923cb778d5699119bdbcc9805e7b16d0", CPU_TYPE_ALL_SSE, "mpg123.sse2.exe", 1234, "" },
+ {"d35152f12df9ba03c47c88904632cc3d48cc5dd215d0760be25ff4d925e4a703e36d9db78e43e4bdb0a0dd2a19fe4f18", CPU_TYPE_ALL_AVX, "mpg123.avx.exe", 1234, "" },
{"1bfc01052abc76d492541f26bdc347f14ece180092e7128438f8f0f58879a7ed2aa66186c23429811ff5587b997cbeb7", CPU_TYPE_X86_ALL, "nc.i386.exe", 112, "" },
{"e7b19ec88fe025fd907a5ad85ed9c0b13cd33bd7cd04226d4f2944352f11d4026f558a30989f984e3e1d802552d05908", CPU_TYPE_X64_ALL, "nc.x64.exe", 112, "" },
{"f1f2ea5c9e5539620b706e7af68e543bf7a731afb06ccce3815ab34dad64d697e4d6ffcd187a396619b8b52efe7edf88", CPU_TYPE_ALL_ALL, "oggdec.exe", 1101, ""},