| FFmpeg
    | 
#include <inttypes.h>#include "avcodec.h"#include "mathops.h"#include "lsp.h"#include "libavcodec/mips/lsp_mips.h"#include "libavutil/avassert.h"
Go to the source code of this file.
| Macros | |
| #define | FRAC_BITS 14 | 
| Functions | |
| void | ff_acelp_reorder_lsf (int16_t *lsfq, int lsfq_min_distance, int lsfq_min, int lsfq_max, int lp_order) | 
| (I.F) means fixed-point value with F fractional and I integer bits  More... | |
| void | ff_set_min_dist_lsf (float *lsf, double min_spacing, int size) | 
| Adjust the quantized LSFs so they are increasing and not too close.  More... | |
| static int16_t | ff_cos (uint16_t arg) | 
| void | ff_acelp_lsf2lsp (int16_t *lsp, const int16_t *lsf, int lp_order) | 
| Convert LSF to LSP.  More... | |
| void | ff_acelp_lsf2lspd (double *lsp, const float *lsf, int lp_order) | 
| Floating point version of ff_acelp_lsf2lsp()  More... | |
| static void | lsp2poly (int *f, const int16_t *lsp, int lp_half_order) | 
| decodes polynomial coefficients from LSP  More... | |
| void | ff_acelp_lsp2lpc (int16_t *lp, const int16_t *lsp, int lp_half_order) | 
| LSP to LP conversion (3.2.6 of G.729)  More... | |
| void | ff_amrwb_lsp2lpc (const double *lsp, float *lp, int lp_order) | 
| LSP to LP conversion (5.2.4 of AMR-WB)  More... | |
| void | ff_acelp_lp_decode (int16_t *lp_1st, int16_t *lp_2nd, const int16_t *lsp_2nd, const int16_t *lsp_prev, int lp_order) | 
| Interpolate LSP for the first subframe and convert LSP -> LP for both subframes (3.2.5 and 3.2.6 of G.729)  More... | |
| void | ff_lsp2polyf (const double *lsp, double *f, int lp_half_order) | 
| Compute the Pa / (1 + z(-1)) or Qa / (1 - z(-1)) coefficients needed for LSP to LPC conversion.  More... | |
| void | ff_acelp_lspd2lpc (const double *lsp, float *lpc, int lp_half_order) | 
| Reconstruct LPC coefficients from the line spectral pair frequencies.  More... | |
| void | ff_sort_nearly_sorted_floats (float *vals, int len) | 
| Sort values in ascending order.  More... | |
| Variables | |
| static const int16_t | tab_cos [65] | 
Macro Definition Documentation
| #define FRAC_BITS 14 | 
Definition at line 27 of file lsp.c.
Referenced by lsp2poly().
Function Documentation
| void ff_acelp_lp_decode | ( | int16_t * | lp_1st, | 
| int16_t * | lp_2nd, | ||
| const int16_t * | lsp_2nd, | ||
| const int16_t * | lsp_prev, | ||
| int | lp_order | ||
| ) | 
Interpolate LSP for the first subframe and convert LSP -> LP for both subframes (3.2.5 and 3.2.6 of G.729)
- Parameters
- 
  [out] lp_1st decoded LP coefficients for first subframe (-0x8000 <= (3.12) < 0x8000) [out] lp_2nd decoded LP coefficients for second subframe (-0x8000 <= (3.12) < 0x8000) lsp_2nd LSP coefficients of the second subframe (-0x8000 <= (0.15) < 0x8000) lsp_prev LSP coefficients from the second subframe of the previous frame (-0x8000 <= (0.15) < 0x8000) lp_order LP filter order 
Definition at line 171 of file lsp.c.
Referenced by decode_frame().
| void ff_acelp_lsf2lsp | ( | int16_t * | lsp, | 
| const int16_t * | lsf, | ||
| int | lp_order | ||
| ) | 
Convert LSF to LSP.
- Parameters
- 
  [out] lsp LSP coefficients (-0x8000 <= (0.15) < 0x8000) lsf normalized LSF coefficients (0 <= (2.13) < 0x2000 * PI) lp_order LP filter order 
- Remarks
- It is safe to pass the same array into the lsf and lsp parameters.
Definition at line 83 of file lsp.c.
Referenced by decode_frame().
| void ff_acelp_lsf2lspd | ( | double * | lsp, | 
| const float * | lsf, | ||
| int | lp_order | ||
| ) | 
Floating point version of ff_acelp_lsf2lsp()
Definition at line 93 of file lsp.c.
Referenced by amrwb_decode_frame(), decode_predictor_coeffs(), hb_synthesis(), lsf2lsp_3(), and lsf2lsp_for_mode12k2().
| void ff_acelp_lsp2lpc | ( | int16_t * | lp, | 
| const int16_t * | lsp, | ||
| int | lp_half_order | ||
| ) | 
LSP to LP conversion (3.2.6 of G.729)
- Parameters
- 
  [out] lp decoded LP coefficients (-0x8000 <= (3.12) < 0x8000) lsp LSP coefficients (-0x8000 <= (0.15) < 0x8000) lp_half_order LP filter order, divided by 2 
Definition at line 123 of file lsp.c.
Referenced by ff_acelp_lp_decode().
| void ff_acelp_lspd2lpc | ( | const double * | lsp, | 
| float * | lpc, | ||
| int | lp_half_order | ||
| ) | 
Reconstruct LPC coefficients from the line spectral pair frequencies.
- Parameters
- 
  lsp line spectral pairs in cosine domain lpc linear predictive coding coefficients lp_half_order half the number of the amount of LPCs to be reconstructed, need to be smaller or equal to MAX_LP_HALF_ORDER 
- Note
- buffers should have a minimux size of 2*lp_half_order elements.
TIA/EIA/IS-733 2.4.3.3.5
Definition at line 209 of file lsp.c.
Referenced by acelp_lp_decodef(), amrnb_decode_frame(), lspf2lpc(), synth_block(), and synth_frame().
| void ff_acelp_reorder_lsf | ( | int16_t * | lsfq, | 
| int | lsfq_min_distance, | ||
| int | lsfq_min, | ||
| int | lsfq_max, | ||
| int | lp_order | ||
| ) | 
(I.F) means fixed-point value with F fractional and I integer bits
ensure a minimum distance between LSFs
- Parameters
- 
  [in,out] lsfq LSF to check and adjust lsfq_min_distance minimum distance between LSFs lsfq_min minimum allowed LSF value lsfq_max maximum allowed LSF value lp_order LP filter order 
Definition at line 33 of file lsp.c.
Referenced by lsf_decode().
| void ff_amrwb_lsp2lpc | ( | const double * | lsp, | 
| float * | lp, | ||
| int | lp_order | ||
| ) | 
LSP to LP conversion (5.2.4 of AMR-WB)
Definition at line 145 of file lsp.c.
Referenced by amrwb_decode_frame(), hb_synthesis(), and sipr_decode_lp().
| 
 | static | 
Definition at line 73 of file lsp.c.
Referenced by ff_acelp_lsf2lsp().
| void ff_lsp2polyf | ( | const double * | lsp, | 
| double * | f, | ||
| int | lp_half_order | ||
| ) | 
Compute the Pa / (1 + z(-1)) or Qa / (1 - z(-1)) coefficients needed for LSP to LPC conversion.
We only need to calculate the 6 first elements of the polynomial.
- Parameters
- 
  lsp line spectral pairs in cosine domain [out] f polynomial input/output as a vector 
TIA/EIA/IS-733 2.4.3.3.5-1/2
Definition at line 191 of file lsp.c.
Referenced by ff_acelp_lspd2lpc(), and ff_amrwb_lsp2lpc().
| void ff_set_min_dist_lsf | ( | float * | lsf, | 
| double | min_spacing, | ||
| int | size | ||
| ) | 
Adjust the quantized LSFs so they are increasing and not too close.
This step is not mentioned in the AMR spec but is in the reference C decoder. Omitting this step creates audible distortion on the sinusoidal sweep test vectors in 3GPP TS 26.074.
- Parameters
- 
  [in,out] lsf LSFs in Hertz min_spacing minimum distance between two consecutive lsf values size size of the lsf vector 
Definition at line 51 of file lsp.c.
Referenced by amrwb_decode_frame(), ff_sipr_decode_frame_16k(), lsf2lsp_3(), lsf2lsp_for_mode12k2(), and lsf_decode_fp().
| void ff_sort_nearly_sorted_floats | ( | float * | vals, | 
| int | len | ||
| ) | 
Sort values in ascending order.
- Note
- O(n) if data already sorted, O(n^2) - otherwise
Definition at line 228 of file lsp.c.
Referenced by decode_lsp(), and lsf_decode_fp().
| 
 | static | 
decodes polynomial coefficients from LSP
- Parameters
- 
  [out] f decoded polynomial coefficients (-0x20000000 <= (3.22) <= 0x1fffffff) lsp LSP coefficients (-0x8000 <= (0.15) <= 0x7fff) 
Definition at line 106 of file lsp.c.
Referenced by ff_acelp_lsp2lpc().
Variable Documentation
| 
 | static | 
Definition at line 61 of file lsp.c.
Referenced by ff_cos().
Generated on Fri Oct 31 2025 06:56:22 for FFmpeg by
 1.8.11
 1.8.11