annotate ac3dec.h @ 9473:e38284cd69dc libavcodec

Use memcpy instead of the very inefficient bytecopy where both are correct (i.e. no overlap of src and dst is possible).
author reimar
date Fri, 17 Apr 2009 17:20:48 +0000
parents 0dce4fe6e6f3
children ba5d9a97ab2f
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
8957
9396eb8808ca Add missing #includes to fix 'make checkheaders'.
diego
parents: 8718
diff changeset
30 #include "libavutil/internal.h"
7601
69d5f318275f use LFG instead of Mersenne Twister for AC-3 PRNG
jbr
parents: 7564
diff changeset
31 #include "libavutil/lfg.h"
7020
40a2db8dbaa2 move the decode context and some macro constants to a new file, ac3dec.h
jbr
parents:
diff changeset
32 #include "ac3.h"
9428
0dce4fe6e6f3 Rename bitstream.h to get_bits.h.
stefano
parents: 8957
diff changeset
33 #include "get_bits.h"
7020
40a2db8dbaa2 move the decode context and some macro constants to a new file, ac3dec.h
jbr
parents:
diff changeset
34 #include "dsputil.h"
40a2db8dbaa2 move the decode context and some macro constants to a new file, ac3dec.h
jbr
parents:
diff changeset
35
40a2db8dbaa2 move the decode context and some macro constants to a new file, ac3dec.h
jbr
parents:
diff changeset
36 /* 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
37 #undef AC3_MAX_CHANNELS
40a2db8dbaa2 move the decode context and some macro constants to a new file, ac3dec.h
jbr
parents:
diff changeset
38 #define AC3_MAX_CHANNELS 7
40a2db8dbaa2 move the decode context and some macro constants to a new file, ac3dec.h
jbr
parents:
diff changeset
39 #define CPL_CH 0
40a2db8dbaa2 move the decode context and some macro constants to a new file, ac3dec.h
jbr
parents:
diff changeset
40
40a2db8dbaa2 move the decode context and some macro constants to a new file, ac3dec.h
jbr
parents:
diff changeset
41 #define AC3_OUTPUT_LFEON 8
40a2db8dbaa2 move the decode context and some macro constants to a new file, ac3dec.h
jbr
parents:
diff changeset
42
7023
54d22db12c03 use macro constants for array sizes in decode context
jbr
parents: 7022
diff changeset
43 #define AC3_MAX_COEFS 256
54d22db12c03 use macro constants for array sizes in decode context
jbr
parents: 7022
diff changeset
44 #define AC3_BLOCK_SIZE 256
7026
4bd2ccb0619e store cpl_in_use for all blocks in decode context
jbr
parents: 7025
diff changeset
45 #define MAX_BLOCKS 6
7023
54d22db12c03 use macro constants for array sizes in decode context
jbr
parents: 7022
diff changeset
46
7020
40a2db8dbaa2 move the decode context and some macro constants to a new file, ac3dec.h
jbr
parents:
diff changeset
47 typedef struct {
7021
49afffc0dc60 cosmetics: reorder decode context fields into logical groups
jbr
parents: 7020
diff changeset
48 AVCodecContext *avctx; ///< parent context
49afffc0dc60 cosmetics: reorder decode context fields into logical groups
jbr
parents: 7020
diff changeset
49 GetBitContext gbc; ///< bitstream reader
49afffc0dc60 cosmetics: reorder decode context fields into logical groups
jbr
parents: 7020
diff changeset
50 uint8_t *input_buffer; ///< temp buffer to prevent overread
49afffc0dc60 cosmetics: reorder decode context fields into logical groups
jbr
parents: 7020
diff changeset
51
49afffc0dc60 cosmetics: reorder decode context fields into logical groups
jbr
parents: 7020
diff changeset
52 ///@defgroup bsi bit stream information
49afffc0dc60 cosmetics: reorder decode context fields into logical groups
jbr
parents: 7020
diff changeset
53 ///@{
7025
acf98a472f74 cosmetics: add and align references to spec variable names
jbr
parents: 7024
diff changeset
54 int frame_type; ///< frame type (strmtyp)
7021
49afffc0dc60 cosmetics: reorder decode context fields into logical groups
jbr
parents: 7020
diff changeset
55 int substreamid; ///< substream identification
49afffc0dc60 cosmetics: reorder decode context fields into logical groups
jbr
parents: 7020
diff changeset
56 int frame_size; ///< current frame size, in bytes
49afffc0dc60 cosmetics: reorder decode context fields into logical groups
jbr
parents: 7020
diff changeset
57 int bit_rate; ///< stream bit rate, in bits-per-second
49afffc0dc60 cosmetics: reorder decode context fields into logical groups
jbr
parents: 7020
diff changeset
58 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
59 int num_blocks; ///< number of audio blocks
7025
acf98a472f74 cosmetics: add and align references to spec variable names
jbr
parents: 7024
diff changeset
60 int channel_mode; ///< channel mode (acmod)
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_subbands; ///< number of coupling sub bands (ncplsubnd)
acf98a472f74 cosmetics: add and align references to spec variable names
jbr
parents: 7024
diff changeset
85 int num_cpl_bands; ///< number of coupling bands (ncplbnd)
7703
3c531ec92268 copy default coupling band structure from table to decoding context (used for E-AC-3)
jbr
parents: 7685
diff changeset
86 uint8_t cpl_band_struct[18]; ///< coupling band structure (cplbndstrc)
7031
4b9d8cd9a1f0 add fields needed for E-AC-3 decoding to decode context
jbr
parents: 7027
diff changeset
87 int firstchincpl; ///< first channel in coupling
4b9d8cd9a1f0 add fields needed for E-AC-3 decoding to decode context
jbr
parents: 7027
diff changeset
88 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
89 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
90 ///@}
49afffc0dc60 cosmetics: reorder decode context fields into logical groups
jbr
parents: 7020
diff changeset
91
7031
4b9d8cd9a1f0 add fields needed for E-AC-3 decoding to decode context
jbr
parents: 7027
diff changeset
92 ///@defgroup aht adaptive hybrid transform
7466
3cb3c85c8474 cosmetics: vertical alignment
jbr
parents: 7465
diff changeset
93 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
94 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
95 ///@}
4b9d8cd9a1f0 add fields needed for E-AC-3 decoding to decode context
jbr
parents: 7027
diff changeset
96
7021
49afffc0dc60 cosmetics: reorder decode context fields into logical groups
jbr
parents: 7020
diff changeset
97 ///@defgroup channel channel
7022
b4753ad6e34d cosmetics: vertical align
jbr
parents: 7021
diff changeset
98 int fbw_channels; ///< number of full-bandwidth channels
b4753ad6e34d cosmetics: vertical align
jbr
parents: 7021
diff changeset
99 int channels; ///< number of total channels
b4753ad6e34d cosmetics: vertical align
jbr
parents: 7021
diff changeset
100 int lfe_ch; ///< index of LFE channel
7021
49afffc0dc60 cosmetics: reorder decode context fields into logical groups
jbr
parents: 7020
diff changeset
101 float downmix_coeffs[AC3_MAX_CHANNELS][2]; ///< stereo downmix coefficients
49afffc0dc60 cosmetics: reorder decode context fields into logical groups
jbr
parents: 7020
diff changeset
102 int downmixed; ///< indicates if coeffs are currently downmixed
7022
b4753ad6e34d cosmetics: vertical align
jbr
parents: 7021
diff changeset
103 int output_mode; ///< output channel configuration
b4753ad6e34d cosmetics: vertical align
jbr
parents: 7021
diff changeset
104 int out_channels; ///< number of output channels
7021
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
49afffc0dc60 cosmetics: reorder decode context fields into logical groups
jbr
parents: 7020
diff changeset
107 ///@defgroup dynrng dynamic range
49afffc0dc60 cosmetics: reorder decode context fields into logical groups
jbr
parents: 7020
diff changeset
108 float dynamic_range[2]; ///< dynamic range
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
49afffc0dc60 cosmetics: reorder decode context fields into logical groups
jbr
parents: 7020
diff changeset
111 ///@defgroup bandwidth bandwidth
7025
acf98a472f74 cosmetics: add and align references to spec variable names
jbr
parents: 7024
diff changeset
112 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
113 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
114 ///@}
49afffc0dc60 cosmetics: reorder decode context fields into logical groups
jbr
parents: 7020
diff changeset
115
49afffc0dc60 cosmetics: reorder decode context fields into logical groups
jbr
parents: 7020
diff changeset
116 ///@defgroup rematrixing rematrixing
7025
acf98a472f74 cosmetics: add and align references to spec variable names
jbr
parents: 7024
diff changeset
117 int num_rematrixing_bands; ///< number of rematrixing bands (nrematbnd)
acf98a472f74 cosmetics: add and align references to spec variable names
jbr
parents: 7024
diff changeset
118 int rematrixing_flags[4]; ///< rematrixing flags (rematflg)
7021
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
49afffc0dc60 cosmetics: reorder decode context fields into logical groups
jbr
parents: 7020
diff changeset
121 ///@defgroup exponents exponents
7025
acf98a472f74 cosmetics: add and align references to spec variable names
jbr
parents: 7024
diff changeset
122 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
123 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
124 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
125 ///@}
49afffc0dc60 cosmetics: reorder decode context fields into logical groups
jbr
parents: 7020
diff changeset
126
49afffc0dc60 cosmetics: reorder decode context fields into logical groups
jbr
parents: 7020
diff changeset
127 ///@defgroup bitalloc bit allocation
7024
7781b4d9cca2 cosmetics: vertical align
jbr
parents: 7023
diff changeset
128 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
129 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
130 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
131 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
132 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
133 int16_t psd[AC3_MAX_CHANNELS][AC3_MAX_COEFS]; ///< scaled exponents
7024
7781b4d9cca2 cosmetics: vertical align
jbr
parents: 7023
diff changeset
134 int16_t band_psd[AC3_MAX_CHANNELS][50]; ///< interpolated exponents
7781b4d9cca2 cosmetics: vertical align
jbr
parents: 7023
diff changeset
135 int16_t mask[AC3_MAX_CHANNELS][50]; ///< masking curve values
7781b4d9cca2 cosmetics: vertical align
jbr
parents: 7023
diff changeset
136 int dba_mode[AC3_MAX_CHANNELS]; ///< delta bit allocation mode
7781b4d9cca2 cosmetics: vertical align
jbr
parents: 7023
diff changeset
137 int dba_nsegs[AC3_MAX_CHANNELS]; ///< number of delta segments
7781b4d9cca2 cosmetics: vertical align
jbr
parents: 7023
diff changeset
138 uint8_t dba_offsets[AC3_MAX_CHANNELS][8]; ///< delta segment offsets
7781b4d9cca2 cosmetics: vertical align
jbr
parents: 7023
diff changeset
139 uint8_t dba_lengths[AC3_MAX_CHANNELS][8]; ///< delta segment lengths
7781b4d9cca2 cosmetics: vertical align
jbr
parents: 7023
diff changeset
140 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
141 ///@}
7020
40a2db8dbaa2 move the decode context and some macro constants to a new file, ac3dec.h
jbr
parents:
diff changeset
142
7021
49afffc0dc60 cosmetics: reorder decode context fields into logical groups
jbr
parents: 7020
diff changeset
143 ///@defgroup dithering zero-mantissa dithering
7025
acf98a472f74 cosmetics: add and align references to spec variable names
jbr
parents: 7024
diff changeset
144 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
145 AVLFG dith_state; ///< for dither generation
7021
49afffc0dc60 cosmetics: reorder decode context fields into logical groups
jbr
parents: 7020
diff changeset
146 ///@}
7020
40a2db8dbaa2 move the decode context and some macro constants to a new file, ac3dec.h
jbr
parents:
diff changeset
147
7021
49afffc0dc60 cosmetics: reorder decode context fields into logical groups
jbr
parents: 7020
diff changeset
148 ///@defgroup imdct IMDCT
7025
acf98a472f74 cosmetics: add and align references to spec variable names
jbr
parents: 7024
diff changeset
149 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
150 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
151 MDCTContext imdct_256; ///< for 256 sample IMDCT
7021
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
49afffc0dc60 cosmetics: reorder decode context fields into logical groups
jbr
parents: 7020
diff changeset
154 ///@defgroup opt optimization
7022
b4753ad6e34d cosmetics: vertical align
jbr
parents: 7021
diff changeset
155 DSPContext dsp; ///< for optimization
b4753ad6e34d cosmetics: vertical align
jbr
parents: 7021
diff changeset
156 float add_bias; ///< offset for float_to_int16 conversion
b4753ad6e34d cosmetics: vertical align
jbr
parents: 7021
diff changeset
157 float mul_bias; ///< scaling for float_to_int16 conversion
7021
49afffc0dc60 cosmetics: reorder decode context fields into logical groups
jbr
parents: 7020
diff changeset
158 ///@}
7020
40a2db8dbaa2 move the decode context and some macro constants to a new file, ac3dec.h
jbr
parents:
diff changeset
159
7564
7cf793954871 simd int->float
lorenm
parents: 7554
diff changeset
160 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
161
49afffc0dc60 cosmetics: reorder decode context fields into logical groups
jbr
parents: 7020
diff changeset
162 ///@defgroup arrays aligned arrays
7023
54d22db12c03 use macro constants for array sizes in decode context
jbr
parents: 7022
diff changeset
163 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
164 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
165 DECLARE_ALIGNED_16(float, window[AC3_BLOCK_SIZE]); ///< window coefficients
7549
60b5c1e5a7ee use imdct_half in ac3
lorenm
parents: 7546
diff changeset
166 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
167 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
168 ///@}
7020
40a2db8dbaa2 move the decode context and some macro constants to a new file, ac3dec.h
jbr
parents:
diff changeset
169 } AC3DecodeContext;
40a2db8dbaa2 move the decode context and some macro constants to a new file, ac3dec.h
jbr
parents:
diff changeset
170
7704
b928055716e5 add definitions and documentation for shared functions for E-AC-3 decoding
jbr
parents: 7703
diff changeset
171 /**
b928055716e5 add definitions and documentation for shared functions for E-AC-3 decoding
jbr
parents: 7703
diff changeset
172 * 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
173 * 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
174 */
b928055716e5 add definitions and documentation for shared functions for E-AC-3 decoding
jbr
parents: 7703
diff changeset
175 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
176
b928055716e5 add definitions and documentation for shared functions for E-AC-3 decoding
jbr
parents: 7703
diff changeset
177 /**
b928055716e5 add definitions and documentation for shared functions for E-AC-3 decoding
jbr
parents: 7703
diff changeset
178 * 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
179 * 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
180 */
b928055716e5 add definitions and documentation for shared functions for E-AC-3 decoding
jbr
parents: 7703
diff changeset
181 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
182
7760
c4a4495715dd Globally rename the header inclusion guard names.
stefano
parents: 7716
diff changeset
183 #endif /* AVCODEC_AC3DEC_H */