| 
						
						
							
								
							
						
						
					 | 
					 | 
					@ -45,6 +45,7 @@ | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					#include <unistd.h> | 
					 | 
					 | 
					 | 
					#include <unistd.h> | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					#else | 
					 | 
					 | 
					 | 
					#else | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					#include <Windows.h> | 
					 | 
					 | 
					 | 
					#include <Windows.h> | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					#include "getopt/getopt.h" | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					#endif | 
					 | 
					 | 
					 | 
					#endif | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					#include <semaphore.h> | 
					 | 
					 | 
					 | 
					#include <semaphore.h> | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -96,11 +97,6 @@ struct fm_state | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					void usage(void) | 
					 | 
					 | 
					 | 
					void usage(void) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					{ | 
					 | 
					 | 
					 | 
					{ | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						#ifdef _WIN32 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						fprintf(stderr,"rtl_fm, a simple FM demodulator for RTL2832 based USB-sticks\n\n" | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							"Usage:\t rtl_fm-win.exe [device_index] [samplerate in kHz] " | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							"[gain] [frequency in Hz] [filename]\n"); | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						#else | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						fprintf(stderr, | 
					 | 
					 | 
					 | 
						fprintf(stderr, | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							"rtl_fm, a simple narrow band FM demodulator for RTL2832 based DVB-T receivers\n\n" | 
					 | 
					 | 
					 | 
							"rtl_fm, a simple narrow band FM demodulator for RTL2832 based DVB-T receivers\n\n" | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							"Usage:\t -f frequency_to_tune_to [Hz]\n" | 
					 | 
					 | 
					 | 
							"Usage:\t -f frequency_to_tune_to [Hz]\n" | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					 | 
					@ -117,7 +113,6 @@ void usage(void) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							"\t[-A enables high speed arctan (default: off)]\n\n" | 
					 | 
					 | 
					 | 
							"\t[-A enables high speed arctan (default: off)]\n\n" | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							"Produces signed 16 bit ints, use Sox to hear them.\n" | 
					 | 
					 | 
					 | 
							"Produces signed 16 bit ints, use Sox to hear them.\n" | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							"\trtl_fm ... | play -t raw -r 24k -e signed-integer -b 16 -c 1 -V1 -\n\n"); | 
					 | 
					 | 
					 | 
							"\trtl_fm ... | play -t raw -r 24k -e signed-integer -b 16 -c 1 -V1 -\n\n"); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					#endif | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						exit(1); | 
					 | 
					 | 
					 | 
						exit(1); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					} | 
					 | 
					 | 
					 | 
					} | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -460,7 +455,7 @@ int main(int argc, char **argv) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						fm.post_downsample = 1; | 
					 | 
					 | 
					 | 
						fm.post_downsample = 1; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						fm.custom_atan = 0; | 
					 | 
					 | 
					 | 
						fm.custom_atan = 0; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						sem_init(&data_ready, 0, 0); | 
					 | 
					 | 
					 | 
						sem_init(&data_ready, 0, 0); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					#ifndef _WIN32 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						while ((opt = getopt(argc, argv, "d:f:g:s:b:l:o:EFA")) != -1) { | 
					 | 
					 | 
					 | 
						while ((opt = getopt(argc, argv, "d:f:g:s:b:l:o:EFA")) != -1) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							switch (opt) { | 
					 | 
					 | 
					 | 
							switch (opt) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							case 'd': | 
					 | 
					 | 
					 | 
							case 'd': | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -504,16 +499,6 @@ int main(int argc, char **argv) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						} else { | 
					 | 
					 | 
					 | 
						} else { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							filename = argv[optind]; | 
					 | 
					 | 
					 | 
							filename = argv[optind]; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						} | 
					 | 
					 | 
					 | 
						} | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					#else | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						if(argc <6) | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							usage(); | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						dev_index = atoi(argv[1]); | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						samp_rate = atoi(argv[2])*1000; | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						gain=(int)(atof(argv[3]) * 10); | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						fm.freqs[0] = atoi(argv[4]); | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						fm.freq_len = 1; | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						filename = argv[5]; | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					#endif | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						buffer = malloc(DEFAULT_BUF_LENGTH * sizeof(uint8_t)); | 
					 | 
					 | 
					 | 
						buffer = malloc(DEFAULT_BUF_LENGTH * sizeof(uint8_t)); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
					 | 
					
  |