alacenc.c File Reference
#include "avcodec.h"
#include "put_bits.h"
#include "dsputil.h"
#include "lpc.h"
#include "mathops.h"

Go to the source code of this file.

Data Structures

struct  RiceContext
struct  AlacLPCContext
struct  AlacEncodeContext

Macros

#define DEFAULT_FRAME_SIZE   4096
 ALAC audio encoder Copyright (c) 2008 Jaikrishnan Menon reali.nosp@m.tyma.nosp@m.n@gmx.nosp@m..net
#define DEFAULT_SAMPLE_SIZE   16
#define MAX_CHANNELS   8
#define ALAC_EXTRADATA_SIZE   36
#define ALAC_FRAME_HEADER_SIZE   55
#define ALAC_FRAME_FOOTER_SIZE   3
#define ALAC_ESCAPE_CODE   0x1FF
#define ALAC_MAX_LPC_ORDER   30
#define DEFAULT_MAX_PRED_ORDER   6
#define DEFAULT_MIN_PRED_ORDER   4
#define ALAC_MAX_LPC_PRECISION   9
#define ALAC_MAX_LPC_SHIFT   9
#define ALAC_CHMODE_LEFT_RIGHT   0
#define ALAC_CHMODE_LEFT_SIDE   1
#define ALAC_CHMODE_RIGHT_SIDE   2
#define ALAC_CHMODE_MID_SIDE   3

Typedefs

typedef struct RiceContext RiceContext
typedef struct AlacLPCContext AlacLPCContext
typedef struct AlacEncodeContext AlacEncodeContext

Functions

static void init_sample_buffers (AlacEncodeContext *s, const int16_t *input_samples)
static void encode_scalar (AlacEncodeContext *s, int x, int k, int write_sample_size)
static void write_frame_header (AlacEncodeContext *s, int is_verbatim)
static void calc_predictor_params (AlacEncodeContext *s, int ch)
static int estimate_stereo_mode (int32_t *left_ch, int32_t *right_ch, int n)
static void alac_stereo_decorrelation (AlacEncodeContext *s)
static void alac_linear_predictor (AlacEncodeContext *s, int ch)
static void alac_entropy_coder (AlacEncodeContext *s)
static void write_compressed_frame (AlacEncodeContext *s)
static av_cold int alac_encode_init (AVCodecContext *avctx)
static int alac_encode_frame (AVCodecContext *avctx, uint8_t *frame, int buf_size, void *data)
static av_cold int alac_encode_close (AVCodecContext *avctx)

Variables

AVCodec ff_alac_encoder

Macro Definition Documentation

#define ALAC_CHMODE_LEFT_RIGHT   0

Definition at line 42 of file alacenc.c.

Referenced by alac_stereo_decorrelation().

#define ALAC_CHMODE_LEFT_SIDE   1

Definition at line 43 of file alacenc.c.

Referenced by alac_stereo_decorrelation().

#define ALAC_CHMODE_MID_SIDE   3

Definition at line 45 of file alacenc.c.

#define ALAC_CHMODE_RIGHT_SIDE   2

Definition at line 44 of file alacenc.c.

Referenced by alac_stereo_decorrelation().

#define ALAC_ESCAPE_CODE   0x1FF

Definition at line 35 of file alacenc.c.

Referenced by encode_scalar().

#define ALAC_EXTRADATA_SIZE   36

Definition at line 31 of file alacenc.c.

Referenced by alac_encode_init().

#define ALAC_FRAME_FOOTER_SIZE   3

Definition at line 33 of file alacenc.c.

#define ALAC_FRAME_HEADER_SIZE   55

Definition at line 32 of file alacenc.c.

#define ALAC_MAX_LPC_ORDER   30

Definition at line 36 of file alacenc.c.

Referenced by alac_encode_init().

#define ALAC_MAX_LPC_PRECISION   9

Definition at line 39 of file alacenc.c.

Referenced by calc_predictor_params().

#define ALAC_MAX_LPC_SHIFT   9

Definition at line 40 of file alacenc.c.

Referenced by calc_predictor_params().

#define DEFAULT_FRAME_SIZE   4096

ALAC audio encoder Copyright (c) 2008 Jaikrishnan Menon reali.nosp@m.tyma.nosp@m.n@gmx.nosp@m..net

This file is part of Libav.

Libav is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

Libav is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with Libav; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA

Definition at line 28 of file alacenc.c.

Referenced by alac_encode_frame(), and alac_encode_init().

#define DEFAULT_MAX_PRED_ORDER   6

Definition at line 37 of file alacenc.c.

Referenced by alac_encode_init().

#define DEFAULT_MIN_PRED_ORDER   4

Definition at line 38 of file alacenc.c.

Referenced by alac_encode_init().

#define DEFAULT_SAMPLE_SIZE   16

Definition at line 29 of file alacenc.c.

Referenced by alac_encode_init().

#define MAX_CHANNELS   8

Definition at line 30 of file alacenc.c.

Typedef Documentation

typedef struct RiceContext RiceContext

Function Documentation

static av_cold int alac_encode_close ( AVCodecContext avctx)
static

Definition at line 539 of file alacenc.c.

static int alac_encode_frame ( AVCodecContext avctx,
uint8_t *  frame,
int  buf_size,
void data 
)
static

Definition at line 488 of file alacenc.c.

static av_cold int alac_encode_init ( AVCodecContext avctx)
static

Definition at line 389 of file alacenc.c.

static void alac_entropy_coder ( AlacEncodeContext s)
static

Definition at line 302 of file alacenc.c.

Referenced by write_compressed_frame().

static void alac_linear_predictor ( AlacEncodeContext s,
int  ch 
)
static

Definition at line 239 of file alacenc.c.

Referenced by write_compressed_frame().

static void alac_stereo_decorrelation ( AlacEncodeContext s)
static

Definition at line 194 of file alacenc.c.

Referenced by write_compressed_frame().

static void calc_predictor_params ( AlacEncodeContext s,
int  ch 
)
static

Definition at line 130 of file alacenc.c.

Referenced by write_compressed_frame().

static void encode_scalar ( AlacEncodeContext s,
int  x,
int  k,
int  write_sample_size 
)
static

Definition at line 92 of file alacenc.c.

Referenced by alac_entropy_coder().

static int estimate_stereo_mode ( int32_t *  left_ch,
int32_t *  right_ch,
int  n 
)
static

Definition at line 160 of file alacenc.c.

Referenced by alac_stereo_decorrelation().

static void init_sample_buffers ( AlacEncodeContext s,
const int16_t *  input_samples 
)
static

Definition at line 78 of file alacenc.c.

Referenced by alac_encode_frame().

static void write_compressed_frame ( AlacEncodeContext s)
static

Definition at line 348 of file alacenc.c.

Referenced by alac_encode_frame().

static void write_frame_header ( AlacEncodeContext s,
int  is_verbatim 
)
static

Definition at line 120 of file alacenc.c.

Referenced by alac_encode_frame().

Variable Documentation

AVCodec ff_alac_encoder
Initial value:
{
.name = "alac",
.priv_data_size = sizeof(AlacEncodeContext),
.encode = alac_encode_frame,
.capabilities = CODEC_CAP_SMALL_LAST_FRAME,
.sample_fmts = (const enum AVSampleFormat[]){ AV_SAMPLE_FMT_S16,
.long_name = NULL_IF_CONFIG_SMALL("ALAC (Apple Lossless Audio Codec)"),
}

Definition at line 549 of file alacenc.c.