diff --git a/daemon/call.c b/daemon/call.c index 4ffc914a5..5db7182e3 100644 --- a/daemon/call.c +++ b/daemon/call.c @@ -2750,7 +2750,6 @@ static void __call_monologue_init_from_flags(struct call_monologue *ml, struct c #ifdef WITH_TRANSCODING if (flags->recording_announcement) { media_player_new(&ml->rec_player, ml); - bool ret = true; media_player_opts_t opts = MPO( .repeat = flags->repeat_times, .start_pos = flags->start_pos, @@ -2760,13 +2759,8 @@ static void __call_monologue_init_from_flags(struct call_monologue *ml, struct c .blob = flags->blob, .db_id = flags->db_id, ); - if (flags->file.len) - ret = media_player_add_file(ml->rec_player, &flags->file, opts); - else if (flags->blob.len) - ret = media_player_add_blob(ml->rec_player, &flags->blob, opts); - else if (flags->db_id > 0) - ret = media_player_add_db(ml->rec_player, flags->db_id, opts); - if (!ret) + + if (!media_player_add(ml->rec_player, opts)) ilog(LOG_WARN, "Failed to add media player for recording announcement"); } #endif diff --git a/daemon/media_player.c b/daemon/media_player.c index f653058c9..89c07191b 100644 --- a/daemon/media_player.c +++ b/daemon/media_player.c @@ -1160,6 +1160,21 @@ bool media_player_play_file(struct media_player *mp, const str *file, media_play #endif } +bool media_player_add(struct media_player *mp, media_player_opts_t opts) { +#ifdef WITH_TRANSCODING + bool ret = true; + if (opts.file.len) + ret = media_player_add_file(mp, &opts.file, opts); + else if (opts.blob.len) + ret = media_player_add_blob(mp, &opts.blob, opts); + else if (opts.db_id > 0) + ret = media_player_add_db(mp, opts.db_id, opts); + return ret; +#else + return false; +#endif +} + // call->master_lock held in W bool media_player_add_file(struct media_player *mp, const str *file, media_player_opts_t opts) { int ret = __media_player_add_file(mp, file, opts, NULL); diff --git a/include/media_player.h b/include/media_player.h index c4dc65219..fc65b6315 100644 --- a/include/media_player.h +++ b/include/media_player.h @@ -124,6 +124,7 @@ bool media_player_play_db(struct media_player *, long long, media_player_opts_t) bool media_player_add_file(struct media_player *, const str *, media_player_opts_t); bool media_player_add_blob(struct media_player *, const str *, media_player_opts_t); bool media_player_add_db(struct media_player *, long long, media_player_opts_t); +bool media_player_add(struct media_player *mp, media_player_opts_t opts); bool media_player_start(struct media_player *); long long media_player_stop(struct media_player *); bool media_player_is_active(struct call_monologue *);