audio-io fixed crash at audio_in_read() of another thread.
[platform/core/api/audio-io.git] / test / audio_io_test.c
index b7db6c4..ca89a73 100644 (file)
@@ -168,6 +168,7 @@ int audio_io_test(int length, int num, int ch)
 
                fclose(fp);
 
+               audio_in_unprepare(input);
                audio_in_destroy(input);
        }
 
@@ -246,13 +247,13 @@ int audio_io_loopback_test()
 
        ret = audio_in_prepare(input);
        if (ret != 0) {
-               printf("audio_in_prepare failed.\n");
+               printf("audio_in_prepare failed, err(0x%x)\n", ret);
                audio_in_destroy(input);
                return 0;
        } else {
                ret = audio_in_get_buffer_size(input, &size);
                if (ret != AUDIO_IO_ERROR_NONE) {
-                       printf("audio_in_get_buffer_size failed.\n");
+                       printf("audio_in_get_buffer_size failed, err(0x%x)\n", ret);
                        return 0;
                } else {
                        printf("size(%d)\n", size);
@@ -262,7 +263,7 @@ int audio_io_loopback_test()
 
        ret = audio_out_prepare(output);
        if (ret != 0) {
-               printf("audio_out_prepare failed.\n");
+               printf("audio_out_prepare failed, err(0x%x)\n", ret);
                audio_out_destroy(output);
                return 0;
        }
@@ -529,13 +530,13 @@ int audio_io_async_test(int mode)
                printf("audio_in_prepare\n");
                ret = audio_in_prepare(input);
                if (ret != 0) {
-                       printf("audio_in_prepare failed.\n");
+                       printf("audio_in_prepare failed, err(0x%x)\n", ret);
                        audio_in_destroy(input);
                        goto EXIT;
                } else {
                        ret = audio_in_get_buffer_size(input, &size);
                        if (ret != AUDIO_IO_ERROR_NONE) {
-                               printf("audio_in_get_buffer_size failed.\n");
+                               printf("audio_in_get_buffer_size failed, err(0x%x)\n", ret);
                                goto EXIT;
                        } else {
                                printf("size(%d)\n", size);
@@ -555,15 +556,18 @@ int audio_io_async_test(int mode)
                printf("audio_out_prepare\n");
                ret = audio_out_prepare(output);
                if (ret != 0) {
-                       printf("audio_out_prepare failed.\n");
+                       printf("audio_out_prepare failed, err(0x%x)\n", ret);
                        audio_out_destroy(output);
                        goto EXIT;
                }
        }
 
        do {
+               int gotchar;
                printf("command(q:quit) : ");
-               cmd = (char)getchar();
+               gotchar = getchar();
+               if (gotchar == EOF)
+                       goto EXIT;
                if (cmd != '\n')
                        getchar();
                cmd_ret = _convert_cmd_and_run(cmd, mode);
@@ -633,8 +637,13 @@ int main(int argc, char **argv)
        } else if (argc == 3 && !strcmp(argv[1], "async")) {
                audio_io_async_test(atoi(argv[2]));
        } else if (argc == 4) {
+               int channel_idx = atoi(argv[3]);
+               if (channel_idx < 0 || channel_idx > 2) {
+                       printf("Invalid channel\n");
+                       return 0;
+               }
                printf("run with [%s][%s][%s]\n", argv[1], argv[2], argv[3]);
-               audio_io_test(atoi(argv[1]), atoi(argv[2]), atoi(argv[3]));
+               audio_io_test(atoi(argv[1]), atoi(argv[2]), channel_idx);
        } else if (argc == 6) {
                play_file_sample(argv[2], atoi(argv[3]), atoi(argv[4]), atoi(argv[5]));
        } else {