FFmpeg
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Data Structures | Macros | Enumerations | Functions | Variables
atrac3plus.h File Reference

Global structures, constants and data for ATRAC3+ decoder. More...

#include <stdint.h>
#include "libavutil/float_dsp.h"
#include "atrac.h"
#include "avcodec.h"
#include "fft.h"
#include "get_bits.h"

Go to the source code of this file.

Data Structures

struct  Atrac3pIPQFChannelCtx
 Per-channel IPQF history. More...
 
struct  Atrac3pWaveEnvelope
 Amplitude envelope of a group of sine waves. More...
 
struct  Atrac3pWavesData
 Parameters of a group of sine waves. More...
 
struct  Atrac3pWaveParam
 Parameters of a single sine wave. More...
 
struct  Atrac3pChanParams
 Sound channel parameters. More...
 
struct  Atrac3pWaveSynthParams
 
struct  Atrac3pChanUnitCtx
 Channel unit parameters. More...
 

Macros

#define ATRAC3P_SUBBANDS   16
 Global unit sizes.
 
#define ATRAC3P_SUBBAND_SAMPLES   128
 number of samples per subband
 
#define ATRAC3P_FRAME_SAMPLES   (ATRAC3P_SUBBAND_SAMPLES * ATRAC3P_SUBBANDS)
 
#define ATRAC3P_PQF_FIR_LEN   12
 length of the prototype FIR of the PQF
 
#define ATRAC3P_POWER_COMP_OFF   15
 Global constants.
 

Enumerations

enum  Atrac3pChannelUnitTypes { CH_UNIT_MONO = 0, CH_UNIT_STEREO = 1, CH_UNIT_EXTENSION = 2, CH_UNIT_TERMINATOR = 3 }
 ATRAC3+ channel unit types. More...
 

Functions

void ff_atrac3p_init_vlcs (void)
 Initialize VLC tables for bitstream parsing.
 
int ff_atrac3p_decode_channel_unit (GetBitContext *gb, Atrac3pChanUnitCtx *ctx, int num_channels, AVCodecContext *avctx)
 Decode bitstream data of a channel unit.
 
void ff_atrac3p_init_imdct (AVCodecContext *avctx, FFTContext *mdct_ctx)
 Initialize IMDCT transform.
 
void ff_atrac3p_init_wave_synth (void)
 Initialize sine waves synthesizer.
 
void ff_atrac3p_generate_tones (Atrac3pChanUnitCtx *ch_unit, AVFloatDSPContext *fdsp, int ch_num, int sb, float *out)
 Synthesize sine waves for a particular subband.
 
void ff_atrac3p_power_compensation (Atrac3pChanUnitCtx *ctx, int ch_index, float *sp, int rng_index, int sb_num)
 Perform power compensation aka noise dithering.
 
void ff_atrac3p_imdct (AVFloatDSPContext *fdsp, FFTContext *mdct_ctx, float *pIn, float *pOut, int wind_id, int sb)
 Regular IMDCT and windowing without overlapping, with spectrum reversal in the odd subbands.
 
void ff_atrac3p_ipqf (FFTContext *dct_ctx, Atrac3pIPQFChannelCtx *hist, const float *in, float *out)
 Subband synthesis filter based on the polyphase quadrature (pseudo-QMF) filter bank.
 

Variables

const uint16_t ff_atrac3p_qu_to_spec_pos [33]
 Map quant unit number to its position in the spectrum.
 
const float ff_atrac3p_sf_tab [64]
 
const float ff_atrac3p_mant_tab [8]
 

Detailed Description

Global structures, constants and data for ATRAC3+ decoder.

Definition in file atrac3plus.h.

Macro Definition Documentation

#define ATRAC3P_SUBBANDS   16

Global unit sizes.

number of PQF subbands

Definition at line 40 of file atrac3plus.h.

Referenced by decode_gainc_data(), decode_residual_spectrum(), decode_tones_info(), ff_atrac3p_ipqf(), and reconstruct_frame().

#define ATRAC3P_SUBBAND_SAMPLES   128

number of samples per subband

Definition at line 41 of file atrac3plus.h.

Referenced by decode_residual_spectrum(), ff_atrac3p_imdct(), ff_atrac3p_ipqf(), ff_atrac3p_power_compensation(), and reconstruct_frame().

#define ATRAC3P_FRAME_SAMPLES   (ATRAC3P_SUBBAND_SAMPLES * ATRAC3P_SUBBANDS)

Definition at line 42 of file atrac3plus.h.

Referenced by atrac3p_decode_frame(), and ff_atrac3p_ipqf().

#define ATRAC3P_PQF_FIR_LEN   12

length of the prototype FIR of the PQF

Definition at line 44 of file atrac3plus.h.

Referenced by ff_atrac3p_ipqf().

#define ATRAC3P_POWER_COMP_OFF   15

Global constants.

disable power compensation

Definition at line 47 of file atrac3plus.h.

Referenced by decode_spectrum(), and ff_atrac3p_power_compensation().

Enumeration Type Documentation

ATRAC3+ channel unit types.

Enumerator:
CH_UNIT_MONO 

unit containing one coded channel

CH_UNIT_STEREO 

unit containing two jointly-coded channels

CH_UNIT_EXTENSION 

unit containing extension information

CH_UNIT_TERMINATOR 

unit sequence terminator

Definition at line 50 of file atrac3plus.h.

Function Documentation

void ff_atrac3p_init_vlcs ( void  )

Initialize VLC tables for bitstream parsing.

Definition at line 83 of file atrac3plus.c.

Referenced by atrac3p_decode_init().

int ff_atrac3p_decode_channel_unit ( GetBitContext gb,
Atrac3pChanUnitCtx ctx,
int  num_channels,
AVCodecContext avctx 
)

Decode bitstream data of a channel unit.

Parameters
[in]gbthe GetBit context
[in,out]ctxptr to the channel unit context
[in]num_channelsnumber of channels to process
[in]avctxptr to the AVCodecContext
Returns
result code: 0 = OK, otherwise - error code

Definition at line 1764 of file atrac3plus.c.

Referenced by atrac3p_decode_frame().

void ff_atrac3p_init_imdct ( AVCodecContext avctx,
FFTContext mdct_ctx 
)

Initialize IMDCT transform.

Parameters
[in]avctxptr to the AVCodecContext
[in]mdct_ctxpointer to MDCT transform context

Definition at line 79 of file atrac3plusdsp.c.

Referenced by atrac3p_decode_init().

void ff_atrac3p_init_wave_synth ( void  )

Initialize sine waves synthesizer.

Definition at line 96 of file atrac3plusdsp.c.

Referenced by atrac3p_decode_init().

void ff_atrac3p_generate_tones ( Atrac3pChanUnitCtx ch_unit,
AVFloatDSPContext fdsp,
int  ch_num,
int  sb,
float *  out 
)

Synthesize sine waves for a particular subband.

Parameters
[in]ch_unitpointer to the channel unit context
[in]fdsppointer to float DSP context
[in]ch_numwhich channel to process
[in]sbwhich subband to process
[out]outreceives processed data

Definition at line 177 of file atrac3plusdsp.c.

Referenced by reconstruct_frame().

void ff_atrac3p_power_compensation ( Atrac3pChanUnitCtx ctx,
int  ch_index,
float *  sp,
int  rng_index,
int  sb_num 
)

Perform power compensation aka noise dithering.

Parameters
[in]ctxptr to the channel context
[in]ch_indexwhich channel to process
[in,out]spptr to channel spectrum to process
[in]rng_indexindicates which RNG table to use
[in]sb_numwhich subband to process

Definition at line 411 of file atrac3plusdsp.c.

Referenced by decode_residual_spectrum().

void ff_atrac3p_imdct ( AVFloatDSPContext fdsp,
FFTContext mdct_ctx,
float *  pIn,
float *  pOut,
int  wind_id,
int  sb 
)

Regular IMDCT and windowing without overlapping, with spectrum reversal in the odd subbands.

Parameters
[in]fdsppointer to float DSP context
[in]mdct_ctxpointer to MDCT transform context
[in]pInfloat input
[out]pOutfloat output
[in]wind_idwhich MDCT window to apply
[in]sbsubband number

Definition at line 457 of file atrac3plusdsp.c.

Referenced by reconstruct_frame().

void ff_atrac3p_ipqf ( FFTContext dct_ctx,
Atrac3pIPQFChannelCtx hist,
const float *  in,
float *  out 
)

Subband synthesis filter based on the polyphase quadrature (pseudo-QMF) filter bank.

Parameters
[in]dct_ctxptr to the pre-initialized IDCT context
[in,out]histptr to the filter history
[in]ininput data to process
[out]outreceives processed data

Definition at line 598 of file atrac3plusdsp.c.

Referenced by reconstruct_frame().

Variable Documentation

const uint16_t ff_atrac3p_qu_to_spec_pos[33]

Map quant unit number to its position in the spectrum.

To get the number of spectral lines in each quant unit do the following: num_specs = qu_to_spec_pos[i+1] - qu_to_spec_pos[i]

Definition at line 41 of file atrac3plusdsp.c.

Referenced by decode_residual_spectrum(), decode_spectrum(), and ff_atrac3p_power_compensation().

const float ff_atrac3p_sf_tab[64]

Definition at line 51 of file atrac3plusdsp.c.

Referenced by decode_residual_spectrum(), and ff_atrac3p_power_compensation().

const float ff_atrac3p_mant_tab[8]

Definition at line 66 of file atrac3plusdsp.c.

Referenced by decode_residual_spectrum(), and ff_atrac3p_power_compensation().