FFmpeg
Loading...
Searching...
No Matches
metasound.c File Reference
#include <inttypes.h>
#include <math.h>
#include <stdint.h>
#include "libavutil/channel_layout.h"
#include "avcodec.h"
#include "codec_internal.h"
#include "get_bits.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 []
 
const FFCodec ff_metasound_decoder
 

Macro Definition Documentation

◆ BITSTREAM_READER_LE

#define BITSTREAM_READER_LE

Definition at line 30 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 38 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 60 of file metasound.c.

Referenced by metasound_decode_init(), and twinvq_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 112 of file metasound.c.

Referenced by metasound_decode_init(), and twinvq_decode_init().

◆ read_cb_data()

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

Definition at line 150 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 163 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 271 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 }
}
#define MKTAG(a, b, c, d)
Definition macros.h:55

Definition at line 249 of file metasound.c.

Referenced by metasound_decode_init().

◆ ff_metasound_decoder

const FFCodec ff_metasound_decoder
Initial value:
= {
.p.name = "metasound",
CODEC_LONG_NAME("Voxware MetaSound"),
.p.type = AVMEDIA_TYPE_AUDIO,
.priv_data_size = sizeof(TwinVQContext),
.caps_internal = FF_CODEC_CAP_INIT_CLEANUP,
}
static av_cold void close(AVCodecParserContext *s)
Definition apv_parser.c:197
#define FF_CODEC_DECODE_CB(func)
#define CODEC_LONG_NAME(str)
#define FF_CODEC_CAP_INIT_CLEANUP
The codec allows calling the close function for deallocation even if the init function returned a fai...
int(* init)(AVBSFContext *ctx)
Definition dts2pts.c:608
#define AV_CODEC_CAP_DR1
Codec uses get_buffer() or get_encode_buffer() for allocating buffers and supports custom allocators.
Definition codec.h:49
#define AV_CODEC_CAP_CHANNEL_CONF
Codec should fill in channel configuration and samplerate instead of container.
Definition codec.h:94
@ AV_CODEC_ID_METASOUND
Definition codec_id.h:516
@ AVMEDIA_TYPE_AUDIO
Definition avutil.h:201
static av_cold int metasound_decode_init(AVCodecContext *avctx)
Definition metasound.c:271
int ff_twinvq_decode_frame(AVCodecContext *avctx, AVFrame *frame, int *got_frame_ptr, AVPacket *avpkt)
Definition twinvq.c:480
av_cold int ff_twinvq_decode_close(AVCodecContext *avctx)
Definition twinvq.c:745

Definition at line 367 of file metasound.c.