FFmpeg
Loading...
Searching...
No Matches
eac3enc.c File Reference

E-AC-3 encoder. More...

#include "libavutil/attributes.h"
#include "libavutil/thread.h"
#include "ac3enc.h"
#include "codec_internal.h"
#include "eac3enc.h"
#include "eac3_data.h"
#include "put_bits.h"

Go to the source code of this file.

Macros

#define AC3ENC_FLOAT   1
 

Functions

static av_cold void eac3_exponent_init (void)
 Initialize E-AC-3 exponent tables.
 
void ff_eac3_get_frame_exp_strategy (AC3EncodeContext *s)
 Determine frame exponent strategy use and indices.
 
void ff_eac3_set_cpl_states (AC3EncodeContext *s)
 Set coupling states.
 
static void eac3_output_frame_header (AC3EncodeContext *s, PutBitContext *pb)
 Write the E-AC-3 frame header to the output bitstream.
 
static av_cold int eac3_encode_init (AVCodecContext *avctx)
 

Variables

static const AVClass eac3enc_class
 
static int8_t eac3_frame_expstr_index_tab [3][4][4][4][4][4]
 LUT for finding a matching frame exponent strategy index from a set of exponent strategies for a single channel across all 6 blocks.
 
const FFCodec ff_eac3_encoder
 

Detailed Description

E-AC-3 encoder.

Definition in file eac3enc.c.

Macro Definition Documentation

◆ AC3ENC_FLOAT

#define AC3ENC_FLOAT   1

Definition at line 27 of file eac3enc.c.

Function Documentation

◆ eac3_exponent_init()

static av_cold void eac3_exponent_init ( void )
static

Initialize E-AC-3 exponent tables.

Definition at line 55 of file eac3enc.c.

Referenced by eac3_encode_init().

◆ ff_eac3_get_frame_exp_strategy()

void ff_eac3_get_frame_exp_strategy ( AC3EncodeContext * s)

Determine frame exponent strategy use and indices.

Definition at line 71 of file eac3enc.c.

Referenced by compute_exp_strategy().

◆ ff_eac3_set_cpl_states()

void ff_eac3_set_cpl_states ( AC3EncodeContext * s)

Set coupling states.

This determines whether certain flags must be written to the bitstream or whether they will be implicitly already known by the decoder.

Definition at line 98 of file eac3enc.c.

Referenced by apply_channel_coupling().

◆ eac3_output_frame_header()

static void eac3_output_frame_header ( AC3EncodeContext * s,
PutBitContext * pb )
static

Write the E-AC-3 frame header to the output bitstream.

Definition at line 133 of file eac3enc.c.

Referenced by eac3_encode_init().

◆ eac3_encode_init()

static av_cold int eac3_encode_init ( AVCodecContext * avctx)
static

Definition at line 255 of file eac3enc.c.

Variable Documentation

◆ eac3enc_class

const AVClass eac3enc_class
static
Initial value:
= {
.class_name = "E-AC-3 Encoder",
.item_name = av_default_item_name,
.option = &ff_ac3_enc_options[2],
}
const AVOption ff_ac3_enc_options[]
Definition ac3enc.c:80
const char * av_default_item_name(void *ptr)
Return the context name.
Definition log.c:241
#define LIBAVUTIL_VERSION_INT
Definition version.h:85

Definition at line 38 of file eac3enc.c.

◆ eac3_frame_expstr_index_tab

int8_t eac3_frame_expstr_index_tab[3][4][4][4][4][4]
static

LUT for finding a matching frame exponent strategy index from a set of exponent strategies for a single channel across all 6 blocks.

Definition at line 49 of file eac3enc.c.

Referenced by eac3_exponent_init(), and ff_eac3_get_frame_exp_strategy().

◆ ff_eac3_encoder

const FFCodec ff_eac3_encoder
Initial value:
= {
.p.name = "eac3",
CODEC_LONG_NAME("ATSC A/52 E-AC-3"),
.p.type = AVMEDIA_TYPE_AUDIO,
.p.capabilities = AV_CODEC_CAP_DR1 | AV_CODEC_CAP_DELAY |
.priv_data_size = sizeof(AC3EncodeContext),
.p.priv_class = &eac3enc_class,
.defaults = ff_ac3_enc_defaults,
.caps_internal = FF_CODEC_CAP_INIT_CLEANUP,
}
av_cold int ff_ac3_encode_close(AVCodecContext *avctx)
Finalize encoding and free any memory allocated by the encoder.
Definition ac3enc.c:2165
const AVChannelLayout ff_ac3_ch_layouts[19]
List of supported channel layouts.
Definition ac3enc.c:152
const FFCodecDefault ff_ac3_enc_defaults[]
Definition ac3enc.c:137
int ff_ac3_encode_frame(AVCodecContext *avctx, AVPacket *avpkt, const AVFrame *frame, int *got_packet_ptr)
Definition ac3enc.c:1981
const int ff_ac3_sample_rate_tab[]
Definition ac3tab.c:96
#define CODEC_SAMPLERATES_ARRAY(array)
#define FF_CODEC_ENCODE_CB(func)
#define CODEC_LONG_NAME(str)
#define FF_CODEC_CAP_INIT_CLEANUP
The codec allows calling the close function for deallocation even if the init function returned a fai...
#define CODEC_SAMPLEFMTS(...)
#define CODEC_CH_LAYOUTS_ARRAY(array)
int(* init)(AVBSFContext *ctx)
Definition dts2pts.c:608
static av_cold int eac3_encode_init(AVCodecContext *avctx)
Definition eac3enc.c:255
static const AVClass eac3enc_class
Definition eac3enc.c:38
#define AV_CODEC_CAP_ENCODER_REORDERED_OPAQUE
This encoder can reorder user opaque values from input AVFrames and return them with corresponding ou...
Definition codec.h:147
#define AV_CODEC_CAP_DELAY
Encoder or decoder requires flushing with NULL input at the end in order to give the complete and cor...
Definition codec.h:79
#define AV_CODEC_CAP_DR1
Codec uses get_buffer() or get_encode_buffer() for allocating buffers and supports custom allocators.
Definition codec.h:49
#define AV_CODEC_CAP_SMALL_LAST_FRAME
Codec can be fed a final frame with a smaller size.
Definition codec.h:84
@ AV_CODEC_ID_EAC3
Definition codec_id.h:493
@ AVMEDIA_TYPE_AUDIO
Definition avutil.h:201
@ AV_SAMPLE_FMT_FLTP
float, planar
Definition samplefmt.h:66
AC-3 encoder private context.
Definition ac3enc.h:159

Definition at line 268 of file eac3enc.c.