Beispiel #1
0
ControlSeqParser::~ControlSeqParser()
{
	if (m_values != NULL)
	{
		free(m_values);
	}

	freeLookup();
}
Beispiel #2
0
void makeLookup(int bitspersamp, int firstSampleIsMSB, int isSigned) {
	unsigned char bitmask;
	int negVal;
	int negConv;
	int i, j, k;
	int x;

	if (lookupTableValid[bitspersamp]) {
		freeLookup(bitspersamp);
	}
	// make the lookup table...
	switch (bitspersamp) {
	case 1:
		bitmask = 0x01;
		negVal = 1;
		negConv = 2;
		break;
	case 2:
		bitmask = 0x03;
		negVal = 2;
		negConv = 4;
		break;
	case 4:
		bitmask = 0x0F;
		negVal = 8;
		negConv = 16;
		break;
	case 8:
		bitmask = 0xFF;
		negVal = 128;
		negConv = 256;
		break;
	default:
		fprintf(stderr,"phx: Cannot deal with %d bit data!\n",bitspersamp);
		exit(9);
	}
	x = 8/(bitspersamp) - 1;
	lookupTable[bitspersamp] = malloc(sizeof(float*)* 8/(bitspersamp));
	for (i = 0; i < 8/(bitspersamp); i++) {
		lookupTable[bitspersamp][i] = malloc(256*sizeof(float));
		for (j = 0; j < 256; j++) {//=bitspersamp){
			k = j;
			if (firstSampleIsMSB)
				k = k >> ((x-i)*bitspersamp);
			else
				k = k >> ((i)*bitspersamp);
			k = k & bitmask;
			if (isSigned && k >= negVal)
				k = k - negConv;
			lookupTable[bitspersamp][i][j] = (float)k;
			//printf("%02x\t%02x\t%d %d\n",i,j, k,negVal);
		}
	}
Beispiel #3
0
/**
 * newLookup
 * Initializes the lookup-table
 **/
void
newLookup( int n, int m )
{
    int i, j;
    if ( lookup != NULL )
    	freeLookup();

    lookup = (int **) malloc( (lookup_n = n) * sizeof(int *));
    for ( i = 0; i < lookup_n; i++ )
    {
	lookup[i] = (int *) malloc( m * sizeof(int) );
	for ( j = 0; j < m; j++ )
	    lookup[i][j] = -1;
    }

    lookup[0][0] = pointDistance(0, 0);
    for ( j = 1; j < m; j++ )
	lookup[0][j] = lookup[0][j-1] + pointDistance(0, j);
    for ( i = 1; i < n; i++ )
	lookup[i][0] = lookup[i-1][0] + pointDistance(i, 0);
}