annotate ac3.h @ 2497:69adfbbdcdeb libavcodec

- samples from mplayer ftp in the "adv" profile seem to have profile=2, which isn't the advanced one; and indeed, using adv. profile parser fails. Using normal parser works, and that's what is done - attempt at taking care of stride for NORM2 bitplane decoding - duplication of much code from msmpeg4.c; this code isn't yet used, but goes down as far as the block layer (mainly Transform Type stuff, the remains are wild editing without checking). Unusable yet, and lacks the AC decoding (but a step further in bitstream parsing) patch by anonymous
author michael
date Fri, 04 Feb 2005 02:20:38 +0000
parents 785b6b4682b5
children ef2149182f1c
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 *
dd7d5748d064 preparing integration of new AC3 decoder
bellard
parents:
diff changeset
5 * This library is free software; you can redistribute it and/or
dd7d5748d064 preparing integration of new AC3 decoder
bellard
parents:
diff changeset
6 * modify it under the terms of the GNU Lesser General Public
dd7d5748d064 preparing integration of new AC3 decoder
bellard
parents:
diff changeset
7 * License as published by the Free Software Foundation; either
dd7d5748d064 preparing integration of new AC3 decoder
bellard
parents:
diff changeset
8 * version 2 of the License, or (at your option) any later version.
dd7d5748d064 preparing integration of new AC3 decoder
bellard
parents:
diff changeset
9 *
dd7d5748d064 preparing integration of new AC3 decoder
bellard
parents:
diff changeset
10 * This library is distributed in the hope that it will be useful,
dd7d5748d064 preparing integration of new AC3 decoder
bellard
parents:
diff changeset
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
dd7d5748d064 preparing integration of new AC3 decoder
bellard
parents:
diff changeset
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
dd7d5748d064 preparing integration of new AC3 decoder
bellard
parents:
diff changeset
13 * Lesser General Public License for more details.
dd7d5748d064 preparing integration of new AC3 decoder
bellard
parents:
diff changeset
14 *
dd7d5748d064 preparing integration of new AC3 decoder
bellard
parents:
diff changeset
15 * You should have received a copy of the GNU Lesser General Public
dd7d5748d064 preparing integration of new AC3 decoder
bellard
parents:
diff changeset
16 * License along with this library; if not, write to the Free Software
dd7d5748d064 preparing integration of new AC3 decoder
bellard
parents:
diff changeset
17 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
dd7d5748d064 preparing integration of new AC3 decoder
bellard
parents:
diff changeset
18 */
dd7d5748d064 preparing integration of new AC3 decoder
bellard
parents:
diff changeset
19
1106
1e39f273ecd6 per file doxy
michaelni
parents: 1064
diff changeset
20 /**
1e39f273ecd6 per file doxy
michaelni
parents: 1064
diff changeset
21 * @file ac3.h
1e39f273ecd6 per file doxy
michaelni
parents: 1064
diff changeset
22 * Common code between AC3 encoder and decoder.
1e39f273ecd6 per file doxy
michaelni
parents: 1064
diff changeset
23 */
1e39f273ecd6 per file doxy
michaelni
parents: 1064
diff changeset
24
782
dd7d5748d064 preparing integration of new AC3 decoder
bellard
parents:
diff changeset
25 #define AC3_MAX_CODED_FRAME_SIZE 3840 /* in bytes */
dd7d5748d064 preparing integration of new AC3 decoder
bellard
parents:
diff changeset
26 #define AC3_MAX_CHANNELS 6 /* including LFE channel */
dd7d5748d064 preparing integration of new AC3 decoder
bellard
parents:
diff changeset
27
dd7d5748d064 preparing integration of new AC3 decoder
bellard
parents:
diff changeset
28 #define NB_BLOCKS 6 /* number of PCM blocks inside an AC3 frame */
dd7d5748d064 preparing integration of new AC3 decoder
bellard
parents:
diff changeset
29 #define AC3_FRAME_SIZE (NB_BLOCKS * 256)
dd7d5748d064 preparing integration of new AC3 decoder
bellard
parents:
diff changeset
30
dd7d5748d064 preparing integration of new AC3 decoder
bellard
parents:
diff changeset
31 /* exponent encoding strategy */
dd7d5748d064 preparing integration of new AC3 decoder
bellard
parents:
diff changeset
32 #define EXP_REUSE 0
dd7d5748d064 preparing integration of new AC3 decoder
bellard
parents:
diff changeset
33 #define EXP_NEW 1
dd7d5748d064 preparing integration of new AC3 decoder
bellard
parents:
diff changeset
34
dd7d5748d064 preparing integration of new AC3 decoder
bellard
parents:
diff changeset
35 #define EXP_D15 1
dd7d5748d064 preparing integration of new AC3 decoder
bellard
parents:
diff changeset
36 #define EXP_D25 2
dd7d5748d064 preparing integration of new AC3 decoder
bellard
parents:
diff changeset
37 #define EXP_D45 3
dd7d5748d064 preparing integration of new AC3 decoder
bellard
parents:
diff changeset
38
dd7d5748d064 preparing integration of new AC3 decoder
bellard
parents:
diff changeset
39 typedef struct AC3BitAllocParameters {
dd7d5748d064 preparing integration of new AC3 decoder
bellard
parents:
diff changeset
40 int fscod; /* frequency */
dd7d5748d064 preparing integration of new AC3 decoder
bellard
parents:
diff changeset
41 int halfratecod;
dd7d5748d064 preparing integration of new AC3 decoder
bellard
parents:
diff changeset
42 int sgain, sdecay, fdecay, dbknee, floor;
dd7d5748d064 preparing integration of new AC3 decoder
bellard
parents:
diff changeset
43 int cplfleak, cplsleak;
dd7d5748d064 preparing integration of new AC3 decoder
bellard
parents:
diff changeset
44 } AC3BitAllocParameters;
dd7d5748d064 preparing integration of new AC3 decoder
bellard
parents:
diff changeset
45
2280
785b6b4682b5 * these vars could be either static or extern (compilation fix gcc-3.5)
kabi
parents: 1106
diff changeset
46 #if 0
1064
b32afefe7d33 * UINTX -> uintx_t INTX -> intx_t
kabi
parents: 782
diff changeset
47 extern const uint16_t ac3_freqs[3];
b32afefe7d33 * UINTX -> uintx_t INTX -> intx_t
kabi
parents: 782
diff changeset
48 extern const uint16_t ac3_bitratetab[19];
b32afefe7d33 * UINTX -> uintx_t INTX -> intx_t
kabi
parents: 782
diff changeset
49 extern const int16_t ac3_window[256];
b32afefe7d33 * UINTX -> uintx_t INTX -> intx_t
kabi
parents: 782
diff changeset
50 extern const uint8_t sdecaytab[4];
b32afefe7d33 * UINTX -> uintx_t INTX -> intx_t
kabi
parents: 782
diff changeset
51 extern const uint8_t fdecaytab[4];
b32afefe7d33 * UINTX -> uintx_t INTX -> intx_t
kabi
parents: 782
diff changeset
52 extern const uint16_t sgaintab[4];
b32afefe7d33 * UINTX -> uintx_t INTX -> intx_t
kabi
parents: 782
diff changeset
53 extern const uint16_t dbkneetab[4];
b32afefe7d33 * UINTX -> uintx_t INTX -> intx_t
kabi
parents: 782
diff changeset
54 extern const uint16_t floortab[8];
b32afefe7d33 * UINTX -> uintx_t INTX -> intx_t
kabi
parents: 782
diff changeset
55 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
56 #endif
782
dd7d5748d064 preparing integration of new AC3 decoder
bellard
parents:
diff changeset
57
dd7d5748d064 preparing integration of new AC3 decoder
bellard
parents:
diff changeset
58 void ac3_common_init(void);
1064
b32afefe7d33 * UINTX -> uintx_t INTX -> intx_t
kabi
parents: 782
diff changeset
59 void ac3_parametric_bit_allocation(AC3BitAllocParameters *s, uint8_t *bap,
b32afefe7d33 * UINTX -> uintx_t INTX -> intx_t
kabi
parents: 782
diff changeset
60 int8_t *exp, int start, int end,
782
dd7d5748d064 preparing integration of new AC3 decoder
bellard
parents:
diff changeset
61 int snroffset, int fgain, int is_lfe,
dd7d5748d064 preparing integration of new AC3 decoder
bellard
parents:
diff changeset
62 int deltbae,int deltnseg,
1064
b32afefe7d33 * UINTX -> uintx_t INTX -> intx_t
kabi
parents: 782
diff changeset
63 uint8_t *deltoffst, uint8_t *deltlen, uint8_t *deltba);