Mercurial > libavcodec.hg
annotate lsp.h @ 7983:47f50599b368 libavcodec
x264 has removed the b-rdo and bime options, and instead integrated
them into the subme number to attempt to reduce the number of
unnecessary options. subme now scales up to 9.
Patch by Jason Garett-Glaser %darkshikari A gmail P com%
author | gpoirier |
---|---|
date | Thu, 02 Oct 2008 19:05:35 +0000 |
parents | c4a4495715dd |
children | c1cfa4679371 |
rev | line source |
---|---|
6685
df4f7cf1ee5f
Fixed-point LSP and LPC decoding routines for ACELP-based codecs
voroshil
parents:
diff
changeset
|
1 /* |
df4f7cf1ee5f
Fixed-point LSP and LPC decoding routines for ACELP-based codecs
voroshil
parents:
diff
changeset
|
2 * LSP computing for ACELP-based codecs |
df4f7cf1ee5f
Fixed-point LSP and LPC decoding routines for ACELP-based codecs
voroshil
parents:
diff
changeset
|
3 * |
df4f7cf1ee5f
Fixed-point LSP and LPC decoding routines for ACELP-based codecs
voroshil
parents:
diff
changeset
|
4 * Copyright (c) 2008 Vladimir Voroshilov |
df4f7cf1ee5f
Fixed-point LSP and LPC decoding routines for ACELP-based codecs
voroshil
parents:
diff
changeset
|
5 * |
df4f7cf1ee5f
Fixed-point LSP and LPC decoding routines for ACELP-based codecs
voroshil
parents:
diff
changeset
|
6 * This file is part of FFmpeg. |
df4f7cf1ee5f
Fixed-point LSP and LPC decoding routines for ACELP-based codecs
voroshil
parents:
diff
changeset
|
7 * |
df4f7cf1ee5f
Fixed-point LSP and LPC decoding routines for ACELP-based codecs
voroshil
parents:
diff
changeset
|
8 * FFmpeg is free software; you can redistribute it and/or |
df4f7cf1ee5f
Fixed-point LSP and LPC decoding routines for ACELP-based codecs
voroshil
parents:
diff
changeset
|
9 * modify it under the terms of the GNU Lesser General Public |
df4f7cf1ee5f
Fixed-point LSP and LPC decoding routines for ACELP-based codecs
voroshil
parents:
diff
changeset
|
10 * License as published by the Free Software Foundation; either |
df4f7cf1ee5f
Fixed-point LSP and LPC decoding routines for ACELP-based codecs
voroshil
parents:
diff
changeset
|
11 * version 2.1 of the License, or (at your option) any later version. |
df4f7cf1ee5f
Fixed-point LSP and LPC decoding routines for ACELP-based codecs
voroshil
parents:
diff
changeset
|
12 * |
df4f7cf1ee5f
Fixed-point LSP and LPC decoding routines for ACELP-based codecs
voroshil
parents:
diff
changeset
|
13 * FFmpeg is distributed in the hope that it will be useful, |
df4f7cf1ee5f
Fixed-point LSP and LPC decoding routines for ACELP-based codecs
voroshil
parents:
diff
changeset
|
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
df4f7cf1ee5f
Fixed-point LSP and LPC decoding routines for ACELP-based codecs
voroshil
parents:
diff
changeset
|
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
df4f7cf1ee5f
Fixed-point LSP and LPC decoding routines for ACELP-based codecs
voroshil
parents:
diff
changeset
|
16 * Lesser General Public License for more details. |
df4f7cf1ee5f
Fixed-point LSP and LPC decoding routines for ACELP-based codecs
voroshil
parents:
diff
changeset
|
17 * |
df4f7cf1ee5f
Fixed-point LSP and LPC decoding routines for ACELP-based codecs
voroshil
parents:
diff
changeset
|
18 * You should have received a copy of the GNU Lesser General Public |
df4f7cf1ee5f
Fixed-point LSP and LPC decoding routines for ACELP-based codecs
voroshil
parents:
diff
changeset
|
19 * License along with FFmpeg; if not, write to the Free Software |
df4f7cf1ee5f
Fixed-point LSP and LPC decoding routines for ACELP-based codecs
voroshil
parents:
diff
changeset
|
20 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA |
df4f7cf1ee5f
Fixed-point LSP and LPC decoding routines for ACELP-based codecs
voroshil
parents:
diff
changeset
|
21 */ |
df4f7cf1ee5f
Fixed-point LSP and LPC decoding routines for ACELP-based codecs
voroshil
parents:
diff
changeset
|
22 |
7760 | 23 #ifndef AVCODEC_LSP_H |
24 #define AVCODEC_LSP_H | |
6735 | 25 |
26 #include <stdint.h> | |
27 | |
6685
df4f7cf1ee5f
Fixed-point LSP and LPC decoding routines for ACELP-based codecs
voroshil
parents:
diff
changeset
|
28 /** |
df4f7cf1ee5f
Fixed-point LSP and LPC decoding routines for ACELP-based codecs
voroshil
parents:
diff
changeset
|
29 (I.F) means fixed-point value with F fractional and I integer bits |
df4f7cf1ee5f
Fixed-point LSP and LPC decoding routines for ACELP-based codecs
voroshil
parents:
diff
changeset
|
30 */ |
df4f7cf1ee5f
Fixed-point LSP and LPC decoding routines for ACELP-based codecs
voroshil
parents:
diff
changeset
|
31 |
df4f7cf1ee5f
Fixed-point LSP and LPC decoding routines for ACELP-based codecs
voroshil
parents:
diff
changeset
|
32 /** |
6706
2cb901474f6f
Grammar fixes and improvements for the new ACELP code
superdump
parents:
6685
diff
changeset
|
33 * \brief ensure a minimum distance between LSFs |
6685
df4f7cf1ee5f
Fixed-point LSP and LPC decoding routines for ACELP-based codecs
voroshil
parents:
diff
changeset
|
34 * \param lsfq [in/out] LSF to check and adjust |
df4f7cf1ee5f
Fixed-point LSP and LPC decoding routines for ACELP-based codecs
voroshil
parents:
diff
changeset
|
35 * \param lsfq_min_distance minimum distance between LSFs |
df4f7cf1ee5f
Fixed-point LSP and LPC decoding routines for ACELP-based codecs
voroshil
parents:
diff
changeset
|
36 * \param lsfq_min minimum allowed LSF value |
df4f7cf1ee5f
Fixed-point LSP and LPC decoding routines for ACELP-based codecs
voroshil
parents:
diff
changeset
|
37 * \param lsfq_max maximum allowed LSF value |
6770
e6338dd4a6e3
Replace hardcoded LP filter order with parameter.
voroshil
parents:
6735
diff
changeset
|
38 * \param lp_order LP filter order |
6685
df4f7cf1ee5f
Fixed-point LSP and LPC decoding routines for ACELP-based codecs
voroshil
parents:
diff
changeset
|
39 */ |
7248 | 40 void ff_acelp_reorder_lsf(int16_t* lsfq, int lsfq_min_distance, int lsfq_min, int lsfq_max, int lp_order); |
6685
df4f7cf1ee5f
Fixed-point LSP and LPC decoding routines for ACELP-based codecs
voroshil
parents:
diff
changeset
|
41 |
df4f7cf1ee5f
Fixed-point LSP and LPC decoding routines for ACELP-based codecs
voroshil
parents:
diff
changeset
|
42 /** |
df4f7cf1ee5f
Fixed-point LSP and LPC decoding routines for ACELP-based codecs
voroshil
parents:
diff
changeset
|
43 * \brief Convert LSF to LSP |
df4f7cf1ee5f
Fixed-point LSP and LPC decoding routines for ACELP-based codecs
voroshil
parents:
diff
changeset
|
44 * \param lsp [out] LSP coefficients (-0x8000 <= (0.15) < 0x8000) |
df4f7cf1ee5f
Fixed-point LSP and LPC decoding routines for ACELP-based codecs
voroshil
parents:
diff
changeset
|
45 * \param lsf normalized LSF coefficients (0 <= (2.13) < 0x2000 * PI) |
6770
e6338dd4a6e3
Replace hardcoded LP filter order with parameter.
voroshil
parents:
6735
diff
changeset
|
46 * \param lp_order LP filter order |
6685
df4f7cf1ee5f
Fixed-point LSP and LPC decoding routines for ACELP-based codecs
voroshil
parents:
diff
changeset
|
47 * |
6706
2cb901474f6f
Grammar fixes and improvements for the new ACELP code
superdump
parents:
6685
diff
changeset
|
48 * \remark It is safe to pass the same array into the lsf and lsp parameters. |
6685
df4f7cf1ee5f
Fixed-point LSP and LPC decoding routines for ACELP-based codecs
voroshil
parents:
diff
changeset
|
49 */ |
6770
e6338dd4a6e3
Replace hardcoded LP filter order with parameter.
voroshil
parents:
6735
diff
changeset
|
50 void ff_acelp_lsf2lsp(int16_t *lsp, const int16_t *lsf, int lp_order); |
6685
df4f7cf1ee5f
Fixed-point LSP and LPC decoding routines for ACELP-based codecs
voroshil
parents:
diff
changeset
|
51 |
df4f7cf1ee5f
Fixed-point LSP and LPC decoding routines for ACELP-based codecs
voroshil
parents:
diff
changeset
|
52 /** |
df4f7cf1ee5f
Fixed-point LSP and LPC decoding routines for ACELP-based codecs
voroshil
parents:
diff
changeset
|
53 * \brief LSP to LP conversion (3.2.6 of G.729) |
df4f7cf1ee5f
Fixed-point LSP and LPC decoding routines for ACELP-based codecs
voroshil
parents:
diff
changeset
|
54 * \param lp [out] decoded LP coefficients (-0x8000 <= (3.12) < 0x8000) |
df4f7cf1ee5f
Fixed-point LSP and LPC decoding routines for ACELP-based codecs
voroshil
parents:
diff
changeset
|
55 * \param lsp LSP coefficients (-0x8000 <= (0.15) < 0x8000) |
6770
e6338dd4a6e3
Replace hardcoded LP filter order with parameter.
voroshil
parents:
6735
diff
changeset
|
56 * \param lp_half_order LP filter order, divided by 2 |
6685
df4f7cf1ee5f
Fixed-point LSP and LPC decoding routines for ACELP-based codecs
voroshil
parents:
diff
changeset
|
57 */ |
6770
e6338dd4a6e3
Replace hardcoded LP filter order with parameter.
voroshil
parents:
6735
diff
changeset
|
58 void ff_acelp_lsp2lpc(int16_t* lp, const int16_t* lsp, int lp_half_order); |
6685
df4f7cf1ee5f
Fixed-point LSP and LPC decoding routines for ACELP-based codecs
voroshil
parents:
diff
changeset
|
59 |
df4f7cf1ee5f
Fixed-point LSP and LPC decoding routines for ACELP-based codecs
voroshil
parents:
diff
changeset
|
60 /** |
df4f7cf1ee5f
Fixed-point LSP and LPC decoding routines for ACELP-based codecs
voroshil
parents:
diff
changeset
|
61 * \brief Interpolate LSP for the first subframe and convert LSP -> LP for both subframes (3.2.5 and 3.2.6 of G.729) |
6706
2cb901474f6f
Grammar fixes and improvements for the new ACELP code
superdump
parents:
6685
diff
changeset
|
62 * \param lp_1st [out] decoded LP coefficients for first subframe (-0x8000 <= (3.12) < 0x8000) |
6685
df4f7cf1ee5f
Fixed-point LSP and LPC decoding routines for ACELP-based codecs
voroshil
parents:
diff
changeset
|
63 * \param lp_2nd [out] decoded LP coefficients for second subframe (-0x8000 <= (3.12) < 0x8000) |
df4f7cf1ee5f
Fixed-point LSP and LPC decoding routines for ACELP-based codecs
voroshil
parents:
diff
changeset
|
64 * \param lsp_2nd LSP coefficients of the second subframe (-0x8000 <= (0.15) < 0x8000) |
6706
2cb901474f6f
Grammar fixes and improvements for the new ACELP code
superdump
parents:
6685
diff
changeset
|
65 * \param lsp_prev LSP coefficients from the second subframe of the previous frame (-0x8000 <= (0.15) < 0x8000) |
6770
e6338dd4a6e3
Replace hardcoded LP filter order with parameter.
voroshil
parents:
6735
diff
changeset
|
66 * \param lp_order LP filter order |
6685
df4f7cf1ee5f
Fixed-point LSP and LPC decoding routines for ACELP-based codecs
voroshil
parents:
diff
changeset
|
67 */ |
6770
e6338dd4a6e3
Replace hardcoded LP filter order with parameter.
voroshil
parents:
6735
diff
changeset
|
68 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); |
6685
df4f7cf1ee5f
Fixed-point LSP and LPC decoding routines for ACELP-based codecs
voroshil
parents:
diff
changeset
|
69 |
7760 | 70 #endif /* AVCODEC_LSP_H */ |