summaryrefslogtreecommitdiff
path: root/modules/gsm/gsm.c
diff options
context:
space:
mode:
Diffstat (limited to 'modules/gsm/gsm.c')
-rw-r--r--modules/gsm/gsm.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/modules/gsm/gsm.c b/modules/gsm/gsm.c
index be225d8..da7fba7 100644
--- a/modules/gsm/gsm.c
+++ b/modules/gsm/gsm.c
@@ -5,6 +5,7 @@
*/
#include <gsm.h> /* please report if you have problems finding this file */
#include <re.h>
+#include <rem_au.h>
#include <baresip.h>
@@ -113,13 +114,16 @@ static int decode_update(struct audec_state **adsp,
static int encode(struct auenc_state *st, uint8_t *buf, size_t *len,
- const int16_t *sampv, size_t sampc)
+ int fmt, const void *sampv, size_t sampc)
{
if (sampc != FRAME_SIZE)
return EPROTO;
if (*len < sizeof(gsm_frame))
return ENOMEM;
+ if (fmt != AUFMT_S16LE)
+ return ENOTSUP;
+
gsm_encode(st->enc, (gsm_signal *)sampv, buf);
*len = sizeof(gsm_frame);
@@ -128,7 +132,7 @@ static int encode(struct auenc_state *st, uint8_t *buf, size_t *len,
}
-static int decode(struct audec_state *st, int16_t *sampv, size_t *sampc,
+static int decode(struct audec_state *st, int fmt, void *sampv, size_t *sampc,
const uint8_t *buf, size_t len)
{
int ret;
@@ -138,6 +142,9 @@ static int decode(struct audec_state *st, int16_t *sampv, size_t *sampc,
if (len < sizeof(gsm_frame))
return EBADMSG;
+ if (fmt != AUFMT_S16LE)
+ return ENOTSUP;
+
ret = gsm_decode(st->dec, (gsm_byte *)buf, (gsm_signal *)sampv);
if (ret)
return EPROTO;