libavcodec/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

Defines

#define DEFAULT_FRAME_SIZE   4096
 ALAC audio encoder Copyright (c) 2008 Jaikrishnan Menon <realityman@gmx.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

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


Define 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.

#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 <realityman@gmx.net>.

This file is part of FFmpeg.

FFmpeg 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.

FFmpeg 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 FFmpeg; 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.


Function Documentation

static av_cold int alac_encode_close ( AVCodecContext avctx  )  [static]

Definition at line 527 of file alacenc.c.

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

Definition at line 476 of file alacenc.c.

static av_cold int alac_encode_init ( AVCodecContext avctx  )  [static]

Definition at line 380 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(), and channel_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(), and write_frame().


Variable Documentation

Initial value:

 {
    .name           = "alac",
    .type           = AVMEDIA_TYPE_AUDIO,
    .id             = CODEC_ID_ALAC,
    .priv_data_size = sizeof(AlacEncodeContext),
    .init           = alac_encode_init,
    .encode         = alac_encode_frame,
    .close          = alac_encode_close,
    .capabilities = CODEC_CAP_SMALL_LAST_FRAME,
    .sample_fmts = (const enum AVSampleFormat[]){ AV_SAMPLE_FMT_S16,
                                                  AV_SAMPLE_FMT_NONE },
    .long_name = NULL_IF_CONFIG_SMALL("ALAC (Apple Lossless Audio Codec)"),
}

Definition at line 537 of file alacenc.c.


Generated on Fri Oct 26 02:43:46 2012 for FFmpeg by  doxygen 1.5.8