Ejemplo n.º 1
0
// decoding functions
static int read_adpcm_block_headers(HMMIO rw, adpcm_fmt_t *fmt)
{
	int i;
	int max = fmt->adpcm.wav.nChannels;

	if (fmt->bytes_remaining < fmt->adpcm.wav.nBlockAlign) {
		return 0;
	}

	fmt->bytes_remaining -= fmt->adpcm.wav.nBlockAlign;
	fmt->bytes_processed += fmt->adpcm.wav.nBlockAlign;

	for (i = 0; i < max; i++) {
		IF_ERR(!read_ubyte(rw, &fmt->header[i].bPredictor), 0);
	}

	for (i = 0; i < max; i++) {
		IF_ERR(!read_ushort(rw, &fmt->header[i].iDelta), 0);
	}

	for (i = 0; i < max; i++) {
		IF_ERR(!read_short(rw, &fmt->header[i].iSamp1), 0);
	}

	for (i = 0; i < max; i++) {
		IF_ERR(!read_short(rw, &fmt->header[i].iSamp2), 0);
	}

	fmt->samples_left_in_block = fmt->adpcm.wSamplesPerBlock;
	fmt->nibble_state = 0;

	return 1;
}
Ejemplo n.º 2
0
// same as read_word() but swapped
static int read_word_s(HMMIO rw, WORD *i)
{
	int rc = mmioRead( rw, (char *)i, sizeof(WORD) );
	IF_ERR(rc != sizeof(WORD), 0);
	*i = INTEL_SHORT(*i); //-V570
	return 1;
}
Ejemplo n.º 3
0
// utility functions
static int read_ushort(HMMIO rw, ushort *i)
{
	int rc = mmioRead( rw, (char *)i, sizeof(ushort) );
	IF_ERR(rc != sizeof(ushort), 0);
	*i = INTEL_SHORT(*i); //-V570
	return 1;
}
Ejemplo n.º 4
0
static int read_short(SDL_RWops *rw, short *i)
{
	int rc = SDL_RWread(rw, i, sizeof(short), 1);
	IF_ERR(rc != 1, 0);
	*i = INTEL_SHORT(*i);
	return 1;
}
Ejemplo n.º 5
0
// same as read_word() but swapped
static int read_word_s(SDL_RWops *rw, WORD *i)
{
	int rc = SDL_RWread(rw, i, sizeof(WORD), 1);
	IF_ERR(rc != 1, 0);
	*i = INTEL_SHORT(*i);
	return 1;
}
Ejemplo n.º 6
0
static int decode_adpcm_sample_frame(HMMIO rw, adpcm_fmt_t *fmt)
{
	int i;
	int max = fmt->adpcm.wav.nChannels;
	ubyte nib = fmt->nibble;
	short iCoef1, iCoef2;
	int lPredSamp;

	for (i = 0; i < max; i++) {
		iCoef1 = fmt->adpcm.aCoef[fmt->header[i].bPredictor].iCoef1;
		iCoef2 = fmt->adpcm.aCoef[fmt->header[i].bPredictor].iCoef2;
		lPredSamp = ((fmt->header[i].iSamp1 * iCoef1) + (fmt->header[i].iSamp2 * iCoef2)) / FIXED_POINT_COEF_BASE;

		if (fmt->nibble_state == 0) {
			IF_ERR(!read_ubyte(rw, &nib), 0);
			fmt->nibble_state = 1;
			do_adpcm_nibble(nib >> 4, &fmt->header[i], lPredSamp);
		} else {
Ejemplo n.º 7
0
static int read_word(HMMIO rw, WORD *i)
{
	int rc = mmioRead( rw, (char *)i, sizeof(WORD) );
	IF_ERR(rc != sizeof(WORD), 0);
	return 1;
}
Ejemplo n.º 8
0
static int read_ubyte(HMMIO rw, ubyte *i)
{
	int rc = mmioRead( rw, (char *)i, sizeof(ubyte) );
	IF_ERR(rc != sizeof(ubyte), 0);
	return 1;
}
Ejemplo n.º 9
0
static int read_dword(SDL_RWops *rw, DWORD *i)
{
	int rc = SDL_RWread(rw, i, sizeof(DWORD), 1);
	IF_ERR(rc != 1, 0);
	return 1;
}
Ejemplo n.º 10
0
static int read_ubyte(SDL_RWops *rw, ubyte *i)
{
	int rc = SDL_RWread(rw, i, sizeof(ubyte), 1);
	IF_ERR(rc != 1, 0);
	return 1;
}