view libgsmfr2/pp_homing.c @ 605:63f774192906

gsmhr_decoder_twts002_in(): set BFI=1 SID=1 for invalid SID When a received TW-TS-002 RTP payload indicates invalid SID, which of the 3 possible BFI/SID combinations should we pass to our internal ETSI-based speech decoder or TFO engine? Our original code passed BFI=0 SID=1, but upon further reflection, BFI=1 SID=1 is a better choice. In the corner case where received invalid SID is fed to a full decoder in homed state, setting BFI=1 allows that decoder to emit zeros on PCM and stay homed, instead of launching into full decoding.
author Mychaela Falconia <falcon@freecalypso.org>
date Thu, 04 Dec 2025 21:01:46 +0000
parents c95e89367321
children
line wrap: on
line source

/*
 * 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 <stdint.h>
#include <string.h>
#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);
}