FFmpeg
Data Structures | Macros | Typedefs | Functions | Variables
dcaenc.c File Reference
#include "libavutil/avassert.h"
#include "libavutil/channel_layout.h"
#include "libavutil/common.h"
#include "avcodec.h"
#include "dca.h"
#include "dcadata.h"
#include "dcaenc.h"
#include "internal.h"
#include "mathops.h"
#include "put_bits.h"

Go to the source code of this file.

Data Structures

struct   DCAEncContext
 
struct   cplx32
 

Macros

#define  MAX_CHANNELS   6
 
#define  DCA_MAX_FRAME_SIZE   16384
 
#define  DCA_HEADER_SIZE   13
 
#define  DCA_LFE_SAMPLES   8
 
#define  DCAENC_SUBBANDS   32
 
#define  SUBFRAMES   1
 
#define  SUBSUBFRAMES   2
 
#define  SUBBAND_SAMPLES   (SUBFRAMES * SUBSUBFRAMES * 8)
 
#define  AUBANDS   25
 
#define  USED_1ABITS   1
 
#define  USED_NABITS   2
 
#define  USED_26ABITS   4
 

Typedefs

typedef void(*  walk_band_t )(DCAEncContext *c, int band1, int band2, int f, int32_t spectrum1, int32_t spectrum2, int channel, int32_t *arg)
 

Functions

static double  hom (double f)
 
static double  gammafilter (int i, double f)
 
static int  encode_init (AVCodecContext *avctx)
 
static int32_t  cos_t (int x)
 
static int32_t  sin_t (int x)
 
static int32_t  half32 (int32_t a)
 
 
static void  subband_transform (DCAEncContext *c, const int32_t *input)
 
static void  lfe_downsample (DCAEncContext *c, const int32_t *input)
 
static void  fft (const int32_t in[2 *256], cplx32 out[256])
 
static int32_t  get_cb (int32_t in)
 
 
static void  adjust_jnd (int samplerate_index, const int32_t in[512], int32_t out_cb[256])
 
static void  walk_band_low (DCAEncContext *c, int band, int channel, walk_band_t walk, int32_t *arg)
 
static void  walk_band_high (DCAEncContext *c, int band, int channel, walk_band_t walk, int32_t *arg)
 
static void  update_band_masking (DCAEncContext *c, int band1, int band2, int f, int32_t spectrum1, int32_t spectrum2, int channel, int32_t *arg)
 
static void  calc_masking (DCAEncContext *c, const int32_t *input)
 
 
 
 
static void  shift_history (DCAEncContext *c, const int32_t *input)
 
 
static int  calc_one_scale (int32_t peak_cb, int abits, softfloat *quant)
 
 
 
 
 
static void  put_subframe_samples (DCAEncContext *c, int ss, int band, int ch)
 
static void  put_subframe (DCAEncContext *c, int subframe)
 
static int  encode_frame (AVCodecContext *avctx, AVPacket *avpkt, const AVFrame *frame, int *got_packet_ptr)
 

Variables

static int32_t  cos_table [2048]
 
static int32_t  band_interpolation [2][512]
 
static int32_t  band_spectrum [2][8]
 
static int32_t  auf [9][AUBANDS][256]
 
static int32_t  cb_to_add [256]
 
static int32_t  cb_to_level [2048]
 
static int32_t  lfe_fir_64i [512]
 
static const int  snr_fudge = 128
 
static const AVCodecDefault  defaults []
 
 

Macro Definition Documentation

#define MAX_CHANNELS   6

Definition at line 35 of file dcaenc.c.

#define DCA_MAX_FRAME_SIZE   16384

Definition at line 36 of file dcaenc.c.

Referenced by encode_init().

#define DCA_HEADER_SIZE   13

Definition at line 37 of file dcaenc.c.

#define DCA_LFE_SAMPLES   8

Definition at line 38 of file dcaenc.c.

Referenced by find_peaks(), lfe_downsample(), and put_subframe().

#define DCAENC_SUBBANDS   32

Definition at line 40 of file dcaenc.c.

Referenced by put_primary_audio_header(), and put_subframe().

#define SUBFRAMES   1

Definition at line 41 of file dcaenc.c.

Referenced by encode_frame(), formant_postfilter(), g723_1_decode_frame(), generate_noise(), lsp_interpolate(), put_primary_audio_header(), and unpack_bitstream().

#define SUBSUBFRAMES   2

Definition at line 42 of file dcaenc.c.

Referenced by calc_masking(), and put_subframe().

#define SUBBAND_SAMPLES   (SUBFRAMES * SUBSUBFRAMES * 8)

Definition at line 43 of file dcaenc.c.

Referenced by encode_init(), find_peaks(), put_frame_header(), quantize_all(), and subband_transform().

#define AUBANDS   25

Definition at line 44 of file dcaenc.c.

Referenced by adjust_jnd(), and encode_init().

#define USED_1ABITS   1

Definition at line 551 of file dcaenc.c.

Referenced by assign_bits(), and init_quantization_noise().

#define USED_NABITS   2

Definition at line 552 of file dcaenc.c.

Referenced by init_quantization_noise().

#define USED_26ABITS   4

Definition at line 553 of file dcaenc.c.

Referenced by assign_bits(), and init_quantization_noise().

Typedef Documentation

typedef void(* walk_band_t)(DCAEncContext *c, int band1, int band2, int f, int32_t spectrum1, int32_t spectrum2, int channel, int32_t *arg)

Definition at line 445 of file dcaenc.c.

Function Documentation

static double hom ( double  f )
static

Definition at line 87 of file dcaenc.c.

Referenced by encode_init().

static double gammafilter ( int  i,
double  f 
)
static

Definition at line 97 of file dcaenc.c.

Referenced by encode_init().

static int encode_init ( AVCodecContextavctx )
static

Definition at line 106 of file dcaenc.c.

static int32_t cos_t ( int  x )
inlinestatic

Definition at line 217 of file dcaenc.c.

Referenced by fft(), sin_t(), and subband_transform().

static int32_t sin_t ( int  x )
inlinestatic

Definition at line 222 of file dcaenc.c.

Referenced by fft().

static int32_t half32 ( int32_t  a )
inlinestatic

Definition at line 227 of file dcaenc.c.

Referenced by fft().

static int32_t mul32 ( int32_t  a,
int32_t  b 
)
inlinestatic

Definition at line 232 of file dcaenc.c.

Referenced by calc_one_scale(), fft(), init_quantization_noise(), lfe_downsample(), quantize_value(), and subband_transform().

static void subband_transform ( DCAEncContextc,
const int32_tinput 
)
static

Definition at line 238 of file dcaenc.c.

Referenced by encode_frame().

static void lfe_downsample ( DCAEncContextc,
const int32_tinput 
)
static

Definition at line 288 of file dcaenc.c.

Referenced by encode_frame().

static void fft ( const int32_t  in[2 *256],
cplx32  out[256] 
)
static

Definition at line 323 of file dcaenc.c.

Referenced by adjust_jnd().

static int32_t get_cb ( int32_t  in )
static

Definition at line 390 of file dcaenc.c.

Referenced by adjust_jnd(), and find_peaks().

static int32_t add_cb ( int32_t  a,
int32_t  b 
)
static

Definition at line 404 of file dcaenc.c.

Referenced by adjust_jnd().

static void adjust_jnd ( int  samplerate_index,
const int32_t  in[512],
int32_t  out_cb[256] 
)
static

Definition at line 414 of file dcaenc.c.

Referenced by calc_masking().

static void walk_band_low ( DCAEncContextc,
int  band,
int  channel,
walk_band_t  walk,
int32_targ 
)
static

Definition at line 449 of file dcaenc.c.

Referenced by calc_masking().

static void walk_band_high ( DCAEncContextc,
int  band,
int  channel,
walk_band_t  walk,
int32_targ 
)
static

Definition at line 464 of file dcaenc.c.

Referenced by calc_masking().

static void update_band_masking ( DCAEncContextc,
int  band1,
int  band2,
int  f,
int32_t  spectrum1,
int32_t  spectrum2,
int  channel,
int32_targ 
)
static

Definition at line 479 of file dcaenc.c.

Referenced by calc_masking().

static void calc_masking ( DCAEncContextc,
const int32_tinput 
)
static

Definition at line 489 of file dcaenc.c.

Referenced by encode_frame().

static void find_peaks ( DCAEncContextc )
static

Definition at line 522 of file dcaenc.c.

Referenced by encode_frame().

static int init_quantization_noise ( DCAEncContextc,
int  noise 
)
static

Definition at line 555 of file dcaenc.c.

Referenced by assign_bits().

static void assign_bits ( DCAEncContextc )
static

Definition at line 592 of file dcaenc.c.

Referenced by encode_frame().

static void shift_history ( DCAEncContextc,
const int32_tinput 
)
static

Definition at line 630 of file dcaenc.c.

Referenced by encode_frame().

static int32_t quantize_value ( int32_t  value,
softfloat  quant 
)
static

Definition at line 639 of file dcaenc.c.

Referenced by calc_one_scale(), put_subframe(), and quantize_all().

static int calc_one_scale ( int32_t  peak_cb,
int  abits,
softfloatquant 
)
static

Definition at line 648 of file dcaenc.c.

Referenced by calc_scales().

static void calc_scales ( DCAEncContextc )
static

Definition at line 680 of file dcaenc.c.

Referenced by encode_frame().

static void quantize_all ( DCAEncContextc )
static

Definition at line 694 of file dcaenc.c.

Referenced by encode_frame().

static void put_frame_header ( DCAEncContextc )
static

Definition at line 704 of file dcaenc.c.

Referenced by encode_frame().

static void put_primary_audio_header ( DCAEncContextc )
static

Definition at line 787 of file dcaenc.c.

Referenced by encode_frame().

static void put_subframe_samples ( DCAEncContextc,
int  ss,
int  band,
int  ch 
)
static

Definition at line 833 of file dcaenc.c.

Referenced by put_subframe().

static void put_subframe ( DCAEncContextc,
int  subframe 
)
static

Definition at line 855 of file dcaenc.c.

Referenced by encode_frame().

static int encode_frame ( AVCodecContextavctx,
AVPacketavpkt,
const AVFrameframe,
int *  got_packet_ptr 
)
static

Definition at line 912 of file dcaenc.c.

Variable Documentation

int32_t cos_table[2048]
static

Definition at line 78 of file dcaenc.c.

Referenced by cos_t(), and encode_init().

int32_t band_interpolation[2][512]
static

Definition at line 79 of file dcaenc.c.

Referenced by encode_init().

int32_t band_spectrum[2][8]
static

Definition at line 80 of file dcaenc.c.

Referenced by encode_init().

int32_t auf[9][AUBANDS][256]
static

Definition at line 81 of file dcaenc.c.

Referenced by adjust_jnd(), and encode_init().

int32_t cb_to_add[256]
static

Definition at line 82 of file dcaenc.c.

Referenced by add_cb(), and encode_init().

int32_t cb_to_level[2048]
static

Definition at line 83 of file dcaenc.c.

Referenced by calc_one_scale(), encode_init(), and get_cb().

int32_t lfe_fir_64i[512]
static

Definition at line 84 of file dcaenc.c.

Referenced by encode_init(), and lfe_downsample().

const int snr_fudge = 128
static

Definition at line 550 of file dcaenc.c.

Referenced by assign_bits().

const AVCodecDefault defaults[]
static
Initial value:
= {
{ "b", "1411200" },
{ NULL },
}
#define NULL
Definition: coverity.c:32

Definition at line 950 of file dcaenc.c.

AVCodec ff_dca_encoder
Initial value:
= {
.name = "dca",
.long_name = NULL_IF_CONFIG_SMALL("DCA (DTS Coherent Acoustics)"),
.priv_data_size = sizeof(DCAEncContext),
.encode2 = encode_frame,
.capabilities = CODEC_CAP_EXPERIMENTAL,
.supported_samplerates = sample_rates,
.channel_layouts = (const uint64_t[]) { AV_CH_LAYOUT_MONO,
0 },
.defaults = defaults,
}
static av_cold int init(AVCodecContext *avctx)
Definition: avrndec.c:35
#define AV_CH_LAYOUT_STEREO
Definition: channel_layout.h:86
static int encode_frame(AVCodecContext *avctx, AVPacket *avpkt, const AVFrame *frame, int *got_packet_ptr)
Definition: dcaenc.c:912
#define AV_CH_LAYOUT_5POINT0
Definition: channel_layout.h:95
signed 32 bits
Definition: samplefmt.h:63
#define AV_CH_LAYOUT_5POINT1
Definition: channel_layout.h:96
#define NULL_IF_CONFIG_SMALL(x)
Return NULL if CONFIG_SMALL is true, otherwise the argument without modification. ...
Definition: internal.h:175
static const int sample_rates[]
Definition: dcaenc.h:32
#define AV_CH_LAYOUT_2_2
Definition: channel_layout.h:93
AVSampleFormat
Audio sample formats.
Definition: samplefmt.h:59
static int encode_init(AVCodecContext *avctx)
Definition: dcaenc.c:106
#define CODEC_CAP_EXPERIMENTAL
Codec is experimental and is thus avoided in favor of non experimental encoders.
Definition: avcodec.h:852
static enum AVSampleFormat sample_fmts[]
Definition: adpcmenc.c:701
static const AVCodecDefault defaults[]
Definition: dcaenc.c:950
#define AV_CH_LAYOUT_MONO
Definition: channel_layout.h:85

Definition at line 955 of file dcaenc.c.


Generated on Wed Jun 10 2015 01:57:05 for FFmpeg by   doxygen 1.8.6

AltStyle によって変換されたページ (->オリジナル) /