From dd2956dc66647be19a120d17c6e001226f4ea8de Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Damir=20Ned=C5=BEibovi=C4=87?= Date: Tue, 8 Nov 2022 12:31:04 +0100 Subject: [PATCH] Implement playing from a given position for db and blob. --- daemon/call_interfaces.c | 4 ++-- daemon/media_player.c | 8 ++++---- include/media_player.h | 4 ++-- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/daemon/call_interfaces.c b/daemon/call_interfaces.c index e9e43ee04..5305c1203 100644 --- a/daemon/call_interfaces.c +++ b/daemon/call_interfaces.c @@ -2846,11 +2846,11 @@ const char *call_play_media_ng(bencode_item_t *input, bencode_item_t *output) { return "Failed to start media playback from file"; } else if (flags.blob.len) { - if (media_player_play_blob(monologue->player, &flags.blob, flags.repeat_times)) + if (media_player_play_blob(monologue->player, &flags.blob, flags.repeat_times, flags.start_pos)) return "Failed to start media playback from blob"; } else if (flags.db_id > 0) { - if (media_player_play_db(monologue->player, flags.db_id, flags.repeat_times)) + if (media_player_play_db(monologue->player, flags.db_id, flags.repeat_times, flags.start_pos)) return "Failed to start media playback from database"; } else diff --git a/daemon/media_player.c b/daemon/media_player.c index 07c313043..c1d0bb162 100644 --- a/daemon/media_player.c +++ b/daemon/media_player.c @@ -611,7 +611,7 @@ static int64_t __mp_avio_seek(void *opaque, int64_t offset, int whence) { // call->master_lock held in W -int media_player_play_blob(struct media_player *mp, const str *blob, long long repeat) { +int media_player_play_blob(struct media_player *mp, const str *blob, long long repeat, long long start_pos) { #ifdef WITH_TRANSCODING const char *err; int av_ret = 0; @@ -649,7 +649,7 @@ int media_player_play_blob(struct media_player *mp, const str *blob, long long r if (av_ret < 0) goto err; - media_player_play_start(mp, repeat, 0); + media_player_play_start(mp, repeat, start_pos); return 0; @@ -686,7 +686,7 @@ err: // call->master_lock held in W -int media_player_play_db(struct media_player *mp, long long id, long long repeat) { +int media_player_play_db(struct media_player *mp, long long id, long long repeat, long long start_pos) { const char *err; AUTO_CLEANUP_GBUF(query); @@ -733,7 +733,7 @@ success:; str blob; str_init_len(&blob, row[0], lengths[0]); - int ret = media_player_play_blob(mp, &blob, repeat); + int ret = media_player_play_blob(mp, &blob, repeat, start_pos); mysql_free_result(res); diff --git a/include/media_player.h b/include/media_player.h index 36634a28f..61947ca11 100644 --- a/include/media_player.h +++ b/include/media_player.h @@ -88,8 +88,8 @@ struct send_timer { struct media_player *media_player_new(struct call_monologue *); int media_player_play_file(struct media_player *, const str *, long long, long long); -int media_player_play_blob(struct media_player *, const str *, long long); -int media_player_play_db(struct media_player *, long long, long long); +int media_player_play_blob(struct media_player *, const str *, long long, long long); +int media_player_play_db(struct media_player *, long long, long long, long long); long long media_player_stop(struct media_player *); int media_player_setup(struct media_player *mp, const struct rtp_payload_type *src_pt);