X-Git-Url: http://git.eversberg.eu/gitweb.cgi?p=lcr.git;a=blobdiff_plain;f=gsm_audio.c;fp=gsm_audio.c;h=751f3545f39bde83da35f2ebecbafc6110f171ca;hp=0000000000000000000000000000000000000000;hb=20a671d76854520ad9d5ea9d481e008240465e62;hpb=64143650bc9c04fadc99694c499cf34750bc2804 diff --git a/gsm_audio.c b/gsm_audio.c new file mode 100644 index 0000000..751f354 --- /dev/null +++ b/gsm_audio.c @@ -0,0 +1,54 @@ +/*****************************************************************************\ +** ** +** LCR ** +** ** +**---------------------------------------------------------------------------** +** Copyright: Andreas Eversberg ** +** ** +** gsm audio ** +** ** +\*****************************************************************************/ + +extern "C" { +#include "/usr/local/include/gsm.h" + + +/* create gsm instance */ +void *gsm_audio_create(void) +{ + int value = 1; + gsm handle; + + handle = gsm_create(); + if (handle) + gsm_option(handle, GSM_OPT_WAV49, &value); + + return handle; +} + +/* free gsm instance */ +void gsm_audio_destroy(void *arg) +{ + gsm_destroy((gsm)arg); +} + +/* decode frame into samples, return error */ +int gsm_audio_decode(void *arg, unsigned char *frame, signed short *samples) +{ + int value = 0; + + gsm_option((gsm)arg, GSM_OPT_FRAME_INDEX, &value); + return gsm_decode((gsm)arg, (gsm_byte *)frame, (gsm_signal *)samples); +} + +/* encode samples into frame */ +void gsm_audio_encode(void *arg, signed short *samples, unsigned char *frame) +{ + int value = 0; + + gsm_option((gsm)arg, GSM_OPT_FRAME_INDEX, &value); + gsm_encode((gsm)arg, (gsm_signal *)samples, (gsm_byte *)frame); +} + +} +