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") | |
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 ADPCM_ENCODER | ( | id_, | |
| name_, | |||
| long_name_ | |||
| ) |
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 |
Definition at line 59 of file adpcmenc.c.
Referenced by adpcm_compress_trellis(), and adpcm_encode_init().
| #define LOOP_NODES | ( | NAME, | |
| STEP_TABLE, | |||
| STEP_INDEX | |||
| ) |
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--; /* distinguish -0 from +0 */\ 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 | |||
| ) |
Referenced by adpcm_compress_trellis(), and g722_encode_trellis().
| typedef struct ADPCMEncodeContext ADPCMEncodeContext |
| typedef struct TrellisNode TrellisNode |
| typedef struct TrellisPath TrellisPath |
| static void adpcm_compress_trellis | ( | AVCodecContext * | avctx, |
| const short * | samples, | ||
| uint8_t * | dst, | ||
| ADPCMChannelStatus * | c, | ||
| int | n | ||
| ) | [static] |
Definition at line 261 of file adpcmenc.c.
| static av_cold int adpcm_encode_close | ( | AVCodecContext * | avctx | ) | [static] |
Definition at line 150 of file adpcmenc.c.
| static int adpcm_encode_frame | ( | AVCodecContext * | avctx, |
| unsigned char * | frame, | ||
| int | buf_size, | ||
| void * | data | ||
| ) | [static] |
Definition at line 451 of file adpcmenc.c.
| static av_cold int adpcm_encode_init | ( | AVCodecContext * | avctx | ) | [static] |
Definition at line 61 of file adpcmenc.c.
| 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" | |||
| ) |
| static unsigned char adpcm_ima_compress_sample | ( | ADPCMChannelStatus * | c, |
| short | sample | ||
| ) | [inline, static] |
Definition at line 163 of file adpcmenc.c.
| static unsigned char adpcm_ima_qt_compress_sample | ( | ADPCMChannelStatus * | c, |
| short | sample | ||
| ) | [inline, static] |
Definition at line 176 of file adpcmenc.c.
| static unsigned char adpcm_ms_compress_sample | ( | ADPCMChannelStatus * | c, |
| short | sample | ||
| ) | [inline, static] |
Definition at line 210 of file adpcmenc.c.
| static unsigned char adpcm_yamaha_compress_sample | ( | ADPCMChannelStatus * | c, |
| short | sample | ||
| ) | [inline, static] |
Definition at line 239 of file adpcmenc.c.