Updated Opus binaries with version the reports progress as percent. Also added SSE2 versions of opusdec/opusenc binaries.
This commit is contained in:
parent
4c69411a19
commit
701390b7f7
85
etc/Patches/OpusTools-Git20120724-Progress.diff
Normal file
85
etc/Patches/OpusTools-Git20120724-Progress.diff
Normal file
@ -0,0 +1,85 @@
|
||||
src/opusdec.c | 17 +++++++++++++++--
|
||||
src/opusenc.c | 8 ++++++--
|
||||
2 files changed, 21 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/src/opusdec.c b/src/opusdec.c
|
||||
index 5c35242..da23c97 100644
|
||||
--- a/src/opusdec.c
|
||||
+++ b/src/opusdec.c
|
||||
@@ -57,6 +57,7 @@
|
||||
# include <io.h>
|
||||
# include <fcntl.h>
|
||||
# define I64FORMAT "I64d"
|
||||
+# define ftello64(_x) _ftelli64((_x))
|
||||
#else
|
||||
# define I64FORMAT "lld"
|
||||
# define fopen_utf8(_x,_y) fopen((_x),(_y))
|
||||
@@ -645,6 +646,7 @@ int main(int argc, char **argv)
|
||||
int close_in=0;
|
||||
int eos=0;
|
||||
ogg_int64_t audio_size=0;
|
||||
+ ogg_int64_t input_size=0;
|
||||
double last_coded_seconds=0;
|
||||
float loss_percent=-1;
|
||||
float manual_gain=0;
|
||||
@@ -789,6 +791,16 @@ int main(int argc, char **argv)
|
||||
close_in=1;
|
||||
}
|
||||
|
||||
+ /*detect input size*/
|
||||
+ if(fin != stdin)
|
||||
+ {
|
||||
+ struct _stat64 info;
|
||||
+ if(_fstati64(_fileno(fin), &info) == 0)
|
||||
+ {
|
||||
+ input_size = info.st_size;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
/*Init Ogg data struct*/
|
||||
ogg_sync_init(&oy);
|
||||
|
||||
@@ -911,10 +923,11 @@ int main(int argc, char **argv)
|
||||
if(!quiet){
|
||||
static const char spinner[]="|/-\\";
|
||||
double coded_seconds = (double)audio_size/(channels*rate*sizeof(short));
|
||||
+ double percent = (input_size>0) ? ((double)ftello64(fin))/((double)input_size) : 0.0;
|
||||
if(coded_seconds>=last_coded_seconds+1){
|
||||
- fprintf(stderr,"\r[%c] %02d:%02d:%02d", spinner[last_spin&3],
|
||||
+ fprintf(stderr,"\r[%c] %02d:%02d:%02d (%.f%%)", spinner[last_spin&3],
|
||||
(int)(coded_seconds/3600),(int)(coded_seconds/60)%60,
|
||||
- (int)(coded_seconds)%60);
|
||||
+ (int)(coded_seconds)%60,percent*100.0);
|
||||
fflush(stderr);
|
||||
last_spin++;
|
||||
last_coded_seconds=coded_seconds;
|
||||
diff --git a/src/opusenc.c b/src/opusenc.c
|
||||
index f6cc762..a34b340 100644
|
||||
--- a/src/opusenc.c
|
||||
+++ b/src/opusenc.c
|
||||
@@ -895,6 +895,7 @@ int main(int argc, char **argv)
|
||||
double estbitrate;
|
||||
double coded_seconds=nb_encoded/(double)coding_rate;
|
||||
double wall_time=(stop_time-start_time)+1e-6;
|
||||
+ double percent = 0.0;
|
||||
char sbuf[55];
|
||||
static const char spinner[]="|/-\\";
|
||||
if(!with_hard_cbr){
|
||||
@@ -909,12 +910,15 @@ int main(int argc, char **argv)
|
||||
}else{
|
||||
snprintf(sbuf,54,"\r[%c] ",spinner[last_spin&3]);
|
||||
}
|
||||
+ if(inopt.total_samples_per_channel>0){
|
||||
+ percent = ((double)nb_encoded) / ((double)inopt.total_samples_per_channel);
|
||||
+ }
|
||||
last_spin_len=strlen(sbuf);
|
||||
snprintf(sbuf+last_spin_len,54-last_spin_len,
|
||||
- "%02d:%02d:%02d.%02d %4.3gx realtime, %5.4gkbit/s\r",
|
||||
+ "%02d:%02d:%02d.%02d (%.f%%) %4.3gx realtime, %5.4gkbit/s\r",
|
||||
(int)(coded_seconds/3600),(int)(coded_seconds/60)%60,
|
||||
(int)(coded_seconds)%60,(int)(coded_seconds*100)%100,
|
||||
- coded_seconds/wall_time,
|
||||
+ percent*100.0,coded_seconds/wall_time,
|
||||
estbitrate/1000.);
|
||||
fprintf(stderr,"%s",sbuf);
|
||||
fflush(stderr);
|
@ -8,7 +8,8 @@
|
||||
<file>tools/mpcdec.exe</file>
|
||||
<file>tools/mpg123.exe</file>
|
||||
<file>tools/oggdec.exe</file>
|
||||
<file>tools/opusdec.exe</file>
|
||||
<file>tools/opusdec.i386.exe</file>
|
||||
<file>tools/opusdec.sse2.exe</file>
|
||||
<file>tools/shorten.exe</file>
|
||||
<file>tools/speexdec.exe</file>
|
||||
<file>tools/tta.exe</file>
|
||||
|
@ -11,6 +11,7 @@
|
||||
<file>tools/oggenc2.i386.exe</file>
|
||||
<file>tools/oggenc2.sse2.exe</file>
|
||||
<file>tools/oggenc2.x64.exe</file>
|
||||
<file>tools/opusenc.exe</file>
|
||||
<file>tools/opusenc.i386.exe</file>
|
||||
<file>tools/opusenc.sse2.exe</file>
|
||||
</qresource>
|
||||
</RCC>
|
||||
|
Binary file not shown.
BIN
res/tools/opusdec.i386.exe
Normal file
BIN
res/tools/opusdec.i386.exe
Normal file
Binary file not shown.
BIN
res/tools/opusdec.sse2.exe
Normal file
BIN
res/tools/opusdec.sse2.exe
Normal file
Binary file not shown.
Binary file not shown.
BIN
res/tools/opusenc.i386.exe
Normal file
BIN
res/tools/opusenc.i386.exe
Normal file
Binary file not shown.
BIN
res/tools/opusenc.sse2.exe
Normal file
BIN
res/tools/opusenc.sse2.exe
Normal file
Binary file not shown.
@ -29,8 +29,8 @@
|
||||
#define VER_LAMEXP_MINOR_HI 0
|
||||
#define VER_LAMEXP_MINOR_LO 5
|
||||
#define VER_LAMEXP_TYPE Alpha
|
||||
#define VER_LAMEXP_PATCH 9
|
||||
#define VER_LAMEXP_BUILD 1056
|
||||
#define VER_LAMEXP_PATCH 10
|
||||
#define VER_LAMEXP_BUILD 1058
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// Tool versions (minimum expected versions!)
|
||||
|
@ -59,10 +59,7 @@ bool OpusDecoder::decode(const QString &sourceFile, const QString &outputFile, v
|
||||
bool bAborted = false;
|
||||
int prevProgress = -1;
|
||||
|
||||
QRegExp regExp("\\[(-|\\\\|/|\\|)\\]");
|
||||
|
||||
//The ALAC Decoder doesn't actually send any status updates :-[
|
||||
emit statusUpdated(20 + (QUuid::createUuid().data1 % 60));
|
||||
QRegExp regExp("\\((\\d+)%\\)");
|
||||
|
||||
while(process.state() != QProcess::NotRunning)
|
||||
{
|
||||
@ -88,27 +85,13 @@ bool OpusDecoder::decode(const QString &sourceFile, const QString &outputFile, v
|
||||
QString text = QString::fromUtf8(line.constData()).simplified();
|
||||
if(regExp.lastIndexIn(text) >= 0)
|
||||
{
|
||||
__noop;
|
||||
/*
|
||||
int values[6];
|
||||
for(int i = 0; i < 6; i++)
|
||||
bool ok = false;
|
||||
int progress = regExp.cap(1).toInt(&ok);
|
||||
if(ok && (progress > prevProgress))
|
||||
{
|
||||
bool ok = false;
|
||||
int temp = regExp.cap(i+1).toInt(&ok);
|
||||
values[i] = (ok ? temp : 0);
|
||||
emit statusUpdated(progress);
|
||||
prevProgress = qMin(progress + 2, 99);
|
||||
}
|
||||
int timeDone = (60 * values[0]) + values[1];
|
||||
int timeLeft = (60 * values[3]) + values[4];
|
||||
if(timeDone > 0 || timeLeft > 0)
|
||||
{
|
||||
int newProgress = qRound((static_cast<double>(timeDone) / static_cast<double>(timeDone + timeLeft)) * 100.0);
|
||||
if(newProgress > prevProgress)
|
||||
{
|
||||
emit statusUpdated(newProgress);
|
||||
prevProgress = qMin(newProgress + 2, 99);
|
||||
}
|
||||
}
|
||||
*/
|
||||
}
|
||||
else if(!text.isEmpty())
|
||||
{
|
||||
|
@ -127,7 +127,7 @@ bool OpusEncoder::encode(const QString &sourceFile, const AudioFileModel &metaIn
|
||||
bool bAborted = false;
|
||||
int prevProgress = -1;
|
||||
|
||||
QRegExp regExp("\\[(-|\\\\|/|\\|)\\]\\s*(\\d+):(\\d+):(\\d+)");
|
||||
QRegExp regExp("\\((\\d+)%\\)");
|
||||
|
||||
while(process.state() != QProcess::NotRunning)
|
||||
{
|
||||
@ -153,19 +153,12 @@ bool OpusEncoder::encode(const QString &sourceFile, const AudioFileModel &metaIn
|
||||
QString text = QString::fromUtf8(line.constData()).simplified();
|
||||
if(regExp.lastIndexIn(text) >= 0)
|
||||
{
|
||||
bool ok[3] = {false, false, false};
|
||||
int h = regExp.cap(2).toInt(&ok[0]);
|
||||
int m = regExp.cap(3).toInt(&ok[1]);
|
||||
int s = regExp.cap(4).toInt(&ok[2]);
|
||||
if(ok[0] && ok[1] && ok[2] && (fileDuration > 0))
|
||||
bool ok = false;
|
||||
int progress = regExp.cap(1).toInt(&ok);
|
||||
if(ok && (progress > prevProgress))
|
||||
{
|
||||
int filePosition = (h * 3600) + (m * 60) + s;
|
||||
int newProgress = qRound((static_cast<double>(filePosition) / static_cast<double>(fileDuration)) * 100.0);
|
||||
if(newProgress > prevProgress)
|
||||
{
|
||||
emit statusUpdated(newProgress);
|
||||
prevProgress = qMin(newProgress + 2, 99);
|
||||
}
|
||||
emit statusUpdated(progress);
|
||||
prevProgress = qMin(progress + 2, 99);
|
||||
}
|
||||
}
|
||||
else if(!text.isEmpty())
|
||||
|
@ -73,8 +73,10 @@ g_lamexp_tools[] =
|
||||
{"0c019e13450dc664987e21f4e5489d182be7d6d0d81efbbaaf1c78693dfe3e38e0355b93", CPU_TYPE_X86_GEN, "oggenc2.i386.exe", 287603},
|
||||
{"693dd6f779df70a047c15c2c79350855db38d5b0cd7e529b6877b7c821cfe6addfdd50a4", CPU_TYPE_X86_SSE, "oggenc2.sse2.exe", 287603},
|
||||
{"291cedb6a1b213330a9cb508f975ee7132a25aa26770ab91cade50109b4ffb81c9bdd09a", CPU_TYPE_X64_ALL, "oggenc2.x64.exe", 287603},
|
||||
{"73379e0d0d99a0faf0b061aa782ca807b4e6c11ad759e0662c10e197fe79a03f3bc8cbe4", CPU_TYPE_ALL_ALL, "opusdec.exe", 20120721},
|
||||
{"7573a9e4b3d9c9a7e774bc6b2dceb939e097f1175a3afa8f8fe8cd7ee33afdd51d020443", CPU_TYPE_ALL_ALL, "opusenc.exe", 20120721},
|
||||
{"2418fdda62798ffcfd1dabf26e0ef512ab378c254cf0f3d8a5b6b9f2fe16a757653c090e", CPU_TYPE_ALL_GEN, "opusdec.i386.exe", 20120724},
|
||||
{"b3b9c24835ccb7cb44961fa1a3fcc48524faeda8f8fcc18802adea5d4b3634b86d57e43c", CPU_TYPE_ALL_SSE, "opusdec.sse2.exe", 20120724},
|
||||
{"7663fc4ec2d081745eeadbc128aca6543067df7ed764896e5ce70c2f8a54d88fede80ffb", CPU_TYPE_ALL_GEN, "opusenc.i386.exe", 20120724},
|
||||
{"8dd6fa8281000f485c5e842c82cac20f109c928c852d3beaf581a962b859a0f448799efa", CPU_TYPE_ALL_SSE, "opusenc.sse2.exe", 20120724},
|
||||
{"58c2b8bcff8f27bfa8fab8172b80f5da731221d072c7dba4dd3a3d7d6423490a25dc6760", CPU_TYPE_ALL_ALL, "shorten.exe", 361},
|
||||
{"017a0f613a962af0620618019b015d5c54bb3c07cf1023e5fdb9502b652367ebbfaaebbc", CPU_TYPE_ALL_ALL, "sox.exe", 1440},
|
||||
{"48e7f81c024cd17dac0eaeab253aad6b223e72dc80688f7576276b0563209514ff0bb9c8", CPU_TYPE_ALL_ALL, "speexdec.exe", 12},
|
||||
|
Loading…
Reference in New Issue
Block a user