FFmpeg
ac3enc.h
Go to the documentation of this file.
1 /*
2  * AC-3 encoder & E-AC-3 encoder common header
3  * Copyright (c) 2000 Fabrice Bellard
4  * Copyright (c) 2006-2010 Justin Ruggles <justin.ruggles@gmail.com>
5  *
6  * This file is part of FFmpeg.
7  *
8  * FFmpeg is free software; you can redistribute it and/or
9  * modify it under the terms of the GNU Lesser General Public
10  * License as published by the Free Software Foundation; either
11  * version 2.1 of the License, or (at your option) any later version.
12  *
13  * FFmpeg is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16  * Lesser General Public License for more details.
17  *
18  * You should have received a copy of the GNU Lesser General Public
19  * License along with FFmpeg; if not, write to the Free Software
20  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
21  */
22 
23 /**
24  * @file
25  * AC-3 encoder & E-AC-3 encoder common header
26  */
27 
28 #ifndef AVCODEC_AC3ENC_H
29 #define AVCODEC_AC3ENC_H
30 
31 #include <stdint.h>
32 
33 #include "libavutil/opt.h"
34 #include "libavutil/tx.h"
35 
36 #include "ac3.h"
37 #include "ac3defs.h"
38 #include "ac3dsp.h"
39 #include "avcodec.h"
40 #include "codec_internal.h"
41 #include "mathops.h"
42 #include "me_cmp.h"
43 #include "put_bits.h"
44 #include "audiodsp.h"
45 
46 #ifndef AC3ENC_FLOAT
47 #define AC3ENC_FLOAT 0
48 #endif
49 
50 #if AC3ENC_FLOAT
51 #include "libavutil/float_dsp.h"
52 #define AC3_NAME(x) ff_ac3_float_ ## x
53 #define MAC_COEF(d,a,b) ((d)+=(a)*(b))
54 #define COEF_MIN (-16777215.0/16777216.0)
55 #define COEF_MAX ( 16777215.0/16777216.0)
56 #define NEW_CPL_COORD_THRESHOLD 0.03
57 typedef float SampleType;
58 typedef float CoefType;
59 typedef float CoefSumType;
60 #else
61 #include "libavutil/fixed_dsp.h"
62 #define AC3_NAME(x) ff_ac3_fixed_ ## x
63 #define MAC_COEF(d,a,b) MAC64(d,a,b)
64 #define COEF_MIN -16777215
65 #define COEF_MAX 16777215
66 #define NEW_CPL_COORD_THRESHOLD 503317
68 typedef int32_t CoefType;
69 typedef int64_t CoefSumType;
70 #endif
71 
72 /* common option values */
73 #define AC3ENC_OPT_NONE -1
74 #define AC3ENC_OPT_AUTO -1
75 #define AC3ENC_OPT_OFF 0
76 #define AC3ENC_OPT_ON 1
77 #define AC3ENC_OPT_NOT_INDICATED 0
78 #define AC3ENC_OPT_MODE_ON 2
79 #define AC3ENC_OPT_MODE_OFF 1
80 #define AC3ENC_OPT_DSUREX_DPLIIZ 3
81 
82 /* specific option values */
83 #define AC3ENC_OPT_LARGE_ROOM 1
84 #define AC3ENC_OPT_SMALL_ROOM 2
85 #define AC3ENC_OPT_DOWNMIX_LTRT 1
86 #define AC3ENC_OPT_DOWNMIX_LORO 2
87 #define AC3ENC_OPT_DOWNMIX_DPLII 3 // reserved value in A/52, but used by encoders to indicate DPL2
88 #define AC3ENC_OPT_ADCONV_STANDARD 0
89 #define AC3ENC_OPT_ADCONV_HDCD 1
90 
91 
92 /**
93  * Encoding Options used by AVOption.
94  */
95 typedef struct AC3EncOptions {
96  /* AC-3 metadata options*/
106  int original;
119 
120  /* other encoding options */
125 } AC3EncOptions;
126 
127 /**
128  * Data for a single audio block.
129  */
130 typedef struct AC3Block {
131  CoefType **mdct_coef; ///< MDCT coefficients
132  int32_t **fixed_coef; ///< fixed-point MDCT coefficients
133  uint8_t **exp; ///< original exponents
134  uint8_t **grouped_exp; ///< grouped exponents
135  int16_t **psd; ///< psd per frequency bin
136  int16_t **band_psd; ///< psd per critical band
137  int16_t **mask; ///< masking curve
138  uint16_t **qmant; ///< quantized mantissas
139  uint8_t **cpl_coord_exp; ///< coupling coord exponents (cplcoexp)
140  uint8_t **cpl_coord_mant; ///< coupling coord mantissas (cplcomant)
141  uint8_t new_rematrixing_strategy; ///< send new rematrixing flags in this block
142  int num_rematrixing_bands; ///< number of rematrixing bands
143  uint8_t rematrixing_flags[4]; ///< rematrixing flags
144  int new_cpl_strategy; ///< send new coupling strategy
145  int cpl_in_use; ///< coupling in use for this block (cplinu)
146  uint8_t channel_in_cpl[AC3_MAX_CHANNELS]; ///< channel in coupling (chincpl)
147  int num_cpl_channels; ///< number of channels in coupling
148  uint8_t new_cpl_coords[AC3_MAX_CHANNELS]; ///< send new coupling coordinates (cplcoe)
149  uint8_t cpl_master_exp[AC3_MAX_CHANNELS]; ///< coupling coord master exponents (mstrcplco)
150  int new_snr_offsets; ///< send new SNR offsets
151  int new_cpl_leak; ///< send new coupling leak info
152  int end_freq[AC3_MAX_CHANNELS]; ///< end frequency bin (endmant)
153 } AC3Block;
154 
155 /**
156  * AC-3 encoder private context.
157  */
158 typedef struct AC3EncodeContext {
159  AVClass *av_class; ///< AVClass used for AVOption
160  AC3EncOptions options; ///< encoding options
161  AVCodecContext *avctx; ///< parent AVCodecContext
162  PutBitContext pb; ///< bitstream writer context
164 #if AC3ENC_FLOAT
166 #else
168 #endif
170  AC3DSPContext ac3dsp; ///< AC-3 optimized functions
171  AVTXContext *tx; ///< FFT context for MDCT calculation
173  const SampleType *mdct_window; ///< MDCT window function array
174 
175  AC3Block blocks[AC3_MAX_BLOCKS]; ///< per-block info
176 
177  int fixed_point; ///< indicates if fixed-point encoder is being used
178  int eac3; ///< indicates if this is E-AC-3 vs. AC-3
179  int bitstream_id; ///< bitstream id (bsid)
180  int bitstream_mode; ///< bitstream mode (bsmod)
181 
182  int bit_rate; ///< target bit rate, in bits-per-second
183  int sample_rate; ///< sampling frequency, in Hz
184 
185  int num_blks_code; ///< number of blocks code (numblkscod)
186  int num_blocks; ///< number of blocks per frame
187  int frame_size_min; ///< minimum frame size in case rounding is necessary
188  int frame_size; ///< current frame size in bytes
189  int frame_size_code; ///< frame size code (frmsizecod)
190  uint16_t crc_inv[2];
191  int64_t bits_written; ///< bit count (used to avg. bitrate)
192  int64_t samples_written; ///< sample count (used to avg. bitrate)
193 
194  int fbw_channels; ///< number of full-bandwidth channels (nfchans)
195  int channels; ///< total number of channels (nchans)
196  int lfe_on; ///< indicates if there is an LFE channel (lfeon)
197  int lfe_channel; ///< channel index of the LFE channel
198  int has_center; ///< indicates if there is a center channel
199  int has_surround; ///< indicates if there are one or more surround channels
200  int channel_mode; ///< channel mode (acmod)
201  const uint8_t *channel_map; ///< channel map used to reorder channels
202 
203  int center_mix_level; ///< center mix level code
204  int surround_mix_level; ///< surround mix level code
205  int ltrt_center_mix_level; ///< Lt/Rt center mix level code
206  int ltrt_surround_mix_level; ///< Lt/Rt surround mix level code
207  int loro_center_mix_level; ///< Lo/Ro center mix level code
208  int loro_surround_mix_level; ///< Lo/Ro surround mix level code
209 
210  int cutoff; ///< user-specified cutoff frequency, in Hz
211  int bandwidth_code; ///< bandwidth code (0 to 60) (chbwcod)
212  int start_freq[AC3_MAX_CHANNELS]; ///< start frequency bin (strtmant)
213  int cpl_end_freq; ///< coupling channel end frequency bin
214 
215  int cpl_on; ///< coupling turned on for this frame
216  int cpl_enabled; ///< coupling enabled for all frames
217  int num_cpl_subbands; ///< number of coupling subbands (ncplsubnd)
218  int num_cpl_bands; ///< number of coupling bands (ncplbnd)
219  uint8_t cpl_band_sizes[AC3_MAX_CPL_BANDS]; ///< number of coeffs in each coupling band
220 
221  int rematrixing_enabled; ///< stereo rematrixing enabled
222 
223  /* bitrate allocation control */
224  int slow_gain_code; ///< slow gain code (sgaincod)
225  int slow_decay_code; ///< slow decay code (sdcycod)
226  int fast_decay_code; ///< fast decay code (fdcycod)
227  int db_per_bit_code; ///< dB/bit code (dbpbcod)
228  int floor_code; ///< floor code (floorcod)
229  AC3BitAllocParameters bit_alloc; ///< bit allocation parameters
230  int coarse_snr_offset; ///< coarse SNR offsets (csnroffst)
231  int fast_gain_code[AC3_MAX_CHANNELS]; ///< fast gain codes (signal-to-mask ratio) (fgaincod)
232  int fine_snr_offset[AC3_MAX_CHANNELS]; ///< fine SNR offsets (fsnroffst)
233  int frame_bits_fixed; ///< number of non-coefficient bits for fixed parameters
234  int frame_bits; ///< all frame bits except exponents and mantissas
235  int exponent_bits; ///< number of bits used for exponents
236 
239  uint8_t *bap_buffer;
240  uint8_t *bap1_buffer;
243  uint8_t *exp_buffer;
245  int16_t *psd_buffer;
246  int16_t *band_psd_buffer;
247  int16_t *mask_buffer;
248  int16_t *qmant_buffer;
251 
252  uint8_t exp_strategy[AC3_MAX_CHANNELS][AC3_MAX_BLOCKS]; ///< exponent strategies
253  uint8_t frame_exp_strategy[AC3_MAX_CHANNELS]; ///< frame exp strategy index
254  int use_frame_exp_strategy; ///< indicates use of frame exp strategy
255  uint8_t exp_ref_block[AC3_MAX_CHANNELS][AC3_MAX_BLOCKS]; ///< reference blocks for EXP_REUSE
256  uint8_t *ref_bap [AC3_MAX_CHANNELS][AC3_MAX_BLOCKS]; ///< bit allocation pointers (bap)
257  int ref_bap_set; ///< indicates if ref_bap pointers have been set
258 
260 
261  /* fixed vs. float function pointers */
263 
264  /* fixed vs. float templated function pointers */
266 
267  /* AC-3 vs. E-AC-3 function pointers */
270 
271 #if FF_API_OLD_CHANNEL_LAYOUT
272 extern const uint64_t ff_ac3_channel_layouts[19];
273 #endif
274 extern const AVChannelLayout ff_ac3_ch_layouts[19];
275 extern const AVOption ff_ac3_enc_options[];
276 extern const AVClass ff_ac3enc_class;
277 extern const FFCodecDefault ff_ac3_enc_defaults[];
278 
281 
283 
285 
287 
289 
291  const AVFrame *frame, int *got_packet_ptr);
292 
293 /* prototypes for functions in ac3enc_template.c */
294 
296  const AVFrame *frame, int *got_packet_ptr);
298  const AVFrame *frame, int *got_packet_ptr);
299 
300 #endif /* AVCODEC_AC3ENC_H */
AC3EncodeContext::samples_written
int64_t samples_written
sample count (used to avg. bitrate)
Definition: ac3enc.h:192
AC3Block::fixed_coef
int32_t ** fixed_coef
fixed-point MDCT coefficients
Definition: ac3enc.h:132
AC3EncodeContext::db_per_bit_code
int db_per_bit_code
dB/bit code (dbpbcod)
Definition: ac3enc.h:227
AC3EncOptions::mixing_level
int mixing_level
Definition: ac3enc.h:103
AC3EncodeContext::lfe_on
int lfe_on
indicates if there is an LFE channel (lfeon)
Definition: ac3enc.h:196
opt.h
ff_ac3_encode_close
int ff_ac3_encode_close(AVCodecContext *avctx)
Finalize encoding and free any memory allocated by the encoder.
Definition: ac3enc.c:2167
AC3EncodeContext::frame_bits
int frame_bits
all frame bits except exponents and mantissas
Definition: ac3enc.h:234
AC3EncOptions::dolby_headphone_mode
int dolby_headphone_mode
Definition: ac3enc.h:115
AC3Block::exp
uint8_t ** exp
original exponents
Definition: ac3enc.h:133
AC3EncodeContext::frame_size_code
int frame_size_code
frame size code (frmsizecod)
Definition: ac3enc.h:189
AC3EncodeContext::exp_strategy
uint8_t exp_strategy[AC3_MAX_CHANNELS][AC3_MAX_BLOCKS]
exponent strategies
Definition: ac3enc.h:252
AVTXContext
Definition: tx_priv.h:228
AC3EncodeContext::slow_decay_code
int slow_decay_code
slow decay code (sdcycod)
Definition: ac3enc.h:225
AC3EncodeContext::pb
PutBitContext pb
bitstream writer context
Definition: ac3enc.h:162
AC3Block::grouped_exp
uint8_t ** grouped_exp
grouped exponents
Definition: ac3enc.h:134
AC3EncOptions::cpl_start
int cpl_start
Definition: ac3enc.h:124
AC3Block::channel_in_cpl
uint8_t channel_in_cpl[AC3_MAX_CHANNELS]
channel in coupling (chincpl)
Definition: ac3enc.h:146
AC3EncodeContext::bit_alloc
AC3BitAllocParameters bit_alloc
bit allocation parameters
Definition: ac3enc.h:229
AC3EncodeContext::mdct_init
int(* mdct_init)(struct AC3EncodeContext *s)
Definition: ac3enc.h:262
AC3EncOptions::ltrt_surround_mix_level
float ltrt_surround_mix_level
Definition: ac3enc.h:110
AC3EncOptions::dialogue_level
int dialogue_level
Definition: ac3enc.h:97
SampleType
int32_t SampleType
Definition: ac3enc.h:67
AC3DSPContext
Definition: ac3dsp.h:33
AVFrame
This structure describes decoded (raw) audio or video data.
Definition: frame.h:325
AC3EncOptions::dolby_surround_mode
int dolby_surround_mode
Definition: ac3enc.h:101
AVOption
AVOption.
Definition: opt.h:251
ff_ac3_validate_metadata
int ff_ac3_validate_metadata(AC3EncodeContext *s)
Validate metadata options as set by AVOption system.
Definition: ac3enc.c:1984
AC3EncodeContext::channel_mode
int channel_mode
channel mode (acmod)
Definition: ac3enc.h:200
AC3EncodeContext::bandwidth_code
int bandwidth_code
bandwidth code (0 to 60) (chbwcod)
Definition: ac3enc.h:211
AC3EncOptions::center_mix_level
float center_mix_level
Definition: ac3enc.h:99
AC3Block::end_freq
int end_freq[AC3_MAX_CHANNELS]
end frequency bin (endmant)
Definition: ac3enc.h:152
AVFixedDSPContext
Definition: fixed_dsp.h:56
AC3EncodeContext::grouped_exp_buffer
uint8_t * grouped_exp_buffer
Definition: ac3enc.h:244
AC3EncodeContext::rematrixing_enabled
int rematrixing_enabled
stereo rematrixing enabled
Definition: ac3enc.h:221
AC3_MAX_CPL_BANDS
#define AC3_MAX_CPL_BANDS
Definition: ac3defs.h:35
ff_ac3_float_encode_frame
int ff_ac3_float_encode_frame(AVCodecContext *avctx, AVPacket *avpkt, const AVFrame *frame, int *got_packet_ptr)
AC3EncodeContext::start_freq
int start_freq[AC3_MAX_CHANNELS]
start frequency bin (strtmant)
Definition: ac3enc.h:212
FFCodecDefault
Definition: codec_internal.h:89
AC3Block::new_snr_offsets
int new_snr_offsets
send new SNR offsets
Definition: ac3enc.h:150
ff_ac3_float_encode_init
int ff_ac3_float_encode_init(AVCodecContext *avctx)
Definition: ac3enc_float.c:103
AC3Block::num_cpl_channels
int num_cpl_channels
number of channels in coupling
Definition: ac3enc.h:147
AC3EncOptions::stereo_rematrixing
int stereo_rematrixing
Definition: ac3enc.h:122
AC3EncodeContext::num_cpl_subbands
int num_cpl_subbands
number of coupling subbands (ncplsubnd)
Definition: ac3enc.h:217
AC3EncOptions::eac3_mixing_metadata
int eac3_mixing_metadata
Definition: ac3enc.h:117
AC3EncodeContext::fbw_channels
int fbw_channels
number of full-bandwidth channels (nfchans)
Definition: ac3enc.h:194
AC3EncodeContext::num_blks_code
int num_blks_code
number of blocks code (numblkscod)
Definition: ac3enc.h:185
av_tx_fn
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:127
AC3EncodeContext::slow_gain_code
int slow_gain_code
slow gain code (sgaincod)
Definition: ac3enc.h:224
s
#define s(width, name)
Definition: cbs_vp9.c:256
AC3EncodeContext::bap1_buffer
uint8_t * bap1_buffer
Definition: ac3enc.h:240
AC3EncodeContext::channels
int channels
total number of channels (nchans)
Definition: ac3enc.h:195
AC3EncodeContext::options
AC3EncOptions options
encoding options
Definition: ac3enc.h:160
AC3EncodeContext::ac3dsp
AC3DSPContext ac3dsp
AC-3 optimized functions.
Definition: ac3enc.h:170
AC3EncodeContext::fdsp
AVFixedDSPContext * fdsp
Definition: ac3enc.h:167
AC3EncodeContext::cpl_on
int cpl_on
coupling turned on for this frame
Definition: ac3enc.h:215
AC3EncodeContext::ref_bap_set
int ref_bap_set
indicates if ref_bap pointers have been set
Definition: ac3enc.h:257
AC3EncodeContext::crc_inv
uint16_t crc_inv[2]
Definition: ac3enc.h:190
AC3EncodeContext::tx_fn
av_tx_fn tx_fn
Definition: ac3enc.h:172
AC3EncodeContext::loro_center_mix_level
int loro_center_mix_level
Lo/Ro center mix level code.
Definition: ac3enc.h:207
AC3EncodeContext::output_frame_header
void(* output_frame_header)(struct AC3EncodeContext *s)
Definition: ac3enc.h:268
AC3EncodeContext::lfe_channel
int lfe_channel
channel index of the LFE channel
Definition: ac3enc.h:197
AC3EncodeContext::tx
AVTXContext * tx
FFT context for MDCT calculation.
Definition: ac3enc.h:171
AC3EncodeContext::mask_buffer
int16_t * mask_buffer
Definition: ac3enc.h:247
AC3EncodeContext::psd_buffer
int16_t * psd_buffer
Definition: ac3enc.h:245
AC3EncOptions::audio_production_info
int audio_production_info
Definition: ac3enc.h:102
AC3EncodeContext::num_cpl_bands
int num_cpl_bands
number of coupling bands (ncplbnd)
Definition: ac3enc.h:218
fixed_dsp.h
AC3EncodeContext::ltrt_surround_mix_level
int ltrt_surround_mix_level
Lt/Rt surround mix level code.
Definition: ac3enc.h:206
AC3EncOptions::bitstream_mode
int bitstream_mode
Definition: ac3enc.h:98
PutBitContext
Definition: put_bits.h:50
AC3EncodeContext::loro_surround_mix_level
int loro_surround_mix_level
Lo/Ro surround mix level code.
Definition: ac3enc.h:208
AC3EncodeContext::cpl_enabled
int cpl_enabled
coupling enabled for all frames
Definition: ac3enc.h:216
AC3EncodeContext::floor_code
int floor_code
floor code (floorcod)
Definition: ac3enc.h:228
ac3defs.h
MECmpContext
Definition: me_cmp.h:55
AC3Block::qmant
uint16_t ** qmant
quantized mantissas
Definition: ac3enc.h:138
AC3EncOptions::ad_converter_type
int ad_converter_type
Definition: ac3enc.h:116
AVClass
Describe the class of an AVClass context structure.
Definition: log.h:66
ff_ac3_ch_layouts
const AVChannelLayout ff_ac3_ch_layouts[19]
List of supported channel layouts.
Definition: ac3enc.c:176
AC3EncodeContext::av_class
AVClass * av_class
AVClass used for AVOption.
Definition: ac3enc.h:159
AC3EncodeContext::frame_exp_strategy
uint8_t frame_exp_strategy[AC3_MAX_CHANNELS]
frame exp strategy index
Definition: ac3enc.h:253
CoefSumType
int64_t CoefSumType
Definition: ac3enc.h:69
AC3EncodeContext::eac3
int eac3
indicates if this is E-AC-3 vs. AC-3
Definition: ac3enc.h:178
mathops.h
AC3Block::band_psd
int16_t ** band_psd
psd per critical band
Definition: ac3enc.h:136
ac3dsp.h
AC3EncodeContext::fixed_point
int fixed_point
indicates if fixed-point encoder is being used
Definition: ac3enc.h:177
AC3EncodeContext::surround_mix_level
int surround_mix_level
surround mix level code
Definition: ac3enc.h:204
AC3EncodeContext
AC-3 encoder private context.
Definition: ac3enc.h:158
AC3_MAX_CHANNELS
#define AC3_MAX_CHANNELS
maximum number of channels, including coupling channel
Definition: ac3defs.h:26
AC3EncodeContext::coarse_snr_offset
int coarse_snr_offset
coarse SNR offsets (csnroffst)
Definition: ac3enc.h:230
AC3EncOptions::extended_bsi_1
int extended_bsi_1
Definition: ac3enc.h:107
AC3EncOptions::copyright
int copyright
Definition: ac3enc.h:105
AC3Block
Data for a single audio block.
Definition: ac3enc.h:130
AC3EncodeContext::has_surround
int has_surround
indicates if there are one or more surround channels
Definition: ac3enc.h:199
float_dsp.h
AC3EncodeContext::planar_samples
SampleType ** planar_samples
Definition: ac3enc.h:238
AC3Block::new_cpl_strategy
int new_cpl_strategy
send new coupling strategy
Definition: ac3enc.h:144
AC3EncodeContext::adsp
AudioDSPContext adsp
Definition: ac3enc.h:163
AC3EncodeContext::bitstream_mode
int bitstream_mode
bitstream mode (bsmod)
Definition: ac3enc.h:180
AC3Block::cpl_master_exp
uint8_t cpl_master_exp[AC3_MAX_CHANNELS]
coupling coord master exponents (mstrcplco)
Definition: ac3enc.h:149
AC3EncodeContext::ref_bap
uint8_t * ref_bap[AC3_MAX_CHANNELS][AC3_MAX_BLOCKS]
bit allocation pointers (bap)
Definition: ac3enc.h:256
AC3EncOptions::eac3_info_metadata
int eac3_info_metadata
Definition: ac3enc.h:118
AC3EncodeContext::fast_decay_code
int fast_decay_code
fast decay code (fdcycod)
Definition: ac3enc.h:226
AC3EncOptions::dolby_surround_ex_mode
int dolby_surround_ex_mode
Definition: ac3enc.h:114
AVChannelLayout
An AVChannelLayout holds information about the channel layout of audio data.
Definition: channel_layout.h:301
codec_internal.h
AC3Block::mask
int16_t ** mask
masking curve
Definition: ac3enc.h:137
AC3Block::psd
int16_t ** psd
psd per frequency bin
Definition: ac3enc.h:135
AC3EncodeContext::fast_gain_code
int fast_gain_code[AC3_MAX_CHANNELS]
fast gain codes (signal-to-mask ratio) (fgaincod)
Definition: ac3enc.h:231
AC3EncodeContext::bit_rate
int bit_rate
target bit rate, in bits-per-second
Definition: ac3enc.h:182
AC3EncOptions::room_type
int room_type
Definition: ac3enc.h:104
AC3EncOptions
Encoding Options used by AVOption.
Definition: ac3enc.h:95
AVFloatDSPContext
Definition: float_dsp.h:24
AC3EncodeContext::mdct_coef_buffer
CoefType * mdct_coef_buffer
Definition: ac3enc.h:241
ff_ac3enc_class
const AVClass ff_ac3enc_class
Definition: ac3enc.c:130
AC3EncodeContext::channel_map
const uint8_t * channel_map
channel map used to reorder channels
Definition: ac3enc.h:201
AC3EncodeContext::sample_rate
int sample_rate
sampling frequency, in Hz
Definition: ac3enc.h:183
AC3Block::cpl_coord_exp
uint8_t ** cpl_coord_exp
coupling coord exponents (cplcoexp)
Definition: ac3enc.h:139
AC3EncodeContext::mdct_window
const SampleType * mdct_window
MDCT window function array.
Definition: ac3enc.h:173
AC3EncodeContext::warned_alternate_bitstream
int warned_alternate_bitstream
Definition: ac3enc.h:259
AC3EncodeContext::exponent_bits
int exponent_bits
number of bits used for exponents
Definition: ac3enc.h:235
AC3Block::new_cpl_leak
int new_cpl_leak
send new coupling leak info
Definition: ac3enc.h:151
AC3EncodeContext::cpl_coord_exp_buffer
uint8_t * cpl_coord_exp_buffer
Definition: ac3enc.h:249
AC3EncodeContext::center_mix_level
int center_mix_level
center mix level code
Definition: ac3enc.h:203
AC3EncodeContext::qmant_buffer
int16_t * qmant_buffer
Definition: ac3enc.h:248
ff_ac3_compute_coupling_strategy
void ff_ac3_compute_coupling_strategy(AC3EncodeContext *s)
Set the initial coupling strategy parameters prior to coupling analysis.
Definition: ac3enc.c:323
AC3Block::cpl_coord_mant
uint8_t ** cpl_coord_mant
coupling coord mantissas (cplcomant)
Definition: ac3enc.h:140
AC3EncodeContext::blocks
AC3Block blocks[AC3_MAX_BLOCKS]
per-block info
Definition: ac3enc.h:175
AC3EncodeContext::has_center
int has_center
indicates if there is a center channel
Definition: ac3enc.h:198
ff_ac3_fixed_encode_frame
int ff_ac3_fixed_encode_frame(AVCodecContext *avctx, AVPacket *avpkt, const AVFrame *frame, int *got_packet_ptr)
AC3Block::rematrixing_flags
uint8_t rematrixing_flags[4]
rematrixing flags
Definition: ac3enc.h:143
AC3EncOptions::original
int original
Definition: ac3enc.h:106
AC3EncodeContext::num_blocks
int num_blocks
number of blocks per frame
Definition: ac3enc.h:186
AC3EncodeContext::windowed_samples
SampleType * windowed_samples
Definition: ac3enc.h:237
AC3EncodeContext::allocate_sample_buffers
int(* allocate_sample_buffers)(struct AC3EncodeContext *s)
Definition: ac3enc.h:265
AC3_MAX_BLOCKS
#define AC3_MAX_BLOCKS
Definition: ac3defs.h:31
AC3EncodeContext::cpl_band_sizes
uint8_t cpl_band_sizes[AC3_MAX_CPL_BANDS]
number of coeffs in each coupling band
Definition: ac3enc.h:219
AC3EncodeContext::ltrt_center_mix_level
int ltrt_center_mix_level
Lt/Rt center mix level code.
Definition: ac3enc.h:205
avcodec.h
AC3EncodeContext::exp_buffer
uint8_t * exp_buffer
Definition: ac3enc.h:243
AC3EncodeContext::frame_bits_fixed
int frame_bits_fixed
number of non-coefficient bits for fixed parameters
Definition: ac3enc.h:233
frame
these buffered frames must be flushed immediately if a new input produces new the filter must not call request_frame to get more It must just process the frame or queue it The task of requesting more frames is left to the filter s request_frame method or the application If a filter has several the filter must be ready for frames arriving randomly on any input any filter with several inputs will most likely require some kind of queuing mechanism It is perfectly acceptable to have a limited queue and to drop frames when the inputs are too unbalanced request_frame For filters that do not use the this method is called when a frame is wanted on an output For a it should directly call filter_frame on the corresponding output For a if there are queued frames already one of these frames should be pushed If the filter should request a frame on one of its repeatedly until at least one frame has been pushed Return or at least make progress towards producing a frame
Definition: filter_design.txt:264
AC3EncOptions::loro_surround_mix_level
float loro_surround_mix_level
Definition: ac3enc.h:112
AC3EncodeContext::bits_written
int64_t bits_written
bit count (used to avg. bitrate)
Definition: ac3enc.h:191
AC3EncodeContext::cpl_end_freq
int cpl_end_freq
coupling channel end frequency bin
Definition: ac3enc.h:213
AC3EncOptions::ltrt_center_mix_level
float ltrt_center_mix_level
Definition: ac3enc.h:109
ff_ac3_encode_init
int ff_ac3_encode_init(AVCodecContext *avctx)
Definition: ac3enc.c:2562
AC3Block::num_rematrixing_bands
int num_rematrixing_bands
number of rematrixing bands
Definition: ac3enc.h:142
me_cmp.h
AC3EncOptions::preferred_stereo_downmix
int preferred_stereo_downmix
Definition: ac3enc.h:108
ff_ac3_encode_frame_common_end
int ff_ac3_encode_frame_common_end(AVCodecContext *avctx, AVPacket *avpkt, const AVFrame *frame, int *got_packet_ptr)
Definition: ac3enc.c:1795
AC3BitAllocParameters
Definition: ac3.h:93
AVCodecContext
main external API structure.
Definition: avcodec.h:398
AC3EncOptions::allow_per_frame_metadata
int allow_per_frame_metadata
Definition: ac3enc.h:121
AC3EncodeContext::bitstream_id
int bitstream_id
bitstream id (bsid)
Definition: ac3enc.h:179
AC3EncodeContext::frame_size
int frame_size
current frame size in bytes
Definition: ac3enc.h:188
AC3EncodeContext::band_psd_buffer
int16_t * band_psd_buffer
Definition: ac3enc.h:246
AC3EncodeContext::exp_ref_block
uint8_t exp_ref_block[AC3_MAX_CHANNELS][AC3_MAX_BLOCKS]
reference blocks for EXP_REUSE
Definition: ac3enc.h:255
CoefType
int32_t CoefType
Definition: ac3enc.h:68
AC3EncOptions::channel_coupling
int channel_coupling
Definition: ac3enc.h:123
AC3EncodeContext::mecc
MECmpContext mecc
Definition: ac3enc.h:169
audiodsp.h
AudioDSPContext
Definition: audiodsp.h:24
AVPacket
This structure stores compressed data.
Definition: packet.h:351
AC3EncodeContext::avctx
AVCodecContext * avctx
parent AVCodecContext
Definition: ac3enc.h:161
ac3.h
AC3Block::mdct_coef
CoefType ** mdct_coef
MDCT coefficients.
Definition: ac3enc.h:131
AC3EncodeContext::use_frame_exp_strategy
int use_frame_exp_strategy
indicates use of frame exp strategy
Definition: ac3enc.h:254
AC3EncodeContext::fine_snr_offset
int fine_snr_offset[AC3_MAX_CHANNELS]
fine SNR offsets (fsnroffst)
Definition: ac3enc.h:232
AC3Block::new_rematrixing_strategy
uint8_t new_rematrixing_strategy
send new rematrixing flags in this block
Definition: ac3enc.h:141
ff_ac3_enc_defaults
const FFCodecDefault ff_ac3_enc_defaults[]
Definition: ac3enc.c:137
int32_t
int32_t
Definition: audioconvert.c:56
AC3EncodeContext::frame_size_min
int frame_size_min
minimum frame size in case rounding is necessary
Definition: ac3enc.h:187
AC3EncOptions::surround_mix_level
float surround_mix_level
Definition: ac3enc.h:100
ff_ac3_adjust_frame_size
void ff_ac3_adjust_frame_size(AC3EncodeContext *s)
Adjust the frame size to make the average bit rate match the target bit rate.
Definition: ac3enc.c:305
AC3EncodeContext::fixed_coef_buffer
int32_t * fixed_coef_buffer
Definition: ac3enc.h:242
AC3EncOptions::extended_bsi_2
int extended_bsi_2
Definition: ac3enc.h:113
int
int
Definition: ffmpeg_filter.c:156
put_bits.h
AC3EncodeContext::bap_buffer
uint8_t * bap_buffer
Definition: ac3enc.h:239
AC3Block::new_cpl_coords
uint8_t new_cpl_coords[AC3_MAX_CHANNELS]
send new coupling coordinates (cplcoe)
Definition: ac3enc.h:148
AC3Block::cpl_in_use
int cpl_in_use
coupling in use for this block (cplinu)
Definition: ac3enc.h:145
ff_ac3_enc_options
const AVOption ff_ac3_enc_options[]
Definition: ac3enc.c:80
AC3EncOptions::loro_center_mix_level
float loro_center_mix_level
Definition: ac3enc.h:111
tx.h
AC3EncodeContext::cutoff
int cutoff
user-specified cutoff frequency, in Hz
Definition: ac3enc.h:210
AC3EncodeContext::cpl_coord_mant_buffer
uint8_t * cpl_coord_mant_buffer
Definition: ac3enc.h:250