static perf_test_t * upload_perf_new (void) { upload_test_t *upload_test; upload_test = (upload_test_t *) bson_malloc0 (sizeof (upload_test_t)); upload_init (upload_test); return (perf_test_t *) upload_test; }
int main() { ALCdevice* device; ALint sample; void* buffer; void* audio_buffer; void* buffer_point; WAVPROP* wavp; WAVEHDR* wavheader; pthread_t tid; int i, j, final_size, err, counter; int ctl = 0; int threshold = 10000; /* Threshold of wave strength to be considered speaking */ int buffersize = sizeof(WAVEHDR) + BUF_SIZE; struct curl_slist *headers = NULL; upload_init(headers); device = record_init(AL_FORMAT_MONO16, SPEED, FRAME_SIZE * 2); alcCaptureStart(device); while (1) { buffer = malloc(buffersize); audio_buffer = buffer + sizeof(WAVEHDR); buffer_point = audio_buffer; /* Wait until speek */ counter = 0; while(1) { alcCaptureSamples(device, (ALCvoid*)buffer_point, (ALCsizei)2000); usleep((useconds_t)250000); //printf("%d\n", maxwav(buffer_point)); if (maxwav(buffer_point) > threshold) { printf("%s\n", "Start recording"); buffer_point += FRAME_SIZE; break; } } /* Record */ for (i = 0; i < 239; i++) { alcCaptureSamples(device, (ALCvoid*)buffer_point, (ALCsizei)2000); usleep((useconds_t)250000); //printf("%d\n", maxwav(buffer_point)); if (maxwav(buffer_point) < threshold) { counter += 1; } else { counter = 0; } if (counter > 3) /* 1 secs */ { printf("%s\n", "Stop recording"); i -= 2; break; } buffer_point += FRAME_SIZE; ctl = kbhit(); if (ctl > 0) { printf("%s\n", "Key pressed"); for (j=0; j < ctl; j++) { getchar(); } break; } } if (i == 239) { printf("%s\n", "Time up!"); final_size = BUF_SIZE; } else { final_size = (i + 1) * FRAME_SIZE; } /* Finalize header */ wavheader = (WAVEHDR*)buffer; wav_finalize_header(wavheader, final_size); /* upload it */ wavp = (WAVPROP*)malloc(sizeof(WAVPROP)); wavp->ptr = buffer; wavp->len = (size_t)(final_size + sizeof(WAVEHDR)); err = pthread_create(&tid, NULL, upload, (void*)wavp); if (err != 0) { fprintf(stderr, "can't create thread: %s\n", strerror(err)); exit(1); } } alcCaptureStop(device); record_clean(device); upload_clean(headers); return 0; }