annotate ac3dec.h @ 10022:e60ed9255bf4 libavcodec

Modify decode_band_structure() so that the actual band structure is only used within the function. This removes the need to have the coupling band structure stored in the AC3DecodeContext.
author jbr
date Wed, 05 Aug 2009 01:13:42 +0000
parents f6c433eacc5a
children 652e08aa95fd
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
7020
40a2db8dbaa2 move the decode context and some macro constants to a new file, ac3dec.h
jbr
parents:
diff changeset
1 /*
7470
1a93d3bbe3ee cosmetics: make all references to AC-3 capitalized and hyphenated
jbr
parents: 7466
diff changeset
2 * Common code between the AC-3 and E-AC-3 decoders
7020
40a2db8dbaa2 move the decode context and some macro constants to a new file, ac3dec.h
jbr
parents:
diff changeset
3 * Copyright (c) 2007 Bartlomiej Wolowiec <bartek.wolowiec@gmail.com>
40a2db8dbaa2 move the decode context and some macro constants to a new file, ac3dec.h
jbr
parents:
diff changeset
4 *
40a2db8dbaa2 move the decode context and some macro constants to a new file, ac3dec.h
jbr
parents:
diff changeset
5 * This file is part of FFmpeg.
40a2db8dbaa2 move the decode context and some macro constants to a new file, ac3dec.h
jbr
parents:
diff changeset
6 *
40a2db8dbaa2 move the decode context and some macro constants to a new file, ac3dec.h
jbr
parents:
diff changeset
7 * FFmpeg is free software; you can redistribute it and/or
40a2db8dbaa2 move the decode context and some macro constants to a new file, ac3dec.h
jbr
parents:
diff changeset
8 * modify it under the terms of the GNU Lesser General Public
40a2db8dbaa2 move the decode context and some macro constants to a new file, ac3dec.h
jbr
parents:
diff changeset
9 * License as published by the Free Software Foundation; either
40a2db8dbaa2 move the decode context and some macro constants to a new file, ac3dec.h
jbr
parents:
diff changeset
10 * version 2.1 of the License, or (at your option) any later version.
40a2db8dbaa2 move the decode context and some macro constants to a new file, ac3dec.h
jbr
parents:
diff changeset
11 *
40a2db8dbaa2 move the decode context and some macro constants to a new file, ac3dec.h
jbr
parents:
diff changeset
12 * FFmpeg is distributed in the hope that it will be useful,
40a2db8dbaa2 move the decode context and some macro constants to a new file, ac3dec.h
jbr
parents:
diff changeset
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
40a2db8dbaa2 move the decode context and some macro constants to a new file, ac3dec.h
jbr
parents:
diff changeset
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
40a2db8dbaa2 move the decode context and some macro constants to a new file, ac3dec.h
jbr
parents:
diff changeset
15 * Lesser General Public License for more details.
40a2db8dbaa2 move the decode context and some macro constants to a new file, ac3dec.h
jbr
parents:
diff changeset
16 *
40a2db8dbaa2 move the decode context and some macro constants to a new file, ac3dec.h
jbr
parents:
diff changeset
17 * You should have received a copy of the GNU Lesser General Public
40a2db8dbaa2 move the decode context and some macro constants to a new file, ac3dec.h
jbr
parents:
diff changeset
18 * License along with FFmpeg; if not, write to the Free Software
40a2db8dbaa2 move the decode context and some macro constants to a new file, ac3dec.h
jbr
parents:
diff changeset
19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
40a2db8dbaa2 move the decode context and some macro constants to a new file, ac3dec.h
jbr
parents:
diff changeset
20 */
40a2db8dbaa2 move the decode context and some macro constants to a new file, ac3dec.h
jbr
parents:
diff changeset
21
40a2db8dbaa2 move the decode context and some macro constants to a new file, ac3dec.h
jbr
parents:
diff changeset
22 /**
8718
e9d9d946f213 Use full internal pathname in doxygen @file directives.
diego
parents: 8142
diff changeset
23 * @file libavcodec/ac3.h
7470
1a93d3bbe3ee cosmetics: make all references to AC-3 capitalized and hyphenated
jbr
parents: 7466
diff changeset
24 * Common code between the AC-3 and E-AC-3 decoders.
7020
40a2db8dbaa2 move the decode context and some macro constants to a new file, ac3dec.h
jbr
parents:
diff changeset
25 */
40a2db8dbaa2 move the decode context and some macro constants to a new file, ac3dec.h
jbr
parents:
diff changeset
26
7760
c4a4495715dd Globally rename the header inclusion guard names.
stefano
parents: 7716
diff changeset
27 #ifndef AVCODEC_AC3DEC_H
c4a4495715dd Globally rename the header inclusion guard names.
stefano
parents: 7716
diff changeset
28 #define AVCODEC_AC3DEC_H
7020
40a2db8dbaa2 move the decode context and some macro constants to a new file, ac3dec.h
jbr
parents:
diff changeset
29
7601
69d5f318275f use LFG instead of Mersenne Twister for AC-3 PRNG
jbr
parents: 7564
diff changeset
30 #include "libavutil/lfg.h"
7020
40a2db8dbaa2 move the decode context and some macro constants to a new file, ac3dec.h
jbr
parents:
diff changeset
31 #include "ac3.h"
9428
0dce4fe6e6f3 Rename bitstream.h to get_bits.h.
stefano
parents: 8957
diff changeset
32 #include "get_bits.h"
7020
40a2db8dbaa2 move the decode context and some macro constants to a new file, ac3dec.h
jbr
parents:
diff changeset
33 #include "dsputil.h"
40a2db8dbaa2 move the decode context and some macro constants to a new file, ac3dec.h
jbr
parents:
diff changeset
34
40a2db8dbaa2 move the decode context and some macro constants to a new file, ac3dec.h
jbr
parents:
diff changeset
35 /* override ac3.h to include coupling channel */
40a2db8dbaa2 move the decode context and some macro constants to a new file, ac3dec.h
jbr
parents:
diff changeset
36 #undef AC3_MAX_CHANNELS
40a2db8dbaa2 move the decode context and some macro constants to a new file, ac3dec.h
jbr
parents:
diff changeset
37 #define AC3_MAX_CHANNELS 7
40a2db8dbaa2 move the decode context and some macro constants to a new file, ac3dec.h
jbr
parents:
diff changeset
38 #define CPL_CH 0
40a2db8dbaa2 move the decode context and some macro constants to a new file, ac3dec.h
jbr
parents:
diff changeset
39
40a2db8dbaa2 move the decode context and some macro constants to a new file, ac3dec.h
jbr
parents:
diff changeset
40 #define AC3_OUTPUT_LFEON 8
40a2db8dbaa2 move the decode context and some macro constants to a new file, ac3dec.h
jbr
parents:
diff changeset
41
7023
54d22db12c03 use macro constants for array sizes in decode context
jbr
parents: 7022
diff changeset
42 #define AC3_MAX_COEFS 256
54d22db12c03 use macro constants for array sizes in decode context
jbr
parents: 7022
diff changeset
43 #define AC3_BLOCK_SIZE 256
7026
4bd2ccb0619e store cpl_in_use for all blocks in decode context
jbr
parents: 7025
diff changeset
44 #define MAX_BLOCKS 6
7023
54d22db12c03 use macro constants for array sizes in decode context
jbr
parents: 7022
diff changeset
45
7020
40a2db8dbaa2 move the decode context and some macro constants to a new file, ac3dec.h
jbr
parents:
diff changeset
46 typedef struct {
7021
49afffc0dc60 cosmetics: reorder decode context fields into logical groups
jbr
parents: 7020
diff changeset
47 AVCodecContext *avctx; ///< parent context
49afffc0dc60 cosmetics: reorder decode context fields into logical groups
jbr
parents: 7020
diff changeset
48 GetBitContext gbc; ///< bitstream reader
49afffc0dc60 cosmetics: reorder decode context fields into logical groups
jbr
parents: 7020
diff changeset
49 uint8_t *input_buffer; ///< temp buffer to prevent overread
49afffc0dc60 cosmetics: reorder decode context fields into logical groups
jbr
parents: 7020
diff changeset
50
49afffc0dc60 cosmetics: reorder decode context fields into logical groups
jbr
parents: 7020
diff changeset
51 ///@defgroup bsi bit stream information
49afffc0dc60 cosmetics: reorder decode context fields into logical groups
jbr
parents: 7020
diff changeset
52 ///@{
7025
acf98a472f74 cosmetics: add and align references to spec variable names
jbr
parents: 7024
diff changeset
53 int frame_type; ///< frame type (strmtyp)
7021
49afffc0dc60 cosmetics: reorder decode context fields into logical groups
jbr
parents: 7020
diff changeset
54 int substreamid; ///< substream identification
49afffc0dc60 cosmetics: reorder decode context fields into logical groups
jbr
parents: 7020
diff changeset
55 int frame_size; ///< current frame size, in bytes
49afffc0dc60 cosmetics: reorder decode context fields into logical groups
jbr
parents: 7020
diff changeset
56 int bit_rate; ///< stream bit rate, in bits-per-second
49afffc0dc60 cosmetics: reorder decode context fields into logical groups
jbr
parents: 7020
diff changeset
57 int sample_rate; ///< sample frequency, in Hz
7020
40a2db8dbaa2 move the decode context and some macro constants to a new file, ac3dec.h
jbr
parents:
diff changeset
58 int num_blocks; ///< number of audio blocks
7025
acf98a472f74 cosmetics: add and align references to spec variable names
jbr
parents: 7024
diff changeset
59 int channel_mode; ///< channel mode (acmod)
9512
ba5d9a97ab2f Add channel layout support to the AC-3 decoder and AC-3 parser.
jbr
parents: 9428
diff changeset
60 int channel_layout; ///< channel layout
7021
49afffc0dc60 cosmetics: reorder decode context fields into logical groups
jbr
parents: 7020
diff changeset
61 int lfe_on; ///< lfe channel in use
7031
4b9d8cd9a1f0 add fields needed for E-AC-3 decoding to decode context
jbr
parents: 7027
diff changeset
62 int channel_map; ///< custom channel map
7021
49afffc0dc60 cosmetics: reorder decode context fields into logical groups
jbr
parents: 7020
diff changeset
63 int center_mix_level; ///< Center mix level index
49afffc0dc60 cosmetics: reorder decode context fields into logical groups
jbr
parents: 7020
diff changeset
64 int surround_mix_level; ///< Surround mix level index
7031
4b9d8cd9a1f0 add fields needed for E-AC-3 decoding to decode context
jbr
parents: 7027
diff changeset
65 int eac3; ///< indicates if current frame is E-AC-3
7021
49afffc0dc60 cosmetics: reorder decode context fields into logical groups
jbr
parents: 7020
diff changeset
66 ///@}
49afffc0dc60 cosmetics: reorder decode context fields into logical groups
jbr
parents: 7020
diff changeset
67
7031
4b9d8cd9a1f0 add fields needed for E-AC-3 decoding to decode context
jbr
parents: 7027
diff changeset
68 ///@defgroup audfrm frame syntax parameters
4b9d8cd9a1f0 add fields needed for E-AC-3 decoding to decode context
jbr
parents: 7027
diff changeset
69 int snr_offset_strategy; ///< SNR offset strategy (snroffststr)
4b9d8cd9a1f0 add fields needed for E-AC-3 decoding to decode context
jbr
parents: 7027
diff changeset
70 int block_switch_syntax; ///< block switch syntax enabled (blkswe)
4b9d8cd9a1f0 add fields needed for E-AC-3 decoding to decode context
jbr
parents: 7027
diff changeset
71 int dither_flag_syntax; ///< dither flag syntax enabled (dithflage)
4b9d8cd9a1f0 add fields needed for E-AC-3 decoding to decode context
jbr
parents: 7027
diff changeset
72 int bit_allocation_syntax; ///< bit allocation model syntax enabled (bamode)
4b9d8cd9a1f0 add fields needed for E-AC-3 decoding to decode context
jbr
parents: 7027
diff changeset
73 int fast_gain_syntax; ///< fast gain codes enabled (frmfgaincode)
4b9d8cd9a1f0 add fields needed for E-AC-3 decoding to decode context
jbr
parents: 7027
diff changeset
74 int dba_syntax; ///< delta bit allocation syntax enabled (dbaflde)
4b9d8cd9a1f0 add fields needed for E-AC-3 decoding to decode context
jbr
parents: 7027
diff changeset
75 int skip_syntax; ///< skip field syntax enabled (skipflde)
4b9d8cd9a1f0 add fields needed for E-AC-3 decoding to decode context
jbr
parents: 7027
diff changeset
76 ///@}
4b9d8cd9a1f0 add fields needed for E-AC-3 decoding to decode context
jbr
parents: 7027
diff changeset
77
7021
49afffc0dc60 cosmetics: reorder decode context fields into logical groups
jbr
parents: 7020
diff changeset
78 ///@defgroup cpl standard coupling
7026
4bd2ccb0619e store cpl_in_use for all blocks in decode context
jbr
parents: 7025
diff changeset
79 int cpl_in_use[MAX_BLOCKS]; ///< coupling in use (cplinu)
7031
4b9d8cd9a1f0 add fields needed for E-AC-3 decoding to decode context
jbr
parents: 7027
diff changeset
80 int cpl_strategy_exists[MAX_BLOCKS]; ///< coupling strategy exists (cplstre)
7025
acf98a472f74 cosmetics: add and align references to spec variable names
jbr
parents: 7024
diff changeset
81 int channel_in_cpl[AC3_MAX_CHANNELS]; ///< channel in coupling (chincpl)
acf98a472f74 cosmetics: add and align references to spec variable names
jbr
parents: 7024
diff changeset
82 int phase_flags_in_use; ///< phase flags in use (phsflginu)
acf98a472f74 cosmetics: add and align references to spec variable names
jbr
parents: 7024
diff changeset
83 int phase_flags[18]; ///< phase flags (phsflg)
acf98a472f74 cosmetics: add and align references to spec variable names
jbr
parents: 7024
diff changeset
84 int num_cpl_bands; ///< number of coupling bands (ncplbnd)
10021
f6c433eacc5a Use coupling band sizes instead of coupling band structure when
jbr
parents: 9838
diff changeset
85 uint8_t cpl_band_sizes[18]; ///< number of coeffs in each coupling band
7031
4b9d8cd9a1f0 add fields needed for E-AC-3 decoding to decode context
jbr
parents: 7027
diff changeset
86 int firstchincpl; ///< first channel in coupling
4b9d8cd9a1f0 add fields needed for E-AC-3 decoding to decode context
jbr
parents: 7027
diff changeset
87 int first_cpl_coords[AC3_MAX_CHANNELS]; ///< first coupling coordinates states (firstcplcos)
7025
acf98a472f74 cosmetics: add and align references to spec variable names
jbr
parents: 7024
diff changeset
88 int cpl_coords[AC3_MAX_CHANNELS][18]; ///< coupling coordinates (cplco)
7021
49afffc0dc60 cosmetics: reorder decode context fields into logical groups
jbr
parents: 7020
diff changeset
89 ///@}
49afffc0dc60 cosmetics: reorder decode context fields into logical groups
jbr
parents: 7020
diff changeset
90
7031
4b9d8cd9a1f0 add fields needed for E-AC-3 decoding to decode context
jbr
parents: 7027
diff changeset
91 ///@defgroup aht adaptive hybrid transform
7466
3cb3c85c8474 cosmetics: vertical alignment
jbr
parents: 7465
diff changeset
92 int channel_uses_aht[AC3_MAX_CHANNELS]; ///< channel AHT in use (chahtinu)
7465
b679a09420c8 use MAX_BLOCKS for array size instead of 6
jbr
parents: 7464
diff changeset
93 int pre_mantissa[AC3_MAX_CHANNELS][AC3_MAX_COEFS][MAX_BLOCKS]; ///< pre-IDCT mantissas
7031
4b9d8cd9a1f0 add fields needed for E-AC-3 decoding to decode context
jbr
parents: 7027
diff changeset
94 ///@}
4b9d8cd9a1f0 add fields needed for E-AC-3 decoding to decode context
jbr
parents: 7027
diff changeset
95
7021
49afffc0dc60 cosmetics: reorder decode context fields into logical groups
jbr
parents: 7020
diff changeset
96 ///@defgroup channel channel
7022
b4753ad6e34d cosmetics: vertical align
jbr
parents: 7021
diff changeset
97 int fbw_channels; ///< number of full-bandwidth channels
b4753ad6e34d cosmetics: vertical align
jbr
parents: 7021
diff changeset
98 int channels; ///< number of total channels
b4753ad6e34d cosmetics: vertical align
jbr
parents: 7021
diff changeset
99 int lfe_ch; ///< index of LFE channel
7021
49afffc0dc60 cosmetics: reorder decode context fields into logical groups
jbr
parents: 7020
diff changeset
100 float downmix_coeffs[AC3_MAX_CHANNELS][2]; ///< stereo downmix coefficients
49afffc0dc60 cosmetics: reorder decode context fields into logical groups
jbr
parents: 7020
diff changeset
101 int downmixed; ///< indicates if coeffs are currently downmixed
7022
b4753ad6e34d cosmetics: vertical align
jbr
parents: 7021
diff changeset
102 int output_mode; ///< output channel configuration
b4753ad6e34d cosmetics: vertical align
jbr
parents: 7021
diff changeset
103 int out_channels; ///< number of output channels
7021
49afffc0dc60 cosmetics: reorder decode context fields into logical groups
jbr
parents: 7020
diff changeset
104 ///@}
49afffc0dc60 cosmetics: reorder decode context fields into logical groups
jbr
parents: 7020
diff changeset
105
49afffc0dc60 cosmetics: reorder decode context fields into logical groups
jbr
parents: 7020
diff changeset
106 ///@defgroup dynrng dynamic range
49afffc0dc60 cosmetics: reorder decode context fields into logical groups
jbr
parents: 7020
diff changeset
107 float dynamic_range[2]; ///< dynamic range
49afffc0dc60 cosmetics: reorder decode context fields into logical groups
jbr
parents: 7020
diff changeset
108 ///@}
49afffc0dc60 cosmetics: reorder decode context fields into logical groups
jbr
parents: 7020
diff changeset
109
49afffc0dc60 cosmetics: reorder decode context fields into logical groups
jbr
parents: 7020
diff changeset
110 ///@defgroup bandwidth bandwidth
7025
acf98a472f74 cosmetics: add and align references to spec variable names
jbr
parents: 7024
diff changeset
111 int start_freq[AC3_MAX_CHANNELS]; ///< start frequency bin (strtmant)
acf98a472f74 cosmetics: add and align references to spec variable names
jbr
parents: 7024
diff changeset
112 int end_freq[AC3_MAX_CHANNELS]; ///< end frequency bin (endmant)
7021
49afffc0dc60 cosmetics: reorder decode context fields into logical groups
jbr
parents: 7020
diff changeset
113 ///@}
49afffc0dc60 cosmetics: reorder decode context fields into logical groups
jbr
parents: 7020
diff changeset
114
49afffc0dc60 cosmetics: reorder decode context fields into logical groups
jbr
parents: 7020
diff changeset
115 ///@defgroup rematrixing rematrixing
7025
acf98a472f74 cosmetics: add and align references to spec variable names
jbr
parents: 7024
diff changeset
116 int num_rematrixing_bands; ///< number of rematrixing bands (nrematbnd)
acf98a472f74 cosmetics: add and align references to spec variable names
jbr
parents: 7024
diff changeset
117 int rematrixing_flags[4]; ///< rematrixing flags (rematflg)
7021
49afffc0dc60 cosmetics: reorder decode context fields into logical groups
jbr
parents: 7020
diff changeset
118 ///@}
49afffc0dc60 cosmetics: reorder decode context fields into logical groups
jbr
parents: 7020
diff changeset
119
49afffc0dc60 cosmetics: reorder decode context fields into logical groups
jbr
parents: 7020
diff changeset
120 ///@defgroup exponents exponents
7025
acf98a472f74 cosmetics: add and align references to spec variable names
jbr
parents: 7024
diff changeset
121 int num_exp_groups[AC3_MAX_CHANNELS]; ///< Number of exponent groups (nexpgrp)
7023
54d22db12c03 use macro constants for array sizes in decode context
jbr
parents: 7022
diff changeset
122 int8_t dexps[AC3_MAX_CHANNELS][AC3_MAX_COEFS]; ///< decoded exponents
7027
1edec36c02c5 store exp_strategy for all blocks in decode context
jbr
parents: 7026
diff changeset
123 int exp_strategy[MAX_BLOCKS][AC3_MAX_CHANNELS]; ///< exponent strategies (expstr)
7021
49afffc0dc60 cosmetics: reorder decode context fields into logical groups
jbr
parents: 7020
diff changeset
124 ///@}
49afffc0dc60 cosmetics: reorder decode context fields into logical groups
jbr
parents: 7020
diff changeset
125
49afffc0dc60 cosmetics: reorder decode context fields into logical groups
jbr
parents: 7020
diff changeset
126 ///@defgroup bitalloc bit allocation
7024
7781b4d9cca2 cosmetics: vertical align
jbr
parents: 7023
diff changeset
127 AC3BitAllocParameters bit_alloc_params; ///< bit allocation parameters
7031
4b9d8cd9a1f0 add fields needed for E-AC-3 decoding to decode context
jbr
parents: 7027
diff changeset
128 int first_cpl_leak; ///< first coupling leak state (firstcplleak)
7025
acf98a472f74 cosmetics: add and align references to spec variable names
jbr
parents: 7024
diff changeset
129 int snr_offset[AC3_MAX_CHANNELS]; ///< signal-to-noise ratio offsets (snroffst)
acf98a472f74 cosmetics: add and align references to spec variable names
jbr
parents: 7024
diff changeset
130 int fast_gain[AC3_MAX_CHANNELS]; ///< fast gain values/SMR's (fgain)
7023
54d22db12c03 use macro constants for array sizes in decode context
jbr
parents: 7022
diff changeset
131 uint8_t bap[AC3_MAX_CHANNELS][AC3_MAX_COEFS]; ///< bit allocation pointers
54d22db12c03 use macro constants for array sizes in decode context
jbr
parents: 7022
diff changeset
132 int16_t psd[AC3_MAX_CHANNELS][AC3_MAX_COEFS]; ///< scaled exponents
7024
7781b4d9cca2 cosmetics: vertical align
jbr
parents: 7023
diff changeset
133 int16_t band_psd[AC3_MAX_CHANNELS][50]; ///< interpolated exponents
7781b4d9cca2 cosmetics: vertical align
jbr
parents: 7023
diff changeset
134 int16_t mask[AC3_MAX_CHANNELS][50]; ///< masking curve values
7781b4d9cca2 cosmetics: vertical align
jbr
parents: 7023
diff changeset
135 int dba_mode[AC3_MAX_CHANNELS]; ///< delta bit allocation mode
7781b4d9cca2 cosmetics: vertical align
jbr
parents: 7023
diff changeset
136 int dba_nsegs[AC3_MAX_CHANNELS]; ///< number of delta segments
7781b4d9cca2 cosmetics: vertical align
jbr
parents: 7023
diff changeset
137 uint8_t dba_offsets[AC3_MAX_CHANNELS][8]; ///< delta segment offsets
7781b4d9cca2 cosmetics: vertical align
jbr
parents: 7023
diff changeset
138 uint8_t dba_lengths[AC3_MAX_CHANNELS][8]; ///< delta segment lengths
7781b4d9cca2 cosmetics: vertical align
jbr
parents: 7023
diff changeset
139 uint8_t dba_values[AC3_MAX_CHANNELS][8]; ///< delta values for each segment
7021
49afffc0dc60 cosmetics: reorder decode context fields into logical groups
jbr
parents: 7020
diff changeset
140 ///@}
7020
40a2db8dbaa2 move the decode context and some macro constants to a new file, ac3dec.h
jbr
parents:
diff changeset
141
7021
49afffc0dc60 cosmetics: reorder decode context fields into logical groups
jbr
parents: 7020
diff changeset
142 ///@defgroup dithering zero-mantissa dithering
7025
acf98a472f74 cosmetics: add and align references to spec variable names
jbr
parents: 7024
diff changeset
143 int dither_flag[AC3_MAX_CHANNELS]; ///< dither flags (dithflg)
7601
69d5f318275f use LFG instead of Mersenne Twister for AC-3 PRNG
jbr
parents: 7564
diff changeset
144 AVLFG dith_state; ///< for dither generation
7021
49afffc0dc60 cosmetics: reorder decode context fields into logical groups
jbr
parents: 7020
diff changeset
145 ///@}
7020
40a2db8dbaa2 move the decode context and some macro constants to a new file, ac3dec.h
jbr
parents:
diff changeset
146
7021
49afffc0dc60 cosmetics: reorder decode context fields into logical groups
jbr
parents: 7020
diff changeset
147 ///@defgroup imdct IMDCT
7025
acf98a472f74 cosmetics: add and align references to spec variable names
jbr
parents: 7024
diff changeset
148 int block_switch[AC3_MAX_CHANNELS]; ///< block switch flags (blksw)
7020
40a2db8dbaa2 move the decode context and some macro constants to a new file, ac3dec.h
jbr
parents:
diff changeset
149 MDCTContext imdct_512; ///< for 512 sample IMDCT
40a2db8dbaa2 move the decode context and some macro constants to a new file, ac3dec.h
jbr
parents:
diff changeset
150 MDCTContext imdct_256; ///< for 256 sample IMDCT
7021
49afffc0dc60 cosmetics: reorder decode context fields into logical groups
jbr
parents: 7020
diff changeset
151 ///@}
49afffc0dc60 cosmetics: reorder decode context fields into logical groups
jbr
parents: 7020
diff changeset
152
49afffc0dc60 cosmetics: reorder decode context fields into logical groups
jbr
parents: 7020
diff changeset
153 ///@defgroup opt optimization
7022
b4753ad6e34d cosmetics: vertical align
jbr
parents: 7021
diff changeset
154 DSPContext dsp; ///< for optimization
b4753ad6e34d cosmetics: vertical align
jbr
parents: 7021
diff changeset
155 float add_bias; ///< offset for float_to_int16 conversion
b4753ad6e34d cosmetics: vertical align
jbr
parents: 7021
diff changeset
156 float mul_bias; ///< scaling for float_to_int16 conversion
7021
49afffc0dc60 cosmetics: reorder decode context fields into logical groups
jbr
parents: 7020
diff changeset
157 ///@}
7020
40a2db8dbaa2 move the decode context and some macro constants to a new file, ac3dec.h
jbr
parents:
diff changeset
158
7564
7cf793954871 simd int->float
lorenm
parents: 7554
diff changeset
159 DECLARE_ALIGNED_16(int, fixed_coeffs[AC3_MAX_CHANNELS][AC3_MAX_COEFS]); ///> fixed-point transform coefficients
7021
49afffc0dc60 cosmetics: reorder decode context fields into logical groups
jbr
parents: 7020
diff changeset
160
49afffc0dc60 cosmetics: reorder decode context fields into logical groups
jbr
parents: 7020
diff changeset
161 ///@defgroup arrays aligned arrays
7023
54d22db12c03 use macro constants for array sizes in decode context
jbr
parents: 7022
diff changeset
162 DECLARE_ALIGNED_16(float, transform_coeffs[AC3_MAX_CHANNELS][AC3_MAX_COEFS]); ///< transform coefficients
54d22db12c03 use macro constants for array sizes in decode context
jbr
parents: 7022
diff changeset
163 DECLARE_ALIGNED_16(float, delay[AC3_MAX_CHANNELS][AC3_BLOCK_SIZE]); ///< delay - added to the next block
54d22db12c03 use macro constants for array sizes in decode context
jbr
parents: 7022
diff changeset
164 DECLARE_ALIGNED_16(float, window[AC3_BLOCK_SIZE]); ///< window coefficients
7549
60b5c1e5a7ee use imdct_half in ac3
lorenm
parents: 7546
diff changeset
165 DECLARE_ALIGNED_16(float, tmp_output[AC3_BLOCK_SIZE]); ///< temporary storage for output before windowing
7023
54d22db12c03 use macro constants for array sizes in decode context
jbr
parents: 7022
diff changeset
166 DECLARE_ALIGNED_16(float, output[AC3_MAX_CHANNELS][AC3_BLOCK_SIZE]); ///< output after imdct transform and windowing
7021
49afffc0dc60 cosmetics: reorder decode context fields into logical groups
jbr
parents: 7020
diff changeset
167 ///@}
7020
40a2db8dbaa2 move the decode context and some macro constants to a new file, ac3dec.h
jbr
parents:
diff changeset
168 } AC3DecodeContext;
40a2db8dbaa2 move the decode context and some macro constants to a new file, ac3dec.h
jbr
parents:
diff changeset
169
7704
b928055716e5 add definitions and documentation for shared functions for E-AC-3 decoding
jbr
parents: 7703
diff changeset
170 /**
b928055716e5 add definitions and documentation for shared functions for E-AC-3 decoding
jbr
parents: 7703
diff changeset
171 * Parse the E-AC-3 frame header.
b928055716e5 add definitions and documentation for shared functions for E-AC-3 decoding
jbr
parents: 7703
diff changeset
172 * This parses both the bit stream info and audio frame header.
b928055716e5 add definitions and documentation for shared functions for E-AC-3 decoding
jbr
parents: 7703
diff changeset
173 */
b928055716e5 add definitions and documentation for shared functions for E-AC-3 decoding
jbr
parents: 7703
diff changeset
174 int ff_eac3_parse_header(AC3DecodeContext *s);
b928055716e5 add definitions and documentation for shared functions for E-AC-3 decoding
jbr
parents: 7703
diff changeset
175
b928055716e5 add definitions and documentation for shared functions for E-AC-3 decoding
jbr
parents: 7703
diff changeset
176 /**
b928055716e5 add definitions and documentation for shared functions for E-AC-3 decoding
jbr
parents: 7703
diff changeset
177 * Decode mantissas in a single channel for the entire frame.
b928055716e5 add definitions and documentation for shared functions for E-AC-3 decoding
jbr
parents: 7703
diff changeset
178 * This is used when AHT mode is enabled.
b928055716e5 add definitions and documentation for shared functions for E-AC-3 decoding
jbr
parents: 7703
diff changeset
179 */
b928055716e5 add definitions and documentation for shared functions for E-AC-3 decoding
jbr
parents: 7703
diff changeset
180 void ff_eac3_decode_transform_coeffs_aht_ch(AC3DecodeContext *s, int ch);
b928055716e5 add definitions and documentation for shared functions for E-AC-3 decoding
jbr
parents: 7703
diff changeset
181
7760
c4a4495715dd Globally rename the header inclusion guard names.
stefano
parents: 7716
diff changeset
182 #endif /* AVCODEC_AC3DEC_H */