All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Data Structures | Macros | Functions | Variables
alac.c File Reference

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

#include <inttypes.h>
#include "libavutil/channel_layout.h"
#include "libavutil/opt.h"
#include "avcodec.h"
#include "get_bits.h"
#include "bytestream.h"
#include "internal.h"
#include "thread.h"
#include "unary.h"
#include "mathops.h"
#include "alac_data.h"
#include "alacdsp.h"

Go to the source code of this file.

Data Structures

struct  ALACContext




static unsigned int decode_scalar (GetBitContext *gb, int k, int bps)
static int 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 int decode_element (AVCodecContext *avctx, AVFrame *frame, 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)


static const AVOption options []
static const AVClass alac_class
AVCodec ff_alac_decoder

Detailed Description

ALAC (Apple Lossless Audio Codec) decoder.

2005 David Hammerton
See Also

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:

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

Definition in file alac.c.

Macro Definition Documentation


Definition at line 62 of file alac.c.

Referenced by alac_decode_init().

Function Documentation

static unsigned int decode_scalar ( GetBitContext gb,
int  k,
int  bps 

Definition at line 90 of file alac.c.

Referenced by rice_decompress().

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

Definition at line 112 of file alac.c.

Referenced by decode_element().

static int sign_only ( int  v)

Definition at line 169 of file alac.c.

Referenced by lpc_prediction().

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 

Definition at line 174 of file alac.c.

Referenced by decode_element().

static int decode_element ( AVCodecContext avctx,
AVFrame frame,
int  ch_index,
int  channels 

Definition at line 237 of file alac.c.

Referenced by alac_decode_frame().

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

Definition at line 412 of file alac.c.

static av_cold int alac_decode_close ( AVCodecContext avctx)

Definition at line 471 of file alac.c.

Referenced by allocate_buffers().

static int allocate_buffers ( ALACContext alac)

Definition at line 486 of file alac.c.

Referenced by alac_decode_init().

static int alac_set_info ( ALACContext alac)

Definition at line 516 of file alac.c.

Referenced by alac_decode_init().

static av_cold int alac_decode_init ( AVCodecContext avctx)

Definition at line 547 of file alac.c.

Variable Documentation

const AVOption options[]
Initial value:
= {
{ "extra_bits_bug", "Force non-standard decoding process",
0x42, AV_OPT_TYPE_BOOL, { .i64 = 0 },
{ NULL },
#define NULL
Definition: coverity.c:32
Definition: opt.h:281
a generic parameter which can be set by the user for demuxing or decoding
Definition: opt.h:277

Definition at line 611 of file alac.c.

const AVClass alac_class
Initial value:
= {
.class_name = "alac",
.item_name = av_default_item_name,
.option = options,
Definition: version.h:85
static const AVOption options[]
Definition: alac.c:611

Definition at line 618 of file alac.c.

AVCodec ff_alac_decoder
Initial value:
= {
.name = "alac",
.long_name = NULL_IF_CONFIG_SMALL("ALAC (Apple Lossless Audio Codec)"),
.priv_data_size = sizeof(ALACContext),
.priv_class = &alac_class
static int init_thread_copy(AVCodecContext *avctx)
Definition: tta.c:392
static av_cold int init(AVCodecContext *avctx)
Definition: avrndec.c:35
static av_cold int alac_decode_close(AVCodecContext *avctx)
Definition: alac.c:471
static const AVClass alac_class
Definition: alac.c:618
static int alac_decode_frame(AVCodecContext *avctx, void *data, int *got_frame_ptr, AVPacket *avpkt)
Definition: alac.c:412
Return NULL if CONFIG_SMALL is true, otherwise the argument without modification. ...
Definition: internal.h:180
Codec supports frame-level multithreading.
Definition: avcodec.h:1030
Define a function with only the non-default version specified.
Definition: internal.h:219
static av_cold int alac_decode_init(AVCodecContext *avctx)
Definition: alac.c:547
static int decode(AVCodecContext *avctx, AVFrame *frame, int *got_frame, AVPacket *pkt)
Definition: ffmpeg.c:2045
#define AV_CODEC_CAP_DR1
Codec uses get_buffer() for allocating buffers and supports custom allocators.
Definition: avcodec.h:967

Definition at line 625 of file alac.c.