Mercurial > libavcodec.hg
annotate ra144.h @ 11868:159554445343 libavcodec
Split do_output_subblock() into common code and decoder specific parts
Patch by Francesco Lavra (firstnamelastname@interfree.it)
author | vitor |
---|---|
date | Fri, 11 Jun 2010 08:05:17 +0000 |
parents | ba4e21f7bd3a |
children | 6b1a63ea6e61 |
rev | line source |
---|---|
1335
b4a72edb3a71
moved the tables into header files (and applied the 'static' patch). Nick: why do you like mergeing tables and code into one file, so making it unusable big?
al3x
parents:
diff
changeset
|
1 /* |
b4a72edb3a71
moved the tables into header files (and applied the 'static' patch). Nick: why do you like mergeing tables and code into one file, so making it unusable big?
al3x
parents:
diff
changeset
|
2 * Real Audio 1.0 (14.4K) |
b4a72edb3a71
moved the tables into header files (and applied the 'static' patch). Nick: why do you like mergeing tables and code into one file, so making it unusable big?
al3x
parents:
diff
changeset
|
3 * Copyright (c) 2003 the ffmpeg project |
b4a72edb3a71
moved the tables into header files (and applied the 'static' patch). Nick: why do you like mergeing tables and code into one file, so making it unusable big?
al3x
parents:
diff
changeset
|
4 * |
3947
c8c591fe26f8
Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents:
3036
diff
changeset
|
5 * This file is part of FFmpeg. |
c8c591fe26f8
Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents:
3036
diff
changeset
|
6 * |
c8c591fe26f8
Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents:
3036
diff
changeset
|
7 * FFmpeg is free software; you can redistribute it and/or |
1335
b4a72edb3a71
moved the tables into header files (and applied the 'static' patch). Nick: why do you like mergeing tables and code into one file, so making it unusable big?
al3x
parents:
diff
changeset
|
8 * modify it under the terms of the GNU Lesser General Public |
b4a72edb3a71
moved the tables into header files (and applied the 'static' patch). Nick: why do you like mergeing tables and code into one file, so making it unusable big?
al3x
parents:
diff
changeset
|
9 * License as published by the Free Software Foundation; either |
3947
c8c591fe26f8
Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents:
3036
diff
changeset
|
10 * version 2.1 of the License, or (at your option) any later version. |
1335
b4a72edb3a71
moved the tables into header files (and applied the 'static' patch). Nick: why do you like mergeing tables and code into one file, so making it unusable big?
al3x
parents:
diff
changeset
|
11 * |
3947
c8c591fe26f8
Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents:
3036
diff
changeset
|
12 * FFmpeg is distributed in the hope that it will be useful, |
1335
b4a72edb3a71
moved the tables into header files (and applied the 'static' patch). Nick: why do you like mergeing tables and code into one file, so making it unusable big?
al3x
parents:
diff
changeset
|
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
b4a72edb3a71
moved the tables into header files (and applied the 'static' patch). Nick: why do you like mergeing tables and code into one file, so making it unusable big?
al3x
parents:
diff
changeset
|
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
b4a72edb3a71
moved the tables into header files (and applied the 'static' patch). Nick: why do you like mergeing tables and code into one file, so making it unusable big?
al3x
parents:
diff
changeset
|
15 * Lesser General Public License for more details. |
b4a72edb3a71
moved the tables into header files (and applied the 'static' patch). Nick: why do you like mergeing tables and code into one file, so making it unusable big?
al3x
parents:
diff
changeset
|
16 * |
b4a72edb3a71
moved the tables into header files (and applied the 'static' patch). Nick: why do you like mergeing tables and code into one file, so making it unusable big?
al3x
parents:
diff
changeset
|
17 * You should have received a copy of the GNU Lesser General Public |
3947
c8c591fe26f8
Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents:
3036
diff
changeset
|
18 * License along with FFmpeg; if not, write to the Free Software |
3036
0b546eab515d
Update licensing information: The FSF changed postal address.
diego
parents:
2967
diff
changeset
|
19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA |
1335
b4a72edb3a71
moved the tables into header files (and applied the 'static' patch). Nick: why do you like mergeing tables and code into one file, so making it unusable big?
al3x
parents:
diff
changeset
|
20 */ |
b4a72edb3a71
moved the tables into header files (and applied the 'static' patch). Nick: why do you like mergeing tables and code into one file, so making it unusable big?
al3x
parents:
diff
changeset
|
21 |
7760 | 22 #ifndef AVCODEC_RA144_H |
23 #define AVCODEC_RA144_H | |
1335
b4a72edb3a71
moved the tables into header files (and applied the 'static' patch). Nick: why do you like mergeing tables and code into one file, so making it unusable big?
al3x
parents:
diff
changeset
|
24 |
7044 | 25 #include <stdint.h> |
26 | |
11865
6111134a3d94
Split ra144.c in common code (to be shared with the future encoder) and
vitor
parents:
7835
diff
changeset
|
27 #define NBLOCKS 4 ///< number of subblocks within a block |
6111134a3d94
Split ra144.c in common code (to be shared with the future encoder) and
vitor
parents:
7835
diff
changeset
|
28 #define BLOCKSIZE 40 ///< subblock size in 16-bit words |
6111134a3d94
Split ra144.c in common code (to be shared with the future encoder) and
vitor
parents:
7835
diff
changeset
|
29 #define BUFFERSIZE 146 ///< the size of the adaptive codebook |
1335
b4a72edb3a71
moved the tables into header files (and applied the 'static' patch). Nick: why do you like mergeing tables and code into one file, so making it unusable big?
al3x
parents:
diff
changeset
|
30 |
11865
6111134a3d94
Split ra144.c in common code (to be shared with the future encoder) and
vitor
parents:
7835
diff
changeset
|
31 typedef struct { |
6111134a3d94
Split ra144.c in common code (to be shared with the future encoder) and
vitor
parents:
7835
diff
changeset
|
32 AVCodecContext *avctx; |
6111134a3d94
Split ra144.c in common code (to be shared with the future encoder) and
vitor
parents:
7835
diff
changeset
|
33 |
6111134a3d94
Split ra144.c in common code (to be shared with the future encoder) and
vitor
parents:
7835
diff
changeset
|
34 unsigned int old_energy; ///< previous frame energy |
1335
b4a72edb3a71
moved the tables into header files (and applied the 'static' patch). Nick: why do you like mergeing tables and code into one file, so making it unusable big?
al3x
parents:
diff
changeset
|
35 |
11865
6111134a3d94
Split ra144.c in common code (to be shared with the future encoder) and
vitor
parents:
7835
diff
changeset
|
36 unsigned int lpc_tables[2][10]; |
6111134a3d94
Split ra144.c in common code (to be shared with the future encoder) and
vitor
parents:
7835
diff
changeset
|
37 |
6111134a3d94
Split ra144.c in common code (to be shared with the future encoder) and
vitor
parents:
7835
diff
changeset
|
38 /** LPC coefficients: lpc_coef[0] is the coefficients of the current frame |
6111134a3d94
Split ra144.c in common code (to be shared with the future encoder) and
vitor
parents:
7835
diff
changeset
|
39 * and lpc_coef[1] of the previous one. */ |
6111134a3d94
Split ra144.c in common code (to be shared with the future encoder) and
vitor
parents:
7835
diff
changeset
|
40 unsigned int *lpc_coef[2]; |
6111134a3d94
Split ra144.c in common code (to be shared with the future encoder) and
vitor
parents:
7835
diff
changeset
|
41 |
6111134a3d94
Split ra144.c in common code (to be shared with the future encoder) and
vitor
parents:
7835
diff
changeset
|
42 unsigned int lpc_refl_rms[2]; |
6111134a3d94
Split ra144.c in common code (to be shared with the future encoder) and
vitor
parents:
7835
diff
changeset
|
43 |
6111134a3d94
Split ra144.c in common code (to be shared with the future encoder) and
vitor
parents:
7835
diff
changeset
|
44 /** The current subblock padded by the last 10 values of the previous one. */ |
6111134a3d94
Split ra144.c in common code (to be shared with the future encoder) and
vitor
parents:
7835
diff
changeset
|
45 int16_t curr_sblock[50]; |
1335
b4a72edb3a71
moved the tables into header files (and applied the 'static' patch). Nick: why do you like mergeing tables and code into one file, so making it unusable big?
al3x
parents:
diff
changeset
|
46 |
11865
6111134a3d94
Split ra144.c in common code (to be shared with the future encoder) and
vitor
parents:
7835
diff
changeset
|
47 /** Adaptive codebook, its size is two units bigger to avoid a |
6111134a3d94
Split ra144.c in common code (to be shared with the future encoder) and
vitor
parents:
7835
diff
changeset
|
48 * buffer overflow. */ |
6111134a3d94
Split ra144.c in common code (to be shared with the future encoder) and
vitor
parents:
7835
diff
changeset
|
49 uint16_t adapt_cb[146+2]; |
6111134a3d94
Split ra144.c in common code (to be shared with the future encoder) and
vitor
parents:
7835
diff
changeset
|
50 } RA144Context; |
2967 | 51 |
11866 | 52 void ff_add_wav(int16_t *dest, int n, int skip_first, int *m, const int16_t *s1, |
11867 | 53 const int8_t *s2, const int8_t *s3); |
11866 | 54 void ff_copy_and_dup(int16_t *target, const int16_t *source, int offset); |
55 int ff_eval_refl(int *refl, const int16_t *coefs, AVCodecContext *avctx); | |
56 void ff_eval_coefs(int *coefs, const int *refl); | |
57 void ff_int_to_int16(int16_t *out, const int *inp); | |
58 int ff_t_sqrt(unsigned int x); | |
59 unsigned int ff_rms(const int *data); | |
60 int ff_interp(RA144Context *ractx, int16_t *out, int a, int copyold, | |
61 int energy); | |
62 unsigned int ff_rescale_rms(unsigned int rms, unsigned int energy); | |
63 int ff_irms(const int16_t *data); | |
11868
159554445343
Split do_output_subblock() into common code and decoder specific parts
vitor
parents:
11867
diff
changeset
|
64 void ff_subblock_synthesis(RA144Context *ractx, const uint16_t *lpc_coefs, |
159554445343
Split do_output_subblock() into common code and decoder specific parts
vitor
parents:
11867
diff
changeset
|
65 int cba_idx, int cb1_idx, int cb2_idx, |
159554445343
Split do_output_subblock() into common code and decoder specific parts
vitor
parents:
11867
diff
changeset
|
66 int gval, int gain); |
1335
b4a72edb3a71
moved the tables into header files (and applied the 'static' patch). Nick: why do you like mergeing tables and code into one file, so making it unusable big?
al3x
parents:
diff
changeset
|
67 |
11866 | 68 extern const int16_t ff_gain_val_tab[256][3]; |
69 extern const uint8_t ff_gain_exp_tab[256]; | |
70 extern const int8_t ff_cb1_vects[128][40]; | |
71 extern const int8_t ff_cb2_vects[128][40]; | |
72 extern const uint16_t ff_cb1_base[128]; | |
73 extern const uint16_t ff_cb2_base[128]; | |
74 extern const int16_t ff_energy_tab[32]; | |
75 extern const int16_t * const ff_lpc_refl_cb[10]; | |
1335
b4a72edb3a71
moved the tables into header files (and applied the 'static' patch). Nick: why do you like mergeing tables and code into one file, so making it unusable big?
al3x
parents:
diff
changeset
|
76 |
7760 | 77 #endif /* AVCODEC_RA144_H */ |