summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--demux/demux.c16
-rw-r--r--demux/demux.h1
-rw-r--r--player/core.h1
-rw-r--r--player/loadfile.c7
-rw-r--r--player/misc.c14
-rw-r--r--player/playloop.c4
6 files changed, 6 insertions, 37 deletions
diff --git a/demux/demux.c b/demux/demux.c
index bf8f236f27..d8a3030d33 100644
--- a/demux/demux.c
+++ b/demux/demux.c
@@ -738,22 +738,6 @@ int demux_read_packet_async(struct sh_stream *sh, struct demux_packet **out_pkt)
return r;
}
-// Return the pts of the next packet that demux_read_packet() would return.
-// Might block. Sometimes used to force a packet read, without removing any
-// packets from the queue.
-double demux_get_next_pts(struct sh_stream *sh)
-{
- double res = MP_NOPTS_VALUE;
- if (sh) {
- pthread_mutex_lock(&sh->ds->in->lock);
- ds_get_packets(sh->ds);
- if (sh->ds->head)
- res = MP_ADD_PTS(sh->ds->head->pts, sh->ds->in->ts_offset);
- pthread_mutex_unlock(&sh->ds->in->lock);
- }
- return res;
-}
-
// Return whether a packet is queued. Never blocks, never forces any reads.
bool demux_has_packet(struct sh_stream *sh)
{
diff --git a/demux/demux.h b/demux/demux.h
index db3b504c39..d274be5ae7 100644
--- a/demux/demux.h
+++ b/demux/demux.h
@@ -242,7 +242,6 @@ void demux_add_packet(struct sh_stream *stream, demux_packet_t *dp);
struct demux_packet *demux_read_packet(struct sh_stream *sh);
int demux_read_packet_async(struct sh_stream *sh, struct demux_packet **out_pkt);
bool demux_stream_is_selected(struct sh_stream *stream);
-double demux_get_next_pts(struct sh_stream *sh);
bool demux_has_packet(struct sh_stream *sh);
struct demux_packet *demux_read_any_packet(struct demuxer *demuxer);
diff --git a/player/core.h b/player/core.h
index fe87658d81..7098b3bd46 100644
--- a/player/core.h
+++ b/player/core.h
@@ -449,7 +449,6 @@ void mp_print_version(struct mp_log *log, int always);
void wakeup_playloop(void *ctx);
// misc.c
-double get_main_demux_pts(struct MPContext *mpctx);
double rel_time_to_abs(struct MPContext *mpctx, struct m_rel_time t);
double get_play_end_pts(struct MPContext *mpctx);
double get_relative_time(struct MPContext *mpctx);
diff --git a/player/loadfile.c b/player/loadfile.c
index e177df67d3..0fa4234ca6 100644
--- a/player/loadfile.c
+++ b/player/loadfile.c
@@ -235,9 +235,10 @@ void reselect_demux_streams(struct MPContext *mpctx)
need_init_seek(track->demuxer);
demuxer_select_track(track->demuxer, track->stream, track->selected);
if (need_init) {
- double pts = get_main_demux_pts(mpctx);
- if (pts != MP_NOPTS_VALUE)
- demux_seek(track->demuxer, pts, SEEK_ABSOLUTE);
+ double pts = get_current_time(mpctx);
+ if (pts == MP_NOPTS_VALUE)
+ pts = 0;
+ demux_seek(track->demuxer, pts, SEEK_ABSOLUTE);
}
}
}
diff --git a/player/misc.c b/player/misc.c
index fc98136e5c..d60f25f05b 100644
--- a/player/misc.c
+++ b/player/misc.c
@@ -101,20 +101,6 @@ double get_play_end_pts(struct MPContext *mpctx)
return end;
}
-// Time used to seek external tracks to.
-double get_main_demux_pts(struct MPContext *mpctx)
-{
- double main_new_pos = MP_NOPTS_VALUE;
- if (mpctx->demuxer) {
- for (int n = 0; n < demux_get_num_stream(mpctx->demuxer); n++) {
- struct sh_stream *stream = demux_get_stream(mpctx->demuxer, n);
- if (main_new_pos == MP_NOPTS_VALUE && stream->type != STREAM_SUB)
- main_new_pos = demux_get_next_pts(stream);
- }
- }
- return main_new_pos;
-}
-
float mp_get_cache_percent(struct MPContext *mpctx)
{
if (mpctx->demuxer) {
diff --git a/player/playloop.c b/player/playloop.c
index c81f720122..b672c24483 100644
--- a/player/playloop.c
+++ b/player/playloop.c
@@ -260,9 +260,9 @@ static int mp_seek(MPContext *mpctx, struct seek_params seek,
for (int t = 0; t < mpctx->num_tracks; t++) {
struct track *track = mpctx->tracks[t];
if (track->selected && track->is_external && track->demuxer) {
- double main_new_pos = seek.amount;
+ double main_new_pos = demuxer_amount;
if (seek.type != MPSEEK_ABSOLUTE)
- main_new_pos = get_main_demux_pts(mpctx);
+ main_new_pos = target_time;
demux_seek(track->demuxer, main_new_pos, SEEK_ABSOLUTE | SEEK_BACKWARD);
}
}