libavcodec/dpcm.c File Reference

Assorted DPCM (differential pulse code modulation) audio codecs by Mike Melanson (melanson@pcisys.net) Xan DPCM decoder by Mario Brito (mbrito@student.dei.uc.pt) for more information on the specific data formats, visit: http://www.pcisys.net/~melanson/codecs/simpleaudio.html SOL DPCMs implemented by Konstantin Shishkov. More...

#include "avcodec.h"

Go to the source code of this file.

Data Structures

struct  DPCMContext

Defines

#define SE_16BIT(x)   if (x & 0x8000) x -= 0x10000;
#define DPCM_DECODER(id, name)

Functions

static int dpcm_decode_init (AVCodecContext *avctx)
static int dpcm_decode_frame (AVCodecContext *avctx, void *data, int *data_size, const uint8_t *buf, int buf_size)
 DPCM_DECODER (CODEC_ID_INTERPLAY_DPCM, interplay_dpcm)
 DPCM_DECODER (CODEC_ID_ROQ_DPCM, roq_dpcm)
 DPCM_DECODER (CODEC_ID_SOL_DPCM, sol_dpcm)
 DPCM_DECODER (CODEC_ID_XAN_DPCM, xan_dpcm)

Variables

static int interplay_delta_table []
static const int sol_table_old [16]
static const int sol_table_new [16]
static const int sol_table_16 [128]


Detailed Description

Assorted DPCM (differential pulse code modulation) audio codecs by Mike Melanson (melanson@pcisys.net) Xan DPCM decoder by Mario Brito (mbrito@student.dei.uc.pt) for more information on the specific data formats, visit: http://www.pcisys.net/~melanson/codecs/simpleaudio.html SOL DPCMs implemented by Konstantin Shishkov.

Note about using the Xan DPCM decoder: Xan DPCM is used in AVI files found in the Wing Commander IV computer game. These AVI files contain WAVEFORMAT headers which report the audio format as 0x01: raw PCM. Clearly incorrect. To detect Xan DPCM, you will probably have to special-case your AVI demuxer to use Xan DPCM if the file uses 'Xxan' (Xan video) for its video codec. Alternately, such AVI files also contain the fourcc 'Axan' in the 'auds' chunk of the AVI header.

Definition in file dpcm.c.


Define Documentation

#define DPCM_DECODER ( id,
name   ) 

Value:

AVCodec name ## _decoder = {                    \
    #name,                                      \
    CODEC_TYPE_AUDIO,                           \
    id,                                         \
    sizeof(DPCMContext),                        \
    dpcm_decode_init,                           \
    NULL,                                       \
    NULL,                                       \
    dpcm_decode_frame,                          \
};

Definition at line 297 of file dpcm.c.

#define SE_16BIT (  )     if (x & 0x8000) x -= 0x10000;

Definition at line 49 of file dpcm.c.

Referenced by dpcm_decode_frame().


Function Documentation

static int dpcm_decode_frame ( AVCodecContext avctx,
void *  data,
int *  data_size,
const uint8_t buf,
int  buf_size 
) [static]

Definition at line 160 of file dpcm.c.

static int dpcm_decode_init ( AVCodecContext avctx  )  [static]

Definition at line 113 of file dpcm.c.

DPCM_DECODER ( CODEC_ID_XAN_DPCM  ,
xan_dpcm   
)

DPCM_DECODER ( CODEC_ID_SOL_DPCM  ,
sol_dpcm   
)

DPCM_DECODER ( CODEC_ID_ROQ_DPCM  ,
roq_dpcm   
)

DPCM_DECODER ( CODEC_ID_INTERPLAY_DPCM  ,
interplay_dpcm   
)


Variable Documentation

int interplay_delta_table[] [static]

Definition at line 51 of file dpcm.c.

Referenced by dpcm_decode_frame().

const int sol_table_16[128] [static]

Initial value:

 {
    0x000, 0x008, 0x010, 0x020, 0x030, 0x040, 0x050, 0x060, 0x070, 0x080,
    0x090, 0x0A0, 0x0B0, 0x0C0, 0x0D0, 0x0E0, 0x0F0, 0x100, 0x110, 0x120,
    0x130, 0x140, 0x150, 0x160, 0x170, 0x180, 0x190, 0x1A0, 0x1B0, 0x1C0,
    0x1D0, 0x1E0, 0x1F0, 0x200, 0x208, 0x210, 0x218, 0x220, 0x228, 0x230,
    0x238, 0x240, 0x248, 0x250, 0x258, 0x260, 0x268, 0x270, 0x278, 0x280,
    0x288, 0x290, 0x298, 0x2A0, 0x2A8, 0x2B0, 0x2B8, 0x2C0, 0x2C8, 0x2D0,
    0x2D8, 0x2E0, 0x2E8, 0x2F0, 0x2F8, 0x300, 0x308, 0x310, 0x318, 0x320,
    0x328, 0x330, 0x338, 0x340, 0x348, 0x350, 0x358, 0x360, 0x368, 0x370,
    0x378, 0x380, 0x388, 0x390, 0x398, 0x3A0, 0x3A8, 0x3B0, 0x3B8, 0x3C0,
    0x3C8, 0x3D0, 0x3D8, 0x3E0, 0x3E8, 0x3F0, 0x3F8, 0x400, 0x440, 0x480,
    0x4C0, 0x500, 0x540, 0x580, 0x5C0, 0x600, 0x640, 0x680, 0x6C0, 0x700,
    0x740, 0x780, 0x7C0, 0x800, 0x900, 0xA00, 0xB00, 0xC00, 0xD00, 0xE00,
    0xF00, 0x1000, 0x1400, 0x1800, 0x1C00, 0x2000, 0x3000, 0x4000
}

Definition at line 95 of file dpcm.c.

Referenced by dpcm_decode_init().

const int sol_table_new[16] [static]

Initial value:

    { 0x0,  0x1,  0x2,  0x3,  0x6,  0xA,  0xF,  0x15,
      0x0, -0x1, -0x2, -0x3, -0x6, -0xA, -0xF, -0x15}

Definition at line 91 of file dpcm.c.

Referenced by dpcm_decode_init().

const int sol_table_old[16] [static]

Initial value:

    { 0x0,  0x1,  0x2 , 0x3,  0x6,  0xA,  0xF, 0x15,
    -0x15, -0xF, -0xA, -0x6, -0x3, -0x2, -0x1, 0x0}

Definition at line 87 of file dpcm.c.

Referenced by dpcm_decode_init().


Generated on Wed Feb 9 19:10:11 2011 for ffmpeg by  doxygen 1.5.6