annotate libtwamr/qgain475.h @ 585:3c6bf0d26ee7 default tip

TW-TS-005 reader: fix maximum line length bug TW-TS-005 section 4.1 states: The maximum allowed length of each line is 80 characters, not including the OS-specific newline encoding. The implementation of this line length limit in the TW-TS-005 hex file reader function in the present suite was wrong, such that lines of the full maximum length could not be read. Fix it. Note that this bug affects comment lines too, not just actual RTP payloads. Neither Annex A nor Annex B features an RTP payload format that goes to the maximum of 40 bytes, but if a comment line goes to the maximum allowed length of 80 characters not including the terminating newline, the bug will be triggered, necessitating the present fix.
author Mychaela Falconia <falcon@freecalypso.org>
date Tue, 25 Feb 2025 07:49:28 +0000
parents 1d2b39027b70
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
375
1d2b39027b70 libtwamr: integrate qgain475.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1 /*
1d2b39027b70 libtwamr: integrate qgain475.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
2 ********************************************************************************
1d2b39027b70 libtwamr: integrate qgain475.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
3 *
1d2b39027b70 libtwamr: integrate qgain475.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
4 * GSM AMR-NB speech codec R98 Version 7.6.0 December 12, 2001
1d2b39027b70 libtwamr: integrate qgain475.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
5 * R99 Version 3.3.0
1d2b39027b70 libtwamr: integrate qgain475.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
6 * REL-4 Version 4.1.0
1d2b39027b70 libtwamr: integrate qgain475.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
7 *
1d2b39027b70 libtwamr: integrate qgain475.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
8 ********************************************************************************
1d2b39027b70 libtwamr: integrate qgain475.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
9 *
1d2b39027b70 libtwamr: integrate qgain475.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
10 * File : qgain475.h
1d2b39027b70 libtwamr: integrate qgain475.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
11 * Purpose : Quantization of pitch and codebook gains for MR475.
1d2b39027b70 libtwamr: integrate qgain475.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
12 *
1d2b39027b70 libtwamr: integrate qgain475.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
13 ********************************************************************************
1d2b39027b70 libtwamr: integrate qgain475.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
14 */
1d2b39027b70 libtwamr: integrate qgain475.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
15 #ifndef qgain475_h
1d2b39027b70 libtwamr: integrate qgain475.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
16 #define qgain475_h "$Id $"
1d2b39027b70 libtwamr: integrate qgain475.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
17
1d2b39027b70 libtwamr: integrate qgain475.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
18 /*
1d2b39027b70 libtwamr: integrate qgain475.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
19 ********************************************************************************
1d2b39027b70 libtwamr: integrate qgain475.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
20 * INCLUDE FILES
1d2b39027b70 libtwamr: integrate qgain475.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
21 ********************************************************************************
1d2b39027b70 libtwamr: integrate qgain475.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
22 */
1d2b39027b70 libtwamr: integrate qgain475.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
23 #include "typedef.h"
1d2b39027b70 libtwamr: integrate qgain475.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
24 #include "gc_pred.h"
1d2b39027b70 libtwamr: integrate qgain475.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
25
1d2b39027b70 libtwamr: integrate qgain475.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
26 /*
1d2b39027b70 libtwamr: integrate qgain475.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
27 ********************************************************************************
1d2b39027b70 libtwamr: integrate qgain475.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
28 * DECLARATION OF PROTOTYPES
1d2b39027b70 libtwamr: integrate qgain475.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
29 ********************************************************************************
1d2b39027b70 libtwamr: integrate qgain475.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
30 */
1d2b39027b70 libtwamr: integrate qgain475.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
31
1d2b39027b70 libtwamr: integrate qgain475.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
32 /*************************************************************************
1d2b39027b70 libtwamr: integrate qgain475.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
33 *
1d2b39027b70 libtwamr: integrate qgain475.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
34 * FUNCTION: MR475_update_unq_pred()
1d2b39027b70 libtwamr: integrate qgain475.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
35 *
1d2b39027b70 libtwamr: integrate qgain475.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
36 * PURPOSE: use optimum codebook gain and update "unquantized"
1d2b39027b70 libtwamr: integrate qgain475.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
37 * gain predictor with the (bounded) prediction error
1d2b39027b70 libtwamr: integrate qgain475.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
38 *
1d2b39027b70 libtwamr: integrate qgain475.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
39 *************************************************************************/
1d2b39027b70 libtwamr: integrate qgain475.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
40 void
1d2b39027b70 libtwamr: integrate qgain475.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
41 MR475_update_unq_pred(
1d2b39027b70 libtwamr: integrate qgain475.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
42 gc_predState *pred_st, /* i/o: gain predictor state struct */
1d2b39027b70 libtwamr: integrate qgain475.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
43 Word16 exp_gcode0, /* i : predicted CB gain (exponent), Q0 */
1d2b39027b70 libtwamr: integrate qgain475.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
44 Word16 frac_gcode0, /* i : predicted CB gain (fraction), Q15 */
1d2b39027b70 libtwamr: integrate qgain475.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
45 Word16 cod_gain_exp, /* i : optimum codebook gain (exponent), Q0 */
1d2b39027b70 libtwamr: integrate qgain475.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
46 Word16 cod_gain_frac /* i : optimum codebook gain (fraction), Q15 */
1d2b39027b70 libtwamr: integrate qgain475.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
47 );
1d2b39027b70 libtwamr: integrate qgain475.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
48
1d2b39027b70 libtwamr: integrate qgain475.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
49 /*************************************************************************
1d2b39027b70 libtwamr: integrate qgain475.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
50 *
1d2b39027b70 libtwamr: integrate qgain475.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
51 * FUNCTION: MR475_gain_quant()
1d2b39027b70 libtwamr: integrate qgain475.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
52 *
1d2b39027b70 libtwamr: integrate qgain475.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
53 * PURPOSE: Quantization of pitch and codebook gains for two subframes
1d2b39027b70 libtwamr: integrate qgain475.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
54 * (using predicted codebook gain)
1d2b39027b70 libtwamr: integrate qgain475.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
55 *
1d2b39027b70 libtwamr: integrate qgain475.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
56 *************************************************************************/
1d2b39027b70 libtwamr: integrate qgain475.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
57
1d2b39027b70 libtwamr: integrate qgain475.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
58 Word16
1d2b39027b70 libtwamr: integrate qgain475.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
59 MR475_gain_quant( /* o : index of quantization. */
1d2b39027b70 libtwamr: integrate qgain475.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
60 gc_predState *pred_st, /* i/o: gain predictor state struct */
1d2b39027b70 libtwamr: integrate qgain475.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
61
1d2b39027b70 libtwamr: integrate qgain475.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
62 /* data from subframe 0 (or 2) */
1d2b39027b70 libtwamr: integrate qgain475.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
63 Word16 sf0_exp_gcode0, /* i : predicted CB gain (exponent), Q0 */
1d2b39027b70 libtwamr: integrate qgain475.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
64 Word16 sf0_frac_gcode0, /* i : predicted CB gain (fraction), Q15 */
1d2b39027b70 libtwamr: integrate qgain475.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
65 Word16 sf0_exp_coeff[], /* i : energy coeff. (5), exponent part, Q0 */
1d2b39027b70 libtwamr: integrate qgain475.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
66 Word16 sf0_frac_coeff[], /* i : energy coeff. (5), fraction part, Q15 */
1d2b39027b70 libtwamr: integrate qgain475.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
67 /* (frac_coeff and exp_coeff computed in */
1d2b39027b70 libtwamr: integrate qgain475.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
68 /* calc_filt_energies()) */
1d2b39027b70 libtwamr: integrate qgain475.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
69 Word16 sf0_exp_target_en, /* i : exponent of target energy, Q0 */
1d2b39027b70 libtwamr: integrate qgain475.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
70 Word16 sf0_frac_target_en, /* i : fraction of target energy, Q15 */
1d2b39027b70 libtwamr: integrate qgain475.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
71
1d2b39027b70 libtwamr: integrate qgain475.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
72 /* data from subframe 1 (or 3) */
1d2b39027b70 libtwamr: integrate qgain475.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
73 Word16 sf1_code_nosharp[], /* i : innovative codebook vector (L_SUBFR) */
1d2b39027b70 libtwamr: integrate qgain475.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
74 /* (whithout pitch sharpening) */
1d2b39027b70 libtwamr: integrate qgain475.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
75 Word16 sf1_exp_gcode0, /* i : predicted CB gain (exponent), Q0 */
1d2b39027b70 libtwamr: integrate qgain475.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
76 Word16 sf1_frac_gcode0, /* i : predicted CB gain (fraction), Q15 */
1d2b39027b70 libtwamr: integrate qgain475.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
77 Word16 sf1_exp_coeff[], /* i : energy coeff. (5), exponent part, Q0 */
1d2b39027b70 libtwamr: integrate qgain475.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
78 Word16 sf1_frac_coeff[], /* i : energy coeff. (5), fraction part, Q15 */
1d2b39027b70 libtwamr: integrate qgain475.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
79 /* (frac_coeff and exp_coeff computed in */
1d2b39027b70 libtwamr: integrate qgain475.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
80 /* calc_filt_energies()) */
1d2b39027b70 libtwamr: integrate qgain475.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
81 Word16 sf1_exp_target_en, /* i : exponent of target energy, Q0 */
1d2b39027b70 libtwamr: integrate qgain475.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
82 Word16 sf1_frac_target_en, /* i : fraction of target energy, Q15 */
1d2b39027b70 libtwamr: integrate qgain475.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
83
1d2b39027b70 libtwamr: integrate qgain475.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
84 Word16 gp_limit, /* i : pitch gain limit */
1d2b39027b70 libtwamr: integrate qgain475.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
85
1d2b39027b70 libtwamr: integrate qgain475.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
86 Word16 *sf0_gain_pit, /* o : Pitch gain, Q14 */
1d2b39027b70 libtwamr: integrate qgain475.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
87 Word16 *sf0_gain_cod, /* o : Code gain, Q1 */
1d2b39027b70 libtwamr: integrate qgain475.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
88
1d2b39027b70 libtwamr: integrate qgain475.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
89 Word16 *sf1_gain_pit, /* o : Pitch gain, Q14 */
1d2b39027b70 libtwamr: integrate qgain475.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
90 Word16 *sf1_gain_cod /* o : Code gain, Q1 */
1d2b39027b70 libtwamr: integrate qgain475.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
91 );
1d2b39027b70 libtwamr: integrate qgain475.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
92 #endif