alac.c File Reference


Detailed Description

ALAC (Apple Lossless Audio Codec) decoder.

Author:
2005 David Hammerton
For more information on the ALAC format, visit: 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.

Go to the source code of this file.

Classes

struct  ALACContext

Functions

static void allocate_buffers (ALACContext *alac)
static int alac_set_info (ALACContext *alac)
static int count_leading_zeros (int32_t input)
static void 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 int32_t extend_sign32 (int32_t val, int bits)
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 reconstruct_stereo_16 (int32_t *buffer[MAX_CHANNELS], int16_t *buffer_out, int numchannels, int numsamples, uint8_t interlacing_shift, uint8_t interlacing_leftweight)
static int alac_decode_frame (AVCodecContext *avctx, void *outbuffer, int *outputsize, uint8_t *inbuffer, int input_buffer_size)
static int alac_decode_init (AVCodecContext *avctx)
static int alac_decode_close (AVCodecContext *avctx)

Variables

AVCodec alac_decoder


Function Documentation

static void allocate_buffers ( ALACContext alac  )  [static]

Definition at line 96 of file alac.c.

Referenced by alac_set_info(), flac_decode_init(), metadata_parse(), and shorten_decode_frame().

static int alac_set_info ( ALACContext alac  )  [static]

Definition at line 108 of file alac.c.

Referenced by alac_decode_frame().

static int count_leading_zeros ( int32_t  input  )  [inline, static]

Definition at line 143 of file alac.c.

Referenced by bastardized_rice_decompress().

static void 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 148 of file alac.c.

Referenced by alac_decode_frame().

static int32_t extend_sign32 ( int32_t  val,
int  bits 
) [inline, static]

Definition at line 267 of file alac.c.

Referenced by alac_decode_frame(), and predictor_decompress_fir_adapt().

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

Definition at line 272 of file alac.c.

Referenced by predictor_decompress_fir_adapt().

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 277 of file alac.c.

Referenced by alac_decode_frame().

static void reconstruct_stereo_16 ( int32_t buffer[MAX_CHANNELS],
int16_t buffer_out,
int  numchannels,
int  numsamples,
uint8_t  interlacing_shift,
uint8_t  interlacing_leftweight 
) [static]

Definition at line 400 of file alac.c.

Referenced by alac_decode_frame().

static int alac_decode_frame ( AVCodecContext avctx,
void *  outbuffer,
int *  outputsize,
uint8_t *  inbuffer,
int  input_buffer_size 
) [static]

Definition at line 440 of file alac.c.

static int alac_decode_init ( AVCodecContext avctx  )  [static]

Definition at line 627 of file alac.c.

static int alac_decode_close ( AVCodecContext avctx  )  [static]

Definition at line 640 of file alac.c.


Variable Documentation

Initial value:

Definition at line 653 of file alac.c.


Generated on Sat Dec 18 05:15:50 2010 for MythTV by  doxygen 1.5.5