# HG changeset patch # User Mychaela Falconia # Date 1739347049 0 # Node ID c6d0b1a7281e1db34496cb9b62ddf15e82eb5b1b # Parent b4c4ed4b1b91e5edfd748389cbdd524d34cb16ac libgsmhr1: API definition for TFO transform diff -r b4c4ed4b1b91 -r c6d0b1a7281e libgsmhr1/tw_gsmhr.h --- a/libgsmhr1/tw_gsmhr.h Wed Feb 12 04:53:08 2025 +0000 +++ b/libgsmhr1/tw_gsmhr.h Wed Feb 12 07:57:29 2025 +0000 @@ -19,18 +19,21 @@ #define GSMHR_FRAME_LEN_RPF 14 /* raw packed format */ #define GSMHR_FRAME_LEN_5993 15 /* RFC 5993 and TW-TS-002 */ -/* stateful encoder and decoder engines */ +/* stateful encoder, decoder and TFO engines */ struct gsmhr_encoder_state; /* opaque to external users */ struct gsmhr_decoder_state; /* ditto */ +struct gsmhr_rxfe_state; struct gsmhr_encoder_state *gsmhr_encoder_create(int dtx); struct gsmhr_decoder_state *gsmhr_decoder_create(void); +struct gsmhr_rxfe_state *gsmhr_rxfe_create(void); /* use standard free() call to free both afterward */ /* reset state to initial */ void gsmhr_encoder_reset(struct gsmhr_encoder_state *st, int dtx); void gsmhr_decoder_reset(struct gsmhr_decoder_state *st); +void gsmhr_rxfe_reset(struct gsmhr_rxfe_state *st); /* encoder and decoder main functions */ void gsmhr_encode_frame(struct gsmhr_encoder_state *st, const int16_t *pcm, @@ -38,6 +41,10 @@ void gsmhr_decode_frame(struct gsmhr_decoder_state *st, const int16_t *param, int16_t *pcm); +/* TFO transform */ +void gsmhr_tfo_xfrm(struct gsmhr_rxfe_state *st, int dtxd, const int16_t *ul, + int16_t *dl); + /* stateless format conversion functions */ void gsmhr_pack_ts101318(const int16_t *param, uint8_t *payload);