view pcma2efr/dhf-check.c @ 34:307fe06fabec

dhf: generate EFR hex DHF in C form
author Mychaela Falconia <falcon@freecalypso.org>
date Tue, 14 May 2024 03:36:31 +0000
parents 4f47447fd17f
children
line wrap: on
line source

/*
 * This program generates both standard-EFR and AMR-EFR versions of
 * sample-shifted first encoder frame, and checks them against
 * both EFR and MR122 DHFs.
 */

#include <stdio.h>
#include <stdint.h>
#include <stdlib.h>
#include <string.h>
#include <strings.h>
#include <gsm_efr.h>
#include <tw_amr.h>

extern uint8_t standard_efr[160][31];
extern uint8_t amr_efr[160][31];

static void
check_for_dhf(efr_frame, name, num)
	uint8_t *efr_frame;
	char *name;
	unsigned num;
{
	int16_t params[EFR_NUM_PARAMS];

	EFR_frame2params(efr_frame, params);
	if (!bcmp(params, amr_dhf_gsmefr, EFR_NUM_PARAMS * sizeof(int16_t)))
		printf("%s frame %u matches EFR DHF\n", name, num);
	else if (!bcmp(params, amr_dhf_mr122, EFR_NUM_PARAMS * sizeof(int16_t)))
		printf("%s frame %u matches MR122 DHF\n", name, num);
}

main(argc, argv)
	char **argv;
{
	unsigned n;

	generate_linear_inputs();
	generate_std_efr();
	generate_amr_efr();
	for (n = 0; n < 160; n++)
		check_for_dhf(standard_efr[n], "std EFR", n);
	for (n = 0; n < 160; n++)
		check_for_dhf(amr_efr[n], "AMR-EFR", n);
	exit(0);
}