2 * Copyright (c) 2011-2016 Samsung Electronics Co., Ltd All Rights Reserved
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
20 #include <wav_player.h>
21 #include <wav_player_internal.h>
22 #include <sound_manager.h>
23 #include <sound_manager_internal.h>
31 #define FILE_PATH_MAX 128
32 #define DEFAULT_FILE "/usr/share/sounds/alsa/Front_Center.wav"
34 static GMainLoop *g_mainloop = NULL;
36 struct sigaction sig_int_old_action;
41 printf("wav_player_test [OPTION]\n\n"
42 " -f, --file file path to play\n"
43 " -s, --streamtype stream type (0:media(default), 1:system, 2:notification, 3:voice-information, 4:solo)\n"
44 " -i, --iterate how many times to play\n"
45 " -q, --quickplay play quick\n"
46 " -o, --stopothers play after stopping others\n"
47 " -h, --help help\n");
50 void _player_stop_cb(int id, void *user_data)
52 printf("complete id = %d,%p\n", id, user_data);
53 sound_manager_destroy_stream_information((sound_stream_info_h)user_data);
54 g_main_loop_quit(g_mainloop);
57 void stream_focus_cb(sound_stream_info_h stream_info, sound_stream_focus_mask_e focus_mask, sound_stream_focus_state_e focus_state,
58 sound_stream_focus_change_reason_e reason, int sound_behavior, const char *extra_info, void *user_data)
63 void wav_play_test(const char *file_path, int iterate, int stream_type, bool stop_others)
66 sound_stream_info_h stream_info;
67 sound_stream_type_e type;
69 if (file_path == NULL || (stream_type > 4 || stream_type < 0)) {
70 printf("invalid param, file_path(%s), stream_type(%d)\n", file_path, stream_type);
74 switch (stream_type) {
76 type = SOUND_STREAM_TYPE_MEDIA;
79 type = SOUND_STREAM_TYPE_SYSTEM;
82 type = SOUND_STREAM_TYPE_NOTIFICATION;
85 type = SOUND_STREAM_TYPE_VOICE_INFORMATION;
88 type = SOUND_STREAM_TYPE_SOLO;
92 if (stream_type == 4) {
93 if (sound_manager_create_stream_information_internal(type, stream_focus_cb, NULL, &stream_info)) {
94 printf("failed to create stream info internal\n");
98 if (sound_manager_create_stream_information(type, stream_focus_cb, NULL, &stream_info)) {
99 printf("failed to create stream info\n");
104 printf("Play Wav, File Path : %s, Iterate : %d\n", file_path, iterate);
106 ret = wav_player_start_loop_stop_others(file_path, stream_info, iterate, _player_stop_cb, (void*)stream_info, &gid);
107 printf("wav_player_start_loop_stop_others(id=%d) ret = %d\n", gid, ret);
109 ret = wav_player_start_loop(file_path, stream_info, iterate, _player_stop_cb, (void*)stream_info, &gid);
110 printf("wav_player_start_loop(id=%d) ret = %d\n", gid, ret);
113 sound_manager_destroy_stream_information(stream_info);
117 g_mainloop = g_main_loop_new(NULL, 0);
118 g_main_loop_run(g_mainloop);
121 void wav_play_test_quick(const char *file_path)
125 if (file_path == NULL) {
126 printf("invalid file path\n");
130 printf("Play Wav, File Path : %s\n", file_path);
132 ret = wav_player_play_simple(file_path, "system");
133 printf("wav_player_play_simple() ret = 0x%X\n", ret);
136 void __sig_handler(int signo)
138 sigset_t old_mask, all_mask;
139 sigfillset(&all_mask);
140 sigprocmask(SIG_BLOCK, &all_mask, &old_mask);
141 sigprocmask(SIG_SETMASK, &old_mask, NULL);
143 printf("sig.num(%d)\n", signo);
148 printf("stop wav-player\n");
149 wav_player_stop(gid);
151 sigaction(SIGINT, &sig_int_old_action, NULL);
159 int main(int argc, char**argv)
163 bool quickplay = false;
164 bool stop_others = false;
165 char file_path[FILE_PATH_MAX] = DEFAULT_FILE;
166 struct sigaction sig_action;
167 sig_action.sa_handler = __sig_handler;
168 sig_action.sa_flags = SA_NOCLDSTOP;
169 sigemptyset(&sig_action.sa_mask);
170 sigaction(SIGINT, &sig_action, &sig_int_old_action);
176 static struct option long_options[] = {
177 {"iterate" , required_argument, 0, 'i'},
178 {"file" , required_argument, 0, 'f'},
179 {"streamtype" , required_argument, 0, 's'},
180 {"quickplay" , no_argument, 0, 'q'},
181 {"stopothers" , no_argument, 0, 'o'},
182 {"help" , no_argument, 0, 'h'},
186 if ((opt = getopt_long(argc, argv, "i:f:s:qoh", long_options, &opt_idx)) == -1)
189 printf("opt = %d(%c), opt_idx = %d\n", opt, opt, opt_idx);
193 iterate = atoi(optarg);
196 snprintf(file_path, FILE_PATH_MAX, "%s", optarg);
199 stream_type = atoi(optarg);
215 wav_play_test_quick(file_path);
217 wav_play_test(file_path, iterate, stream_type, stop_others);