diff options
author | Alfred E. Heggestad <aeh@db.org> | 2016-09-04 10:49:41 +0200 |
---|---|---|
committer | Alfred E. Heggestad <aeh@db.org> | 2016-09-04 10:49:41 +0200 |
commit | 8abcfeb1486a093a07360c63ea65958e3daaa57d (patch) | |
tree | e1bdfe78788ce83ff94f08d8ebc537d69bd8c561 /modules | |
parent | 1939f2d3ec202c27b43cf6c2350d0b1cd2f6933c (diff) |
play: make it re-entrant, add struct player
Diffstat (limited to 'modules')
-rw-r--r-- | modules/debug_cmd/debug_cmd.c | 22 | ||||
-rw-r--r-- | modules/menu/menu.c | 17 |
2 files changed, 33 insertions, 6 deletions
diff --git a/modules/debug_cmd/debug_cmd.c b/modules/debug_cmd/debug_cmd.c index ad3e463..4b29bb1 100644 --- a/modules/debug_cmd/debug_cmd.c +++ b/modules/debug_cmd/debug_cmd.c @@ -62,6 +62,27 @@ static int cmd_ua_debug(struct re_printf *pf, void *unused) } +static int cmd_play_file(struct re_printf *pf, void *arg) +{ + struct cmd_arg *carg = arg; + const char *filename = carg->prm; + int err; + + err = re_hprintf(pf, "playing audio file \"%s\" ..\n", filename); + if (err) + return err; + + err = play_file(NULL, baresip_player(), filename, 0); + if (err) { + warning("debug_cmd: play_file(%s) failed (%m)\n", + filename, err); + return err; + } + + return err; +} + + static const struct cmd debugcmdv[] = { {"main", 0, 0, "Main loop debug", re_debug }, {"config", 'g', 0, "Print configuration", cmd_config_print }, @@ -72,6 +93,7 @@ static const struct cmd debugcmdv[] = { {"timers", 0, 0, "Timer debug", tmr_status }, {"uastat", 'u', 0, "UA debug", cmd_ua_debug }, {"memstat", 'y', 0, "Memory status", mem_status }, +{"play", 0, CMD_PRM, "Play audio file", cmd_play_file }, }; diff --git a/modules/menu/menu.c b/modules/menu/menu.c index 0366471..66d6894 100644 --- a/modules/menu/menu.c +++ b/modules/menu/menu.c @@ -827,6 +827,8 @@ static void redial_handler(void *arg) static void ua_event_handler(struct ua *ua, enum ua_event ev, struct call *call, const char *prm, void *arg) { + struct player *player = baresip_player(); + (void)call; (void)prm; (void)arg; @@ -851,12 +853,13 @@ static void ua_event_handler(struct ua *ua, enum ua_event ev, if (ANSWERMODE_MANUAL == account_answermode(ua_account(ua))) { if (list_count(ua_calls(ua)) > 1) { - (void)play_file(&menu.play, + (void)play_file(&menu.play, player, "callwaiting.wav", 3); } else { /* Alert user */ - (void)play_file(&menu.play, "ring.wav", -1); + (void)play_file(&menu.play, player, + "ring.wav", -1); } if (menu.bell) @@ -868,7 +871,7 @@ static void ua_event_handler(struct ua *ua, enum ua_event ev, /* stop any ringtones */ menu.play = mem_deref(menu.play); - (void)play_file(&menu.play, "ringback.wav", -1); + (void)play_file(&menu.play, player, "ringback.wav", -1); break; case UA_EVENT_CALL_ESTABLISHED: @@ -889,8 +892,10 @@ static void ua_event_handler(struct ua *ua, enum ua_event ev, if (call_scode(call)) { const char *tone; tone = translate_errorcode(call_scode(call)); - if (tone) - (void)play_file(&menu.play, tone, 1); + if (tone) { + (void)play_file(&menu.play, player, + tone, 1); + } } alert_stop(); @@ -950,7 +955,7 @@ static void message_handler(const struct pl *peer, const struct pl *ctype, (void)re_fprintf(stderr, "\r%r: \"%b\"\n", peer, mbuf_buf(body), mbuf_get_left(body)); - (void)play_file(NULL, "message.wav", 0); + (void)play_file(NULL, baresip_player(), "message.wav", 0); } |