summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--player/core.h4
-rw-r--r--player/loadfile.c6
-rw-r--r--player/playloop.c41
3 files changed, 0 insertions, 51 deletions
diff --git a/player/core.h b/player/core.h
index a6606af91c..a4ffc34b68 100644
--- a/player/core.h
+++ b/player/core.h
@@ -408,10 +408,6 @@ typedef struct MPContext {
struct seek_params seek;
- // Can be temporarily set to an external audio track after seeks. Then it
- // must be seeked to the video position once video is done seeking.
- struct track *seek_slave;
-
/* Heuristic for relative chapter seeks: keep track which chapter
* the user wanted to go to, even if we aren't exactly within the
* boundaries of that chapter due to an inaccurate seek. */
diff --git a/player/loadfile.c b/player/loadfile.c
index 0ab79bf7a9..ae65d30caf 100644
--- a/player/loadfile.c
+++ b/player/loadfile.c
@@ -196,7 +196,6 @@ static void uninit_demuxer(struct MPContext *mpctx)
for (int t = 0; t < STREAM_TYPE_COUNT; t++)
mpctx->current_track[r][t] = NULL;
}
- mpctx->seek_slave = NULL;
talloc_free(mpctx->chapters);
mpctx->chapters = NULL;
@@ -373,8 +372,6 @@ void reselect_demux_stream(struct MPContext *mpctx, struct track *track)
pts -= 10.0;
}
demuxer_select_track(track->demuxer, track->stream, pts, track->selected);
- if (track == mpctx->seek_slave)
- mpctx->seek_slave = NULL;
}
static void enable_demux_thread(struct MPContext *mpctx, struct demuxer *demux)
@@ -707,9 +704,6 @@ bool mp_remove_track(struct MPContext *mpctx, struct track *track)
struct demuxer *d = track->demuxer;
- if (mpctx->seek_slave == track)
- mpctx->seek_slave = NULL;
-
int index = 0;
while (index < mpctx->num_tracks && mpctx->tracks[index] != track)
index++;
diff --git a/player/playloop.c b/player/playloop.c
index 597bcd3981..c8c74edb64 100644
--- a/player/playloop.c
+++ b/player/playloop.c
@@ -244,7 +244,6 @@ void reset_playback_state(struct MPContext *mpctx)
mpctx->restart_complete = false;
mpctx->paused_for_cache = false;
mpctx->cache_buffer = 100;
- mpctx->seek_slave = NULL;
encode_lavc_discontinuity(mpctx->encode_lavc_ctx);
@@ -348,8 +347,6 @@ static void mp_seek(MPContext *mpctx, struct seek_params seek)
mpctx->play_dir = play_dir;
// Seek external, extra files too:
- bool has_video = false;
- struct track *external_audio = NULL;
for (int t = 0; t < mpctx->num_tracks; t++) {
struct track *track = mpctx->tracks[t];
if (track->selected && track->is_external && track->demuxer) {
@@ -359,12 +356,7 @@ static void mp_seek(MPContext *mpctx, struct seek_params seek)
if (demux_flags & SEEK_FACTOR)
main_new_pos = seek_pts;
demux_seek(track->demuxer, main_new_pos, demux_flags & SEEK_SATAN);
- if (track->type == STREAM_AUDIO && !external_audio)
- external_audio = track;
}
- if (track->selected && !track->is_external && track->stream &&
- track->type == STREAM_VIDEO && !track->stream->attached_picture)
- has_video = true;
}
if (!(seek.flags & MPSEEK_FLAG_NOFLUSH))
@@ -374,19 +366,6 @@ static void mp_seek(MPContext *mpctx, struct seek_params seek)
if (mpctx->recorder)
mp_recorder_mark_discontinuity(mpctx->recorder);
- // When doing keyframe seeks (hr_seek=false) backwards (no SEEK_FORWARD),
- // then video can seek before the external audio track (because video seek
- // granularity is coarser than audio). The result would be playing video with
- // silence until the audio seek target is reached. Work around by blocking
- // the demuxer (decoders can't read) and seeking to video position later.
- if (has_video && external_audio && !hr_seek && mpctx->play_dir > 0 &&
- !(demux_flags & SEEK_FORWARD))
- {
- MP_VERBOSE(mpctx, "delayed seek for aid=%d\n", external_audio->user_tid);
- demux_block_reading(external_audio->demuxer, true);
- mpctx->seek_slave = external_audio;
- }
-
/* Use the target time as "current position" for further relative
* seeks etc until a new video frame has been decoded */
mpctx->last_seek_pts = seek_pts;
@@ -1087,24 +1066,6 @@ static void handle_playback_time(struct MPContext *mpctx)
}
}
-static void handle_delayed_audio_seek(struct MPContext *mpctx)
-{
- if (mpctx->seek_slave) {
- if (mpctx->video_pts != MP_NOPTS_VALUE) {
- // We know the video position now, so seek external audio to the
- // correct position.
- double pts = mpctx->video_pts +
- get_track_seek_offset(mpctx, mpctx->seek_slave);
- demux_seek(mpctx->seek_slave->demuxer, pts, 0);
- mpctx->seek_slave = NULL;
- } else if (mpctx->video_status >= STATUS_EOF) {
- // We won't get a video position; don't stall the audio stream.
- demux_block_reading(mpctx->seek_slave->demuxer, false);
- mpctx->seek_slave = NULL;
- }
- }
-}
-
// We always make sure audio and video buffers are filled before actually
// starting playback. This code handles starting them at the same time.
static void handle_playback_restart(struct MPContext *mpctx)
@@ -1217,8 +1178,6 @@ void run_playloop(struct MPContext *mpctx)
fill_audio_out_buffers(mpctx);
write_video(mpctx);
- handle_delayed_audio_seek(mpctx);
-
handle_playback_restart(mpctx);
handle_playback_time(mpctx);