Implement playing from a given position for db and blob.

pull/1577/head
Damir Nedžibović 4 years ago committed by Richard Fuchs
parent bab3c94fd0
commit dd2956dc66

@ -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

@ -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);

@ -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);

Loading…
Cancel
Save