static int ch_table[] = { 0, AUDIO_CHANNEL_MONO, AUDIO_CHANNEL_STEREO,
AUDIO_CHANNEL_MULTI_3, AUDIO_CHANNEL_MULTI_4, AUDIO_CHANNEL_MULTI_5,
- AUDIO_CHANNEL_MULTI_6, AUDIO_CHANNEL_MULTI_7, AUDIO_CHANNEL_MULTI_8 };
+ AUDIO_CHANNEL_MULTI_6, AUDIO_CHANNEL_MULTI_7, AUDIO_CHANNEL_MULTI_8,
+ AUDIO_CHANNEL_MULTI_9, AUDIO_CHANNEL_MULTI_10, AUDIO_CHANNEL_MULTI_11,
+ AUDIO_CHANNEL_MULTI_12, AUDIO_CHANNEL_MULTI_13, AUDIO_CHANNEL_MULTI_14,
+ AUDIO_CHANNEL_MULTI_15, AUDIO_CHANNEL_MULTI_16 };
static char *state_str[] = { "IDLE", "RUNNING", "PAUSED" };
static void _audio_in_state_cb(audio_in_h handle, audio_io_state_e previous, audio_io_state_e current,
pthread_exit(0);
}
-int audio_io_stress_test()
+#define OUT_HANDLE_MAX 1000
+#define IN_HANDLE_MAX 10
+void audio_io_test_handle_max()
+{
+ audio_out_h output[OUT_HANDLE_MAX] = { 0, };
+ audio_in_h input[IN_HANDLE_MAX] = { 0, };
+ int i;
+ int success = 0;
+ int ret;
+
+ printf("==============================================\n");
+ printf("playback handle creation test. try to create %d handles\n", OUT_HANDLE_MAX);
+ for (i = 0; i < OUT_HANDLE_MAX; i++) {
+ ret = audio_out_create_new(48000, AUDIO_CHANNEL_STEREO, AUDIO_SAMPLE_TYPE_S16_LE, &output[i]);
+ if (ret != AUDIO_IO_ERROR_NONE) {
+ printf("audio_out_create_new failed.\n");
+ return;
+ }
+
+ ret = audio_out_prepare(output[i]);
+ if (ret == AUDIO_IO_ERROR_NONE)
+ success++;
+ }
+ printf("created handle (%d/%d)\n", success, OUT_HANDLE_MAX);
+
+ for (i = 0; i < OUT_HANDLE_MAX; i++)
+ audio_out_destroy(output[i]);
+
+ /* pulseaudio oom when IN_HANDLE_MAX is set over 50 */
+ printf("capture handle creation test. try to create %d handles\n", IN_HANDLE_MAX);
+ success = 0;
+ for (i = 0; i < IN_HANDLE_MAX; i++) {
+ ret = audio_in_create(48000, AUDIO_CHANNEL_STEREO, AUDIO_SAMPLE_TYPE_S16_LE, &input[i]);
+ if (ret != AUDIO_IO_ERROR_NONE) {
+ printf("audio_in_create_new failed.\n");
+ return;
+ }
+
+ ret = audio_in_prepare(input[i]);
+ if (ret == AUDIO_IO_ERROR_NONE)
+ success++;
+ }
+ printf("created handle (%d/%d)\n", success, IN_HANDLE_MAX);
+
+ for (i = 0; i < IN_HANDLE_MAX; i++)
+ audio_in_destroy(input[i]);
+}
+
+int audio_io_test_read_write()
{
int i;
int ret;
}
audio_in_set_stream_cb(input, in_stream_cb, NULL);
+ printf("==============================================\n");
printf("audio out sync test\n");
for (i = 0; i < THREAD_MAX; i++)
pthread_create(&t[i], NULL, thread_stress_test_audio_out, output[0]);
printf("thread %d finished\n", i);
}
+ printf("==============================================\n");
printf("audio out async test\n");
for (i = 0; i < THREAD_MAX; i++)
pthread_create(&t[i], NULL, thread_stress_test_audio_out, output[1]);
printf("thread %d finished\n", i);
}
+ printf("==============================================\n");
printf("audio in test\n");
for (i = 0; i < THREAD_MAX; i++)
pthread_create(&t[i], NULL, thread_stress_test_audio_in, input);
} else if (argc == 3 && !strcmp(argv[1], "async")) {
audio_io_async_test(atoi(argv[2]));
} else if (argc == 2 && !strcmp(argv[1], "stress")) {
- audio_io_stress_test();
+ audio_io_test_handle_max();
+ audio_io_test_read_write();
} else if (argc == 4) {
int channel_idx = atoi(argv[3]);
- if (channel_idx < 0 || channel_idx > 8) {
+ if (channel_idx <= 0 || channel_idx > 16) {
printf("Invalid channel\n");
return 0;
}