FFmpeg
Macros | Functions | Variables
ac3dec_fixed.c File Reference
#include "config_components.h"
#include "ac3dec.h"
#include "codec_internal.h"
#include "ac3dec.c"

Go to the source code of this file.

Macros

#define USE_FIXED   1
 
#define IMDCT_TYPE   AV_TX_INT32_MDCT
 

Functions

static void scale_coefs (int32_t *dst, const int32_t *src, int dynrng, int len)
 
static void ac3_downmix_c_fixed16 (int16_t **samples, int16_t **matrix, int out_ch, int in_ch, int len)
 Downmix samples from original signal to stereo or mono (this is for 16-bit samples and fixed point decoder - original (for 32-bit samples) is in ac3dsp.c). More...
 

Variables

static const int end_freq_inv_tab [8]
 
static const AVOption options []
 
static const AVClass ac3_decoder_class
 
const FFCodec ff_ac3_fixed_decoder
 

Macro Definition Documentation

◆ USE_FIXED

#define USE_FIXED   1

Definition at line 51 of file ac3dec_fixed.c.

◆ IMDCT_TYPE

#define IMDCT_TYPE   AV_TX_INT32_MDCT

Definition at line 54 of file ac3dec_fixed.c.

Function Documentation

◆ scale_coefs()

static void scale_coefs ( int32_t dst,
const int32_t src,
int  dynrng,
int  len 
)
static

Definition at line 63 of file ac3dec_fixed.c.

Referenced by decode_audio_block().

◆ ac3_downmix_c_fixed16()

static void ac3_downmix_c_fixed16 ( int16_t **  samples,
int16_t **  matrix,
int  out_ch,
int  in_ch,
int  len 
)
static

Downmix samples from original signal to stereo or mono (this is for 16-bit samples and fixed point decoder - original (for 32-bit samples) is in ac3dsp.c).

Definition at line 131 of file ac3dec_fixed.c.

Referenced by decode_audio_block().

Variable Documentation

◆ end_freq_inv_tab

const int end_freq_inv_tab[8]
static
Initial value:
=
{
50529027, 44278013, 39403370, 32292987, 27356480, 23729101, 20951060, 18755316
}

Definition at line 58 of file ac3dec_fixed.c.

Referenced by spx_strategy().

◆ options

const AVOption options[]
static
Initial value:
= {
{ "cons_noisegen", "enable consistent noise generation", OFFSET(consistent_noise_generation), AV_OPT_TYPE_BOOL, {.i64 = 0 }, 0, 1, PAR },
{ "drc_scale", "percentage of dynamic range compression to apply", OFFSET(drc_scale), AV_OPT_TYPE_FLOAT, {.dbl = 1.0}, 0.0, 6.0, PAR },
{ "heavy_compr", "enable heavy dynamic range compression", OFFSET(heavy_compression), AV_OPT_TYPE_BOOL, {.i64 = 0 }, 0, 1, PAR },
{ "downmix", "Request a specific channel layout from the decoder", OFFSET(downmix_layout), AV_OPT_TYPE_CHLAYOUT, {.str = NULL}, .flags = PAR },
{ NULL},
}

Definition at line 161 of file ac3dec_fixed.c.

◆ ac3_decoder_class

const AVClass ac3_decoder_class
static
Initial value:
= {
.class_name = "Fixed-Point AC-3 Decoder",
.item_name = av_default_item_name,
.option = options,
}

Definition at line 169 of file ac3dec_fixed.c.

◆ ff_ac3_fixed_decoder

const FFCodec ff_ac3_fixed_decoder
Initial value:
= {
.p.name = "ac3_fixed",
CODEC_LONG_NAME("ATSC A/52A (AC-3)"),
.p.type = AVMEDIA_TYPE_AUDIO,
.p.id = AV_CODEC_ID_AC3,
.p.priv_class = &ac3_decoder_class,
.priv_data_size = sizeof (AC3DecodeContext),
.close = ac3_decode_end,
.p.capabilities = AV_CODEC_CAP_CHANNEL_CONF |
.p.sample_fmts = (const enum AVSampleFormat[]) { AV_SAMPLE_FMT_S16P,
.caps_internal = FF_CODEC_CAP_INIT_CLEANUP,
}

Definition at line 176 of file ac3dec_fixed.c.

AV_CODEC_ID_AC3
@ AV_CODEC_ID_AC3
Definition: codec_id.h:449
FF_CODEC_CAP_INIT_CLEANUP
#define FF_CODEC_CAP_INIT_CLEANUP
The codec allows calling the close function for deallocation even if the init function returned a fai...
Definition: codec_internal.h:43
ac3_decoder_class
static const AVClass ac3_decoder_class
Definition: ac3dec_fixed.c:169
ac3_decode_frame
static int ac3_decode_frame(AVCodecContext *avctx, AVFrame *frame, int *got_frame_ptr, AVPacket *avpkt)
Decode a single AC-3 frame.
Definition: ac3dec.c:1488
FF_CODEC_DECODE_CB
#define FF_CODEC_DECODE_CB(func)
Definition: codec_internal.h:311
AVMEDIA_TYPE_AUDIO
@ AVMEDIA_TYPE_AUDIO
Definition: avutil.h:202
ac3_decode_init
static av_cold int ac3_decode_init(AVCodecContext *avctx)
AVCodec initialization.
Definition: ac3dec.c:207
CODEC_LONG_NAME
#define CODEC_LONG_NAME(str)
Definition: codec_internal.h:296
LIBAVUTIL_VERSION_INT
#define LIBAVUTIL_VERSION_INT
Definition: version.h:85
NULL
#define NULL
Definition: coverity.c:32
av_default_item_name
const char * av_default_item_name(void *ptr)
Return the context name.
Definition: log.c:237
AV_OPT_TYPE_CHLAYOUT
@ AV_OPT_TYPE_CHLAYOUT
Underlying C type is AVChannelLayout.
Definition: opt.h:331
AV_CODEC_CAP_CHANNEL_CONF
#define AV_CODEC_CAP_CHANNEL_CONF
Codec should fill in channel configuration and samplerate instead of container.
Definition: codec.h:106
init
int(* init)(AVBSFContext *ctx)
Definition: dts2pts.c:368
AV_CODEC_CAP_DR1
#define AV_CODEC_CAP_DR1
Codec uses get_buffer() or get_encode_buffer() for allocating buffers and supports custom allocators.
Definition: codec.h:52
AV_SAMPLE_FMT_NONE
@ AV_SAMPLE_FMT_NONE
Definition: samplefmt.h:56
AV_SAMPLE_FMT_S16P
@ AV_SAMPLE_FMT_S16P
signed 16 bits, planar
Definition: samplefmt.h:64
AV_OPT_TYPE_FLOAT
@ AV_OPT_TYPE_FLOAT
Underlying C type is float.
Definition: opt.h:271
AVSampleFormat
AVSampleFormat
Audio sample formats.
Definition: samplefmt.h:55
ac3_decode_end
static av_cold int ac3_decode_end(AVCodecContext *avctx)
Uninitialize the AC-3 decoder.
Definition: ac3dec.c:1855
options
static const AVOption options[]
Definition: ac3dec_fixed.c:161
OFFSET
it s the only field you need to keep assuming you have a context There is some magic you don t need to care about around this just let it vf default minimum maximum flags name is the option keep it simple and lowercase description are in without and describe what they for example set the foo of the bar offset is the offset of the field in your see the OFFSET() macro
AV_OPT_TYPE_BOOL
@ AV_OPT_TYPE_BOOL
Underlying C type is int.
Definition: opt.h:327
PAR
@ PAR
Definition: af_afade.c:60