Example #1
0
/* Encodes block data and returns k parameter for block */
int encode(char *input_data, int *output_data, int size)
{
	int n = 0;
	int k = 0;
	int z = 0;
	int bit_mask = 0;
	char num_bits = 0;

	/* Clear buf */
	memset(output_data, 0x00, size);

	/* Get k parameter given average sum squared error (input_data) */
	k = get_k(get_sse(input_data, size)/size);
	write_byte((char)k, "Output/compressed.out");

	for(n=0;n<size;n++)
	{
		/* Get last k bits */
		bit_mask = 0xFF >> (8-k);
		output_data[n] = (int)input_data[n];
		output_data[n] &= bit_mask;

		/* Add |1| after kth bit  */
		output_data[n] |= (0x01 << k);

		/* Buffer error and get last Z remaining bits */
		bit_mask = 0xFF << k;
		z = (int)input_data[n];
		z &= bit_mask;

		/* Align Z with bit 0 */
		z >>= k;

		/* How many bits to write */
		num_bits = k+1+z+1;

		/* Prefix sign bit and Z amount of zeroes */
		output_data[n] |= (0x02 << (k+z));
		
		/* Start putting bits from sign bit */
		bit_mask = 0x01 << (num_bits-1);

		/* Code generated, write out */
		while(num_bits > 0){
			put_bit(output_data[n] & bit_mask);
			bit_mask >>= 1;
			num_bits--;
		}
	}
	return k;
}
Example #2
0
int main(int argc, char *argv[]){

#ifdef FORCE
  char buffer[8192], *p, *q;
  int length;
#endif

  if (argc == 1) return 0;

  switch (argv[1][0]) {

  case '0' : /* for Makefile */

#ifdef FORCE
    printf("CORE=%s\n", CORENAME);
#else
#if defined(INTEL_AMD) || defined(POWER) || defined(__mips__) || defined(__arm__) || defined(__aarch64__)
    printf("CORE=%s\n", get_corename());
#endif
#endif

#ifdef FORCE
    printf("LIBCORE=%s\n", LIBNAME);
#else
    printf("LIBCORE=");
    get_libname();
    printf("\n");
#endif

    printf("NUM_CORES=%d\n", get_num_cores());

#if defined(__arm__) && !defined(FORCE)
        get_features();
#endif


#ifdef INTEL_AMD
#ifndef FORCE
    get_sse();
#else

    sprintf(buffer, "%s", ARCHCONFIG);

    p = &buffer[0];

    while (*p) {
      if ((*p == '-') && (*(p + 1) == 'D')) {
	p += 2;

	while ((*p != ' ') && (*p != '\0')) {

	  if (*p == '=') {
	    printf("=");
	    p ++;
	    while ((*p != ' ') && (*p != '\0')) {
	      printf("%c", *p);
	      p ++;
	    }
	  } else {
	    printf("%c", *p);
	    p ++;
	    if ((*p == ' ') || (*p =='\0')) printf("=1");
	  }
	}

	printf("\n");
      } else p ++;
    }
#endif
#endif

#ifdef MAKE_NB_JOBS
    printf("MAKE += -j %d\n", MAKE_NB_JOBS);
#elif NO_PARALLEL_MAKE==1
    printf("MAKE += -j 1\n");
#else
#ifndef OS_WINDOWS
    printf("MAKE += -j %d\n", get_num_cores());
#endif
#endif

    break;

  case '1' : /* For config.h */
#ifdef FORCE
    sprintf(buffer, "%s -DCORE_%s\n", ARCHCONFIG, CORENAME);

    p = &buffer[0];
    while (*p) {
      if ((*p == '-') && (*(p + 1) == 'D')) {
	p += 2;
	printf("#define ");

	while ((*p != ' ') && (*p != '\0')) {

	  if (*p == '=') {
	    printf(" ");
	    p ++;
	    while ((*p != ' ') && (*p != '\0')) {
	      printf("%c", *p);
	      p ++;
	    }
	  } else {
	    printf("%c", *p);
	    p ++;
	  }
	}

	printf("\n");
      } else p ++;
    }
#else
    get_cpuconfig();
#endif

#ifdef FORCE
    printf("#define CHAR_CORENAME \"%s\"\n", CORENAME);
#else
#if defined(INTEL_AMD) || defined(POWER) || defined(__mips__) || defined(__arm__) || defined(__aarch64__)
    printf("#define CHAR_CORENAME \"%s\"\n", get_corename());
#endif
#endif

 break;

  case '2' : /* SMP */
    if (get_num_cores() > 1) printf("SMP=1\n");
    break;
  }

  fflush(stdout);

  return 0;
}