diff options
author | František Dvořák <valtri@civ.zcu.cz> | 2014-07-02 22:22:38 +0200 |
---|---|---|
committer | František Dvořák <valtri@civ.zcu.cz> | 2014-07-02 22:22:38 +0200 |
commit | 59b0e77bf65c413e87649ca1fbe980fd4c6e86a8 (patch) | |
tree | 3215ce8cbb793e2e16288a6aabab4eb06fa17e66 | |
download | codecs-testing-mingw-59b0e77bf65c413e87649ca1fbe980fd4c6e86a8.tar.gz codecs-testing-mingw-59b0e77bf65c413e87649ca1fbe980fd4c6e86a8.tar.xz codecs-testing-mingw-59b0e77bf65c413e87649ca1fbe980fd4c6e86a8.zip |
Initial import.
-rw-r--r-- | Makefile | 12 | ||||
-rw-r--r-- | README | 17 | ||||
-rw-r--r-- | combiner/Combiner.pm | 91 | ||||
-rwxr-xr-x | combiner/flac.pl | 91 | ||||
-rwxr-xr-x | combiner/speex.pl | 64 | ||||
-rwxr-xr-x | combiner/wavpack.pl | 80 | ||||
-rw-r--r-- | flac/README | 13 | ||||
-rwxr-xr-x | gsm/clean.sh | 2 | ||||
-rw-r--r-- | gsm/gsm.c | 44 | ||||
-rwxr-xr-x | gsm/test.sh | 25 | ||||
-rwxr-xr-x | init.sh | 17 | ||||
-rw-r--r-- | opus/README | 4 | ||||
-rw-r--r-- | speex/README | 11 | ||||
-rw-r--r-- | wavpack/README | 4 |
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) @@ -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 @@ -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 |