diff options
-rw-r--r-- | demux/demux.c | 16 | ||||
-rw-r--r-- | demux/demux.h | 1 | ||||
-rw-r--r-- | player/core.h | 1 | ||||
-rw-r--r-- | player/loadfile.c | 7 | ||||
-rw-r--r-- | player/misc.c | 14 | ||||
-rw-r--r-- | player/playloop.c | 4 |
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); } } |