static void dynamic_buffer_tests(void) { playout_state_t *s; playout_frame_t frame; playout_frame_t *p; plc_state_t plc; time_scale_state_t ts; int16_t *amp; int16_t fill[BLOCK_LEN]; int16_t buf[20*BLOCK_LEN]; int16_t out[10*BLOCK_LEN]; timestamp_t time_stamp; timestamp_t next_actual_receive; timestamp_t next_scheduled_receive; int near_far_time_offset; int rng; int i; int j; int ret; int len; int inframes; int outframes; SNDFILE *inhandle; SNDFILE *outhandle; if ((inhandle = sf_open_telephony_read(INPUT_FILE_NAME, 1)) == NULL) { fprintf(stderr, " Failed to open audio file '%s'\n", INPUT_FILE_NAME); exit(2); } if ((outhandle = sf_open_telephony_write(OUTPUT_FILE_NAME, 1)) == NULL) { fprintf(stderr, " Failed to create audio file '%s'\n", OUTPUT_FILE_NAME); exit(2); } near_far_time_offset = 54321; time_stamp = 12345; next_actual_receive = time_stamp + near_far_time_offset; next_scheduled_receive = 0; for (i = 0; i < BLOCK_LEN; i++) fill[i] = 32767; if ((s = playout_init(2*BLOCK_LEN, 15*BLOCK_LEN)) == NULL) return; plc_init(&plc); time_scale_init(&ts, SAMPLE_RATE, 1.0); for (i = 0; i < 1000000; i++) { if (i >= next_actual_receive) { amp = malloc(BLOCK_LEN*sizeof(int16_t)); inframes = sf_readf_short(inhandle, amp, BLOCK_LEN); if (inframes < BLOCK_LEN) break; ret = playout_put(s, amp, PLAYOUT_TYPE_SPEECH, inframes, time_stamp, next_actual_receive); #if 0 switch (ret) { case PLAYOUT_OK: printf("<< Record\n"); break; case PLAYOUT_ERROR: printf("<< Error\n"); break; default: printf("<< Eh?\n"); break; } #endif rng = rand() & 0xFF; if (i < 100000) rng = (rng*rng) >> 7; else if (i < 200000) rng = (rng*rng) >> 6; else if (i < 300000)
static void dynamic_buffer_tests(void) { playout_state_t *s; playout_frame_t frame; playout_frame_t *p; plc_state_t plc; time_scale_state_t ts; int16_t *amp; int16_t fill[BLOCK_LEN]; int16_t buf[20*BLOCK_LEN]; int16_t out[10*BLOCK_LEN]; timestamp_t time_stamp; timestamp_t next_actual_receive; timestamp_t next_scheduled_receive; int near_far_time_offset; int rng; int i; int j; int ret; int len; int inframes; int outframes; AFfilehandle inhandle; AFfilehandle outhandle; AFfilesetup filesetup; filesetup = afNewFileSetup(); if (filesetup == AF_NULL_FILESETUP) { fprintf(stderr, " Failed to create file setup\n"); exit(2); } afInitSampleFormat(filesetup, AF_DEFAULT_TRACK, AF_SAMPFMT_TWOSCOMP, 16); afInitRate(filesetup, AF_DEFAULT_TRACK, (float) SAMPLE_RATE); afInitFileFormat(filesetup, AF_FILE_WAVE); afInitChannels(filesetup, AF_DEFAULT_TRACK, 2); inhandle = afOpenFile(INPUT_FILE_NAME, "r", NULL); if (inhandle == AF_NULL_FILEHANDLE) { fprintf(stderr, " Failed to open wave file '%s'\n", INPUT_FILE_NAME); exit(2); } outhandle = afOpenFile(OUTPUT_FILE_NAME, "w", filesetup); if (outhandle == AF_NULL_FILEHANDLE) { fprintf(stderr, " Failed to create wave file '%s'\n", OUTPUT_FILE_NAME); exit(2); } near_far_time_offset = 54321; time_stamp = 12345; next_actual_receive = time_stamp + near_far_time_offset; next_scheduled_receive = 0; for (i = 0; i < BLOCK_LEN; i++) fill[i] = 32767; if ((s = playout_new(2*BLOCK_LEN, 15*BLOCK_LEN)) == NULL) return; plc_init(&plc); time_scale_init(&ts, 1.0); for (i = 0; i < 1000000; i++) { if (i >= next_actual_receive) { amp = malloc(BLOCK_LEN*sizeof(int16_t)); inframes = afReadFrames(inhandle, AF_DEFAULT_TRACK, amp, BLOCK_LEN); if (inframes < BLOCK_LEN) break; ret = playout_put(s, amp, PLAYOUT_TYPE_SPEECH, inframes, time_stamp, next_actual_receive); #if 0 switch (ret) { case PLAYOUT_OK: printf("<< Record\n"); break; case PLAYOUT_ERROR: printf("<< Error\n"); break; default: printf("<< Eh?\n"); break; } #endif rng = rand() & 0xFF; if (i < 100000) rng = (rng*rng) >> 7; else if (i < 200000) rng = (rng*rng) >> 6; else if (i < 300000)