# HG changeset patch # User Mychaela Falconia # Date 1726728121 0 # Node ID c95e893673213da4fc2ce09e64d811d84ae5ceec # Parent ddb2b00d582bf3c5445de68a90f77d705eafc8f2 libgsmfr2: add gsmfr_preproc_good_frame_hm() diff -r ddb2b00d582b -r c95e89367321 libgsmfr2/Makefile --- a/libgsmfr2/Makefile Thu Sep 19 05:02:45 2024 +0000 +++ b/libgsmfr2/Makefile Thu Sep 19 06:42:01 2024 +0000 @@ -1,8 +1,8 @@ OBJS= add.o comfort_noise.o dec_main.o dec_wrap.o dhf.o ed_state.o \ enc_homing.o enc_main.o enc_wrap.o full_dec.o long_term.o lpc.o \ - pack_frame.o pack_frame2.o pp_bad.o pp_good.o pp_state.o preprocess.o \ - prng.o rpe.o short_term.o sidclass.o silence_frame.o table.o \ - unpack_frame.o unpack_frame2.o xmaxc_mean.o + pack_frame.o pack_frame2.o pp_bad.o pp_good.o pp_homing.o pp_state.o \ + preprocess.o prng.o rpe.o short_term.o sidclass.o silence_frame.o \ + table.o unpack_frame.o unpack_frame2.o xmaxc_mean.o HDRS= ed_internal.h ed_state.h pp_internal.h pp_state.h tw_gsmfr.h typedef.h LIB= libgsmfr2.a diff -r ddb2b00d582b -r c95e89367321 libgsmfr2/pp_homing.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/libgsmfr2/pp_homing.c Thu Sep 19 06:42:01 2024 +0000 @@ -0,0 +1,19 @@ +/* + * gsmfr_preproc_good_frame_hm() is a wrapper around gsmfr_preproc_good_frame() + * that adds homing of the Rx DTX handler preprocessor block. This homing + * version of good frame preproc is not used in the full decoder (the latter + * implements its own homing logic as specified by 3GPP), but it will be used + * when our Rx DTX handler preprocessor functions as a TFO transform. + */ + +#include +#include +#include "tw_gsmfr.h" + +void gsmfr_preproc_good_frame_hm(struct gsmfr_preproc_state *st, uint8_t *frame) +{ + if (memcmp(frame, gsmfr_decoder_homing_frame, GSMFR_RTP_FRAME_LEN)) + gsmfr_preproc_good_frame(st, frame); + else + gsmfr_preproc_reset(st); +} diff -r ddb2b00d582b -r c95e89367321 libgsmfr2/tw_gsmfr.h --- a/libgsmfr2/tw_gsmfr.h Thu Sep 19 05:02:45 2024 +0000 +++ b/libgsmfr2/tw_gsmfr.h Thu Sep 19 06:42:01 2024 +0000 @@ -84,6 +84,8 @@ /* main processing functions */ void gsmfr_preproc_good_frame(struct gsmfr_preproc_state *state, uint8_t *frame); +void gsmfr_preproc_good_frame_hm(struct gsmfr_preproc_state *state, + uint8_t *frame); void gsmfr_preproc_bfi(struct gsmfr_preproc_state *state, int taf, uint8_t *frame_out);