#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>


#include "wave_io.h"

#define MAX_STR_LNGTH 256

#define PI 3.141592653

int main(int argc, char *argv[])
{
	FILE *prt;
	int i;
	int out;

	int n = 1;
	short *new_wave;

	char in_name[MAX_STR_LNGTH], out_name[MAX_STR_LNGTH];
	short *wave;

	unsigned int freq_in, bits_in;
	unsigned int n_wave;

	struct Waveheader header;


	if ( (argc != 3) && (argc != 5) )
	{
		fprintf(stderr, "Usage: %s -i infile [-o outfile]\n", argv[0]);
		exit(1);
	}
	else
	{
		strcpy(in_name, argv[2]);
		out=0;
		out_name[0]='\0';

		if (argc == 5)
		{
			strcpy(out_name, argv[4]);
			out=1;
		}
	}

	fprintf(stderr,"infile: %s outfile: %s\n", in_name, out_name);

	read_wave(&wave, &n_wave, &freq_in, &bits_in, in_name, &header);

	// Downsampling
	  for(i=0;i<n_wave/2 ;i++){
		wave[i]=wave[2*i];
	  }
	  freq_in/=2;
	  n_wave/=2;

	//lesen der Datei und schreiben der Amplitudenwerte als Zahlen in eine ASCII File
	//prt = fopen("sine_hi_out.txt", "wt");
	//for (i=0; i < n_wave; i++){
	//	fprintf(prt, "%i \n", wave[i]);
	//}
	//fclose(prt);

	// 1 Bit Quantisierung

	/*new_wave = (short*) malloc(n_wave*sizeof(short));

	for (i = 0; i < n_wave; i++ ) {
	new_wave[i] = wave[i];
	wave[i] /= pow(2, n);
	wave[i] *= pow(2, n);
	wave[i] -= new_wave[i];
	wave[i] *= pow(2, 16 - n - 1);
	}

	if (out)
	write_wave(wave, n_wave, freq_in, bits_in, out_name, &header);

	free(new_wave);*/

	if (out)
		write_wave(wave, n_wave, freq_in, bits_in, out_name, &header);

	free(wave);

	return(1);
}


