summaryrefslogtreecommitdiffstats
path: root/gsm
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 /gsm
downloadcodecs-testing-mingw-59b0e77bf65c413e87649ca1fbe980fd4c6e86a8.tar.gz
codecs-testing-mingw-59b0e77bf65c413e87649ca1fbe980fd4c6e86a8.tar.xz
codecs-testing-mingw-59b0e77bf65c413e87649ca1fbe980fd4c6e86a8.zip
Initial import.
Diffstat (limited to 'gsm')
-rwxr-xr-xgsm/clean.sh2
-rw-r--r--gsm/gsm.c44
-rwxr-xr-xgsm/test.sh25
3 files changed, 71 insertions, 0 deletions
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