123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 |
- .\"
- .\" 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)
|