Mercurial > libavcodec.hg
annotate ac3dec.h @ 11352:6e0af2cfdcfe libavcodec
Do MC and IDCT in coding (hilbert) order
This increases the slice size to 64 pixels, due to having to decode an
entire chroma superblock row per slice.
This can be up to 6% slower depending on clip and CPU, but is necessary
for future optimizations that gain significantly more than was lost.
author | conrad |
---|---|
date | Wed, 03 Mar 2010 23:27:40 +0000 |
parents | 34a65026fa06 |
children | 98970e51365a |
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 | 27 #ifndef AVCODEC_AC3DEC_H |
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 | 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 | 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 | 42 #define AC3_MAX_COEFS 256 |
43 #define AC3_BLOCK_SIZE 256 | |
7026 | 44 #define MAX_BLOCKS 6 |
7023 | 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 | 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 | 92 int channel_uses_aht[AC3_MAX_CHANNELS]; ///< channel AHT in use (chahtinu) |
7465 | 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 | 97 int fbw_channels; ///< number of full-bandwidth channels |
98 int channels; ///< number of total channels | |
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 | 102 int output_mode; ///< output channel configuration |
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 | 122 int8_t dexps[AC3_MAX_CHANNELS][AC3_MAX_COEFS]; ///< decoded exponents |
7027 | 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 | 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 | 131 uint8_t bap[AC3_MAX_CHANNELS][AC3_MAX_COEFS]; ///< bit allocation pointers |
132 int16_t psd[AC3_MAX_CHANNELS][AC3_MAX_COEFS]; ///< scaled exponents | |
7024 | 133 int16_t band_psd[AC3_MAX_CHANNELS][50]; ///< interpolated exponents |
134 int16_t mask[AC3_MAX_CHANNELS][50]; ///< masking curve values | |
135 int dba_mode[AC3_MAX_CHANNELS]; ///< delta bit allocation mode | |
136 int dba_nsegs[AC3_MAX_CHANNELS]; ///< number of delta segments | |
137 uint8_t dba_offsets[AC3_MAX_CHANNELS][8]; ///< delta segment offsets | |
138 uint8_t dba_lengths[AC3_MAX_CHANNELS][8]; ///< delta segment lengths | |
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 | 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) |
10199 | 149 FFTContext imdct_512; ///< for 512 sample IMDCT |
150 FFTContext 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 | 154 DSPContext dsp; ///< for optimization |
155 float add_bias; ///< offset for float_to_int16 conversion | |
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 |
7021
49afffc0dc60
cosmetics: reorder decode context fields into logical groups
jbr
parents:
7020
diff
changeset
|
159 ///@defgroup arrays aligned arrays |
10961
34a65026fa06
Move array specifiers outside DECLARE_ALIGNED() invocations
mru
parents:
10199
diff
changeset
|
160 DECLARE_ALIGNED_16(int, fixed_coeffs)[AC3_MAX_CHANNELS][AC3_MAX_COEFS]; ///> fixed-point transform coefficients |
34a65026fa06
Move array specifiers outside DECLARE_ALIGNED() invocations
mru
parents:
10199
diff
changeset
|
161 DECLARE_ALIGNED_16(float, transform_coeffs)[AC3_MAX_CHANNELS][AC3_MAX_COEFS]; ///< transform coefficients |
34a65026fa06
Move array specifiers outside DECLARE_ALIGNED() invocations
mru
parents:
10199
diff
changeset
|
162 DECLARE_ALIGNED_16(float, delay)[AC3_MAX_CHANNELS][AC3_BLOCK_SIZE]; ///< delay - added to the next block |
34a65026fa06
Move array specifiers outside DECLARE_ALIGNED() invocations
mru
parents:
10199
diff
changeset
|
163 DECLARE_ALIGNED_16(float, window)[AC3_BLOCK_SIZE]; ///< window coefficients |
34a65026fa06
Move array specifiers outside DECLARE_ALIGNED() invocations
mru
parents:
10199
diff
changeset
|
164 DECLARE_ALIGNED_16(float, tmp_output)[AC3_BLOCK_SIZE]; ///< temporary storage for output before windowing |
34a65026fa06
Move array specifiers outside DECLARE_ALIGNED() invocations
mru
parents:
10199
diff
changeset
|
165 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
|
166 ///@} |
7020
40a2db8dbaa2
move the decode context and some macro constants to a new file, ac3dec.h
jbr
parents:
diff
changeset
|
167 } AC3DecodeContext; |
40a2db8dbaa2
move the decode context and some macro constants to a new file, ac3dec.h
jbr
parents:
diff
changeset
|
168 |
7704
b928055716e5
add definitions and documentation for shared functions for E-AC-3 decoding
jbr
parents:
7703
diff
changeset
|
169 /** |
b928055716e5
add definitions and documentation for shared functions for E-AC-3 decoding
jbr
parents:
7703
diff
changeset
|
170 * 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
|
171 * 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
|
172 */ |
b928055716e5
add definitions and documentation for shared functions for E-AC-3 decoding
jbr
parents:
7703
diff
changeset
|
173 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
|
174 |
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 * 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
|
177 * 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
|
178 */ |
b928055716e5
add definitions and documentation for shared functions for E-AC-3 decoding
jbr
parents:
7703
diff
changeset
|
179 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
|
180 |
7760 | 181 #endif /* AVCODEC_AC3DEC_H */ |