FFmpeg
Data Structures | Macros | Functions | Variables
metasound.c File Reference
#include <inttypes.h>
#include <math.h>
#include <stdint.h>
#include "libavutil/channel_layout.h"
#include "libavutil/float_dsp.h"
#include "avcodec.h"
#include "fft.h"
#include "get_bits.h"
#include "internal.h"
#include "lsp.h"
#include "sinewin.h"
#include "twinvq.h"
#include "metasound_data.h"

Go to the source code of this file.

Data Structures

struct  MetasoundProps
 

Macros

#define BITSTREAM_READER_LE
 

Functions

static void add_peak (float period, int width, const float *shape, float ppc_gain, float *speech, int len)
 
static void decode_ppc (TwinVQContext *tctx, int period_coef, int g_coef, const float *shape, float *speech)
 
static void dec_bark_env (TwinVQContext *tctx, const uint8_t *in, int use_hist, int ch, float *out, float gain, enum TwinVQFrameType ftype)
 
static void read_cb_data (TwinVQContext *tctx, GetBitContext *gb, uint8_t *dst, enum TwinVQFrameType ftype)
 
static int metasound_read_bitstream (AVCodecContext *avctx, TwinVQContext *tctx, const uint8_t *buf, int buf_size)
 
static av_cold int metasound_decode_init (AVCodecContext *avctx)
 

Variables

static const MetasoundProps codec_props []
 
AVCodec ff_metasound_decoder
 

Macro Definition Documentation

◆ BITSTREAM_READER_LE

#define BITSTREAM_READER_LE

Definition at line 31 of file metasound.c.

Function Documentation

◆ add_peak()

static void add_peak ( float  period,
int  width,
const float *  shape,
float  ppc_gain,
float *  speech,
int  len 
)
static

Definition at line 42 of file metasound.c.

Referenced by decode_ppc().

◆ decode_ppc()

static void decode_ppc ( TwinVQContext tctx,
int  period_coef,
int  g_coef,
const float *  shape,
float *  speech 
)
static

Definition at line 64 of file metasound.c.

Referenced by metasound_decode_init().

◆ dec_bark_env()

static void dec_bark_env ( TwinVQContext tctx,
const uint8_t in,
int  use_hist,
int  ch,
float *  out,
float  gain,
enum TwinVQFrameType  ftype 
)
static

Definition at line 115 of file metasound.c.

Referenced by metasound_decode_init().

◆ read_cb_data()

static void read_cb_data ( TwinVQContext tctx,
GetBitContext gb,
uint8_t dst,
enum TwinVQFrameType  ftype 
)
static

Definition at line 152 of file metasound.c.

Referenced by metasound_read_bitstream().

◆ metasound_read_bitstream()

static int metasound_read_bitstream ( AVCodecContext avctx,
TwinVQContext tctx,
const uint8_t buf,
int  buf_size 
)
static

Definition at line 165 of file metasound.c.

Referenced by metasound_decode_init().

◆ metasound_decode_init()

static av_cold int metasound_decode_init ( AVCodecContext avctx)
static

Definition at line 273 of file metasound.c.

Variable Documentation

◆ codec_props

const MetasoundProps codec_props[]
static
Initial value:
= {
{ MKTAG('V','X','0','3'), 6, 1, 8000 },
{ MKTAG('V','X','0','4'), 12, 2, 8000 },
{ MKTAG('V','O','X','i'), 8, 1, 8000 },
{ MKTAG('V','O','X','j'), 10, 1, 11025 },
{ MKTAG('V','O','X','k'), 16, 1, 16000 },
{ MKTAG('V','O','X','L'), 24, 1, 22050 },
{ MKTAG('V','O','X','q'), 32, 1, 44100 },
{ MKTAG('V','O','X','r'), 40, 1, 44100 },
{ MKTAG('V','O','X','s'), 48, 1, 44100 },
{ MKTAG('V','O','X','t'), 16, 2, 8000 },
{ MKTAG('V','O','X','u'), 20, 2, 11025 },
{ MKTAG('V','O','X','v'), 32, 2, 16000 },
{ MKTAG('V','O','X','w'), 48, 2, 22050 },
{ MKTAG('V','O','X','x'), 64, 2, 44100 },
{ MKTAG('V','O','X','y'), 80, 2, 44100 },
{ MKTAG('V','O','X','z'), 96, 2, 44100 },
{ 0, 0, 0, 0 }
}

Definition at line 251 of file metasound.c.

Referenced by metasound_decode_init().

◆ ff_metasound_decoder

AVCodec ff_metasound_decoder
Initial value:
= {
.name = "metasound",
.long_name = NULL_IF_CONFIG_SMALL("Voxware MetaSound"),
.priv_data_size = sizeof(TwinVQContext),
.capabilities = AV_CODEC_CAP_DR1,
}

Definition at line 379 of file metasound.c.

AV_SAMPLE_FMT_FLTP
@ AV_SAMPLE_FMT_FLTP
float, planar
Definition: samplefmt.h:69
init
static av_cold int init(AVCodecContext *avctx)
Definition: avrndec.c:35
sample_fmts
static enum AVSampleFormat sample_fmts[]
Definition: adpcmenc.c:716
MKTAG
#define MKTAG(a, b, c, d)
Definition: common.h:406
ff_twinvq_decode_frame
int ff_twinvq_decode_frame(AVCodecContext *avctx, void *data, int *got_frame_ptr, AVPacket *avpkt)
Definition: twinvq.c:476
decode
static void decode(AVCodecContext *dec_ctx, AVPacket *pkt, AVFrame *frame, FILE *outfile)
Definition: decode_audio.c:71
AVMEDIA_TYPE_AUDIO
@ AVMEDIA_TYPE_AUDIO
Definition: avutil.h:202
ff_twinvq_decode_close
av_cold int ff_twinvq_decode_close(AVCodecContext *avctx)
Definition: twinvq.c:751
AV_CODEC_CAP_DR1
#define AV_CODEC_CAP_DR1
Codec uses get_buffer() for allocating buffers and supports custom allocators.
Definition: codec.h:50
NULL_IF_CONFIG_SMALL
#define NULL_IF_CONFIG_SMALL(x)
Return NULL if CONFIG_SMALL is true, otherwise the argument without modification.
Definition: internal.h:188
AV_SAMPLE_FMT_NONE
@ AV_SAMPLE_FMT_NONE
Definition: samplefmt.h:59
AVSampleFormat
AVSampleFormat
Audio sample formats.
Definition: samplefmt.h:58
metasound_decode_init
static av_cold int metasound_decode_init(AVCodecContext *avctx)
Definition: metasound.c:273
AV_CODEC_ID_METASOUND
@ AV_CODEC_ID_METASOUND
Definition: codec_id.h:473
TwinVQContext
Definition: twinvq.h:137