alac.c File Reference

ALAC (Apple Lossless Audio Codec) decoder. More...

#include "libavutil/channel_layout.h"
#include "avcodec.h"
#include "get_bits.h"
#include "bytestream.h"
#include "internal.h"
#include "unary.h"
#include "mathops.h"
#include "alac_data.h"

Go to the source code of this file.

Data Structures

struct  ALACContext

Macros

#define ALAC_EXTRADATA_SIZE   36

Functions

static unsigned int decode_scalar (GetBitContext *gb, int k, int bps)
static void rice_decompress (ALACContext *alac, int32_t *output_buffer, int nb_samples, int bps, int rice_history_mult)
static int sign_only (int v)
static void lpc_prediction (int32_t *error_buffer, int32_t *buffer_out, int nb_samples, int bps, int16_t *lpc_coefs, int lpc_order, int lpc_quant)
static void decorrelate_stereo (int32_t *buffer[2], int nb_samples, int decorr_shift, int decorr_left_weight)
static void append_extra_bits (int32_t *buffer[2], int32_t *extra_bits_buffer[2], int extra_bits, int channels, int nb_samples)
static int decode_element (AVCodecContext *avctx, void *data, int ch_index, int channels)
static int alac_decode_frame (AVCodecContext *avctx, void *data, int *got_frame_ptr, AVPacket *avpkt)
static av_cold int alac_decode_close (AVCodecContext *avctx)
static int allocate_buffers (ALACContext *alac)
static int alac_set_info (ALACContext *alac)
static av_cold int alac_decode_init (AVCodecContext *avctx)

Variables

AVCodec ff_alac_decoder

Detailed Description

ALAC (Apple Lossless Audio Codec) decoder.

Author
2005 David Hammerton
See Also
http://crazney.net/programs/itunes/alac.html

Note: This decoder expects a 36-byte QuickTime atom to be passed through the extradata[_size] fields. This atom is tacked onto the end of an 'alac' stsd atom and has the following format:

32bit atom size 32bit tag ("alac") 32bit tag version (0) 32bit samples per frame (used when not set explicitly in the frames) 8bit compatible version (0) 8bit sample size 8bit history mult (40) 8bit initial history (14) 8bit rice param limit (10) 8bit channels 16bit maxRun (255) 32bit max coded frame size (0 means unknown) 32bit average bitrate (0 means unknown) 32bit samplerate

Definition in file alac.c.

Macro Definition Documentation

#define ALAC_EXTRADATA_SIZE   36

Definition at line 57 of file alac.c.

Referenced by alac_decode_init().

Function Documentation

static av_cold int alac_decode_close ( AVCodecContext *  avctx)
static

Definition at line 454 of file alac.c.

Referenced by allocate_buffers().

static int alac_decode_frame ( AVCodecContext *  avctx,
void *  data,
int *  got_frame_ptr,
AVPacket *  avpkt 
)
static

Definition at line 399 of file alac.c.

static av_cold int alac_decode_init ( AVCodecContext *  avctx)
static

Definition at line 522 of file alac.c.

static int alac_set_info ( ALACContext *  alac)
static

Definition at line 492 of file alac.c.

Referenced by alac_decode_init().

static int allocate_buffers ( ALACContext *  alac)
static

Definition at line 469 of file alac.c.

Referenced by alac_decode_init().

static void append_extra_bits ( int32_t *  buffer[2],
int32_t *  extra_bits_buffer[2],
int  extra_bits,
int  channels,
int  nb_samples 
)
static

Definition at line 241 of file alac.c.

Referenced by decode_element().

static int decode_element ( AVCodecContext *  avctx,
void *  data,
int  ch_index,
int  channels 
)
static

Definition at line 251 of file alac.c.

Referenced by alac_decode_frame().

static unsigned int decode_scalar ( GetBitContext *  gb,
int  k,
int  bps 
)
inlinestatic

Definition at line 79 of file alac.c.

Referenced by rice_decompress().

static void decorrelate_stereo ( int32_t *  buffer[2],
int  nb_samples,
int  decorr_shift,
int  decorr_left_weight 
)
static

Definition at line 222 of file alac.c.

Referenced by decode_element().

static void lpc_prediction ( int32_t *  error_buffer,
int32_t *  buffer_out,
int  nb_samples,
int  bps,
int16_t *  lpc_coefs,
int  lpc_order,
int  lpc_quant 
)
static

Definition at line 159 of file alac.c.

Referenced by decode_element().

static void rice_decompress ( ALACContext *  alac,
int32_t *  output_buffer,
int  nb_samples,
int  bps,
int  rice_history_mult 
)
static

Definition at line 101 of file alac.c.

Referenced by decode_element().

static int sign_only ( int  v)
inlinestatic

Definition at line 154 of file alac.c.

Referenced by lpc_prediction().

Variable Documentation

AVCodec ff_alac_decoder
Initial value:
{
.name = "alac",
.priv_data_size = sizeof(ALACContext),
.capabilities = CODEC_CAP_DR1,
.long_name = NULL_IF_CONFIG_SMALL("ALAC (Apple Lossless Audio Codec)"),
}

Definition at line 577 of file alac.c.