libavcodec/adpcmenc.c File Reference

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"
#include "internal.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_)

Functions

static av_cold int adpcm_encode_close (AVCodecContext *avctx)
static av_cold int adpcm_encode_init (AVCodecContext *avctx)
static uint8_t adpcm_ima_compress_sample (ADPCMChannelStatus *c, int16_t sample)
static uint8_t adpcm_ima_qt_compress_sample (ADPCMChannelStatus *c, int16_t sample)
static uint8_t adpcm_ms_compress_sample (ADPCMChannelStatus *c, int16_t sample)
static uint8_t adpcm_yamaha_compress_sample (ADPCMChannelStatus *c, int16_t sample)
static void adpcm_compress_trellis (AVCodecContext *avctx, const int16_t *samples, uint8_t *dst, ADPCMChannelStatus *c, int n)
static int adpcm_encode_frame (AVCodecContext *avctx, AVPacket *avpkt, const AVFrame *frame, int *got_packet_ptr)
 ADPCM_ENCODER (AV_CODEC_ID_ADPCM_IMA_QT, adpcm_ima_qt,"ADPCM IMA QuickTime")
 ADPCM_ENCODER (AV_CODEC_ID_ADPCM_IMA_WAV, adpcm_ima_wav,"ADPCM IMA WAV")
 ADPCM_ENCODER (AV_CODEC_ID_ADPCM_MS, adpcm_ms,"ADPCM Microsoft")
 ADPCM_ENCODER (AV_CODEC_ID_ADPCM_SWF, adpcm_swf,"ADPCM Shockwave Flash")
 ADPCM_ENCODER (AV_CODEC_ID_ADPCM_YAMAHA, adpcm_yamaha,"ADPCM Yamaha")

Variables

static enum AVSampleFormat sample_fmts []


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,                    \
    .encode2        = adpcm_encode_frame,                   \
    .close          = adpcm_encode_close,                   \
    .sample_fmts    = sample_fmts,                          \
    .long_name      = NULL_IF_CONFIG_SMALL(long_name_),     \
}

Definition at line 710 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--; /* 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   ) 


Function Documentation

static void adpcm_compress_trellis ( AVCodecContext avctx,
const int16_t samples,
uint8_t dst,
ADPCMChannelStatus c,
int  n 
) [static]

Definition at line 275 of file adpcmenc.c.

static av_cold int adpcm_encode_close ( AVCodecContext avctx  )  [static]

Definition at line 159 of file adpcmenc.c.

Referenced by adpcm_encode_init().

static int adpcm_encode_frame ( AVCodecContext avctx,
AVPacket avpkt,
const AVFrame frame,
int got_packet_ptr 
) [static]

Definition at line 466 of file adpcmenc.c.

static av_cold int adpcm_encode_init ( AVCodecContext avctx  )  [static]

Definition at line 64 of file adpcmenc.c.

ADPCM_ENCODER ( AV_CODEC_ID_ADPCM_YAMAHA  ,
adpcm_yamaha  ,
"ADPCM Yamaha"   
)

ADPCM_ENCODER ( AV_CODEC_ID_ADPCM_SWF  ,
adpcm_swf  ,
"ADPCM Shockwave Flash"   
)

ADPCM_ENCODER ( AV_CODEC_ID_ADPCM_MS  ,
adpcm_ms  ,
"ADPCM Microsoft"   
)

ADPCM_ENCODER ( AV_CODEC_ID_ADPCM_IMA_WAV  ,
adpcm_ima_wav  ,
"ADPCM IMA WAV"   
)

ADPCM_ENCODER ( AV_CODEC_ID_ADPCM_IMA_QT  ,
adpcm_ima_qt  ,
"ADPCM IMA QuickTime"   
)

static uint8_t adpcm_ima_compress_sample ( ADPCMChannelStatus c,
int16_t  sample 
) [inline, static]

Definition at line 174 of file adpcmenc.c.

static uint8_t adpcm_ima_qt_compress_sample ( ADPCMChannelStatus c,
int16_t  sample 
) [inline, static]

Definition at line 187 of file adpcmenc.c.

static uint8_t adpcm_ms_compress_sample ( ADPCMChannelStatus c,
int16_t  sample 
) [inline, static]

Definition at line 224 of file adpcmenc.c.

static uint8_t adpcm_yamaha_compress_sample ( ADPCMChannelStatus c,
int16_t  sample 
) [inline, static]

Definition at line 253 of file adpcmenc.c.


Variable Documentation

enum AVSampleFormat sample_fmts[] [static]


Generated on Fri Oct 26 02:50:03 2012 for FFmpeg by  doxygen 1.5.8