libavcodec/alac.c File Reference

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

#include "avcodec.h"
#include "get_bits.h"
#include "bytestream.h"
#include "unary.h"
#include "mathops.h"

Go to the source code of this file.

Data Structures

struct  ALACContext

Defines

#define ALAC_EXTRADATA_SIZE   36
#define MAX_CHANNELS   2

Functions

static int decode_scalar (GetBitContext *gb, int k, int limit, int readsamplesize)
static int bastardized_rice_decompress (ALACContext *alac, int32_t *output_buffer, int output_size, int readsamplesize, int rice_initialhistory, int rice_kmodifier, int rice_historymult, int rice_kmodifier_mask)
static int sign_only (int v)
static void predictor_decompress_fir_adapt (int32_t *error_buffer, int32_t *buffer_out, int output_size, int readsamplesize, int16_t *predictor_coef_table, int predictor_coef_num, int predictor_quantitization)
static void decorrelate_stereo (int32_t *buffer[MAX_CHANNELS], int numsamples, uint8_t interlacing_shift, uint8_t interlacing_leftweight)
static void append_extra_bits (int32_t *buffer[MAX_CHANNELS], int32_t *extra_bits_buffer[MAX_CHANNELS], int extra_bits, int numchannels, int numsamples)
static void interleave_stereo_16 (int32_t *buffer[MAX_CHANNELS], int16_t *buffer_out, int numsamples)
static void interleave_stereo_24 (int32_t *buffer[MAX_CHANNELS], int32_t *buffer_out, int numsamples)
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- (0x24-)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: bytes 0-3 atom size (0x24), big-endian bytes 4-7 atom type ('alac', not the 'alac' tag from start of stsd) bytes 8-35 data bytes needed by decoder

Extradata: 32bit size 32bit tag (=alac) 32bit zero? 32bit max sample per frame 8bit ?? (zero?) 8bit sample size 8bit history mult 8bit initial history 8bit kmodifier 8bit channels? 16bit ?? 32bit max coded frame size 32bit bitrate? 32bit samplerate

Definition in file alac.c.


Define Documentation

#define ALAC_EXTRADATA_SIZE   36

Definition at line 59 of file alac.c.

Referenced by alac_decode_init(), and alac_encode_init().

#define MAX_CHANNELS   2

Definition at line 60 of file alac.c.


Function Documentation

static av_cold int alac_decode_close ( AVCodecContext avctx  )  [static]

Definition at line 546 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 358 of file alac.c.

static av_cold int alac_decode_init ( AVCodecContext avctx  )  [static]

Definition at line 610 of file alac.c.

static int alac_set_info ( ALACContext alac  )  [static]

Definition at line 581 of file alac.c.

Referenced by alac_decode_init().

static int allocate_buffers ( ALACContext alac  )  [static]

Definition at line 560 of file alac.c.

static void append_extra_bits ( int32_t *  buffer[MAX_CHANNELS],
int32_t *  extra_bits_buffer[MAX_CHANNELS],
int  extra_bits,
int  numchannels,
int  numsamples 
) [static]

Definition at line 325 of file alac.c.

Referenced by alac_decode_frame().

static int bastardized_rice_decompress ( ALACContext alac,
int32_t *  output_buffer,
int  output_size,
int  readsamplesize,
int  rice_initialhistory,
int  rice_kmodifier,
int  rice_historymult,
int  rice_kmodifier_mask 
) [static]

Definition at line 115 of file alac.c.

Referenced by alac_decode_frame().

static int decode_scalar ( GetBitContext gb,
int  k,
int  limit,
int  readsamplesize 
) [inline, static]

Definition at line 88 of file alac.c.

Referenced by bastardized_rice_decompress().

static void decorrelate_stereo ( int32_t *  buffer[MAX_CHANNELS],
int  numsamples,
uint8_t  interlacing_shift,
uint8_t  interlacing_leftweight 
) [static]

Definition at line 305 of file alac.c.

Referenced by alac_decode_frame().

static void interleave_stereo_16 ( int32_t *  buffer[MAX_CHANNELS],
int16_t buffer_out,
int  numsamples 
) [static]

Definition at line 336 of file alac.c.

Referenced by alac_decode_frame().

static void interleave_stereo_24 ( int32_t *  buffer[MAX_CHANNELS],
int32_t *  buffer_out,
int  numsamples 
) [static]

Definition at line 347 of file alac.c.

Referenced by alac_decode_frame().

static void predictor_decompress_fir_adapt ( int32_t *  error_buffer,
int32_t *  buffer_out,
int  output_size,
int  readsamplesize,
int16_t predictor_coef_table,
int  predictor_coef_num,
int  predictor_quantitization 
) [static]

Definition at line 193 of file alac.c.

Referenced by alac_decode_frame().

static int sign_only ( int  v  )  [inline, static]

Definition at line 188 of file alac.c.

Referenced by predictor_decompress_fir_adapt().


Variable Documentation

Initial value:

 {
    .name           = "alac",
    .type           = AVMEDIA_TYPE_AUDIO,
    .id             = CODEC_ID_ALAC,
    .priv_data_size = sizeof(ALACContext),
    .init           = alac_decode_init,
    .close          = alac_decode_close,
    .decode         = alac_decode_frame,
    .capabilities   = CODEC_CAP_DR1,
    .long_name = NULL_IF_CONFIG_SMALL("ALAC (Apple Lossless Audio Codec)"),
}

Definition at line 663 of file alac.c.


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