Mercurial > libavcodec.hg
annotate ra144.h @ 12346:015c13a563dd libavcodec
The VP8 decoder does not depend on cabac.o.
author | diego |
---|---|
date | Mon, 02 Aug 2010 23:49:49 +0000 |
parents | 6b1a63ea6e61 |
children |
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> |
11870 | 26 #include "dsputil.h" |
7044 | 27 |
11865
6111134a3d94
Split ra144.c in common code (to be shared with the future encoder) and
vitor
parents:
7835
diff
changeset
|
28 #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
|
29 #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
|
30 #define BUFFERSIZE 146 ///< the size of the adaptive codebook |
11870 | 31 #define FIXED_CB_SIZE 128 ///< size of fixed codebooks |
32 #define FRAMESIZE 20 ///< size of encoded frame | |
33 #define LPC_ORDER 10 ///< order of LPC filter | |
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
|
34 |
11865
6111134a3d94
Split ra144.c in common code (to be shared with the future encoder) and
vitor
parents:
7835
diff
changeset
|
35 typedef struct { |
6111134a3d94
Split ra144.c in common code (to be shared with the future encoder) and
vitor
parents:
7835
diff
changeset
|
36 AVCodecContext *avctx; |
11870 | 37 DSPContext dsp; |
11865
6111134a3d94
Split ra144.c in common code (to be shared with the future encoder) and
vitor
parents:
7835
diff
changeset
|
38 |
6111134a3d94
Split ra144.c in common code (to be shared with the future encoder) and
vitor
parents:
7835
diff
changeset
|
39 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
|
40 |
11865
6111134a3d94
Split ra144.c in common code (to be shared with the future encoder) and
vitor
parents:
7835
diff
changeset
|
41 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
|
42 |
6111134a3d94
Split ra144.c in common code (to be shared with the future encoder) and
vitor
parents:
7835
diff
changeset
|
43 /** 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
|
44 * 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
|
45 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
|
46 |
6111134a3d94
Split ra144.c in common code (to be shared with the future encoder) and
vitor
parents:
7835
diff
changeset
|
47 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
|
48 |
11870 | 49 int16_t curr_block[NBLOCKS * BLOCKSIZE]; |
50 | |
11865
6111134a3d94
Split ra144.c in common code (to be shared with the future encoder) and
vitor
parents:
7835
diff
changeset
|
51 /** 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
|
52 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
|
53 |
11865
6111134a3d94
Split ra144.c in common code (to be shared with the future encoder) and
vitor
parents:
7835
diff
changeset
|
54 /** 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
|
55 * buffer overflow. */ |
6111134a3d94
Split ra144.c in common code (to be shared with the future encoder) and
vitor
parents:
7835
diff
changeset
|
56 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
|
57 } RA144Context; |
2967 | 58 |
11866 | 59 void ff_add_wav(int16_t *dest, int n, int skip_first, int *m, const int16_t *s1, |
11867 | 60 const int8_t *s2, const int8_t *s3); |
11866 | 61 void ff_copy_and_dup(int16_t *target, const int16_t *source, int offset); |
62 int ff_eval_refl(int *refl, const int16_t *coefs, AVCodecContext *avctx); | |
63 void ff_eval_coefs(int *coefs, const int *refl); | |
64 void ff_int_to_int16(int16_t *out, const int *inp); | |
65 int ff_t_sqrt(unsigned int x); | |
66 unsigned int ff_rms(const int *data); | |
67 int ff_interp(RA144Context *ractx, int16_t *out, int a, int copyold, | |
68 int energy); | |
69 unsigned int ff_rescale_rms(unsigned int rms, unsigned int energy); | |
70 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
|
71 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
|
72 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
|
73 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
|
74 |
11866 | 75 extern const int16_t ff_gain_val_tab[256][3]; |
76 extern const uint8_t ff_gain_exp_tab[256]; | |
77 extern const int8_t ff_cb1_vects[128][40]; | |
78 extern const int8_t ff_cb2_vects[128][40]; | |
79 extern const uint16_t ff_cb1_base[128]; | |
80 extern const uint16_t ff_cb2_base[128]; | |
81 extern const int16_t ff_energy_tab[32]; | |
82 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
|
83 |
7760 | 84 #endif /* AVCODEC_RA144_H */ |