summaryrefslogtreecommitdiff
path: root/third_party/gsm/man/gsm.3
diff options
context:
space:
mode:
Diffstat (limited to 'third_party/gsm/man/gsm.3')
-rw-r--r--third_party/gsm/man/gsm.3105
1 files changed, 105 insertions, 0 deletions
diff --git a/third_party/gsm/man/gsm.3 b/third_party/gsm/man/gsm.3
new file mode 100644
index 00000000..e465762b
--- /dev/null
+++ b/third_party/gsm/man/gsm.3
@@ -0,0 +1,105 @@
+.\"
+.\" Copyright 1992 by Jutta Degener and Carsten Bormann, Technische
+.\" Universitaet Berlin. See the accompanying file "COPYRIGHT" for
+.\" details. THERE IS ABSOLUTELY NO WARRANTY FOR THIS SOFTWARE.
+.\"
+.PU
+.TH GSM 3
+.SH NAME
+gsm_create, gsm_destroy, gsm_encode, gsm_decode \(em GSM\ 06.10 lossy sound compression
+.SH SYNOPSIS
+.PP
+#include "gsm.h"
+.PP
+gsm gsm_create();
+.PP
+void gsm_encode(handle, src, dst)
+.br
+gsm handle;
+.br
+gsm_signal src[160];
+.br
+gsm_frame dst;
+.PP
+int gsm_decode(handle, src, dst)
+.br
+gsm handle;
+.br
+gsm_frame src;
+.br
+gsm_signal dst[160];
+.PP
+void gsm_destroy(handle)
+.br
+gsm handle;
+.br
+.SH "DESCRIPTION"
+Gsm is an implementation of the final draft GSM 06.10
+standard for full-rate speech transcoding.
+.PP
+gsm_create() initializes a gsm pass and returns a 'gsm' object
+which can be used as a handle in subsequent calls to gsm_decode(),
+gsm_encode() or gsm_destroy().
+.PP
+gsm_encode() encodes an array of 160 13-bit samples (given as
+gsm_signal's, signed integral values of at least 16 bits) into
+a gsm_frame of 33 bytes.
+(gsm_frame is a type defined as an array of 33 gsm_bytes in gsm.h.)
+.PP
+gsm_decode() decodes a gsm_frame into an array of 160 13-bit samples
+(given as gsm_signals), which sound rather like what you handed to
+gsm_encode() on the other side of the wire.
+.PP
+gsm_destroy() finishes a gsm pass and frees all storage associated
+with it.
+.SS "Sample format"
+The following scaling is assumed for input to the algorithm:
+.br
+.nf
+ 0 1 11 12
+ S..v..v..v..v..v..v..v..v..v..v..v..v..*..*..*
+.nf
+.br
+Only the top 13 bits are used as a signed input value.
+The output of gsm_decode() has the three lower bits set to zero.
+.\" .SH OPTIONS
+.SH "RETURN VALUE"
+gsm_create() returns an opaque handle object of type gsm, or 0 on error.
+gsm_decode() returns -1 if the passed frame is invalid, else 0.
+.SH EXAMPLE
+.nf
+#include "gsm.h"
+
+gsm handle;
+gsm_frame buf;
+gsm_signal sample[160];
+int cc, soundfd;
+
+play() { /* read compressed data from standard input, write to soundfd */
+
+ if (!(handle = gsm_create())) error...
+ while (cc = read(0, (char *)buf, sizeof buf)) {
+ if (cc != sizeof buf) error...
+ if (gsm_decode(handle, buf, sample) < 0) error...
+ if (write(soundfd, sample, sizeof sample) != sizeof sample)
+ error...
+ }
+ gsm_destroy(handle);
+}
+
+record() { /* read from soundfd, write compressed to standard output */
+
+ if (!(handle = gsm_create())) error...
+ while (cc = read(soundfd, sample, sizeof sample)) {
+ if (cc != sizeof sample) error...
+ gsm_encode(handle, sample, buf);
+ if (write(1, (char *)buf, sizeof buf) != sizeof sample)
+ error...
+ }
+ gsm_destroy(handle);
+}
+.nf
+.SH BUGS
+Please direct bug reports to jutta@cs.tu-berlin.de and cabo@cs.tu-berlin.de.
+.SH "SEE ALSO"
+toast(1), gsm_print(3), gsm_explode(3), gsm_option(3)