annotate ac3.h @ 3990:746a60ba3177 libavcodec

enable CMOV_IS_FAST as its faster or equal speed on every cpu (duron, athlon, PM, P3) from which ive seen benchmarks, it might be slower on P4 but noone has posted benchmarks ...
author michael
date Wed, 11 Oct 2006 12:23:40 +0000
parents c8c591fe26f8
children fbac0859753d
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
782
dd7d5748d064 preparing integration of new AC3 decoder
bellard
parents:
diff changeset
1 /*
dd7d5748d064 preparing integration of new AC3 decoder
bellard
parents:
diff changeset
2 * Common code between AC3 encoder and decoder
dd7d5748d064 preparing integration of new AC3 decoder
bellard
parents:
diff changeset
3 * Copyright (c) 2000, 2001, 2002 Fabrice Bellard.
dd7d5748d064 preparing integration of new AC3 decoder
bellard
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
782
dd7d5748d064 preparing integration of new AC3 decoder
bellard
parents:
diff changeset
8 * modify it under the terms of the GNU Lesser General Public
dd7d5748d064 preparing integration of new AC3 decoder
bellard
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.
782
dd7d5748d064 preparing integration of new AC3 decoder
bellard
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,
782
dd7d5748d064 preparing integration of new AC3 decoder
bellard
parents:
diff changeset
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
dd7d5748d064 preparing integration of new AC3 decoder
bellard
parents:
diff changeset
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
dd7d5748d064 preparing integration of new AC3 decoder
bellard
parents:
diff changeset
15 * Lesser General Public License for more details.
dd7d5748d064 preparing integration of new AC3 decoder
bellard
parents:
diff changeset
16 *
dd7d5748d064 preparing integration of new AC3 decoder
bellard
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
782
dd7d5748d064 preparing integration of new AC3 decoder
bellard
parents:
diff changeset
20 */
dd7d5748d064 preparing integration of new AC3 decoder
bellard
parents:
diff changeset
21
1106
1e39f273ecd6 per file doxy
michaelni
parents: 1064
diff changeset
22 /**
1e39f273ecd6 per file doxy
michaelni
parents: 1064
diff changeset
23 * @file ac3.h
1e39f273ecd6 per file doxy
michaelni
parents: 1064
diff changeset
24 * Common code between AC3 encoder and decoder.
1e39f273ecd6 per file doxy
michaelni
parents: 1064
diff changeset
25 */
1e39f273ecd6 per file doxy
michaelni
parents: 1064
diff changeset
26
782
dd7d5748d064 preparing integration of new AC3 decoder
bellard
parents:
diff changeset
27 #define AC3_MAX_CODED_FRAME_SIZE 3840 /* in bytes */
dd7d5748d064 preparing integration of new AC3 decoder
bellard
parents:
diff changeset
28 #define AC3_MAX_CHANNELS 6 /* including LFE channel */
dd7d5748d064 preparing integration of new AC3 decoder
bellard
parents:
diff changeset
29
dd7d5748d064 preparing integration of new AC3 decoder
bellard
parents:
diff changeset
30 #define NB_BLOCKS 6 /* number of PCM blocks inside an AC3 frame */
dd7d5748d064 preparing integration of new AC3 decoder
bellard
parents:
diff changeset
31 #define AC3_FRAME_SIZE (NB_BLOCKS * 256)
dd7d5748d064 preparing integration of new AC3 decoder
bellard
parents:
diff changeset
32
dd7d5748d064 preparing integration of new AC3 decoder
bellard
parents:
diff changeset
33 /* exponent encoding strategy */
dd7d5748d064 preparing integration of new AC3 decoder
bellard
parents:
diff changeset
34 #define EXP_REUSE 0
dd7d5748d064 preparing integration of new AC3 decoder
bellard
parents:
diff changeset
35 #define EXP_NEW 1
dd7d5748d064 preparing integration of new AC3 decoder
bellard
parents:
diff changeset
36
dd7d5748d064 preparing integration of new AC3 decoder
bellard
parents:
diff changeset
37 #define EXP_D15 1
dd7d5748d064 preparing integration of new AC3 decoder
bellard
parents:
diff changeset
38 #define EXP_D25 2
dd7d5748d064 preparing integration of new AC3 decoder
bellard
parents:
diff changeset
39 #define EXP_D45 3
dd7d5748d064 preparing integration of new AC3 decoder
bellard
parents:
diff changeset
40
dd7d5748d064 preparing integration of new AC3 decoder
bellard
parents:
diff changeset
41 typedef struct AC3BitAllocParameters {
dd7d5748d064 preparing integration of new AC3 decoder
bellard
parents:
diff changeset
42 int fscod; /* frequency */
dd7d5748d064 preparing integration of new AC3 decoder
bellard
parents:
diff changeset
43 int halfratecod;
dd7d5748d064 preparing integration of new AC3 decoder
bellard
parents:
diff changeset
44 int sgain, sdecay, fdecay, dbknee, floor;
dd7d5748d064 preparing integration of new AC3 decoder
bellard
parents:
diff changeset
45 int cplfleak, cplsleak;
dd7d5748d064 preparing integration of new AC3 decoder
bellard
parents:
diff changeset
46 } AC3BitAllocParameters;
dd7d5748d064 preparing integration of new AC3 decoder
bellard
parents:
diff changeset
47
2280
785b6b4682b5 * these vars could be either static or extern (compilation fix gcc-3.5)
kabi
parents: 1106
diff changeset
48 #if 0
1064
b32afefe7d33 * UINTX -> uintx_t INTX -> intx_t
kabi
parents: 782
diff changeset
49 extern const uint16_t ac3_freqs[3];
b32afefe7d33 * UINTX -> uintx_t INTX -> intx_t
kabi
parents: 782
diff changeset
50 extern const uint16_t ac3_bitratetab[19];
b32afefe7d33 * UINTX -> uintx_t INTX -> intx_t
kabi
parents: 782
diff changeset
51 extern const int16_t ac3_window[256];
b32afefe7d33 * UINTX -> uintx_t INTX -> intx_t
kabi
parents: 782
diff changeset
52 extern const uint8_t sdecaytab[4];
b32afefe7d33 * UINTX -> uintx_t INTX -> intx_t
kabi
parents: 782
diff changeset
53 extern const uint8_t fdecaytab[4];
b32afefe7d33 * UINTX -> uintx_t INTX -> intx_t
kabi
parents: 782
diff changeset
54 extern const uint16_t sgaintab[4];
b32afefe7d33 * UINTX -> uintx_t INTX -> intx_t
kabi
parents: 782
diff changeset
55 extern const uint16_t dbkneetab[4];
b32afefe7d33 * UINTX -> uintx_t INTX -> intx_t
kabi
parents: 782
diff changeset
56 extern const uint16_t floortab[8];
b32afefe7d33 * UINTX -> uintx_t INTX -> intx_t
kabi
parents: 782
diff changeset
57 extern const uint16_t fgaintab[8];
2280
785b6b4682b5 * these vars could be either static or extern (compilation fix gcc-3.5)
kabi
parents: 1106
diff changeset
58 #endif
782
dd7d5748d064 preparing integration of new AC3 decoder
bellard
parents:
diff changeset
59
dd7d5748d064 preparing integration of new AC3 decoder
bellard
parents:
diff changeset
60 void ac3_common_init(void);
1064
b32afefe7d33 * UINTX -> uintx_t INTX -> intx_t
kabi
parents: 782
diff changeset
61 void ac3_parametric_bit_allocation(AC3BitAllocParameters *s, uint8_t *bap,
b32afefe7d33 * UINTX -> uintx_t INTX -> intx_t
kabi
parents: 782
diff changeset
62 int8_t *exp, int start, int end,
782
dd7d5748d064 preparing integration of new AC3 decoder
bellard
parents:
diff changeset
63 int snroffset, int fgain, int is_lfe,
2967
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2280
diff changeset
64 int deltbae,int deltnseg,
1064
b32afefe7d33 * UINTX -> uintx_t INTX -> intx_t
kabi
parents: 782
diff changeset
65 uint8_t *deltoffst, uint8_t *deltlen, uint8_t *deltba);