FFmpeg  4.0
Enumerations | Functions | Variables
dca_core.c File Reference
#include "dcaadpcm.h"
#include "dcadec.h"
#include "dcadata.h"
#include "dcahuff.h"
#include "dcamath.h"
#include "dca_syncwords.h"

Go to the source code of this file.

Enumerations

enum  HeaderType { HEADER_CORE, HEADER_XCH, HEADER_XXCH }
 

Functions

static int dca_get_vlc (GetBitContext *s, DCAVLC *v, int i)
 
static void get_array (GetBitContext *s, int32_t *array, int size, int n)
 
static int parse_frame_header (DCACoreDecoder *s)
 
static int parse_coding_header (DCACoreDecoder *s, enum HeaderType header, int xch_base)
 
static int parse_scale (DCACoreDecoder *s, int *scale_index, int sel)
 
static int parse_joint_scale (DCACoreDecoder *s, int sel)
 
static int parse_subframe_header (DCACoreDecoder *s, int sf, enum HeaderType header, int xch_base)
 
static int decode_blockcodes (int code1, int code2, int levels, int32_t *audio)
 
static int parse_block_codes (DCACoreDecoder *s, int32_t *audio, int abits)
 
static int parse_huffman_codes (DCACoreDecoder *s, int32_t *audio, int abits, int sel)
 
static int extract_audio (DCACoreDecoder *s, int32_t *audio, int abits, int ch)
 
static void inverse_adpcm (int32_t **subband_samples, const int16_t *vq_index, const int8_t *prediction_mode, int sb_start, int sb_end, int ofs, int len)
 
static int parse_subframe_audio (DCACoreDecoder *s, int sf, enum HeaderType header, int xch_base, int *sub_pos, int *lfe_pos)
 
static void erase_adpcm_history (DCACoreDecoder *s)
 
static int alloc_sample_buffer (DCACoreDecoder *s)
 
static int parse_frame_data (DCACoreDecoder *s, enum HeaderType header, int xch_base)
 
static int parse_xch_frame (DCACoreDecoder *s)
 
static int parse_xxch_frame (DCACoreDecoder *s)
 
static int parse_xbr_subframe (DCACoreDecoder *s, int xbr_base_ch, int xbr_nchannels, int *xbr_nsubbands, int xbr_transition_mode, int sf, int *sub_pos)
 
static int parse_xbr_frame (DCACoreDecoder *s)
 
static int rand_x96 (DCACoreDecoder *s)
 
static int parse_x96_subframe_audio (DCACoreDecoder *s, int sf, int xch_base, int *sub_pos)
 
static void erase_x96_adpcm_history (DCACoreDecoder *s)
 
static int alloc_x96_sample_buffer (DCACoreDecoder *s)
 
static int parse_x96_subframe_header (DCACoreDecoder *s, int xch_base)
 
static int parse_x96_coding_header (DCACoreDecoder *s, int exss, int xch_base)
 
static int parse_x96_frame_data (DCACoreDecoder *s, int exss, int xch_base)
 
static int parse_x96_frame (DCACoreDecoder *s)
 
static int parse_x96_frame_exss (DCACoreDecoder *s)
 
static int parse_aux_data (DCACoreDecoder *s)
 
static int parse_optional_info (DCACoreDecoder *s)
 
int ff_dca_core_parse (DCACoreDecoder *s, uint8_t *data, int size)
 
int ff_dca_core_parse_exss (DCACoreDecoder *s, uint8_t *data, DCAExssAsset *asset)
 
static int map_prm_ch_to_spkr (DCACoreDecoder *s, int ch)
 
static void erase_dsp_history (DCACoreDecoder *s)
 
static void set_filter_mode (DCACoreDecoder *s, int mode)
 
int ff_dca_core_filter_fixed (DCACoreDecoder *s, int x96_synth)
 
static int filter_frame_fixed (DCACoreDecoder *s, AVFrame *frame)
 
static int filter_frame_float (DCACoreDecoder *s, AVFrame *frame)
 
int ff_dca_core_filter_frame (DCACoreDecoder *s, AVFrame *frame)
 
av_cold void ff_dca_core_flush (DCACoreDecoder *s)
 
av_cold int ff_dca_core_init (DCACoreDecoder *s)
 
av_cold void ff_dca_core_close (DCACoreDecoder *s)
 

Variables

static const int8_t prm_ch_to_spkr_map [DCA_AMODE_COUNT][5]
 
static const uint8_t audio_mode_ch_mask [DCA_AMODE_COUNT]
 
static const uint8_t block_code_nbits [7]
 

Enumeration Type Documentation

◆ HeaderType

enum HeaderType
Enumerator
HEADER_CORE 
HEADER_XCH 
HEADER_XXCH 

Definition at line 32 of file dca_core.c.

Function Documentation

◆ dca_get_vlc()

static int dca_get_vlc ( GetBitContext s,
DCAVLC v,
int  i 
)
static

◆ get_array()

static void get_array ( GetBitContext s,
int32_t array,
int  size,
int  n 
)
static

Definition at line 73 of file dca_core.c.

Referenced by extract_audio(), parse_subframe_audio(), and parse_xbr_subframe().

◆ parse_frame_header()

static int parse_frame_header ( DCACoreDecoder s)
static

Definition at line 82 of file dca_core.c.

Referenced by ff_dca_core_parse().

◆ parse_coding_header()

static int parse_coding_header ( DCACoreDecoder s,
enum HeaderType  header,
int  xch_base 
)
static

Definition at line 151 of file dca_core.c.

Referenced by parse_frame_data().

◆ parse_scale()

static int parse_scale ( DCACoreDecoder s,
int scale_index,
int  sel 
)
inlinestatic

Definition at line 347 of file dca_core.c.

Referenced by parse_subframe_header(), and parse_x96_subframe_header().

◆ parse_joint_scale()

static int parse_joint_scale ( DCACoreDecoder s,
int  sel 
)
inlinestatic

Definition at line 376 of file dca_core.c.

Referenced by parse_subframe_header(), and parse_x96_subframe_header().

◆ parse_subframe_header()

static int parse_subframe_header ( DCACoreDecoder s,
int  sf,
enum HeaderType  header,
int  xch_base 
)
static

Definition at line 399 of file dca_core.c.

Referenced by parse_frame_data().

◆ decode_blockcodes()

static int decode_blockcodes ( int  code1,
int  code2,
int  levels,
int32_t audio 
)
inlinestatic

Definition at line 526 of file dca_core.c.

Referenced by parse_block_codes().

◆ parse_block_codes()

static int parse_block_codes ( DCACoreDecoder s,
int32_t audio,
int  abits 
)
inlinestatic

Definition at line 546 of file dca_core.c.

Referenced by extract_audio(), and parse_xbr_subframe().

◆ parse_huffman_codes()

static int parse_huffman_codes ( DCACoreDecoder s,
int32_t audio,
int  abits,
int  sel 
)
inlinestatic

Definition at line 562 of file dca_core.c.

Referenced by extract_audio().

◆ extract_audio()

static int extract_audio ( DCACoreDecoder s,
int32_t audio,
int  abits,
int  ch 
)
inlinestatic

Definition at line 573 of file dca_core.c.

Referenced by parse_subframe_audio(), and parse_x96_subframe_audio().

◆ inverse_adpcm()

static void inverse_adpcm ( int32_t **  subband_samples,
const int16_t *  vq_index,
const int8_t *  prediction_mode,
int  sb_start,
int  sb_end,
int  ofs,
int  len 
)
inlinestatic

Definition at line 600 of file dca_core.c.

Referenced by parse_subframe_audio(), and parse_x96_subframe_audio().

◆ parse_subframe_audio()

static int parse_subframe_audio ( DCACoreDecoder s,
int  sf,
enum HeaderType  header,
int  xch_base,
int sub_pos,
int lfe_pos 
)
static

Definition at line 621 of file dca_core.c.

Referenced by parse_frame_data().

◆ erase_adpcm_history()

static void erase_adpcm_history ( DCACoreDecoder s)
static

Definition at line 758 of file dca_core.c.

Referenced by alloc_sample_buffer(), and ff_dca_core_flush().

◆ alloc_sample_buffer()

static int alloc_sample_buffer ( DCACoreDecoder s)
static

Definition at line 771 of file dca_core.c.

Referenced by ff_dca_core_parse().

◆ parse_frame_data()

static int parse_frame_data ( DCACoreDecoder s,
enum HeaderType  header,
int  xch_base 
)
static

Definition at line 799 of file dca_core.c.

Referenced by ff_dca_core_parse(), parse_xch_frame(), and parse_xxch_frame().

◆ parse_xch_frame()

static int parse_xch_frame ( DCACoreDecoder s)
static

Definition at line 837 of file dca_core.c.

Referenced by ff_dca_core_parse_exss().

◆ parse_xxch_frame()

static int parse_xxch_frame ( DCACoreDecoder s)
static

Definition at line 858 of file dca_core.c.

Referenced by ff_dca_core_parse_exss().

◆ parse_xbr_subframe()

static int parse_xbr_subframe ( DCACoreDecoder s,
int  xbr_base_ch,
int  xbr_nchannels,
int xbr_nsubbands,
int  xbr_transition_mode,
int  sf,
int sub_pos 
)
static

Definition at line 935 of file dca_core.c.

Referenced by parse_xbr_frame().

◆ parse_xbr_frame()

static int parse_xbr_frame ( DCACoreDecoder s)
static

Definition at line 1070 of file dca_core.c.

Referenced by ff_dca_core_parse_exss().

◆ rand_x96()

static int rand_x96 ( DCACoreDecoder s)
static

Definition at line 1153 of file dca_core.c.

Referenced by parse_x96_subframe_audio().

◆ parse_x96_subframe_audio()

static int parse_x96_subframe_audio ( DCACoreDecoder s,
int  sf,
int  xch_base,
int sub_pos 
)
static

Definition at line 1159 of file dca_core.c.

Referenced by parse_x96_frame_data().

◆ erase_x96_adpcm_history()

static void erase_x96_adpcm_history ( DCACoreDecoder s)
static

Definition at line 1267 of file dca_core.c.

Referenced by alloc_x96_sample_buffer(), and ff_dca_core_flush().

◆ alloc_x96_sample_buffer()

static int alloc_x96_sample_buffer ( DCACoreDecoder s)
static

Definition at line 1280 of file dca_core.c.

Referenced by parse_x96_frame(), and parse_x96_frame_exss().

◆ parse_x96_subframe_header()

static int parse_x96_subframe_header ( DCACoreDecoder s,
int  xch_base 
)
static

Definition at line 1306 of file dca_core.c.

Referenced by parse_x96_frame_data().

◆ parse_x96_coding_header()

static int parse_x96_coding_header ( DCACoreDecoder s,
int  exss,
int  xch_base 
)
static

Definition at line 1390 of file dca_core.c.

Referenced by parse_x96_frame_data().

◆ parse_x96_frame_data()

static int parse_x96_frame_data ( DCACoreDecoder s,
int  exss,
int  xch_base 
)
static

Definition at line 1477 of file dca_core.c.

Referenced by parse_x96_frame(), and parse_x96_frame_exss().

◆ parse_x96_frame()

static int parse_x96_frame ( DCACoreDecoder s)
static

Definition at line 1512 of file dca_core.c.

Referenced by ff_dca_core_parse_exss().

◆ parse_x96_frame_exss()

static int parse_x96_frame_exss ( DCACoreDecoder s)
static

Definition at line 1541 of file dca_core.c.

Referenced by ff_dca_core_parse_exss().

◆ parse_aux_data()

static int parse_aux_data ( DCACoreDecoder s)
static

Definition at line 1617 of file dca_core.c.

Referenced by parse_optional_info().

◆ parse_optional_info()

static int parse_optional_info ( DCACoreDecoder s)
static

Definition at line 1685 of file dca_core.c.

Referenced by ff_dca_core_parse().

◆ ff_dca_core_parse()

int ff_dca_core_parse ( DCACoreDecoder s,
uint8_t data,
int  size 
)

Definition at line 1798 of file dca_core.c.

Referenced by dcadec_decode_frame(), and ff_dca_core_dequantize().

◆ ff_dca_core_parse_exss()

int ff_dca_core_parse_exss ( DCACoreDecoder s,
uint8_t data,
DCAExssAsset asset 
)

Definition at line 1831 of file dca_core.c.

Referenced by dcadec_decode_frame(), and ff_dca_core_dequantize().

◆ map_prm_ch_to_spkr()

static int map_prm_ch_to_spkr ( DCACoreDecoder s,
int  ch 
)
static

Definition at line 1908 of file dca_core.c.

Referenced by ff_dca_core_filter_fixed(), filter_frame_fixed(), and filter_frame_float().

◆ erase_dsp_history()

static void erase_dsp_history ( DCACoreDecoder s)
static

Definition at line 1944 of file dca_core.c.

Referenced by ff_dca_core_flush(), and set_filter_mode().

◆ set_filter_mode()

static void set_filter_mode ( DCACoreDecoder s,
int  mode 
)
static

Definition at line 1951 of file dca_core.c.

Referenced by ff_dca_core_filter_fixed(), and filter_frame_float().

◆ ff_dca_core_filter_fixed()

int ff_dca_core_filter_fixed ( DCACoreDecoder s,
int  x96_synth 
)

Definition at line 1959 of file dca_core.c.

Referenced by dcadec_decode_frame(), ff_dca_core_dequantize(), and filter_frame_fixed().

◆ filter_frame_fixed()

static int filter_frame_fixed ( DCACoreDecoder s,
AVFrame frame 
)
static

Definition at line 2063 of file dca_core.c.

Referenced by ff_dca_core_filter_frame().

◆ filter_frame_float()

static int filter_frame_float ( DCACoreDecoder s,
AVFrame frame 
)
static

Definition at line 2160 of file dca_core.c.

Referenced by ff_dca_core_filter_frame().

◆ ff_dca_core_filter_frame()

int ff_dca_core_filter_frame ( DCACoreDecoder s,
AVFrame frame 
)

Definition at line 2345 of file dca_core.c.

Referenced by dcadec_decode_frame(), and ff_dca_core_dequantize().

◆ ff_dca_core_flush()

av_cold void ff_dca_core_flush ( DCACoreDecoder s)

Definition at line 2399 of file dca_core.c.

Referenced by dcadec_flush(), and ff_dca_core_dequantize().

◆ ff_dca_core_init()

av_cold int ff_dca_core_init ( DCACoreDecoder s)

Definition at line 2412 of file dca_core.c.

Referenced by dcadec_init(), and ff_dca_core_dequantize().

◆ ff_dca_core_close()

av_cold void ff_dca_core_close ( DCACoreDecoder s)

Definition at line 2430 of file dca_core.c.

Referenced by dcadec_close(), and ff_dca_core_dequantize().

Variable Documentation

◆ prm_ch_to_spkr_map

const int8_t prm_ch_to_spkr_map[DCA_AMODE_COUNT][5]
static

◆ audio_mode_ch_mask

const uint8_t audio_mode_ch_mask[DCA_AMODE_COUNT]
static
Initial value:
= {
}
#define DCA_SPEAKER_LAYOUT_3_0
Definition: dca.h:125
#define DCA_SPEAKER_LAYOUT_3_1
Definition: dca.h:127
#define DCA_SPEAKER_LAYOUT_STEREO
Definition: dca.h:123
#define DCA_SPEAKER_LAYOUT_2_1
Definition: dca.h:126
#define DCA_SPEAKER_LAYOUT_2_2
Definition: dca.h:128
#define DCA_SPEAKER_LAYOUT_5POINT0
Definition: dca.h:129
#define DCA_SPEAKER_LAYOUT_MONO
Definition: dca.h:122

Definition at line 51 of file dca_core.c.

Referenced by ff_dca_core_parse_exss(), and parse_coding_header().

◆ block_code_nbits

const uint8_t block_code_nbits[7]
static
Initial value:
= {
7, 10, 12, 13, 15, 17, 19
}

Definition at line 64 of file dca_core.c.

Referenced by parse_block_codes().