コード例 #1
0
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;
}
コード例 #2
0
ファイル: googlespeech-openal.c プロジェクト: sgsdxzy/VoiceIM
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;
}