libavcodec/ac3.h File Reference

Common code between the AC-3 encoder and decoder. More...

#include "libavutil/opt.h"
#include "avcodec.h"
#include "ac3tab.h"

Go to the source code of this file.

Data Structures

struct  AC3BitAllocParameters
struct  AC3HeaderInfo
 Coded AC-3 header values up to the lfeon element, plus derived values. More...
struct  AC3EncOptions
 Encoding Options used by AVOption. More...

Defines

#define AC3_MAX_CODED_FRAME_SIZE   3840
#define AC3_MAX_CHANNELS   7
 maximum number of channels, including coupling channel
#define CPL_CH   0
 coupling channel index
#define AC3_MAX_COEFS   256
#define AC3_BLOCK_SIZE   256
#define AC3_MAX_BLOCKS   6
#define AC3_FRAME_SIZE   (AC3_MAX_BLOCKS * 256)
#define AC3_WINDOW_SIZE   (AC3_BLOCK_SIZE * 2)
#define AC3_CRITICAL_BANDS   50
#define AC3_MAX_CPL_BANDS   18
#define EXP_REUSE   0
#define EXP_NEW   1
#define EXP_D15   1
#define EXP_D25   2
#define EXP_D45   3
#define LEVEL_PLUS_3DB   1.4142135623730950
#define LEVEL_PLUS_1POINT5DB   1.1892071150027209
#define LEVEL_MINUS_1POINT5DB   0.8408964152537145
#define LEVEL_MINUS_3DB   0.7071067811865476
#define LEVEL_MINUS_4POINT5DB   0.5946035575013605
#define LEVEL_MINUS_6DB   0.5000000000000000
#define LEVEL_MINUS_9DB   0.3535533905932738
#define LEVEL_ZERO   0.0000000000000000
#define LEVEL_ONE   1.0000000000000000

Enumerations

enum  AC3DeltaStrategy { DBA_REUSE = 0, DBA_NEW, DBA_NONE, DBA_RESERVED }
 Delta bit allocation strategy. More...
enum  AC3ChannelMode {
  AC3_CHMODE_DUALMONO = 0, AC3_CHMODE_MONO, AC3_CHMODE_STEREO, AC3_CHMODE_3F,
  AC3_CHMODE_2F1R, AC3_CHMODE_3F1R, AC3_CHMODE_2F2R, AC3_CHMODE_3F2R
}
 Channel mode (audio coding mode). More...
enum  EAC3FrameType { EAC3_FRAME_TYPE_INDEPENDENT = 0, EAC3_FRAME_TYPE_DEPENDENT, EAC3_FRAME_TYPE_AC3_CONVERT, EAC3_FRAME_TYPE_RESERVED }

Functions

void ff_ac3_common_init (void)
 Initialize some tables.
void ff_ac3_bit_alloc_calc_psd (int8_t *exp, int start, int end, int16_t *psd, int16_t *band_psd)
 Calculate the log power-spectral density of the input signal.
int ff_ac3_bit_alloc_calc_mask (AC3BitAllocParameters *s, int16_t *band_psd, int start, int end, int fast_gain, int is_lfe, int dba_mode, int dba_nsegs, uint8_t *dba_offsets, uint8_t *dba_lengths, uint8_t *dba_values, int16_t *mask)
 Calculate the masking curve.

Variables

const int64_t ff_ac3_channel_layouts []
 List of supported channel layouts.
const AVOption ff_ac3_options []
AVCodec ff_ac3_float_encoder
AVCodec ff_ac3_fixed_encoder


Detailed Description

Common code between the AC-3 encoder and decoder.

Definition in file ac3.h.


Define Documentation

#define AC3_BLOCK_SIZE   256

Definition at line 35 of file ac3.h.

Referenced by allocate_sample_buffers(), apply_mdct(), and deinterleave_input_samples().

#define AC3_CRITICAL_BANDS   50

Definition at line 39 of file ac3.h.

Referenced by ff_ac3_bit_alloc_calc_mask(), and ff_ac3_common_init().

#define AC3_FRAME_SIZE   (AC3_MAX_BLOCKS * 256)

#define AC3_MAX_BLOCKS   6

#define AC3_MAX_CHANNELS   7

maximum number of channels, including coupling channel

Definition at line 31 of file ac3.h.

Referenced by ac3_decode_frame(), ac3_downmix_sse(), apply_channel_coupling(), decode_audio_block(), ff_eac3_set_cpl_states(), and set_channel_info().

#define AC3_MAX_CODED_FRAME_SIZE   3840

Definition at line 30 of file ac3.h.

Referenced by output_frame().

#define AC3_MAX_COEFS   256

#define AC3_MAX_CPL_BANDS   18

Definition at line 40 of file ac3.h.

#define AC3_WINDOW_SIZE   (AC3_BLOCK_SIZE * 2)

Definition at line 38 of file ac3.h.

Referenced by allocate_sample_buffers(), apply_mdct(), and normalize_samples().

#define CPL_CH   0

#define EXP_D15   1

Definition at line 50 of file ac3.h.

Referenced by compute_exp_strategy(), downgrade_exponents(), and exponent_init().

#define EXP_D25   2

Definition at line 51 of file ac3.h.

Referenced by compute_exp_strategy(), downgrade_exponents(), and encode_exponents_blk_ch().

#define EXP_D45   3

#define EXP_NEW   1

Definition at line 48 of file ac3.h.

Referenced by compute_exp_strategy().

#define EXP_REUSE   0

#define LEVEL_MINUS_1POINT5DB   0.8408964152537145

Definition at line 57 of file ac3.h.

#define LEVEL_MINUS_3DB   0.7071067811865476

Definition at line 58 of file ac3.h.

Referenced by set_downmix_coeffs().

#define LEVEL_MINUS_4POINT5DB   0.5946035575013605

Definition at line 59 of file ac3.h.

#define LEVEL_MINUS_6DB   0.5000000000000000

Definition at line 60 of file ac3.h.

#define LEVEL_MINUS_9DB   0.3535533905932738

Definition at line 61 of file ac3.h.

#define LEVEL_ONE   1.0000000000000000

Definition at line 63 of file ac3.h.

#define LEVEL_PLUS_1POINT5DB   1.1892071150027209

Definition at line 56 of file ac3.h.

#define LEVEL_PLUS_3DB   1.4142135623730950

Definition at line 55 of file ac3.h.

#define LEVEL_ZERO   0.0000000000000000

Definition at line 62 of file ac3.h.


Enumeration Type Documentation

Channel mode (audio coding mode).

Enumerator:
AC3_CHMODE_DUALMONO 
AC3_CHMODE_MONO 
AC3_CHMODE_STEREO 
AC3_CHMODE_3F 
AC3_CHMODE_2F1R 
AC3_CHMODE_3F1R 
AC3_CHMODE_2F2R 
AC3_CHMODE_3F2R 

Definition at line 74 of file ac3.h.

Delta bit allocation strategy.

Enumerator:
DBA_REUSE 
DBA_NEW 
DBA_NONE 
DBA_RESERVED 

Definition at line 66 of file ac3.h.

Enumerator:
EAC3_FRAME_TYPE_INDEPENDENT 
EAC3_FRAME_TYPE_DEPENDENT 
EAC3_FRAME_TYPE_AC3_CONVERT 
EAC3_FRAME_TYPE_RESERVED 

Definition at line 127 of file ac3.h.


Function Documentation

int ff_ac3_bit_alloc_calc_mask ( AC3BitAllocParameters s,
int16_t *  band_psd,
int  start,
int  end,
int  fast_gain,
int  is_lfe,
int  dba_mode,
int  dba_nsegs,
uint8_t *  dba_offsets,
uint8_t *  dba_lengths,
uint8_t *  dba_values,
int16_t *  mask 
)

Calculate the masking curve.

First, the excitation is calculated using parameters in s and the signal power in each critical band. The excitation is compared with a predefined hearing threshold table to produce the masking curve. If delta bit allocation information is provided, it is used for adjusting the masking curve, usually to give a closer match to a better psychoacoustic model.

Parameters:
[in] s adjustable bit allocation parameters
[in] band_psd signal power for each critical band
[in] start starting bin location
[in] end ending bin location
[in] fast_gain fast gain (estimated signal-to-mask ratio)
[in] is_lfe whether or not the channel being processed is the LFE
[in] dba_mode delta bit allocation mode (none, reuse, or new)
[in] dba_nsegs number of delta segments
[in] dba_offsets location offsets for each segment
[in] dba_lengths length of each segment
[in] dba_values delta bit allocation for each segment
[out] mask calculated masking curve
Returns:
returns 0 for success, non-zero for error

Definition at line 123 of file ac3.c.

Referenced by bit_alloc_masking(), and decode_audio_block().

void ff_ac3_bit_alloc_calc_psd ( int8_t *  exp,
int  start,
int  end,
int16_t *  psd,
int16_t *  band_psd 
)

Calculate the log power-spectral density of the input signal.

This gives a rough estimate of signal power in the frequency domain by using the spectral envelope (exponents). The psd is also separately grouped into critical bands for use in the calculating the masking curve. 128 units in psd = -6 dB. The dbknee parameter in AC3BitAllocParameters determines the reference level.

Parameters:
[in] exp frequency coefficient exponents
[in] start starting bin location
[in] end ending bin location
[out] psd signal power for each frequency bin
[out] band_psd signal power for each critical band

Definition at line 97 of file ac3.c.

Referenced by bit_alloc_masking(), and decode_audio_block().

void ff_ac3_common_init ( void   ) 

Initialize some tables.

note: This function must remain thread safe because it is called by the AVParser init code.

Definition at line 220 of file ac3.c.

Referenced by ac3_decode_init(), and ff_ac3_encode_init().


Variable Documentation

const int64_t ff_ac3_channel_layouts[]

List of supported channel layouts.

Definition at line 80 of file ac3enc.c.

Definition at line 128 of file ac3enc_fixed.c.

Referenced by get_codec().

Referenced by get_codec().


Generated on Fri Oct 26 02:38:14 2012 for FFmpeg by  doxygen 1.5.8