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 "libavutil/intreadwrite.h"
#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, long_name_) |
Typedefs | |
typedef struct DPCMContext | DPCMContext |
Functions | |
static av_cold int | dpcm_decode_init (AVCodecContext *avctx) |
static int | dpcm_decode_frame (AVCodecContext *avctx, void *data, int *data_size, AVPacket *avpkt) |
DPCM_DECODER (CODEC_ID_INTERPLAY_DPCM, interplay_dpcm,"DPCM Interplay") | |
DPCM_DECODER (CODEC_ID_ROQ_DPCM, roq_dpcm,"DPCM id RoQ") | |
DPCM_DECODER (CODEC_ID_SOL_DPCM, sol_dpcm,"DPCM Sol") | |
DPCM_DECODER (CODEC_ID_XAN_DPCM, xan_dpcm,"DPCM Xan") | |
Variables | |
static const 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] |
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 SE_16BIT | ( | x | ) | if (x & 0x8000) x -= 0x10000; |
Definition at line 50 of file dpcm.c.
Referenced by dpcm_decode_frame().
typedef struct DPCMContext DPCMContext |
static int dpcm_decode_frame | ( | AVCodecContext * | avctx, | |
void * | data, | |||
int * | data_size, | |||
AVPacket * | avpkt | |||
) | [static] |
static av_cold int dpcm_decode_init | ( | AVCodecContext * | avctx | ) | [static] |
DPCM_DECODER | ( | CODEC_ID_SOL_DPCM | , | |
sol_dpcm | , | |||
"DPCM Sol" | ||||
) |
DPCM_DECODER | ( | CODEC_ID_ROQ_DPCM | , | |
roq_dpcm | , | |||
"DPCM id RoQ" | ||||
) |
DPCM_DECODER | ( | CODEC_ID_INTERPLAY_DPCM | , | |
interplay_dpcm | , | |||
"DPCM Interplay" | ||||
) |
DPCM_DECODER | ( | CODEC_ID_XAN_DPCM | , | |
xan_dpcm | , | |||
"DPCM Xan" | ||||
) |
const int interplay_delta_table[] [static] |
Definition at line 52 of file dpcm.c.
Referenced by dpcm_decode_frame().
const int sol_table_16[128] [static] |
{ 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 96 of file dpcm.c.
Referenced by dpcm_decode_init().
const int sol_table_new[16] [static] |
{ 0x0, 0x1, 0x2, 0x3, 0x6, 0xA, 0xF, 0x15, 0x0, -0x1, -0x2, -0x3, -0x6, -0xA, -0xF, -0x15}
Definition at line 92 of file dpcm.c.
Referenced by dpcm_decode_init().
const int sol_table_old[16] [static] |
{ 0x0, 0x1, 0x2 , 0x3, 0x6, 0xA, 0xF, 0x15, -0x15, -0xF, -0xA, -0x6, -0x3, -0x2, -0x1, 0x0}
Definition at line 88 of file dpcm.c.
Referenced by dpcm_decode_init().