summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFrantišek Dvořák <valtri@civ.zcu.cz>2014-07-02 22:22:38 +0200
committerFrantišek Dvořák <valtri@civ.zcu.cz>2014-07-02 22:22:38 +0200
commit59b0e77bf65c413e87649ca1fbe980fd4c6e86a8 (patch)
tree3215ce8cbb793e2e16288a6aabab4eb06fa17e66
downloadcodecs-testing-mingw-59b0e77bf65c413e87649ca1fbe980fd4c6e86a8.tar.gz
codecs-testing-mingw-59b0e77bf65c413e87649ca1fbe980fd4c6e86a8.tar.xz
codecs-testing-mingw-59b0e77bf65c413e87649ca1fbe980fd4c6e86a8.zip
Initial import.
-rw-r--r--Makefile12
-rw-r--r--README17
-rw-r--r--combiner/Combiner.pm91
-rwxr-xr-xcombiner/flac.pl91
-rwxr-xr-xcombiner/speex.pl64
-rwxr-xr-xcombiner/wavpack.pl80
-rw-r--r--flac/README13
-rwxr-xr-xgsm/clean.sh2
-rw-r--r--gsm/gsm.c44
-rwxr-xr-xgsm/test.sh25
-rwxr-xr-xinit.sh17
-rw-r--r--opus/README4
-rw-r--r--speex/README11
-rw-r--r--wavpack/README4
14 files changed, 475 insertions, 0 deletions
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..5219e30
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,12 @@
+TARGETS=flac speex wavpack
+
+all: $(TARGETS)
+
+clean:
+ for t in $(TARGETS); do rm -fv $${t}/$${t}.sh; done
+
+$(TARGETS):
+ PERLLIB=$$PRERLLIB:combiner combiner/$@.pl > $@/$@.sh
+ chmod +x $@/$@.sh
+
+.PHONY: $(TARGETS)
diff --git a/README b/README
new file mode 100644
index 0000000..35824a3
--- /dev/null
+++ b/README
@@ -0,0 +1,17 @@
+==== Initialize environment ===
+
+Launch the script ./init.sh.
+
+The result should be:
+
+1) created ~/.wine32 and ~/.wine64 wine configuration directories with these files:
+
+~/.wine32/system.reg:
+[System\\CurrentControlSet\\Control\\Session Manager\\Environment]
+"PATH"=str(2):"C:\\windows\\system32;C:\\windows;C:\\windows\\system32\\wbem;Z:\\usr\\i686-w64-mingw32\\sys-root\\mingw\\bin"
+
+~/.wine64/system.reg:
+[System\\CurrentControlSet\\Control\\Session Manager\\Environment]
+"PATH"=str(2):"C:\\windows\\system32;C:\\windows;C:\\windows\\system32\\wbem;Z:\\usr\\x86_64-w64-mingw32\\sys-root\\mingw\\bin"
+
+2) generated scripts in subdirectories (flac, wavpack, ...)
diff --git a/combiner/Combiner.pm b/combiner/Combiner.pm
new file mode 100644
index 0000000..bd0ecfb
--- /dev/null
+++ b/combiner/Combiner.pm
@@ -0,0 +1,91 @@
+package Combiner;
+
+use strict;
+use warnings;
+use Exporter;
+
+our @ISA = qw(Exporter);
+our @EXPORT_OK = qw(nop init_w32 init_w64 combiner combiners);
+our @EXPORT = qw(nop init_w32 init_w64 combiner combiners);
+
+
+sub nop() {
+}
+
+
+sub init_w32() {
+ print "export WINEPREFIX=\$HOME/.wine32\n";
+}
+
+
+sub init_w64() {
+ print "export WINEPREFIX=\$HOME/.wine64\n";
+}
+
+
+sub combiner($$) {
+ my ($callback, $comb) = @_;
+ my (@s, @n, $i, @comb, @single);
+ my ($j, $opts, $name, $overflow, $opname);
+
+ @comb = @$comb;
+
+ # initial state
+ foreach $i (0..$#comb) {
+ @single = @{$comb[$i]};
+ $s[$i] = 0;
+ $n[$i] = $#single;
+ }
+
+ $overflow = 0;
+ while (!$overflow) {
+ # actual combination of arguments in @s
+ $opts = "";
+ $name = "";
+ foreach $i (0..$#comb) {
+ $opts .= " " if ($opts and $comb[$i][$s[$i]]);
+ $opts .= $comb[$i][$s[$i]];
+
+ $opname = $comb[$i][$s[$i]];
+ $opname =~ s/^-*//;
+ $opname =~ s/ //g;
+ $name .= "-" if ($name and $opname);
+ $name .= $opname;
+ }
+ $callback->($name ? $name : 'default', $opts);
+
+ # next combination
+ $overflow = 1;
+ $i = 0;
+ while ($overflow and ($i <= $#comb)) {
+ $s[$i]++;
+ if ($s[$i] <= $n[$i]) {
+ $overflow = 0;
+ } else {
+ $s[$i] = 0;
+ $i++;
+ }
+ }
+ }
+}
+
+
+sub combiners($$$) {
+ my ($inits, $callbacks, $combs) = @_;
+ my ($i, $j, @inits, @combs, @callbacks);
+ @inits = @$inits;
+ @combs = @$combs;
+ @callbacks = @$callbacks;
+
+ foreach $j (0..$#callbacks) {
+ print "date\n";
+ $inits[$j]->();
+ foreach $i (0..$#combs) {
+ combiner($callbacks[$j], \@{$combs[$i]});
+ }
+ print "\n";
+ }
+}
+
+
+1;
diff --git a/combiner/flac.pl b/combiner/flac.pl
new file mode 100755
index 0000000..6d37b25
--- /dev/null
+++ b/combiner/flac.pl
@@ -0,0 +1,91 @@
+#! /usr/bin/perl -w
+
+use strict;
+use warnings;
+our @EXPORT_OK = qw(combiner);
+use Combiner;
+
+my $w32 = '/usr/i686-w64-mingw32/sys-root/mingw/bin/';
+my $w64 = '/usr/x86_64-w64-mingw32/sys-root/mingw/bin/';
+
+my ($cmd, $dir);
+
+my @combs = (
+ [
+ ["--fast", "--compression-level-5", ""],
+ ["--lax", ""]
+ ],
+ [
+ ["", "--compression-level-8"],
+ ["--qlp-coeff-precision-search"]
+ ],
+ [
+ ["--compression-level-1", "--compression-level-2", "--compression-level-3", "--compression-level-4", "--compression-level-6", "--compression-level-7", "--compression-level-8"],
+ ],
+ [
+ ["-l 0 -b 1152 -r 3", "-b 1152 -r 3", "-l 0 -r 3", "-l 0 -b 1152", "-l 0", "-b 1152", "-r 3"],
+ ],
+ [
+ ["-l 1", "-l 2"]
+ ]
+ );
+
+my @inits = (\&nop, \&init_w32, \&init_w64);
+
+my @callbacks = (
+ sub($$) {
+ my ($name, $opts) = @_;
+
+ print "flac $opts -o linux/$name.flac 1.wav\n";
+ },
+ sub($$) {
+ my ($name, $opts) = @_;
+
+ print "${w32}flac.exe $opts -o win32/$name.flac 1.wav\n";
+ },
+ sub($$) {
+ my ($name, $opts) = @_;
+
+ print "${w64}flac.exe $opts -o win64/$name.flac 1.wav\n";
+ }
+);
+
+my @callbacks_dec = (
+ sub($$) {
+ my ($name, $opts) = @_;
+
+ print "flac -d -o linux/$name.wav linux/$name.flac\n";
+ },
+ sub($$) {
+ my ($name, $opts) = @_;
+
+ print "${w32}flac.exe -d -o win32/$name.wav win32/$name.flac\n";
+ },
+ sub($$) {
+ my ($name, $opts) = @_;
+
+ print "${w64}flac.exe -d -o win64/$name.wav win64/$name.flac\n";
+ },
+# sub($$) {
+# my ($name, $opts) = @_;
+#
+# print "${w32}flac.exe -d -o linux-win32/$name.wav linux/$name.flac\n";
+# },
+# sub($$) {
+# my ($name, $opts) = @_;
+#
+# print "${w64}flac.exe -d -o linux-win64/$name.wav linux/$name.flac\n";
+# }
+);
+
+
+print qq[#! /bin/sh -ex
+rm -rf linux win32 win64 linux-win32 linux-win64
+mkdir linux win32 win64
+# linux-win32 linux-win64
+
+];
+
+combiners(\@inits, \@callbacks, \@combs);
+
+combiners(\@inits, \@callbacks_dec, \@combs);
diff --git a/combiner/speex.pl b/combiner/speex.pl
new file mode 100755
index 0000000..90fba80
--- /dev/null
+++ b/combiner/speex.pl
@@ -0,0 +1,64 @@
+#! /usr/bin/perl -w
+
+use strict;
+use warnings;
+use Combiner;
+
+my $w32 = '/usr/i686-w64-mingw32/sys-root/mingw/bin/';
+my $w64 = '/usr/x86_64-w64-mingw32/sys-root/mingw/bin/';
+
+my ($cmd, $dir);
+
+my @combs = (
+ [
+ ["--narrowband", "--wideband", "--ultra-wideband"],
+ ], [
+ ["--quality 0", "--quality 5", "--quality 10", ""],
+ ["--vbr", ""],
+ ["--comp 0", "--comp 10", ""]
+ ]
+);
+
+my @inits = (\&nop, \&init_w64);
+my @callbacks = (
+ sub($$) {
+ my ($name, $opts) = @_;
+
+ print "speexenc $opts 1.wav linux/$name.spx\n";
+ },
+ sub($$) {
+ my ($name, $opts) = @_;
+
+ print "${w64}speexenc.exe $opts 1.wav win64/$name.spx\n";
+ }
+);
+
+my @inits_dec = (\&nop, \&init_w64, \&init_w64);
+my @callbacks_dec = (
+ sub($$) {
+ my ($name, $opts) = @_;
+
+ print "speexdec linux/$name.spx linux/$name.wav\n";
+ },
+ sub($$) {
+ my ($name, $opts) = @_;
+
+ print "${w64}speexdec.exe win64/$name.spx win64/$name.wav\n";
+ },
+ sub($$) {
+ my ($name, $opts) = @_;
+
+ print "${w64}speexdec.exe linux/$name.spx linux-win64/$name.wav\n";
+ }
+);
+
+
+print qq[#! /bin/sh -ex
+rm -rf linux win32 win64 linux-win32 linux-win64
+mkdir linux win64 linux-win64
+
+];
+
+combiners(\@inits, \@callbacks, \@combs);
+
+combiners(\@inits_dec, \@callbacks_dec, \@combs);
diff --git a/combiner/wavpack.pl b/combiner/wavpack.pl
new file mode 100755
index 0000000..54ae49d
--- /dev/null
+++ b/combiner/wavpack.pl
@@ -0,0 +1,80 @@
+#! /usr/bin/perl -w
+
+use strict;
+use warnings;
+use Combiner;
+
+my $w32 = '/usr/i686-w64-mingw32/sys-root/mingw/bin/';
+my $w64 = '/usr/x86_64-w64-mingw32/sys-root/mingw/bin/';
+
+my ($cmd, $dir);
+
+my @combs = (
+ [
+ ["-f", "-h", ""],
+ ],
+ [
+ ["-b24", "-b4812", "-b9600"],
+ ["-c"],
+ ["-cc", ""],
+ ["-f", "-h", ""],
+ ],
+ [
+ ["-b2418"],
+ ["-c"],
+ ["-p", ""],
+ ["--use-dns", ""],
+ ],
+ [
+ ["-x2", "-x4", "-x6"],
+ ]
+ );
+
+my @inits = (\&nop, \&init_w32, \&init_w64);
+
+my @callbacks = (
+ sub($$) {
+ my ($name, $opts) = @_;
+
+ print "wavpack $opts 1.wav -o linux/$name.wv\n";
+ },
+ sub($$) {
+ my ($name, $opts) = @_;
+
+ print "${w32}wavpack.exe $opts 1.wav -o win32/$name.wv\n";
+ },
+ sub($$) {
+ my ($name, $opts) = @_;
+
+ print "${w64}wavpack.exe $opts 1.wav -o win64/$name.wv\n";
+ }
+);
+
+my @callbacks_dec = (
+ sub($$) {
+ my ($name, $opts) = @_;
+
+ print "wvunpack linux/$name.wv -o linux/$name.wav\n";
+ },
+ sub($$) {
+ my ($name, $opts) = @_;
+
+ print "${w32}wvunpack.exe win32/$name.wv -o win32/$name.wav\n";
+ },
+ sub($$) {
+ my ($name, $opts) = @_;
+
+ print "${w64}wvunpack.exe win64/$name.wv -o win64/$name.wav\n";
+ },
+);
+
+
+print qq[#! /bin/sh -ex
+rm -rf linux win32 win64
+mkdir linux win32 win64
+
+];
+
+combiners(\@inits, \@callbacks, \@combs);
+
+combiners(\@inits, \@callbacks_dec, \@combs);
diff --git a/flac/README b/flac/README
new file mode 100644
index 0000000..6d9576f
--- /dev/null
+++ b/flac/README
@@ -0,0 +1,13 @@
+==== Packages ====
+
+yum install flac
+yum install --enablerepo=updates-testing mingw32-flac-tools mingw64-flac-tools
+
+
+==== Info ====
+
+1) compressed data doesn't need to be the same for all platforms:
+ http://xiph.org/flac/faq.html#tools__different_sizes
+ http://sourceforge.net/p/flac/bugs/409/
+
+2) decompressed data MUST be the same (except WAVE metadata are not preserved, --keep-foreign-metadata option may help)
diff --git a/gsm/clean.sh b/gsm/clean.sh
new file mode 100755
index 0000000..281f29a
--- /dev/null
+++ b/gsm/clean.sh
@@ -0,0 +1,2 @@
+#! /bin/bash -xe
+rm -fv gsmdec* gsmenc* jam*.wave jam*.gsm
diff --git a/gsm/gsm.c b/gsm/gsm.c
new file mode 100644
index 0000000..5df1dc0
--- /dev/null
+++ b/gsm/gsm.c
@@ -0,0 +1,44 @@
+#define CC /*
+gcc -W -Wall -g -O2 $0 -o gsmdec-linux -lgsm || exit $?
+i686-w64-mingw32-gcc -W -Wall -g -O2 $0 -o gsmdec-win32.exe -lgsm || exit $?
+x86_64-w64-mingw32-gcc -W -Wall -g -O2 $0 -o gsmdec-win64.exe -lgsm || exit $?
+gcc -W -Wall -g -O2 -DENCODE $0 -o gsmenc-linux -lgsm || exit $?
+i686-w64-mingw32-gcc -W -Wall -g -O2 -DENCODE $0 -o gsmenc-win32.exe -lgsm || exit $?
+x86_64-w64-mingw32-gcc -W -Wall -g -O2 -DENCODE $0 -o gsmenc-win64.exe -lgsm || exit $?
+exit 0
+*/
+
+#include <unistd.h>
+#include <gsm.h>
+#ifdef WIN32
+#include <fcntl.h>
+#endif
+
+int main() {
+ gsm g;
+ gsm_signal wave[160];
+ gsm_frame data;
+ ssize_t len;
+
+#ifdef WIN32
+ setmode(0, _O_BINARY);
+ setmode(1, _O_BINARY);
+#endif
+ g = gsm_create();
+#ifdef ENCODE
+ while ((len = read(0, wave, sizeof wave)) != 0) {
+ if (len != sizeof wave) return 1;
+ gsm_encode(g, wave, data);
+ if (write(1, (char *)data, sizeof data) != sizeof data) return 3;
+ }
+#else
+ while ((len = read(0, (char *)data, sizeof data)) != 0) {
+ if (len != sizeof data) return 1;
+ if (gsm_decode(g, data, wave) < 0) return 2;
+ if (write(1, wave, sizeof wave) != sizeof wave) return 3;
+ }
+#endif
+ gsm_destroy(g);
+
+ return 0;
+}
diff --git a/gsm/test.sh b/gsm/test.sh
new file mode 100755
index 0000000..bbd3ea8
--- /dev/null
+++ b/gsm/test.sh
@@ -0,0 +1,25 @@
+#! /bin/bash -xe
+
+#
+# yum install gsm
+# yum install mingw32-gsm mingw64-gsm --enablerepo=updates-testing
+#
+
+rm -f gsmdec* gsmenc* jam*.wave jam*.gsm
+
+sh -x `dirname $0`/gsm.c
+
+dd if=/dev/urandom bs=320 count=10240 > jam.wave
+
+./gsmenc-linux < jam.wave > jam-linux.gsm
+./gsmdec-linux < jam-linux.gsm > jam-decoded-linux.wave
+
+export WINEPREFIX=$HOME/.wine32
+./gsmenc-win32.exe < jam.wave > jam-win32.gsm
+./gsmdec-win32.exe < jam-linux.gsm > jam-decoded-win32.wave
+
+export WINEPREFIX=$HOME/.wine64
+./gsmenc-win64.exe < jam.wave > jam-win64.gsm
+./gsmdec-win64.exe < jam-linux.gsm > jam-decoded-win64.wave
+
+md5sum jam*.wave jam*.gsm
diff --git a/init.sh b/init.sh
new file mode 100755
index 0000000..4ac669d
--- /dev/null
+++ b/init.sh
@@ -0,0 +1,17 @@
+#! /bin/sh -xe
+
+rm -rf $HOME/.wine32 $HOME/.wine64
+
+(export WINEPREFIX=$HOME/.wine32
+echo | wine cmd
+sleep 10
+sed -i 's/^\("PATH"=.*\)"\s*$/\1;Z:\\\\usr\\\\i686-w64-mingw32\\\\sys-root\\\\mingw\\\\bin"/' $WINEPREFIX/system.reg)&
+
+(export WINEPREFIX=$HOME/.wine64
+echo | wine cmd
+sleep 10
+sed -i 's/^\("PATH"=.*\)"\s*$/\1;Z:\\\\usr\\\\x86_64-w64-mingw32\\\\sys-root\\\\mingw\\\\bin"/' $WINEPREFIX/system.reg)&
+
+wait
+
+make
diff --git a/opus/README b/opus/README
new file mode 100644
index 0000000..d6b6b30
--- /dev/null
+++ b/opus/README
@@ -0,0 +1,4 @@
+The best way to test during build using wine, directly in the spec file:
+1) add wine BR
+2) add %check %mingw_make check
+3) mock --rebuild
diff --git a/speex/README b/speex/README
new file mode 100644
index 0000000..94b888f
--- /dev/null
+++ b/speex/README
@@ -0,0 +1,11 @@
+==== Packages ====
+
+yum install speex
+yum install --enablerepo=updates-testing mingw32-speex-tools
+
+
+==== Decoder ====
+
+It looks like 32bit and 64bit differs! And 32bit native and 32bit MinGW.
+Only 64bit native and 64bit MinGW are the same.
+
diff --git a/wavpack/README b/wavpack/README
new file mode 100644
index 0000000..e4cbaa7
--- /dev/null
+++ b/wavpack/README
@@ -0,0 +1,4 @@
+==== Packages ====
+
+yum install wavpack
+yum install --enablerepo=updates-testing mingw32-wavpack-tools mingw64-wavpack-tools