ADPCM encoders First version by Francois Revol (revol@free.fr) Fringe ADPCM codecs (e.g., DK3, DK4, Westwood) by Mike Melanson (melanson@pcisys.net).
More...
#include "avcodec.h"
#include "get_bits.h"
#include "put_bits.h"
#include "bytestream.h"
#include "adpcm.h"
#include "adpcm_data.h"
Go to the source code of this file.
Data Structures |
struct | TrellisPath |
struct | TrellisNode |
struct | ADPCMEncodeContext |
Defines |
#define | FREEZE_INTERVAL 128 |
#define | STORE_NODE(NAME, STEP_INDEX) |
#define | LOOP_NODES(NAME, STEP_TABLE, STEP_INDEX) |
#define | ADPCM_ENCODER(id_, name_, long_name_) |
Typedefs |
typedef struct TrellisPath | TrellisPath |
typedef struct TrellisNode | TrellisNode |
typedef struct ADPCMEncodeContext | ADPCMEncodeContext |
Functions |
static av_cold int | adpcm_encode_init (AVCodecContext *avctx) |
static av_cold int | adpcm_encode_close (AVCodecContext *avctx) |
static unsigned char | adpcm_ima_compress_sample (ADPCMChannelStatus *c, short sample) |
static unsigned char | adpcm_ima_qt_compress_sample (ADPCMChannelStatus *c, short sample) |
static unsigned char | adpcm_ms_compress_sample (ADPCMChannelStatus *c, short sample) |
static unsigned char | adpcm_yamaha_compress_sample (ADPCMChannelStatus *c, short sample) |
static void | adpcm_compress_trellis (AVCodecContext *avctx, const short *samples, uint8_t *dst, ADPCMChannelStatus *c, int n) |
static int | adpcm_encode_frame (AVCodecContext *avctx, unsigned char *frame, int buf_size, void *data) |
| ADPCM_ENCODER (CODEC_ID_ADPCM_IMA_QT, adpcm_ima_qt,"ADPCM IMA QuickTime") |
| ADPCM_ENCODER (CODEC_ID_ADPCM_IMA_WAV, adpcm_ima_wav,"ADPCM IMA WAV") |
| ADPCM_ENCODER (CODEC_ID_ADPCM_MS, adpcm_ms,"ADPCM Microsoft") |
| ADPCM_ENCODER (CODEC_ID_ADPCM_SWF, adpcm_swf,"ADPCM Shockwave Flash") |
| ADPCM_ENCODER (CODEC_ID_ADPCM_YAMAHA, adpcm_yamaha,"ADPCM Yamaha") |
Detailed Description
ADPCM encoders First version by Francois Revol (revol@free.fr) Fringe ADPCM codecs (e.g., DK3, DK4, Westwood) by Mike Melanson (melanson@pcisys.net).
See ADPCM decoder reference documents for codec information.
Definition in file adpcmenc.c.
Define Documentation
#define ADPCM_ENCODER |
( |
|
id_, |
|
|
|
name_, |
|
|
|
long_name_ | |
|
) |
| | |
Value:AVCodec ff_ ## name_ ## _encoder = { \
.name = #name_, \
.type = AVMEDIA_TYPE_AUDIO, \
.id = id_, \
.priv_data_size = sizeof(ADPCMEncodeContext), \
.init = adpcm_encode_init, \
.encode = adpcm_encode_frame, \
.close = adpcm_encode_close, \
.sample_fmts = (const enum AVSampleFormat[]) { AV_SAMPLE_FMT_S16, \
AV_SAMPLE_FMT_NONE}, \
.long_name = NULL_IF_CONFIG_SMALL(long_name_), \
}
Definition at line 683 of file adpcmenc.c.
#define FREEZE_INTERVAL 128 |
#define LOOP_NODES |
( |
|
NAME, |
|
|
|
STEP_TABLE, |
|
|
|
STEP_INDEX | |
|
) |
| | |
Value:const int predictor = nodes[j]->sample1;\
const int div = (sample - predictor) * 4 / STEP_TABLE;\
int nmin = av_clip(div - range, -7, 6);\
int nmax = av_clip(div + range, -6, 7);\
if (nmin <= 0)\
nmin--; \
if (nmax < 0)\
nmax--;\
for (nidx = nmin; nidx <= nmax; nidx++) {\
const int nibble = nidx < 0 ? 7 - nidx : nidx;\
int dec_sample = predictor +\
(STEP_TABLE *\
ff_adpcm_yamaha_difflookup[nibble]) / 8;\
STORE_NODE(NAME, STEP_INDEX);\
}
Referenced by adpcm_compress_trellis().
#define STORE_NODE |
( |
|
NAME, |
|
|
|
STEP_INDEX | |
|
) |
| | |
Typedef Documentation
Function Documentation
static av_cold int adpcm_encode_close |
( |
AVCodecContext * |
avctx |
) |
[static] |
static int adpcm_encode_frame |
( |
AVCodecContext * |
avctx, |
|
|
unsigned char * |
frame, |
|
|
int |
buf_size, |
|
|
void * |
data | |
|
) |
| | [static] |
static av_cold int adpcm_encode_init |
( |
AVCodecContext * |
avctx |
) |
[static] |
ADPCM_ENCODER |
( |
CODEC_ID_ADPCM_MS |
, |
|
|
adpcm_ms |
, |
|
|
"ADPCM Microsoft" |
| |
|
) |
| | |
ADPCM_ENCODER |
( |
CODEC_ID_ADPCM_IMA_QT |
, |
|
|
adpcm_ima_qt |
, |
|
|
"ADPCM IMA QuickTime" |
| |
|
) |
| | |
ADPCM_ENCODER |
( |
CODEC_ID_ADPCM_IMA_WAV |
, |
|
|
adpcm_ima_wav |
, |
|
|
"ADPCM IMA WAV" |
| |
|
) |
| | |
ADPCM_ENCODER |
( |
CODEC_ID_ADPCM_YAMAHA |
, |
|
|
adpcm_yamaha |
, |
|
|
"ADPCM Yamaha" |
| |
|
) |
| | |
ADPCM_ENCODER |
( |
CODEC_ID_ADPCM_SWF |
, |
|
|
adpcm_swf |
, |
|
|
"ADPCM Shockwave Flash" |
| |
|
) |
| | |
static unsigned char adpcm_ima_compress_sample |
( |
ADPCMChannelStatus * |
c, |
|
|
short |
sample | |
|
) |
| | [inline, static] |
static unsigned char adpcm_ima_qt_compress_sample |
( |
ADPCMChannelStatus * |
c, |
|
|
short |
sample | |
|
) |
| | [inline, static] |
static unsigned char adpcm_ms_compress_sample |
( |
ADPCMChannelStatus * |
c, |
|
|
short |
sample | |
|
) |
| | [inline, static] |
static unsigned char adpcm_yamaha_compress_sample |
( |
ADPCMChannelStatus * |
c, |
|
|
short |
sample | |
|
) |
| | [inline, static] |