libavcodec/ac3enc.h File Reference

AC-3 encoder & E-AC-3 encoder common header. More...

#include <stdint.h>
#include "ac3.h"
#include "ac3dsp.h"
#include "avcodec.h"
#include "dsputil.h"
#include "put_bits.h"
#include "fft.h"

Go to the source code of this file.

Data Structures

struct  AC3EncOptions
 Encoding Options used by AVOption. More...
struct  AC3Block
 Data for a single audio block. More...
struct  AC3EncodeContext
 AC-3 encoder private context. More...

Defines

#define OFFSET(param)   offsetof(AC3EncodeContext, options.param)
#define AC3ENC_PARAM   (AV_OPT_FLAG_AUDIO_PARAM | AV_OPT_FLAG_ENCODING_PARAM)
#define AC3ENC_TYPE_AC3_FIXED   0
#define AC3ENC_TYPE_AC3   1
#define AC3ENC_TYPE_EAC3   2
#define AC3_NAME(x)   ff_ac3_fixed_ ## x
#define MAC_COEF(d, a, b)   MAC64(d,a,b)
#define COEF_MIN   -16777215
#define COEF_MAX   16777215
#define NEW_CPL_COORD_THRESHOLD   503317
#define AC3ENC_OPT_NONE   -1
#define AC3ENC_OPT_AUTO   -1
#define AC3ENC_OPT_OFF   0
#define AC3ENC_OPT_ON   1
#define AC3ENC_OPT_NOT_INDICATED   0
#define AC3ENC_OPT_MODE_ON   2
#define AC3ENC_OPT_MODE_OFF   1
#define AC3ENC_OPT_LARGE_ROOM   1
#define AC3ENC_OPT_SMALL_ROOM   2
#define AC3ENC_OPT_DOWNMIX_LTRT   1
#define AC3ENC_OPT_DOWNMIX_LORO   2
#define AC3ENC_OPT_ADCONV_STANDARD   0
#define AC3ENC_OPT_ADCONV_HDCD   1

Typedefs

typedef int16_t SampleType
typedef int32_t CoefType
typedef int64_t CoefSumType
typedef struct AC3EncOptions AC3EncOptions
 Encoding Options used by AVOption.
typedef struct AC3Block AC3Block
 Data for a single audio block.
typedef struct AC3EncodeContext AC3EncodeContext
 AC-3 encoder private context.

Functions

int ff_ac3_encode_init (AVCodecContext *avctx)
int ff_ac3_encode_close (AVCodecContext *avctx)
 Finalize encoding and free any memory allocated by the encoder.
int ff_ac3_validate_metadata (AC3EncodeContext *s)
 Validate metadata options as set by AVOption system.
void ff_ac3_adjust_frame_size (AC3EncodeContext *s)
 Adjust the frame size to make the average bit rate match the target bit rate.
void ff_ac3_compute_coupling_strategy (AC3EncodeContext *s)
 Set the initial coupling strategy parameters prior to coupling analysis.
void ff_ac3_apply_rematrixing (AC3EncodeContext *s)
 Apply stereo rematrixing to coefficients based on rematrixing flags.
void ff_ac3_process_exponents (AC3EncodeContext *s)
 Calculate final exponents from the supplied MDCT coefficients and exponent shift.
int ff_ac3_compute_bit_allocation (AC3EncodeContext *s)
void ff_ac3_group_exponents (AC3EncodeContext *s)
 Group exponents.
void ff_ac3_quantize_mantissas (AC3EncodeContext *s)
 Quantize mantissas using coefficients, exponents, and bit allocation pointers.
void ff_ac3_output_frame (AC3EncodeContext *s, unsigned char *frame)
 Write the frame to the output bitstream.
void ff_ac3_fixed_mdct_end (AC3EncodeContext *s)
void ff_ac3_float_mdct_end (AC3EncodeContext *s)
 Finalize MDCT and free allocated memory.
int ff_ac3_fixed_mdct_init (AC3EncodeContext *s)
int ff_ac3_float_mdct_init (AC3EncodeContext *s)
 Initialize MDCT tables.
int ff_ac3_fixed_allocate_sample_buffers (AC3EncodeContext *s)
int ff_ac3_float_allocate_sample_buffers (AC3EncodeContext *s)
int ff_ac3_fixed_encode_frame (AVCodecContext *avctx, unsigned char *frame, int buf_size, void *data)
int ff_ac3_float_encode_frame (AVCodecContext *avctx, unsigned char *frame, int buf_size, void *data)

Variables

const uint64_t ff_ac3_channel_layouts [19]
 List of supported channel layouts.

Detailed Description

AC-3 encoder & E-AC-3 encoder common header.

Definition in file ac3enc.h.


Define Documentation

#define AC3_NAME (   x)    ff_ac3_fixed_ ## x

Definition at line 60 of file ac3enc.h.

#define AC3ENC_OPT_ADCONV_HDCD   1

Definition at line 85 of file ac3enc.h.

Referenced by dprint_options().

Definition at line 84 of file ac3enc.h.

Referenced by dprint_options(), and ff_ac3_validate_metadata().

#define AC3ENC_OPT_AUTO   -1

Definition at line 72 of file ac3enc.h.

Referenced by set_bandwidth().

#define AC3ENC_OPT_DOWNMIX_LORO   2

Definition at line 83 of file ac3enc.h.

Referenced by dprint_options().

#define AC3ENC_OPT_DOWNMIX_LTRT   1

Definition at line 82 of file ac3enc.h.

Referenced by dprint_options().

#define AC3ENC_OPT_LARGE_ROOM   1

Definition at line 80 of file ac3enc.h.

Referenced by dprint_options().

#define AC3ENC_OPT_MODE_OFF   1

Definition at line 77 of file ac3enc.h.

Referenced by dprint_options().

#define AC3ENC_OPT_MODE_ON   2

Definition at line 76 of file ac3enc.h.

Referenced by dprint_options().

#define AC3ENC_OPT_NONE   -1

Definition at line 71 of file ac3enc.h.

Referenced by ff_ac3_validate_metadata().

#define AC3ENC_OPT_NOT_INDICATED   0

Definition at line 75 of file ac3enc.h.

Referenced by dprint_options(), and ff_ac3_validate_metadata().

#define AC3ENC_OPT_OFF   0

Definition at line 73 of file ac3enc.h.

Referenced by ff_ac3_validate_metadata().

#define AC3ENC_OPT_ON   1

Definition at line 74 of file ac3enc.h.

Referenced by ff_ac3_validate_metadata().

#define AC3ENC_OPT_SMALL_ROOM   2

Definition at line 81 of file ac3enc.h.

Referenced by dprint_options().

Definition at line 44 of file ac3enc.h.

#define AC3ENC_TYPE_AC3   1

Definition at line 47 of file ac3enc.h.

#define AC3ENC_TYPE_AC3_FIXED   0

Definition at line 46 of file ac3enc.h.

#define AC3ENC_TYPE_EAC3   2

Definition at line 48 of file ac3enc.h.

#define COEF_MAX   16777215

Definition at line 63 of file ac3enc.h.

Referenced by calc_cpl_coord(), and clip_coefficients().

#define COEF_MIN   -16777215

Definition at line 62 of file ac3enc.h.

Referenced by clip_coefficients().

#define MAC_COEF (   d,
  a,
  b 
)    MAC64(d,a,b)

Definition at line 61 of file ac3enc.h.

Referenced by apply_channel_coupling(), and compute_rematrixing_strategy().

#define NEW_CPL_COORD_THRESHOLD   503317

Definition at line 64 of file ac3enc.h.

Referenced by apply_channel_coupling().

#define OFFSET (   param)    offsetof(AC3EncodeContext, options.param)

Definition at line 43 of file ac3enc.h.


Typedef Documentation

typedef struct AC3Block AC3Block

Data for a single audio block.

AC-3 encoder private context.

typedef struct AC3EncOptions AC3EncOptions

Encoding Options used by AVOption.

typedef int64_t CoefSumType

Definition at line 67 of file ac3enc.h.

typedef int32_t CoefType

Definition at line 66 of file ac3enc.h.

typedef int16_t SampleType

Definition at line 65 of file ac3enc.h.


Function Documentation

Adjust the frame size to make the average bit rate match the target bit rate.

This is only needed for 11025, 22050, and 44100 sample rates or any E-AC-3.

Parameters:
sAC-3 encoder private context

Definition at line 182 of file ac3enc.c.

Referenced by encode_frame().

Apply stereo rematrixing to coefficients based on rematrixing flags.

Parameters:
sAC-3 encoder private context

Definition at line 271 of file ac3enc.c.

Referenced by encode_frame().

Definition at line 1145 of file ac3enc.c.

Referenced by encode_frame().

Set the initial coupling strategy parameters prior to coupling analysis.

Parameters:
sAC-3 encoder private context

Definition at line 200 of file ac3enc.c.

Referenced by encode_frame().

Finalize encoding and free any memory allocated by the encoder.

Parameters:
avctxCodec context

Definition at line 2020 of file ac3enc.c.

Referenced by ff_ac3_encode_init().

Definition at line 2410 of file ac3enc.c.

Referenced by ac3_fixed_encode_init().

int ff_ac3_fixed_encode_frame ( AVCodecContext avctx,
unsigned char *  frame,
int  buf_size,
void data 
)
int ff_ac3_float_encode_frame ( AVCodecContext avctx,
unsigned char *  frame,
int  buf_size,
void data 
)

Finalize MDCT and free allocated memory.

Parameters:
sAC-3 encoder private context

Definition at line 50 of file ac3enc_float.c.

Referenced by ff_ac3_encode_init().

Initialize MDCT tables.

Parameters:
sAC-3 encoder private context
Returns:
0 on success, negative error code on failure

Definition at line 63 of file ac3enc_float.c.

Referenced by ff_ac3_encode_init().

Group exponents.

3 delta-encoded exponents are in each 7-bit group. The number of groups varies depending on exponent strategy and bandwidth.

Parameters:
sAC-3 encoder private context

Definition at line 578 of file ac3enc.c.

Referenced by encode_frame().

void ff_ac3_output_frame ( AC3EncodeContext s,
unsigned char *  frame 
)

Write the frame to the output bitstream.

Parameters:
sAC-3 encoder private context
frameoutput data buffer

Definition at line 1664 of file ac3enc.c.

Referenced by encode_frame().

Calculate final exponents from the supplied MDCT coefficients and exponent shift.

Extract exponents from MDCT coefficients, calculate exponent strategies, and encode final exponents.

Parameters:
sAC-3 encoder private context

Definition at line 636 of file ac3enc.c.

Referenced by encode_frame().

Quantize mantissas using coefficients, exponents, and bit allocation pointers.

Parameters:
sAC-3 encoder private context

Definition at line 1302 of file ac3enc.c.

Referenced by encode_frame().

Validate metadata options as set by AVOption system.

These values can optionally be changed per-frame.

Parameters:
sAC-3 encoder private context

Definition at line 1836 of file ac3enc.c.

Referenced by encode_frame(), and validate_options().


Variable Documentation

const uint64_t ff_ac3_channel_layouts[19]

List of supported channel layouts.

Definition at line 80 of file ac3enc.c.