view ae-dec-dhf/gen-test-frames.c @ 56:e95e145f4b32

fr-sid: generate test sequence
author Mychaela Falconia <falcon@freecalypso.org>
date Thu, 22 Aug 2024 06:39:12 +0000
parents ab7c80f6f02d
children
line wrap: on
line source

/*
 * This program generates some test EFR frames that are meant to be fed
 * to the uplink input of the alien GSM network under study, seeking to
 * test if the AMR-EFR hybrid decoder's handling of DHF matches our model.
 */

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

static FILE *outf;

static void
emit_mr122_dhf()
{
	uint8_t frame[EFR_RTP_FRAME_LEN];

	EFR_params2frame(amr_dhf_mr122, frame);
	fwrite(frame, 1, EFR_RTP_FRAME_LEN, outf);
}

static void
emit_mixed_dhf()
{
	int16_t params[EFR_NUM_PARAMS];
	uint8_t frame[EFR_RTP_FRAME_LEN];

	memcpy(params, amr_dhf_gsmefr, sizeof(int16_t) * 18);
	memcpy(params + 18, amr_dhf_mr122 + 18, sizeof(int16_t) * 39);
	EFR_params2frame(params, frame);
	fwrite(frame, 1, EFR_RTP_FRAME_LEN, outf);
}

main(argc, argv)
	char **argv;
{
	if (argc != 2) {
		fprintf(stderr, "usage: %s gsmx-out-file\n", argv[0]);
		exit(1);
	}
	outf = fopen(argv[1], "w");
	if (!outf) {
		perror(argv[1]);
		exit(1);
	}
	emit_mr122_dhf();
	emit_mr122_dhf();
	emit_mixed_dhf();
	fwrite(EFR_decoder_homing_frame, 1, EFR_RTP_FRAME_LEN, outf);
	emit_mixed_dhf();
	emit_mixed_dhf();
	emit_mr122_dhf();
	fclose(outf);
	exit(0);
}