Beispiel #1
0
ima_adpcm_state_t encode_ima_adpcm_i16_u8(short* input, unsigned char* output, int input_length, ima_adpcm_state_t state)
{
	int k=0;
	for(int i=0;i<input_length/2;i++) 
	{
		output[k]=ImaAdpcmEncode(input[2*i],&state);
		output[k++]|=ImaAdpcmEncode(input[2*i+1],&state)<<4;
	}
	return state;
}
Beispiel #2
0
ima_adpcm_state_t encode_ima_adpcm_u8_u8(unsigned char* input, unsigned char* output, int input_length, ima_adpcm_state_t state)
{
	int k=0;
	for(int i=0;i<input_length/2;i++) 
	{
		unsigned char i0 = input[2*i], i1 = input[2*i+1];	// handle input == output buffer
		output[k] = ImaAdpcmEncode(i0, &state);
		output[k++] |= ImaAdpcmEncode(i1, &state) << 4;
	}
	return state;
}
Beispiel #3
0
// used by sound
// 4:1 compression: 2x shorts -> 1x unsigned char
void encode_ima_adpcm_i16_e8(short* input, unsigned char* output, int input_length, ima_adpcm_state_t *state)
{
	state->pos_clamp = +32767;
	state->neg_clamp = -32768;
	
	int k=0;
	for (int i=0; i<input_length/2; i++)
	{
		output[k] = ImaAdpcmEncode(input[2*i], state);
		output[k] |= ImaAdpcmEncode(input[2*i+1], state) << 4;
		k++;
	}
}
Beispiel #4
0
// used by waterfall
// 2:1 compression: 2x unsigned char -> 1x unsigned char
void encode_ima_adpcm_u8_e8(unsigned char* input, unsigned char* output, int input_length, ima_adpcm_state_t *state)
{
	// not +127 / -128 because unsigned
	state->pos_clamp = 255;
	state->neg_clamp = 0;
	
	int k=0;
	for (int i=0; i<input_length/2; i++)
	{
		unsigned char i0 = input[2*i], i1 = input[2*i+1];	// handle input == output buffer
		output[k] = ImaAdpcmEncode(i0, state);
		output[k] |= ImaAdpcmEncode(i1, state) << 4;
		k++;
	}
}