FFmpeg
Loading...
Searching...
No Matches
ac3dec.h
Go to the documentation of this file.
1/*
2 * Common code between the AC-3 and E-AC-3 decoders
3 * Copyright (c) 2007 Bartlomiej Wolowiec <bartek.wolowiec@gmail.com>
4 *
5 * This file is part of FFmpeg.
6 *
7 * FFmpeg is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU Lesser General Public
9 * License as published by the Free Software Foundation; either
10 * version 2.1 of the License, or (at your option) any later version.
11 *
12 * FFmpeg is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 * Lesser General Public License for more details.
16 *
17 * You should have received a copy of the GNU Lesser General Public
18 * License along with FFmpeg; if not, write to the Free Software
19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
20 */
21
22/**
23 * @file
24 * Common code between the AC-3 and E-AC-3 decoders.
25 *
26 * Summary of MDCT Coefficient Grouping:
27 * The individual MDCT coefficient indices are often referred to in the
28 * (E-)AC-3 specification as frequency bins. These bins are grouped together
29 * into subbands of 12 coefficients each. The subbands are grouped together
30 * into bands as defined in the bitstream by the band structures, which
31 * determine the number of bands and the size of each band. The full spectrum
32 * of 256 frequency bins is divided into 1 DC bin + 21 subbands = 253 bins.
33 * This system of grouping coefficients is used for channel bandwidth, stereo
34 * rematrixing, channel coupling, enhanced coupling, and spectral extension.
35 *
36 * +-+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+-+
37 * |1| |12| | [12|12|12|12] | | | | | | | | | | | | |3|
38 * +-+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+-+
39 * ~~~ ~~~~ ~~~~~~~~~~~~~ ~~~
40 * | | | |
41 * | | | 3 unused frequency bins--+
42 * | | |
43 * | | +--1 band containing 4 subbands
44 * | |
45 * | +--1 subband of 12 frequency bins
46 * |
47 * +--DC frequency bin
48 */
49
50#ifndef AVCODEC_AC3DEC_H
51#define AVCODEC_AC3DEC_H
52
53#include "libavutil/tx.h"
54#include "libavutil/float_dsp.h"
55#include "libavutil/fixed_dsp.h"
56#include "libavutil/lfg.h"
58
59#include "ac3.h"
60#include "ac3dsp.h"
61#include "avcodec.h"
62#include "bswapdsp.h"
63#include "get_bits.h"
64
65#define AC3_OUTPUT_LFEON 8
66
67#define SPX_MAX_BANDS 17
68
69/** Large enough for maximum possible frame size when the specification limit is ignored */
70#define AC3_FRAME_BUFFER_SIZE 32768
71
72typedef struct AC3DecodeContext {
73 AVClass *class; ///< class for AVOptions
74 AVCodecContext *avctx; ///< parent context
75 GetBitContext gbc; ///< bitstream reader
76
77///@name Optimization
79#if USE_FIXED
81#else
83#endif
85///@}
86
89
92
94 SHORTFLOAT *downmix_coeffs[2]; ///< stereo downmix coefficients
95
96// Start of flushable fields.
97// frame_type must be the flushable field, or the offset changed in ac3_decode_flush().
98
99///@name Bit stream information
100///@{
101 int frame_type; ///< frame type (strmtyp)
102 int substreamid; ///< substream identification
103 int superframe_size; ///< current superframe size, in bytes
104 int frame_size; ///< current frame size, in bytes
105 int bit_rate; ///< stream bit rate, in bits-per-second
106 int sample_rate; ///< sample frequency, in Hz
107 int num_blocks; ///< number of audio blocks
108 int bitstream_id; ///< bitstream id (bsid)
109 int bitstream_mode; ///< bitstream mode (bsmod)
110 int channel_mode; ///< channel mode (acmod)
111 int lfe_on; ///< lfe channel in use
112 int dialog_normalization[2]; ///< dialog level in dBFS (dialnorm)
113 int compression_exists[2]; ///< compression field is valid for frame (compre)
114 int channel_map; ///< custom channel map (chanmap)
115 int preferred_downmix; ///< Preferred 2-channel downmix mode (dmixmod)
116 int center_mix_level; ///< Center mix level index
117 int center_mix_level_ltrt; ///< Center mix level index for Lt/Rt (ltrtcmixlev)
118 int surround_mix_level; ///< Surround mix level index
119 int surround_mix_level_ltrt; ///< Surround mix level index for Lt/Rt (ltrtsurmixlev)
120 int lfe_mix_level_exists; ///< indicates if lfemixlevcod is specified (lfemixlevcode)
121 int lfe_mix_level; ///< LFE mix level index (lfemixlevcod)
122 int eac3; ///< indicates if current frame is E-AC-3
123 int eac3_subsbtreamid_found; ///< bitstream has E-AC-3 additional substream(s)
124 int eac3_extension_type_a; ///< bitstream has E-AC-3 extension type A enabled frame(s)
125 int dolby_surround_mode; ///< dolby surround mode (dsurmod)
126 int dolby_surround_ex_mode; ///< dolby surround ex mode (dsurexmod)
127 int dolby_headphone_mode; ///< dolby headphone mode (dheadphonmod)
128///@}
129
135 int target_level; ///< target level in dBFS
136 float level_gain[2];
137
138///@name Frame syntax parameters
139 int snr_offset_strategy; ///< SNR offset strategy (snroffststr)
140 int block_switch_syntax; ///< block switch syntax enabled (blkswe)
141 int dither_flag_syntax; ///< dither flag syntax enabled (dithflage)
142 int bit_allocation_syntax; ///< bit allocation model syntax enabled (bamode)
143 int fast_gain_syntax; ///< fast gain codes enabled (frmfgaincode)
144 int dba_syntax; ///< delta bit allocation syntax enabled (dbaflde)
145 int skip_syntax; ///< skip field syntax enabled (skipflde)
146 ///@}
147
148///@name Standard coupling
149 int cpl_in_use[AC3_MAX_BLOCKS]; ///< coupling in use (cplinu)
150 int cpl_strategy_exists[AC3_MAX_BLOCKS];///< coupling strategy exists (cplstre)
151 int channel_in_cpl[AC3_MAX_CHANNELS]; ///< channel in coupling (chincpl)
152 int phase_flags_in_use; ///< phase flags in use (phsflginu)
153 int phase_flags[AC3_MAX_CPL_BANDS]; ///< phase flags (phsflg)
154 int num_cpl_bands; ///< number of coupling bands (ncplbnd)
156 uint8_t cpl_band_sizes[AC3_MAX_CPL_BANDS]; ///< number of coeffs in each coupling band
157 int firstchincpl; ///< first channel in coupling
158 int first_cpl_coords[AC3_MAX_CHANNELS]; ///< first coupling coordinates states (firstcplcos)
159 int cpl_coords[AC3_MAX_CHANNELS][AC3_MAX_CPL_BANDS]; ///< coupling coordinates (cplco)
160///@}
161
162///@name Spectral extension
163///@{
164 int spx_in_use; ///< spectral extension in use (spxinu)
165 uint8_t channel_uses_spx[AC3_MAX_CHANNELS]; ///< channel uses spectral extension (chinspx)
166 int8_t spx_atten_code[AC3_MAX_CHANNELS]; ///< spx attenuation code (spxattencod)
167 int spx_src_start_freq; ///< spx start frequency bin
168 int spx_dst_end_freq; ///< spx end frequency bin
169 int spx_dst_start_freq; ///< spx starting frequency bin for copying (copystartmant)
170 ///< the copy region ends at the start of the spx region.
171 int num_spx_bands; ///< number of spx bands (nspxbnds)
172 uint8_t spx_band_struct[SPX_MAX_BANDS];
173 uint8_t spx_band_sizes[SPX_MAX_BANDS]; ///< number of bins in each spx band
174 uint8_t first_spx_coords[AC3_MAX_CHANNELS]; ///< first spx coordinates states (firstspxcos)
175 INTFLOAT spx_noise_blend[AC3_MAX_CHANNELS][SPX_MAX_BANDS]; ///< spx noise blending factor (nblendfact)
176 INTFLOAT spx_signal_blend[AC3_MAX_CHANNELS][SPX_MAX_BANDS];///< spx signal blending factor (sblendfact)
177///@}
178
179///@name Adaptive hybrid transform
180 int channel_uses_aht[AC3_MAX_CHANNELS]; ///< channel AHT in use (chahtinu)
182///@}
183
184///@name Channel
185 int fbw_channels; ///< number of full-bandwidth channels
186 int channels; ///< number of total channels
187 int lfe_ch; ///< index of LFE channel
188 int downmixed; ///< indicates if coeffs are currently downmixed
189 int output_mode; ///< output channel configuration
190 int prev_output_mode; ///< output channel configuration for previous frame
191 int out_channels; ///< number of output channels
192 int prev_bit_rate; ///< stream bit rate, in bits-per-second for previous frame
193///@}
194
195///@name Dynamic range
196 INTFLOAT dynamic_range[2]; ///< dynamic range
197 INTFLOAT drc_scale; ///< percentage of dynamic range compression to be applied
198 int heavy_compression; ///< apply heavy compression
199 INTFLOAT heavy_dynamic_range[2]; ///< heavy dynamic range compression
200///@}
201
202///@name Bandwidth
203 int start_freq[AC3_MAX_CHANNELS]; ///< start frequency bin (strtmant)
204 int end_freq[AC3_MAX_CHANNELS]; ///< end frequency bin (endmant)
205///@}
206
207///@name Consistent noise generation
208 int consistent_noise_generation; ///< seed noise generation with AC-3 frame on decode
209///@}
210
211///@name Rematrixing
212 int num_rematrixing_bands; ///< number of rematrixing bands (nrematbnd)
213 int rematrixing_flags[4]; ///< rematrixing flags (rematflg)
214///@}
215
216///@name Exponents
217 int num_exp_groups[AC3_MAX_CHANNELS]; ///< Number of exponent groups (nexpgrp)
218 int8_t dexps[AC3_MAX_CHANNELS][AC3_MAX_COEFS]; ///< decoded exponents
219 int exp_strategy[AC3_MAX_BLOCKS][AC3_MAX_CHANNELS]; ///< exponent strategies (expstr)
220///@}
221
222///@name Bit allocation
223 AC3BitAllocParameters bit_alloc_params; ///< bit allocation parameters
224 int first_cpl_leak; ///< first coupling leak state (firstcplleak)
225 int snr_offset[AC3_MAX_CHANNELS]; ///< signal-to-noise ratio offsets (snroffst)
226 int fast_gain[AC3_MAX_CHANNELS]; ///< fast gain values/SMR's (fgain)
227 uint8_t bap[AC3_MAX_CHANNELS][AC3_MAX_COEFS]; ///< bit allocation pointers
228 int16_t psd[AC3_MAX_CHANNELS][AC3_MAX_COEFS]; ///< scaled exponents
229 int16_t band_psd[AC3_MAX_CHANNELS][AC3_CRITICAL_BANDS]; ///< interpolated exponents
230 int16_t mask[AC3_MAX_CHANNELS][AC3_CRITICAL_BANDS]; ///< masking curve values
231 int dba_mode[AC3_MAX_CHANNELS]; ///< delta bit allocation mode
232 int dba_nsegs[AC3_MAX_CHANNELS]; ///< number of delta segments
233 uint8_t dba_offsets[AC3_MAX_CHANNELS][8]; ///< delta segment offsets
234 uint8_t dba_lengths[AC3_MAX_CHANNELS][8]; ///< delta segment lengths
235 uint8_t dba_values[AC3_MAX_CHANNELS][8]; ///< delta values for each segment
236///@}
237
238///@name Zero-mantissa dithering
239 int dither_flag[AC3_MAX_CHANNELS]; ///< dither flags (dithflg)
240 AVLFG dith_state; ///< for dither generation
241///@}
242
243///@name IMDCT
244 int block_switch[AC3_MAX_CHANNELS]; ///< block switch flags (blksw)
245///@}
246
248
249///@name Aligned arrays
250 DECLARE_ALIGNED(32, INTFLOAT, coeffs)[AC3_MAX_CHANNELS][AC3_MAX_COEFS]; ///< decoded transform coefficients
251 DECLARE_ALIGNED(32, INTFLOAT, transform_coeffs)[AC3_MAX_CHANNELS][AC3_MAX_COEFS]; ///< transform coefficients
252 DECLARE_ALIGNED(32, INTFLOAT, delay)[EAC3_MAX_CHANNELS][AC3_BLOCK_SIZE]; ///< delay - added to the next block
253#if USE_FIXED
254 int delay_coeff_bits[2]; ///< coefficient format of delay[], per substream
255#endif
256 DECLARE_ALIGNED(32, INTFLOAT, window)[AC3_BLOCK_SIZE]; ///< window coefficients
257 DECLARE_ALIGNED(32, INTFLOAT, tmp_output)[AC3_BLOCK_SIZE]; ///< temporary storage for output before windowing
258 DECLARE_ALIGNED(32, SHORTFLOAT, output)[EAC3_MAX_CHANNELS][AC3_BLOCK_SIZE]; ///< output after imdct transform and windowing
259 DECLARE_ALIGNED(32, uint8_t, input_buffer)[AC3_FRAME_BUFFER_SIZE + AV_INPUT_BUFFER_PADDING_SIZE]; ///< temp buffer to prevent overread
260 DECLARE_ALIGNED(32, SHORTFLOAT, output_buffer)[EAC3_MAX_CHANNELS][AC3_BLOCK_SIZE * 6]; ///< final output buffer
261///@}
263
264struct AC3HeaderInfo;
265
266/**
267 * Parse the E-AC-3 frame header.
268 * This parses both the bit stream info and audio frame header.
269 */
271
272/**
273 * Decode mantissas in a single channel for the entire frame.
274 * This is used when AHT mode is enabled.
275 */
277
278/**
279 * Apply spectral extension to each channel by copying lower frequency
280 * coefficients to higher frequency bins and applying side information to
281 * approximate the original high frequency signal.
282 */
284
285#if (!USE_FIXED)
286extern float ff_ac3_heavy_dynamic_range_tab[256];
287#endif
288
289#endif /* AVCODEC_AC3DEC_H */
float SHORTFLOAT
Common code between the AC-3 encoder and decoder.
static av_unused void ff_eac3_apply_spectral_extension(AC3DecodeContext *s)
Apply spectral extension to each channel by copying lower frequency coefficients to higher frequency ...
static av_unused void ff_eac3_decode_transform_coeffs_aht_ch(AC3DecodeContext *s, int ch)
Decode mantissas in a single channel for the entire frame.
static av_unused int ff_eac3_parse_header(AC3DecodeContext *s, const struct AC3HeaderInfo *hdr)
Parse the E-AC-3 frame header.
#define EAC3_MAX_CHANNELS
maximum number of channels in EAC3
Definition ac3defs.h:25
#define AC3_MAX_CHANNELS
maximum number of channels, including coupling channel
Definition ac3defs.h:26
#define AC3_BLOCK_SIZE
Definition ac3defs.h:30
#define AC3_CRITICAL_BANDS
Definition ac3defs.h:34
#define AC3_MAX_BLOCKS
Definition ac3defs.h:31
#define AC3_MAX_CPL_BANDS
Definition ac3defs.h:35
#define AC3_MAX_COEFS
Definition ac3defs.h:29
Libavcodec external API header.
#define s(width, name)
Definition cbs_vp9.c:198
#define INTFLOAT
static SDL_Window * window
Definition ffplay.c:369
bitstream reader API header.
#define AV_INPUT_BUFFER_PADDING_SIZE
Required number of additionally allocated bytes at the end of the input bitstream for decoding.
Definition defs.h:40
float ff_ac3_heavy_dynamic_range_tab[256]
Definition ac3dec.c:53
#define av_unused
Definition attributes.h:164
int preferred_stereo_downmix
Definition ac3dec.h:130
AC3BitAllocParameters bit_alloc_params
bit allocation parameters
Definition ac3dec.h:223
int dba_mode[AC3_MAX_CHANNELS]
delta bit allocation mode
Definition ac3dec.h:231
int dolby_surround_mode
dolby surround mode (dsurmod)
Definition ac3dec.h:125
uint8_t cpl_band_struct[AC3_MAX_CPL_BANDS]
Definition ac3dec.h:155
AVTXContext * tx_128
Definition ac3dec.h:87
AC3DSPContext ac3dsp
Definition ac3dec.h:84
int num_rematrixing_bands
number of rematrixing bands (nrematbnd)
Definition ac3dec.h:212
int phase_flags[AC3_MAX_CPL_BANDS]
phase flags (phsflg)
Definition ac3dec.h:153
int dialog_normalization[2]
dialog level in dBFS (dialnorm)
Definition ac3dec.h:112
int superframe_size
current superframe size, in bytes
Definition ac3dec.h:103
int center_mix_level_ltrt
Center mix level index for Lt/Rt (ltrtcmixlev).
Definition ac3dec.h:117
int out_channels
number of output channels
Definition ac3dec.h:191
int first_cpl_leak
first coupling leak state (firstcplleak)
Definition ac3dec.h:224
int8_t spx_atten_code[AC3_MAX_CHANNELS]
spx attenuation code (spxattencod)
Definition ac3dec.h:166
DECLARE_ALIGNED(32, INTFLOAT, transform_coeffs)[AC3_MAX_CHANNELS][AC3_MAX_COEFS]
transform coefficients
float ltrt_surround_mix_level
Definition ac3dec.h:132
int fbw_channels
number of full-bandwidth channels
Definition ac3dec.h:185
AVFixedDSPContext * fdsp
Definition ac3dec.h:80
int cpl_coords[AC3_MAX_CHANNELS][AC3_MAX_CPL_BANDS]
coupling coordinates (cplco)
Definition ac3dec.h:159
GetBitContext gbc
bitstream reader
Definition ac3dec.h:75
uint8_t dba_offsets[AC3_MAX_CHANNELS][8]
delta segment offsets
Definition ac3dec.h:233
int output_mode
output channel configuration
Definition ac3dec.h:189
int num_exp_groups[AC3_MAX_CHANNELS]
Number of exponent groups (nexpgrp).
Definition ac3dec.h:217
AVCodecContext * avctx
parent context
Definition ac3dec.h:74
int start_freq[AC3_MAX_CHANNELS]
start frequency bin (strtmant)
Definition ac3dec.h:203
INTFLOAT spx_signal_blend[AC3_MAX_CHANNELS][SPX_MAX_BANDS]
spx signal blending factor (sblendfact)
Definition ac3dec.h:176
int dolby_surround_ex_mode
dolby surround ex mode (dsurexmod)
Definition ac3dec.h:126
DECLARE_ALIGNED(32, INTFLOAT, coeffs)[AC3_MAX_CHANNELS][AC3_MAX_COEFS]
decoded transform coefficients
int surround_mix_level_ltrt
Surround mix level index for Lt/Rt (ltrtsurmixlev).
Definition ac3dec.h:119
float loro_surround_mix_level
Definition ac3dec.h:134
int dba_syntax
delta bit allocation syntax enabled (dbaflde)
Definition ac3dec.h:144
int snr_offset_strategy
SNR offset strategy (snroffststr).
Definition ac3dec.h:139
DECLARE_ALIGNED(32, INTFLOAT, tmp_output)[AC3_BLOCK_SIZE]
temporary storage for output before windowing
int cpl_in_use[AC3_MAX_BLOCKS]
coupling in use (cplinu)
Definition ac3dec.h:149
int consistent_noise_generation
seed noise generation with AC-3 frame on decode
Definition ac3dec.h:208
int bitstream_id
bitstream id (bsid)
Definition ac3dec.h:108
int bit_allocation_syntax
bit allocation model syntax enabled (bamode)
Definition ac3dec.h:142
int downmixed
indicates if coeffs are currently downmixed
Definition ac3dec.h:188
int prev_output_mode
output channel configuration for previous frame
Definition ac3dec.h:190
int target_level
target level in dBFS
Definition ac3dec.h:135
uint8_t dba_values[AC3_MAX_CHANNELS][8]
delta values for each segment
Definition ac3dec.h:235
DECLARE_ALIGNED(32, INTFLOAT, delay)[EAC3_MAX_CHANNELS][AC3_BLOCK_SIZE]
delay - added to the next block
int snr_offset[AC3_MAX_CHANNELS]
signal-to-noise ratio offsets (snroffst)
Definition ac3dec.h:225
INTFLOAT * xcfptr[AC3_MAX_CHANNELS]
Definition ac3dec.h:90
int preferred_downmix
Preferred 2-channel downmix mode (dmixmod).
Definition ac3dec.h:115
int16_t mask[AC3_MAX_CHANNELS][AC3_CRITICAL_BANDS]
masking curve values
Definition ac3dec.h:230
int dolby_headphone_mode
dolby headphone mode (dheadphonmod)
Definition ac3dec.h:127
int cpl_strategy_exists[AC3_MAX_BLOCKS]
coupling strategy exists (cplstre)
Definition ac3dec.h:150
int channels
number of total channels
Definition ac3dec.h:186
int dither_flag_syntax
dither flag syntax enabled (dithflage)
Definition ac3dec.h:141
INTFLOAT drc_scale
percentage of dynamic range compression to be applied
Definition ac3dec.h:197
int eac3_subsbtreamid_found
bitstream has E-AC-3 additional substream(s)
Definition ac3dec.h:123
int first_cpl_coords[AC3_MAX_CHANNELS]
first coupling coordinates states (firstcplcos)
Definition ac3dec.h:158
uint8_t dba_lengths[AC3_MAX_CHANNELS][8]
delta segment lengths
Definition ac3dec.h:234
INTFLOAT spx_noise_blend[AC3_MAX_CHANNELS][SPX_MAX_BANDS]
spx noise blending factor (nblendfact)
Definition ac3dec.h:175
int substreamid
substream identification
Definition ac3dec.h:102
DECLARE_ALIGNED(32, INTFLOAT, window)[AC3_BLOCK_SIZE]
window coefficients
int exp_strategy[AC3_MAX_BLOCKS][AC3_MAX_CHANNELS]
exponent strategies (expstr)
Definition ac3dec.h:219
int frame_size
current frame size, in bytes
Definition ac3dec.h:104
INTFLOAT heavy_dynamic_range[2]
heavy dynamic range compression
Definition ac3dec.h:199
int firstchincpl
first channel in coupling
Definition ac3dec.h:157
DECLARE_ALIGNED(32, uint8_t, input_buffer)[AC3_FRAME_BUFFER_SIZE+AV_INPUT_BUFFER_PADDING_SIZE]
temp buffer to prevent overread
int spx_dst_end_freq
spx end frequency bin
Definition ac3dec.h:168
int frame_type
frame type (strmtyp)
Definition ac3dec.h:101
int phase_flags_in_use
phase flags in use (phsflginu)
Definition ac3dec.h:152
BswapDSPContext bdsp
Definition ac3dec.h:78
int lfe_mix_level
LFE mix level index (lfemixlevcod).
Definition ac3dec.h:121
int fast_gain_syntax
fast gain codes enabled (frmfgaincode)
Definition ac3dec.h:143
int lfe_on
lfe channel in use
Definition ac3dec.h:111
AVTXContext * tx_256
Definition ac3dec.h:87
int sample_rate
sample frequency, in Hz
Definition ac3dec.h:106
int center_mix_level
Center mix level index.
Definition ac3dec.h:116
int fast_gain[AC3_MAX_CHANNELS]
fast gain values/SMR's (fgain)
Definition ac3dec.h:226
uint8_t channel_uses_spx[AC3_MAX_CHANNELS]
channel uses spectral extension (chinspx)
Definition ac3dec.h:165
int spx_dst_start_freq
spx starting frequency bin for copying (copystartmant) the copy region ends at the start of the spx r...
Definition ac3dec.h:169
int surround_mix_level
Surround mix level index.
Definition ac3dec.h:118
int prev_bit_rate
stream bit rate, in bits-per-second for previous frame
Definition ac3dec.h:192
DECLARE_ALIGNED(32, SHORTFLOAT, output_buffer)[EAC3_MAX_CHANNELS][AC3_BLOCK_SIZE *6]
final output buffer
av_tx_fn tx_fn_256
Definition ac3dec.h:88
int spx_in_use
spectral extension in use (spxinu)
Definition ac3dec.h:164
int lfe_mix_level_exists
indicates if lfemixlevcod is specified (lfemixlevcode)
Definition ac3dec.h:120
float loro_center_mix_level
Definition ac3dec.h:133
int channel_map
custom channel map (chanmap)
Definition ac3dec.h:114
uint8_t spx_band_struct[SPX_MAX_BANDS]
Definition ac3dec.h:172
int bitstream_mode
bitstream mode (bsmod)
Definition ac3dec.h:109
int rematrixing_flags[4]
rematrixing flags (rematflg)
Definition ac3dec.h:213
AVLFG dith_state
for dither generation
Definition ac3dec.h:240
SHORTFLOAT * outptr[AC3_MAX_CHANNELS]
Definition ac3dec.h:247
int bit_rate
stream bit rate, in bits-per-second
Definition ac3dec.h:105
uint8_t spx_band_sizes[SPX_MAX_BANDS]
number of bins in each spx band
Definition ac3dec.h:173
int num_spx_bands
number of spx bands (nspxbnds)
Definition ac3dec.h:171
av_tx_fn tx_fn_128
Definition ac3dec.h:88
int channel_in_cpl[AC3_MAX_CHANNELS]
channel in coupling (chincpl)
Definition ac3dec.h:151
float ltrt_center_mix_level
Definition ac3dec.h:131
int heavy_compression
apply heavy compression
Definition ac3dec.h:198
int eac3
indicates if current frame is E-AC-3
Definition ac3dec.h:122
int pre_mantissa[AC3_MAX_CHANNELS][AC3_MAX_COEFS][AC3_MAX_BLOCKS]
pre-IDCT mantissas
Definition ac3dec.h:181
int channel_uses_aht[AC3_MAX_CHANNELS]
channel AHT in use (chahtinu)
Definition ac3dec.h:180
int eac3_extension_type_a
bitstream has E-AC-3 extension type A enabled frame(s)
Definition ac3dec.h:124
uint8_t first_spx_coords[AC3_MAX_CHANNELS]
first spx coordinates states (firstspxcos)
Definition ac3dec.h:174
int spx_src_start_freq
spx start frequency bin
Definition ac3dec.h:167
int skip_syntax
skip field syntax enabled (skipflde)
Definition ac3dec.h:145
int dba_nsegs[AC3_MAX_CHANNELS]
number of delta segments
Definition ac3dec.h:232
int16_t band_psd[AC3_MAX_CHANNELS][AC3_CRITICAL_BANDS]
interpolated exponents
Definition ac3dec.h:229
int channel_mode
channel mode (acmod)
Definition ac3dec.h:110
int16_t psd[AC3_MAX_CHANNELS][AC3_MAX_COEFS]
scaled exponents
Definition ac3dec.h:228
DECLARE_ALIGNED(32, SHORTFLOAT, output)[EAC3_MAX_CHANNELS][AC3_BLOCK_SIZE]
output after imdct transform and windowing
uint8_t cpl_band_sizes[AC3_MAX_CPL_BANDS]
number of coeffs in each coupling band
Definition ac3dec.h:156
SHORTFLOAT * downmix_coeffs[2]
stereo downmix coefficients
Definition ac3dec.h:94
int num_cpl_bands
number of coupling bands (ncplbnd)
Definition ac3dec.h:154
float level_gain[2]
Definition ac3dec.h:136
AVChannelLayout downmix_layout
Definition ac3dec.h:93
INTFLOAT * dlyptr[AC3_MAX_CHANNELS]
Definition ac3dec.h:91
int block_switch_syntax
block switch syntax enabled (blkswe)
Definition ac3dec.h:140
int block_switch[AC3_MAX_CHANNELS]
block switch flags (blksw)
Definition ac3dec.h:244
int dither_flag[AC3_MAX_CHANNELS]
dither flags (dithflg)
Definition ac3dec.h:239
int lfe_ch
index of LFE channel
Definition ac3dec.h:187
INTFLOAT dynamic_range[2]
dynamic range
Definition ac3dec.h:196
uint8_t bap[AC3_MAX_CHANNELS][AC3_MAX_COEFS]
bit allocation pointers
Definition ac3dec.h:227
int end_freq[AC3_MAX_CHANNELS]
end frequency bin (endmant)
Definition ac3dec.h:204
int delay_coeff_bits[2]
coefficient format of delay[], per substream
Definition ac3dec.h:254
int8_t dexps[AC3_MAX_CHANNELS][AC3_MAX_COEFS]
decoded exponents
Definition ac3dec.h:218
int num_blocks
number of audio blocks
Definition ac3dec.h:107
int compression_exists[2]
compression field is valid for frame (compre)
Definition ac3dec.h:113
Coded AC-3 header values up to the lfeon element, plus derived values.
An AVChannelLayout holds information about the channel layout of audio data.
Describe the class of an AVClass context structure.
Definition log.h:76
main external API structure.
Definition avcodec.h:443
Context structure for the Lagged Fibonacci PRNG.
Definition lfg.h:33
void(* av_tx_fn)(AVTXContext *s, void *out, void *in, ptrdiff_t stride)
Function pointer to a function to perform the transform.
Definition tx.h:151