28#ifndef AVCODEC_AC3ENC_H
29#define AVCODEC_AC3ENC_H
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
62#define MAC_COEF(d,a,b) MAC64(d,a,b)
63#define COEF_MIN -16777215
64#define COEF_MAX 16777215
65#define NEW_CPL_COORD_THRESHOLD 503317
72#define AC3ENC_OPT_NONE -1
73#define AC3ENC_OPT_AUTO -1
74#define AC3ENC_OPT_OFF 0
75#define AC3ENC_OPT_ON 1
76#define AC3ENC_OPT_NOT_INDICATED 0
77#define AC3ENC_OPT_MODE_ON 2
78#define AC3ENC_OPT_MODE_OFF 1
79#define AC3ENC_OPT_DSUREX_DPLIIZ 3
82#define AC3ENC_OPT_LARGE_ROOM 1
83#define AC3ENC_OPT_SMALL_ROOM 2
84#define AC3ENC_OPT_DOWNMIX_LTRT 1
85#define AC3ENC_OPT_DOWNMIX_LORO 2
86#define AC3ENC_OPT_DOWNMIX_DPLII 3
87#define AC3ENC_OPT_ADCONV_STANDARD 0
88#define AC3ENC_OPT_ADCONV_HDCD 1
Common code between the AC-3 encoder and decoder.
#define AC3_MAX_CHANNELS
maximum number of channels, including coupling channel
#define AC3_MAX_CPL_BANDS
const AVClass ff_ac3enc_class
const AVOption ff_ac3_enc_options[]
const AVChannelLayout ff_ac3_ch_layouts[19]
List of supported channel layouts.
const FFCodecDefault ff_ac3_enc_defaults[]
int ff_ac3_encode_close(AVCodecContext *avctx)
Finalize encoding and free any memory allocated by the encoder.
void ff_ac3_compute_coupling_strategy(AC3EncodeContext *s)
Set the initial coupling strategy parameters prior to coupling analysis.
int ff_ac3_float_encode_init(AVCodecContext *avctx)
int ff_ac3_encode_frame(AVCodecContext *avctx, AVPacket *avpkt, const AVFrame *frame, int *got_packet_ptr)
int ff_ac3_encode_init(AVCodecContext *avctx)
Libavcodec external API header.
#define DECLARE_ALIGNED(n, t, v)
Declare a variable that is aligned in memory.
Data for a single audio block.
uint8_t new_rematrixing_strategy
send new rematrixing flags in this block
uint8_t * grouped_exp[AC3_MAX_CHANNELS]
grouped exponents
int new_snr_offsets
send new SNR offsets
uint8_t * cpl_coord_mant[AC3_MAX_CHANNELS]
coupling coord mantissas (cplcomant)
int16_t * psd[AC3_MAX_CHANNELS]
psd per frequency bin
int16_t * mask[AC3_MAX_CHANNELS]
masking curve
int new_cpl_strategy
send new coupling strategy
uint8_t rematrixing_flags[4]
rematrixing flags
int num_rematrixing_bands
number of rematrixing bands
int32_t * fixed_coef[AC3_MAX_CHANNELS]
fixed-point MDCT coefficients
uint8_t new_cpl_coords[AC3_MAX_CHANNELS]
send new coupling coordinates (cplcoe)
uint8_t channel_in_cpl[AC3_MAX_CHANNELS]
channel in coupling (chincpl)
uint16_t * qmant[AC3_MAX_CHANNELS]
quantized mantissas
int new_cpl_leak
send new coupling leak info
int cpl_in_use
coupling in use for this block (cplinu)
uint8_t cpl_master_exp[AC3_MAX_CHANNELS]
coupling coord master exponents (mstrcplco)
int16_t * band_psd[AC3_MAX_CHANNELS]
psd per critical band
int num_cpl_channels
number of channels in coupling
uint8_t * cpl_coord_exp[AC3_MAX_CHANNELS]
coupling coord exponents (cplcoexp)
int end_freq[AC3_MAX_CHANNELS]
end frequency bin (endmant)
uint8_t * exp[AC3_MAX_CHANNELS]
original exponents
CoefType * mdct_coef[AC3_MAX_CHANNELS]
MDCT coefficients.
Encoding Options used by AVOption.
float ltrt_surround_mix_level
int dolby_surround_ex_mode
float loro_surround_mix_level
int audio_production_info
int allow_per_frame_metadata
float loro_center_mix_level
int preferred_stereo_downmix
float ltrt_center_mix_level
AC-3 encoder private context.
int channels
total number of channels (nchans)
int fast_gain_code[AC3_MAX_CHANNELS]
fast gain codes (signal-to-mask ratio) (fgaincod)
int32_t windowed_samples_fixed[AC3_WINDOW_SIZE]
void(* encode_frame)(struct AC3EncodeContext *s, const AVFrame *frame)
fixed vs.
int fine_snr_offset[AC3_MAX_CHANNELS]
fine SNR offsets (fsnroffst)
int channel_mode
channel mode (acmod)
uint8_t frame_exp_strategy[AC3_MAX_CHANNELS]
frame exp strategy index
int32_t mdct_window_fixed[AC3_BLOCK_SIZE]
AC3DSPContext ac3dsp
AC-3 optimized functions.
int16_t * band_psd_buffer
int lfe_on
indicates if there is an LFE channel (lfeon)
int fixed_point
indicates if fixed-point encoder is being used
AVClass * av_class
AVClass used for AVOption.
int slow_gain_code
slow gain code (sgaincod)
int cpl_on
coupling turned on for this frame
int loro_center_mix_level
Lo/Ro center mix level code.
int cutoff
user-specified cutoff frequency, in Hz
float windowed_samples_float[AC3_WINDOW_SIZE]
int frame_bits
all frame bits except exponents and mantissas
int ref_bap_set
indicates if ref_bap pointers have been set
int db_per_bit_code
dB/bit code (dbpbcod)
int cpl_enabled
coupling enabled for all frames
int coarse_snr_offset
coarse SNR offsets (csnroffst)
AC3Block blocks[AC3_MAX_BLOCKS]
per-block info
int ltrt_center_mix_level
Lt/Rt center mix level code.
int64_t samples_written
sample count (used to avg. bitrate)
int use_frame_exp_strategy
indicates use of frame exp strategy
uint8_t exp_strategy[AC3_MAX_CHANNELS][AC3_MAX_BLOCKS]
exponent strategies
AC3BitAllocParameters bit_alloc
bit allocation parameters
int bit_rate
target bit rate, in bits-per-second
int num_blks_code
number of blocks code (numblkscod)
uint8_t * input_samples[AC3_MAX_CHANNELS - 1]
int floor_code
floor code (floorcod)
int32_t * fixed_coef_buffer
int slow_decay_code
slow decay code (sdcycod)
AVTXContext * tx
FFT context for MDCT calculation.
uint8_t * grouped_exp_buffer
int fast_decay_code
fast decay code (fdcycod)
int frame_size
current frame size in bytes
int frame_size_min
minimum frame size in case rounding is necessary
int has_center
indicates if there is a center channel
int frame_size_code
frame size code (frmsizecod)
AVCodecContext * avctx
parent AVCodecContext
int has_surround
indicates if there are one or more surround channels
CoefType * mdct_coef_buffer
int cpl_end_freq
coupling channel end frequency bin
int eac3
indicates if this is E-AC-3 vs. AC-3
int exponent_bits
number of bits used for exponents
uint8_t * ref_bap[AC3_MAX_CHANNELS][AC3_MAX_BLOCKS]
bit allocation pointers (bap)
int num_cpl_bands
number of coupling bands (ncplbnd)
int surround_mix_level
surround mix level code
const uint8_t * channel_map
channel map used to reorder channels
int start_freq[AC3_MAX_CHANNELS]
start frequency bin (strtmant)
int lfe_channel
channel index of the LFE channel
int num_cpl_subbands
number of coupling subbands (ncplsubnd)
int64_t bits_written
bit count (used to avg. bitrate)
int center_mix_level
center mix level code
int fbw_channels
number of full-bandwidth channels (nfchans)
int ltrt_surround_mix_level
Lt/Rt surround mix level code.
uint8_t cpl_band_sizes[AC3_MAX_CPL_BANDS]
number of coeffs in each coupling band
int bitstream_mode
bitstream mode (bsmod)
int bitstream_id
bitstream id (bsid)
AC3EncOptions options
encoding options
uint8_t * cpl_coord_buffer
int frame_bits_fixed
number of non-coefficient bits for fixed parameters
uint8_t * planar_samples[AC3_MAX_CHANNELS - 1]
uint8_t exp_ref_block[AC3_MAX_CHANNELS][AC3_MAX_BLOCKS]
reference blocks for EXP_REUSE
int sample_rate
sampling frequency, in Hz
int num_blocks
number of blocks per frame
void(* output_frame_header)(struct AC3EncodeContext *s, struct PutBitContext *pb)
int rematrixing_enabled
stereo rematrixing enabled
int loro_surround_mix_level
Lo/Ro surround mix level code.
float mdct_window_float[AC3_BLOCK_SIZE]
int bandwidth_code
bandwidth code (0 to 60) (chbwcod)
An AVChannelLayout holds information about the channel layout of audio data.
Describe the class of an AVClass context structure.
main external API structure.
This structure describes decoded (raw) audio or video data.
This structure stores compressed data.
void(* av_tx_fn)(AVTXContext *s, void *out, void *in, ptrdiff_t stride)
Function pointer to a function to perform the transform.