view amrconv/param_dump.c @ 477:4c9222d95647

libtwamr encoder: always emit frame->mode = mode; In the original implementation of amr_encode_frame(), the 'mode' member of the output struct was set to 0xFF if the output frame type is TX_NO_DATA. This design was made to mimic the mode field (16-bit word) being set to 0xFFFF (or -1) in 3GPP test sequence format - but nothing actually depends on this struct member being set in any way, and amr_frame_to_tseq() generates the needed 0xFFFF on its own, based on frame->type being equal to TX_NO_DATA. It is simpler and more efficient to always set frame->mode to the actual encoding mode in amr_encode_frame(), and this new behavior has already been documented in doc/AMR-library-API description in anticipation of the present change.
author Mychaela Falconia <falcon@freecalypso.org>
date Sat, 18 May 2024 22:30:42 +0000
parents 78d1a6513393
children
line wrap: on
line source

/*
 * This C module is common between amr-cod-parse and amr-ietf-parse
 * utilities.  It contains the function that takes an array of
 * extracted codec parameters and prints them out as appropriate
 * for each mode.
 */

#include <stdio.h>
#include <stdint.h>
#include "amr_defs.h"

void
dump_amr_params(params, mode)
	uint16_t *params;
	unsigned mode;
{
	int i, j, n;

	switch (mode) {
	case MR475:
		printf("  %u %u %u\n", params[0], params[1], params[2]);
		printf("  %u %u %u %u\n", params[3], params[4], params[5],
			params[6]);
		printf("  %u %u %u\n", params[7], params[8], params[9]);
		printf("  %u %u %u %u\n", params[10], params[11], params[12],
			params[13]);
		printf("  %u %u %u\n", params[14], params[15], params[16]);
		return;
	case MR515:
	case MR59:
	case MR67:
	case MR74:
		printf("  %u %u %u\n", params[0], params[1], params[2]);
		n = 3;
		for (i = 0; i < 4; i++) {
			putchar(' ');
			for (j = 0; j < 4; j++)
				printf(" %u", params[n++]);
			putchar('\n');
		}
		return;
	case MR795:
		printf("  %u %u %u\n", params[0], params[1], params[2]);
		n = 3;
		for (i = 0; i < 4; i++) {
			putchar(' ');
			for (j = 0; j < 5; j++)
				printf(" %u", params[n++]);
			putchar('\n');
		}
		return;
	case MR102:
		printf("  %u %u %u\n", params[0], params[1], params[2]);
		n = 3;
		for (i = 0; i < 4; i++) {
			putchar(' ');
			for (j = 0; j < 9; j++)
				printf(" %u", params[n++]);
			putchar('\n');
		}
		return;
	case MR122:            
		printf("  %u %u %u %u %u\n", params[0], params[1], params[2],
			params[3], params[4]);
		n = 5;
		for (i = 0; i < 4; i++) {
			putchar(' ');
			for (j = 0; j < 13; j++)
				printf(" %u", params[n++]);
			putchar('\n');
		}
		return;
	case MRDTX:
		printf("  %u %u %u %u %u\n", params[0], params[1], params[2],
			params[3], params[4]);
		return;
	}
}