vorbisdec.c File Reference

Vorbis I decoder. More...

#include <inttypes.h>
#include <math.h>
#include "libavutil/float_dsp.h"
#include "avcodec.h"
#include "get_bits.h"
#include "dsputil.h"
#include "fft.h"
#include "fmtconvert.h"
#include "internal.h"
#include "vorbis.h"
#include "xiph.h"
#include <assert.h>

Go to the source code of this file.

Data Structures

struct  vorbis_codebook
 
struct  vorbis_floor
 
union  vorbis_floor::vorbis_floor_u
 
struct  vorbis_floor::vorbis_floor_u::vorbis_floor0_s
 
struct  vorbis_floor::vorbis_floor_u::vorbis_floor1_s
 
struct  vorbis_residue
 
struct  vorbis_mapping
 
struct  vorbis_mode
 
struct  vorbis_context_s
 

Macros

#define BITSTREAM_READER_LE
 
#define V_NB_BITS   8
 
#define V_NB_BITS2   11
 
#define V_MAX_VLCS   (1 << 16)
 
#define V_MAX_PARTITIONS   (1 << 20)
 
#define BARK(x)   (13.1f * atan(0.00074f * (x)) + 2.24f * atan(1.85e-8f * (x) * (x)) + 1e-4f * (x))
 
#define VALIDATE_INDEX(idx, limit)
 
#define GET_VALIDATED_INDEX(idx, bits, limit)
 

Typedefs

typedef union vorbis_floor_u vorbis_floor_data
 
typedef struct vorbis_floor0_s vorbis_floor0
 
typedef struct vorbis_floor1_s vorbis_floor1
 
typedef int(* vorbis_floor_decode_func )(struct vorbis_context_s *, vorbis_floor_data *, float *)
 
typedef struct vorbis_context_s vorbis_context
 

Functions

static float vorbisfloat2float (unsigned val)
 
static void vorbis_free (vorbis_context *vc)
 
static int vorbis_parse_setup_hdr_codebooks (vorbis_context *vc)
 
static int vorbis_parse_setup_hdr_tdtransforms (vorbis_context *vc)
 
static int vorbis_floor0_decode (vorbis_context *vc, vorbis_floor_data *vfu, float *vec)
 
static void create_map (vorbis_context *vc, unsigned floor_number)
 
static int vorbis_floor1_decode (vorbis_context *vc, vorbis_floor_data *vfu, float *vec)
 
static int vorbis_parse_setup_hdr_floors (vorbis_context *vc)
 
static int vorbis_parse_setup_hdr_residues (vorbis_context *vc)
 
static int vorbis_parse_setup_hdr_mappings (vorbis_context *vc)
 
static int vorbis_parse_setup_hdr_modes (vorbis_context *vc)
 
static int vorbis_parse_setup_hdr (vorbis_context *vc)
 
static int vorbis_parse_id_hdr (vorbis_context *vc)
 
static av_cold int vorbis_decode_init (AVCodecContext *avccontext)
 
static av_always_inline int vorbis_residue_decode_internal (vorbis_context *vc, vorbis_residue *vr, unsigned ch, uint8_t *do_not_decode, float *vec, unsigned vlen, unsigned ch_left, int vr_type)
 
static int vorbis_residue_decode (vorbis_context *vc, vorbis_residue *vr, unsigned ch, uint8_t *do_not_decode, float *vec, unsigned vlen, unsigned ch_left)
 
void ff_vorbis_inverse_coupling (float *mag, float *ang, int blocksize)
 
static int vorbis_parse_audio_packet (vorbis_context *vc, float **floor_ptr)
 
static int vorbis_decode_frame (AVCodecContext *avccontext, void *data, int *got_frame_ptr, AVPacket *avpkt)
 
static av_cold int vorbis_decode_close (AVCodecContext *avccontext)
 
static av_cold void vorbis_decode_flush (AVCodecContext *avccontext)
 

Variables

static const char idx_err_str [] = "Index value %d out of range (0 - %d) for %s at %s:%i\n"
 
AVCodec ff_vorbis_decoder
 

Detailed Description

Vorbis I decoder.

Author
Denes Balatoni ( dbalatoni programozo hu )

Definition in file vorbisdec.c.

Macro Definition Documentation

#define BARK (   x)    (13.1f * atan(0.00074f * (x)) + 2.24f * atan(1.85e-8f * (x) * (x)) + 1e-4f * (x))

Definition at line 160 of file vorbisdec.c.

Referenced by create_map().

#define BITSTREAM_READER_LE

Definition at line 28 of file vorbisdec.c.

#define GET_VALIDATED_INDEX (   idx,
  bits,
  limit 
)
Value:
{\
idx = get_bits(gb, bits);\
VALIDATE_INDEX(idx, limit)\
}
static unsigned int get_bits(GetBitContext *s, int n)
Read 1-25 bits.
Definition: get_bits.h:237
uint8_t bits
Definition: crc.c:31
#define VALIDATE_INDEX(idx, limit)
Definition: vorbisdec.c:164

Definition at line 171 of file vorbisdec.c.

Referenced by vorbis_parse_audio_packet(), vorbis_parse_setup_hdr_floors(), vorbis_parse_setup_hdr_mappings(), vorbis_parse_setup_hdr_modes(), and vorbis_parse_setup_hdr_residues().

#define V_MAX_PARTITIONS   (1 << 20)

Definition at line 43 of file vorbisdec.c.

Referenced by vorbis_parse_setup_hdr_residues().

#define V_MAX_VLCS   (1 << 16)

Definition at line 42 of file vorbisdec.c.

Referenced by vorbis_parse_setup_hdr_codebooks().

#define V_NB_BITS   8

Definition at line 40 of file vorbisdec.c.

Referenced by vorbis_parse_setup_hdr_codebooks().

#define V_NB_BITS2   11

Definition at line 41 of file vorbisdec.c.

Referenced by vorbis_parse_setup_hdr_codebooks().

#define VALIDATE_INDEX (   idx,
  limit 
)
Value:
if (idx >= limit) {\
av_log(vc->avccontext, AV_LOG_ERROR,\
(int)(idx), (int)(limit - 1), #idx, __FILE__, __LINE__);\
}
static const char idx_err_str[]
Definition: vorbisdec.c:163
void av_log(void *avcl, int level, const char *fmt,...)
Definition: log.c:146
return

Definition at line 164 of file vorbisdec.c.

Referenced by vorbis_parse_setup_hdr_floors().

Typedef Documentation

typedef struct vorbis_floor0_s vorbis_floor0

Definition at line 58 of file vorbisdec.c.

typedef struct vorbis_floor1_s vorbis_floor1

Definition at line 59 of file vorbisdec.c.

typedef union vorbis_floor_u vorbis_floor_data

Definition at line 57 of file vorbisdec.c.

typedef int(* vorbis_floor_decode_func)(struct vorbis_context_s *, vorbis_floor_data *, float *)

Definition at line 63 of file vorbisdec.c.

Function Documentation

static void create_map ( vorbis_context vc,
unsigned  floor_number 
)
static

Definition at line 813 of file vorbisdec.c.

Referenced by vorbis_parse_setup_hdr_floors().

void ff_vorbis_inverse_coupling ( float *  mag,
float *  ang,
int  blocksize 
)

Definition at line 1464 of file vorbisdec.c.

Referenced by ff_dsputil_init().

static av_cold int vorbis_decode_close ( AVCodecContext avccontext)
static

Definition at line 1703 of file vorbisdec.c.

static av_cold void vorbis_decode_flush ( AVCodecContext avccontext)
static

Definition at line 1712 of file vorbisdec.c.

static int vorbis_decode_frame ( AVCodecContext avccontext,
void data,
int *  got_frame_ptr,
AVPacket avpkt 
)
static

Definition at line 1651 of file vorbisdec.c.

static av_cold int vorbis_decode_init ( AVCodecContext avccontext)
static

Definition at line 981 of file vorbisdec.c.

static int vorbis_floor0_decode ( vorbis_context vc,
vorbis_floor_data vfu,
float *  vec 
)
static

Definition at line 1051 of file vorbisdec.c.

Referenced by vorbis_parse_setup_hdr_floors().

static int vorbis_floor1_decode ( vorbis_context vc,
vorbis_floor_data vfu,
float *  vec 
)
static

Definition at line 1160 of file vorbisdec.c.

Referenced by vorbis_parse_setup_hdr_floors().

static void vorbis_free ( vorbis_context vc)
static

Definition at line 189 of file vorbisdec.c.

Referenced by vorbis_decode_close(), and vorbis_decode_init().

static int vorbis_parse_audio_packet ( vorbis_context vc,
float **  floor_ptr 
)
static

Definition at line 1490 of file vorbisdec.c.

Referenced by vorbis_decode_frame().

static int vorbis_parse_id_hdr ( vorbis_context vc)
static

Definition at line 917 of file vorbisdec.c.

Referenced by vorbis_decode_init().

static int vorbis_parse_setup_hdr ( vorbis_context vc)
static

Definition at line 871 of file vorbisdec.c.

Referenced by vorbis_decode_init().

static int vorbis_parse_setup_hdr_codebooks ( vorbis_context vc)
static

Definition at line 234 of file vorbisdec.c.

Referenced by vorbis_parse_setup_hdr().

static int vorbis_parse_setup_hdr_floors ( vorbis_context vc)
static

Definition at line 483 of file vorbisdec.c.

Referenced by vorbis_parse_setup_hdr().

static int vorbis_parse_setup_hdr_mappings ( vorbis_context vc)
static

Definition at line 746 of file vorbisdec.c.

Referenced by vorbis_parse_setup_hdr().

static int vorbis_parse_setup_hdr_modes ( vorbis_context vc)
static

Definition at line 844 of file vorbisdec.c.

Referenced by vorbis_parse_setup_hdr().

static int vorbis_parse_setup_hdr_residues ( vorbis_context vc)
static

Definition at line 666 of file vorbisdec.c.

Referenced by vorbis_parse_setup_hdr().

static int vorbis_parse_setup_hdr_tdtransforms ( vorbis_context vc)
static

Definition at line 457 of file vorbisdec.c.

Referenced by vorbis_parse_setup_hdr().

static int vorbis_residue_decode ( vorbis_context vc,
vorbis_residue vr,
unsigned  ch,
uint8_t do_not_decode,
float *  vec,
unsigned  vlen,
unsigned  ch_left 
)
inlinestatic

Definition at line 1446 of file vorbisdec.c.

Referenced by vorbis_parse_audio_packet().

static av_always_inline int vorbis_residue_decode_internal ( vorbis_context vc,
vorbis_residue vr,
unsigned  ch,
uint8_t do_not_decode,
float *  vec,
unsigned  vlen,
unsigned  ch_left,
int  vr_type 
)
static

Definition at line 1286 of file vorbisdec.c.

Referenced by vorbis_residue_decode().

static float vorbisfloat2float ( unsigned  val)
static

Definition at line 177 of file vorbisdec.c.

Referenced by vorbis_parse_setup_hdr_codebooks().

Variable Documentation

AVCodec ff_vorbis_decoder
Initial value:
= {
.name = "vorbis",
.priv_data_size = sizeof(vorbis_context),
.capabilities = CODEC_CAP_DR1,
.long_name = NULL_IF_CONFIG_SMALL("Vorbis"),
.channel_layouts = ff_vorbis_channel_layouts,
.sample_fmts = (const enum AVSampleFormat[]) { AV_SAMPLE_FMT_FLTP,
}
static av_cold int vorbis_decode_init(AVCodecContext *avccontext)
Definition: vorbisdec.c:981
static int decode(MimicContext *ctx, int quality, int num_coeffs, int is_iframe)
Definition: mimic.c:228
static int init(AVCodecParserContext *s)
Definition: h264_parser.c:335
float, planar
Definition: samplefmt.h:60
#define NULL_IF_CONFIG_SMALL(x)
Return NULL if CONFIG_SMALL is true, otherwise the argument without modification. ...
Definition: internal.h:88
AV_SAMPLE_FMT_NONE
Definition: avconv_filter.c:63
static void close(AVCodecParserContext *s)
Definition: h264_parser.c:326
const uint64_t ff_vorbis_channel_layouts[9]
Definition: vorbis_data.c:48
static int vorbis_decode_frame(AVCodecContext *avccontext, void *data, int *got_frame_ptr, AVPacket *avpkt)
Definition: vorbisdec.c:1651
struct vorbis_context_s vorbis_context
static av_cold void flush(AVCodecContext *avctx)
Flush (reset) the frame ID after seeking.
Definition: alsdec.c:1772
AVSampleFormat
Audio Sample Formats.
Definition: samplefmt.h:49
static av_cold int vorbis_decode_close(AVCodecContext *avccontext)
Definition: vorbisdec.c:1703
static av_cold void vorbis_decode_flush(AVCodecContext *avccontext)
Definition: vorbisdec.c:1712

Definition at line 1723 of file vorbisdec.c.

const char idx_err_str[] = "Index value %d out of range (0 - %d) for %s at %s:%i\n"
static

Definition at line 163 of file vorbisdec.c.