Mercurial > mplayer.hg
annotate liba52/a52_internal.h @ 26658:1e1ebebc8f5b
Remove extra family names from the search pattern after FcFontSort and
call FcFontRenderPrepare to select the best family name for the font in case
there are several of them.
This does not affect font matching results, but helps to avoid warning about
inexact match.
author | eugeni |
---|---|
date | Thu, 08 May 2008 13:53:56 +0000 |
parents | 0783dd397f74 |
children | 25337a2147e7 |
rev | line source |
---|---|
3394 | 1 /* |
2 * a52_internal.h | |
18720
4bad7f00556e
sync with liba52 0.7.4, patch by Emanuele Giaquinta >emanuele.giaquinta ! gmail * com<
rathann
parents:
16173
diff
changeset
|
3 * Copyright (C) 2000-2002 Michel Lespinasse <walken@zoy.org> |
3394 | 4 * Copyright (C) 1999-2000 Aaron Holtzman <aholtzma@ess.engr.uvic.ca> |
5 * | |
6 * This file is part of a52dec, a free ATSC A-52 stream decoder. | |
7 * See http://liba52.sourceforge.net/ for updates. | |
8 * | |
14991
07f1e7669772
Mark modified files as such to comply more closely with GPL ¡ø2a.
diego
parents:
3910
diff
changeset
|
9 * Modified for use with MPlayer, changes contained in liba52_changes.diff. |
18783 | 10 * detailed changelog at http://svn.mplayerhq.hu/mplayer/trunk/ |
14991
07f1e7669772
Mark modified files as such to comply more closely with GPL ¡ø2a.
diego
parents:
3910
diff
changeset
|
11 * $Id$ |
07f1e7669772
Mark modified files as such to comply more closely with GPL ¡ø2a.
diego
parents:
3910
diff
changeset
|
12 * |
3394 | 13 * a52dec is free software; you can redistribute it and/or modify |
14 * it under the terms of the GNU General Public License as published by | |
15 * the Free Software Foundation; either version 2 of the License, or | |
16 * (at your option) any later version. | |
17 * | |
18 * a52dec is distributed in the hope that it will be useful, | |
19 * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
20 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
21 * GNU General Public License for more details. | |
22 * | |
23 * You should have received a copy of the GNU General Public License | |
24 * along with this program; if not, write to the Free Software | |
25 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
26 */ | |
27 | |
18720
4bad7f00556e
sync with liba52 0.7.4, patch by Emanuele Giaquinta >emanuele.giaquinta ! gmail * com<
rathann
parents:
16173
diff
changeset
|
28 typedef struct { |
4bad7f00556e
sync with liba52 0.7.4, patch by Emanuele Giaquinta >emanuele.giaquinta ! gmail * com<
rathann
parents:
16173
diff
changeset
|
29 uint8_t bai; /* fine SNR offset, fast gain */ |
4bad7f00556e
sync with liba52 0.7.4, patch by Emanuele Giaquinta >emanuele.giaquinta ! gmail * com<
rathann
parents:
16173
diff
changeset
|
30 uint8_t deltbae; /* delta bit allocation exists */ |
4bad7f00556e
sync with liba52 0.7.4, patch by Emanuele Giaquinta >emanuele.giaquinta ! gmail * com<
rathann
parents:
16173
diff
changeset
|
31 int8_t deltba[50]; /* per-band delta bit allocation */ |
4bad7f00556e
sync with liba52 0.7.4, patch by Emanuele Giaquinta >emanuele.giaquinta ! gmail * com<
rathann
parents:
16173
diff
changeset
|
32 } ba_t; |
4bad7f00556e
sync with liba52 0.7.4, patch by Emanuele Giaquinta >emanuele.giaquinta ! gmail * com<
rathann
parents:
16173
diff
changeset
|
33 |
4bad7f00556e
sync with liba52 0.7.4, patch by Emanuele Giaquinta >emanuele.giaquinta ! gmail * com<
rathann
parents:
16173
diff
changeset
|
34 typedef struct { |
4bad7f00556e
sync with liba52 0.7.4, patch by Emanuele Giaquinta >emanuele.giaquinta ! gmail * com<
rathann
parents:
16173
diff
changeset
|
35 uint8_t exp[256]; /* decoded channel exponents */ |
4bad7f00556e
sync with liba52 0.7.4, patch by Emanuele Giaquinta >emanuele.giaquinta ! gmail * com<
rathann
parents:
16173
diff
changeset
|
36 int8_t bap[256]; /* derived channel bit allocation */ |
4bad7f00556e
sync with liba52 0.7.4, patch by Emanuele Giaquinta >emanuele.giaquinta ! gmail * com<
rathann
parents:
16173
diff
changeset
|
37 } expbap_t; |
4bad7f00556e
sync with liba52 0.7.4, patch by Emanuele Giaquinta >emanuele.giaquinta ! gmail * com<
rathann
parents:
16173
diff
changeset
|
38 |
4bad7f00556e
sync with liba52 0.7.4, patch by Emanuele Giaquinta >emanuele.giaquinta ! gmail * com<
rathann
parents:
16173
diff
changeset
|
39 struct a52_state_s { |
4bad7f00556e
sync with liba52 0.7.4, patch by Emanuele Giaquinta >emanuele.giaquinta ! gmail * com<
rathann
parents:
16173
diff
changeset
|
40 uint8_t fscod; /* sample rate */ |
4bad7f00556e
sync with liba52 0.7.4, patch by Emanuele Giaquinta >emanuele.giaquinta ! gmail * com<
rathann
parents:
16173
diff
changeset
|
41 uint8_t halfrate; /* halfrate factor */ |
4bad7f00556e
sync with liba52 0.7.4, patch by Emanuele Giaquinta >emanuele.giaquinta ! gmail * com<
rathann
parents:
16173
diff
changeset
|
42 uint8_t acmod; /* coded channels */ |
4bad7f00556e
sync with liba52 0.7.4, patch by Emanuele Giaquinta >emanuele.giaquinta ! gmail * com<
rathann
parents:
16173
diff
changeset
|
43 uint8_t lfeon; /* coded lfe channel */ |
4bad7f00556e
sync with liba52 0.7.4, patch by Emanuele Giaquinta >emanuele.giaquinta ! gmail * com<
rathann
parents:
16173
diff
changeset
|
44 sample_t clev; /* centre channel mix level */ |
4bad7f00556e
sync with liba52 0.7.4, patch by Emanuele Giaquinta >emanuele.giaquinta ! gmail * com<
rathann
parents:
16173
diff
changeset
|
45 sample_t slev; /* surround channels mix level */ |
4bad7f00556e
sync with liba52 0.7.4, patch by Emanuele Giaquinta >emanuele.giaquinta ! gmail * com<
rathann
parents:
16173
diff
changeset
|
46 |
4bad7f00556e
sync with liba52 0.7.4, patch by Emanuele Giaquinta >emanuele.giaquinta ! gmail * com<
rathann
parents:
16173
diff
changeset
|
47 int output; /* type of output */ |
4bad7f00556e
sync with liba52 0.7.4, patch by Emanuele Giaquinta >emanuele.giaquinta ! gmail * com<
rathann
parents:
16173
diff
changeset
|
48 sample_t level; /* output level */ |
4bad7f00556e
sync with liba52 0.7.4, patch by Emanuele Giaquinta >emanuele.giaquinta ! gmail * com<
rathann
parents:
16173
diff
changeset
|
49 sample_t bias; /* output bias */ |
4bad7f00556e
sync with liba52 0.7.4, patch by Emanuele Giaquinta >emanuele.giaquinta ! gmail * com<
rathann
parents:
16173
diff
changeset
|
50 |
4bad7f00556e
sync with liba52 0.7.4, patch by Emanuele Giaquinta >emanuele.giaquinta ! gmail * com<
rathann
parents:
16173
diff
changeset
|
51 int dynrnge; /* apply dynamic range */ |
4bad7f00556e
sync with liba52 0.7.4, patch by Emanuele Giaquinta >emanuele.giaquinta ! gmail * com<
rathann
parents:
16173
diff
changeset
|
52 sample_t dynrng; /* dynamic range */ |
4bad7f00556e
sync with liba52 0.7.4, patch by Emanuele Giaquinta >emanuele.giaquinta ! gmail * com<
rathann
parents:
16173
diff
changeset
|
53 void * dynrngdata; /* dynamic range callback funtion and data */ |
4bad7f00556e
sync with liba52 0.7.4, patch by Emanuele Giaquinta >emanuele.giaquinta ! gmail * com<
rathann
parents:
16173
diff
changeset
|
54 sample_t (* dynrngcall) (sample_t range, void * dynrngdata); |
4bad7f00556e
sync with liba52 0.7.4, patch by Emanuele Giaquinta >emanuele.giaquinta ! gmail * com<
rathann
parents:
16173
diff
changeset
|
55 |
4bad7f00556e
sync with liba52 0.7.4, patch by Emanuele Giaquinta >emanuele.giaquinta ! gmail * com<
rathann
parents:
16173
diff
changeset
|
56 uint8_t chincpl; /* channel coupled */ |
4bad7f00556e
sync with liba52 0.7.4, patch by Emanuele Giaquinta >emanuele.giaquinta ! gmail * com<
rathann
parents:
16173
diff
changeset
|
57 uint8_t phsflginu; /* phase flags in use (stereo only) */ |
4bad7f00556e
sync with liba52 0.7.4, patch by Emanuele Giaquinta >emanuele.giaquinta ! gmail * com<
rathann
parents:
16173
diff
changeset
|
58 uint8_t cplstrtmant; /* coupling channel start mantissa */ |
4bad7f00556e
sync with liba52 0.7.4, patch by Emanuele Giaquinta >emanuele.giaquinta ! gmail * com<
rathann
parents:
16173
diff
changeset
|
59 uint8_t cplendmant; /* coupling channel end mantissa */ |
4bad7f00556e
sync with liba52 0.7.4, patch by Emanuele Giaquinta >emanuele.giaquinta ! gmail * com<
rathann
parents:
16173
diff
changeset
|
60 uint32_t cplbndstrc; /* coupling band structure */ |
4bad7f00556e
sync with liba52 0.7.4, patch by Emanuele Giaquinta >emanuele.giaquinta ! gmail * com<
rathann
parents:
16173
diff
changeset
|
61 sample_t cplco[5][18]; /* coupling coordinates */ |
4bad7f00556e
sync with liba52 0.7.4, patch by Emanuele Giaquinta >emanuele.giaquinta ! gmail * com<
rathann
parents:
16173
diff
changeset
|
62 |
4bad7f00556e
sync with liba52 0.7.4, patch by Emanuele Giaquinta >emanuele.giaquinta ! gmail * com<
rathann
parents:
16173
diff
changeset
|
63 /* derived information */ |
4bad7f00556e
sync with liba52 0.7.4, patch by Emanuele Giaquinta >emanuele.giaquinta ! gmail * com<
rathann
parents:
16173
diff
changeset
|
64 uint8_t cplstrtbnd; /* coupling start band (for bit allocation) */ |
4bad7f00556e
sync with liba52 0.7.4, patch by Emanuele Giaquinta >emanuele.giaquinta ! gmail * com<
rathann
parents:
16173
diff
changeset
|
65 uint8_t ncplbnd; /* number of coupling bands */ |
4bad7f00556e
sync with liba52 0.7.4, patch by Emanuele Giaquinta >emanuele.giaquinta ! gmail * com<
rathann
parents:
16173
diff
changeset
|
66 |
4bad7f00556e
sync with liba52 0.7.4, patch by Emanuele Giaquinta >emanuele.giaquinta ! gmail * com<
rathann
parents:
16173
diff
changeset
|
67 uint8_t rematflg; /* stereo rematrixing */ |
4bad7f00556e
sync with liba52 0.7.4, patch by Emanuele Giaquinta >emanuele.giaquinta ! gmail * com<
rathann
parents:
16173
diff
changeset
|
68 |
4bad7f00556e
sync with liba52 0.7.4, patch by Emanuele Giaquinta >emanuele.giaquinta ! gmail * com<
rathann
parents:
16173
diff
changeset
|
69 uint8_t endmant[5]; /* channel end mantissa */ |
4bad7f00556e
sync with liba52 0.7.4, patch by Emanuele Giaquinta >emanuele.giaquinta ! gmail * com<
rathann
parents:
16173
diff
changeset
|
70 |
4bad7f00556e
sync with liba52 0.7.4, patch by Emanuele Giaquinta >emanuele.giaquinta ! gmail * com<
rathann
parents:
16173
diff
changeset
|
71 uint16_t bai; /* bit allocation information */ |
4bad7f00556e
sync with liba52 0.7.4, patch by Emanuele Giaquinta >emanuele.giaquinta ! gmail * com<
rathann
parents:
16173
diff
changeset
|
72 |
4bad7f00556e
sync with liba52 0.7.4, patch by Emanuele Giaquinta >emanuele.giaquinta ! gmail * com<
rathann
parents:
16173
diff
changeset
|
73 uint32_t * buffer_start; |
4bad7f00556e
sync with liba52 0.7.4, patch by Emanuele Giaquinta >emanuele.giaquinta ! gmail * com<
rathann
parents:
16173
diff
changeset
|
74 uint16_t lfsr_state; /* dither state */ |
4bad7f00556e
sync with liba52 0.7.4, patch by Emanuele Giaquinta >emanuele.giaquinta ! gmail * com<
rathann
parents:
16173
diff
changeset
|
75 uint32_t bits_left; |
4bad7f00556e
sync with liba52 0.7.4, patch by Emanuele Giaquinta >emanuele.giaquinta ! gmail * com<
rathann
parents:
16173
diff
changeset
|
76 uint32_t current_word; |
4bad7f00556e
sync with liba52 0.7.4, patch by Emanuele Giaquinta >emanuele.giaquinta ! gmail * com<
rathann
parents:
16173
diff
changeset
|
77 |
4bad7f00556e
sync with liba52 0.7.4, patch by Emanuele Giaquinta >emanuele.giaquinta ! gmail * com<
rathann
parents:
16173
diff
changeset
|
78 uint8_t csnroffst; /* coarse SNR offset */ |
4bad7f00556e
sync with liba52 0.7.4, patch by Emanuele Giaquinta >emanuele.giaquinta ! gmail * com<
rathann
parents:
16173
diff
changeset
|
79 ba_t cplba; /* coupling bit allocation parameters */ |
4bad7f00556e
sync with liba52 0.7.4, patch by Emanuele Giaquinta >emanuele.giaquinta ! gmail * com<
rathann
parents:
16173
diff
changeset
|
80 ba_t ba[5]; /* channel bit allocation parameters */ |
4bad7f00556e
sync with liba52 0.7.4, patch by Emanuele Giaquinta >emanuele.giaquinta ! gmail * com<
rathann
parents:
16173
diff
changeset
|
81 ba_t lfeba; /* lfe bit allocation parameters */ |
4bad7f00556e
sync with liba52 0.7.4, patch by Emanuele Giaquinta >emanuele.giaquinta ! gmail * com<
rathann
parents:
16173
diff
changeset
|
82 |
4bad7f00556e
sync with liba52 0.7.4, patch by Emanuele Giaquinta >emanuele.giaquinta ! gmail * com<
rathann
parents:
16173
diff
changeset
|
83 uint8_t cplfleak; /* coupling fast leak init */ |
4bad7f00556e
sync with liba52 0.7.4, patch by Emanuele Giaquinta >emanuele.giaquinta ! gmail * com<
rathann
parents:
16173
diff
changeset
|
84 uint8_t cplsleak; /* coupling slow leak init */ |
4bad7f00556e
sync with liba52 0.7.4, patch by Emanuele Giaquinta >emanuele.giaquinta ! gmail * com<
rathann
parents:
16173
diff
changeset
|
85 |
4bad7f00556e
sync with liba52 0.7.4, patch by Emanuele Giaquinta >emanuele.giaquinta ! gmail * com<
rathann
parents:
16173
diff
changeset
|
86 expbap_t cpl_expbap; |
4bad7f00556e
sync with liba52 0.7.4, patch by Emanuele Giaquinta >emanuele.giaquinta ! gmail * com<
rathann
parents:
16173
diff
changeset
|
87 expbap_t fbw_expbap[5]; |
4bad7f00556e
sync with liba52 0.7.4, patch by Emanuele Giaquinta >emanuele.giaquinta ! gmail * com<
rathann
parents:
16173
diff
changeset
|
88 expbap_t lfe_expbap; |
4bad7f00556e
sync with liba52 0.7.4, patch by Emanuele Giaquinta >emanuele.giaquinta ! gmail * com<
rathann
parents:
16173
diff
changeset
|
89 |
4bad7f00556e
sync with liba52 0.7.4, patch by Emanuele Giaquinta >emanuele.giaquinta ! gmail * com<
rathann
parents:
16173
diff
changeset
|
90 sample_t * samples; |
4bad7f00556e
sync with liba52 0.7.4, patch by Emanuele Giaquinta >emanuele.giaquinta ! gmail * com<
rathann
parents:
16173
diff
changeset
|
91 int downmixed; |
4bad7f00556e
sync with liba52 0.7.4, patch by Emanuele Giaquinta >emanuele.giaquinta ! gmail * com<
rathann
parents:
16173
diff
changeset
|
92 }; |
4bad7f00556e
sync with liba52 0.7.4, patch by Emanuele Giaquinta >emanuele.giaquinta ! gmail * com<
rathann
parents:
16173
diff
changeset
|
93 |
3394 | 94 #define LEVEL_PLUS6DB 2.0 |
95 #define LEVEL_PLUS3DB 1.4142135623730951 | |
96 #define LEVEL_3DB 0.7071067811865476 | |
97 #define LEVEL_45DB 0.5946035575013605 | |
98 #define LEVEL_6DB 0.5 | |
99 | |
100 #define EXP_REUSE (0) | |
101 #define EXP_D15 (1) | |
102 #define EXP_D25 (2) | |
103 #define EXP_D45 (3) | |
104 | |
105 #define DELTA_BIT_REUSE (0) | |
106 #define DELTA_BIT_NEW (1) | |
107 #define DELTA_BIT_NONE (2) | |
108 #define DELTA_BIT_RESERVED (3) | |
109 | |
16173 | 110 #ifdef ARCH_X86_64 |
111 # define REG_a "rax" | |
112 # define REG_d "rdx" | |
113 # define REG_S "rsi" | |
114 # define REG_D "rdi" | |
115 # define REG_BP "rbp" | |
116 #else | |
117 # define REG_a "eax" | |
118 # define REG_d "edx" | |
119 # define REG_S "esi" | |
120 # define REG_D "edi" | |
121 # define REG_BP "ebp" | |
122 #endif | |
123 | |
18720
4bad7f00556e
sync with liba52 0.7.4, patch by Emanuele Giaquinta >emanuele.giaquinta ! gmail * com<
rathann
parents:
16173
diff
changeset
|
124 void a52_bit_allocate (a52_state_t * state, ba_t * ba, int bndstart, |
18721
722ac20fac5f
sync with liba52 0.7.4, patch by Emanuele Giaquinta >emanuele.giaquinta ! gmail * com<
rathann
parents:
18720
diff
changeset
|
125 int start, int end, int fastleak, int slowleak, |
18720
4bad7f00556e
sync with liba52 0.7.4, patch by Emanuele Giaquinta >emanuele.giaquinta ! gmail * com<
rathann
parents:
16173
diff
changeset
|
126 expbap_t * expbap); |
3394 | 127 |
18720
4bad7f00556e
sync with liba52 0.7.4, patch by Emanuele Giaquinta >emanuele.giaquinta ! gmail * com<
rathann
parents:
16173
diff
changeset
|
128 int a52_downmix_init (int input, int flags, sample_t * level, |
18721
722ac20fac5f
sync with liba52 0.7.4, patch by Emanuele Giaquinta >emanuele.giaquinta ! gmail * com<
rathann
parents:
18720
diff
changeset
|
129 sample_t clev, sample_t slev); |
3910
db1d556fcf58
runtime cpudetect the liba52 way part 2 (downmix.c)
michael
parents:
3904
diff
changeset
|
130 void downmix_accel_init(uint32_t mm_accel); |
18720
4bad7f00556e
sync with liba52 0.7.4, patch by Emanuele Giaquinta >emanuele.giaquinta ! gmail * com<
rathann
parents:
16173
diff
changeset
|
131 int a52_downmix_coeff (sample_t * coeff, int acmod, int output, sample_t level, |
18721
722ac20fac5f
sync with liba52 0.7.4, patch by Emanuele Giaquinta >emanuele.giaquinta ! gmail * com<
rathann
parents:
18720
diff
changeset
|
132 sample_t clev, sample_t slev); |
18720
4bad7f00556e
sync with liba52 0.7.4, patch by Emanuele Giaquinta >emanuele.giaquinta ! gmail * com<
rathann
parents:
16173
diff
changeset
|
133 extern void (*a52_downmix) (sample_t * samples, int acmod, int output, sample_t bias, |
18721
722ac20fac5f
sync with liba52 0.7.4, patch by Emanuele Giaquinta >emanuele.giaquinta ! gmail * com<
rathann
parents:
18720
diff
changeset
|
134 sample_t clev, sample_t slev); |
18720
4bad7f00556e
sync with liba52 0.7.4, patch by Emanuele Giaquinta >emanuele.giaquinta ! gmail * com<
rathann
parents:
16173
diff
changeset
|
135 extern void (*a52_upmix) (sample_t * samples, int acmod, int output); |
3394 | 136 |
18720
4bad7f00556e
sync with liba52 0.7.4, patch by Emanuele Giaquinta >emanuele.giaquinta ! gmail * com<
rathann
parents:
16173
diff
changeset
|
137 void a52_imdct_init (uint32_t mm_accel); |
4bad7f00556e
sync with liba52 0.7.4, patch by Emanuele Giaquinta >emanuele.giaquinta ! gmail * com<
rathann
parents:
16173
diff
changeset
|
138 void a52_imdct_256 (sample_t * data, sample_t * delay, sample_t bias); |
4bad7f00556e
sync with liba52 0.7.4, patch by Emanuele Giaquinta >emanuele.giaquinta ! gmail * com<
rathann
parents:
16173
diff
changeset
|
139 extern void (*a52_imdct_512) (sample_t * data, sample_t * delay, sample_t bias); |
4bad7f00556e
sync with liba52 0.7.4, patch by Emanuele Giaquinta >emanuele.giaquinta ! gmail * com<
rathann
parents:
16173
diff
changeset
|
140 void imdct_do_512 (sample_t * data, sample_t * delay, sample_t bias); |