view libgsmfr2/enc_main.c @ 602:72cdae602d6e

libgsmhr1/dec_func.c: rm unused static functions In the original code, sp_dec.c held two kinds of functions: those needed only as part of the decoder, and those used by both decoder and encoder engines. In this library, we have moved the latter class of functions to dec_func.c module. Almost all static functions from the original sp_dec.c, with the exception of aToRc(), are needed only on sp_dec.c side of the new divide - remove them from dec_func.c, where they became dead code.
author Mychaela Falconia <falcon@freecalypso.org>
date Thu, 04 Dec 2025 18:58:22 +0000
parents a7b593e68ac3
children
line wrap: on
line source

/*
 * This C source file has been adapted from TU-Berlin libgsm source
 * (src/code.c), original notice follows:
 *
 * Copyright 1992 by Jutta Degener and Carsten Bormann, Technische
 * Universitaet Berlin.  See the accompanying file "COPYRIGHT" for
 * details.  THERE IS ABSOLUTELY NO WARRANTY FOR THIS SOFTWARE.
 */

#include <stdint.h>
#include <string.h>
#include "tw_gsmfr.h"
#include "typedef.h"
#include "ed_state.h"
#include "ed_internal.h"

/*
 *  4.2 FIXED POINT IMPLEMENTATION OF THE RPE-LTP CODER
 */

void gsmfr_0610_encode_params(struct gsmfr_0610_state *S, const int16_t *s,
			      struct gsmfr_param_frame *outp)
{
	int	k;
	word	* dp  = S->dp0 + 120;	/* [ -120...-1 ] */
	word	* dpp = dp;		/* [ 0...39 ]	 */

	word	so[160];

	Gsm_Preprocess			(S, s, so);
	Gsm_LPC_Analysis		(S, so, outp->LARc);
	Gsm_Short_Term_Analysis_Filter	(S, outp->LARc, so);

	for (k = 0; k <= 3; k++) {

		Gsm_Long_Term_Predictor	( S,
					 so+k*40, /* d      [0..39] IN	*/
					 dp,	  /* dp  [-120..-1] IN	*/
					S->e + 5, /* e      [0..39] OUT	*/
					dpp,	  /* dpp    [0..39] OUT */
					&outp->Nc[k],
					&outp->bc[k]);

		Gsm_RPE_Encoding	( S,
					S->e + 5,/* e	  ][0..39][ IN/OUT */
					&outp->xmaxc[k], &outp->Mc[k],
					outp->xMc[k] );
		/*
		 * Gsm_Update_of_reconstructed_short_time_residual_signal
		 *			( dpp, S->e + 5, dp );
		 */

		{ register int i;
		  register longword ltmp;
		  for (i = 0; i <= 39; i++)
			dp[ i ] = GSM_ADD( S->e[5 + i], dpp[i] );
		}
		dp  += 40;
		dpp += 40;

	}
	(void)memcpy( (char *)S->dp0, (char *)(S->dp0 + 160),
		120 * sizeof(*S->dp0) );
}