Example #1
0
static void JACKclose() {
	if(thread_run) {
		thread_run = 0;
		if(pthread_mutex_trylock(&player_thread_lock) == 0) {
			pthread_cond_signal(&buffer_ready);
			pthread_mutex_unlock(&player_thread_lock);
		}
		pthread_join(player_thread_id, NULL);
	}
	player_active = 0;

	if(j_output_port) {
		int i;
		for(i=0;i<myplayer->info.channels;i++) {
			jack_port_unregister(j_client, j_output_port[i]);
		}
		free(j_output_port);
		j_output_port = NULL;
	}
	if(j_out) {
		free(j_out);
		j_out = NULL;
	}
	if(rb) {
		jack_ringbuffer_free(rb);
		rb = NULL;
	}
	if (myplugin) {
		int i;
		for(i=0;i<myplayer->info.channels;i++) ladspah_free(myplugin[i]);
		free(myplugin);
	}
	if (myplayer){
		ad_close(myplayer);
		ad_free_nfo(&myplayer->info);
		g_free0(myplayer);
	}
	myplugin = NULL;
};
Example #2
0
File: peak.c Project: EQ4/samplecat
double ad_maxsignal(const char *fn) {
	struct adinfo nfo;
	void * sf = ad_open(fn, &nfo);
	if (!sf) return 0.0;

	int     read_len = 1024 * nfo.channels;
	float* sf_data = malloc(sizeof(float) * read_len);

	int readcount;
	float max_val = 0.0;
	do {
		readcount = ad_read(sf, sf_data, read_len);
		int k;
		for (k = 0; k < readcount; k++){
			const float temp = fabs (sf_data [k]);
			max_val = temp > max_val ? temp : max_val;
		};
	} while (readcount > 0);

	ad_close(sf);
	free(sf_data);
	ad_free_nfo(&nfo);
	return max_val;
}