summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--player/audio.c5
-rw-r--r--player/core.h1
-rw-r--r--player/misc.c18
-rw-r--r--player/video.c6
4 files changed, 22 insertions, 8 deletions
diff --git a/player/audio.c b/player/audio.c
index 5078e04dee..6774d415c3 100644
--- a/player/audio.c
+++ b/player/audio.c
@@ -285,11 +285,8 @@ init_error:
uninit_audio_chain(mpctx);
uninit_audio_out(mpctx);
no_audio:
- mp_deselect_track(mpctx, track);
if (track)
- MP_INFO(mpctx, "Audio: no audio\n");
- if (!mpctx->current_track[STREAM_VIDEO])
- mpctx->stop_play = PT_NEXT_ENTRY;
+ error_on_track(mpctx, track);
}
// Return pts value corresponding to the end point of audio written to the
diff --git a/player/core.h b/player/core.h
index f883ae2882..1013fabac1 100644
--- a/player/core.h
+++ b/player/core.h
@@ -419,6 +419,7 @@ void merge_playlist_files(struct playlist *pl);
float mp_get_cache_percent(struct MPContext *mpctx);
bool mp_get_cache_idle(struct MPContext *mpctx);
void update_window_title(struct MPContext *mpctx, bool force);
+void error_on_track(struct MPContext *mpctx, struct track *track);
void stream_dump(struct MPContext *mpctx);
int mpctx_run_non_blocking(struct MPContext *mpctx, void (*thread_fn)(void *arg),
void *thread_arg);
diff --git a/player/misc.c b/player/misc.c
index 81b80a1948..5355e23f41 100644
--- a/player/misc.c
+++ b/player/misc.c
@@ -179,6 +179,24 @@ void update_window_title(struct MPContext *mpctx, bool force)
}
}
+void error_on_track(struct MPContext *mpctx, struct track *track)
+{
+ if (!track)
+ return;
+ mp_deselect_track(mpctx, track);
+ if (track) {
+ if (track->type == STREAM_AUDIO)
+ MP_INFO(mpctx, "Audio: no audio\n");
+ if (track->type == STREAM_VIDEO)
+ MP_INFO(mpctx, "Video: no video\n");
+ if (!mpctx->current_track[0][STREAM_AUDIO] &&
+ !mpctx->current_track[0][STREAM_VIDEO])
+ mpctx->stop_play = PT_NEXT_ENTRY;
+ mpctx->error_playing = true;
+ mpctx->sleeptime = 0;
+ }
+}
+
void stream_dump(struct MPContext *mpctx)
{
struct MPOpts *opts = mpctx->opts;
diff --git a/player/video.c b/player/video.c
index 77b6fb9a6d..62d0f486b7 100644
--- a/player/video.c
+++ b/player/video.c
@@ -327,7 +327,7 @@ err_out:
no_video:
uninit_video_chain(mpctx);
if (track)
- mp_deselect_track(mpctx, track);
+ error_on_track(mpctx, track);
handle_force_window(mpctx, true);
return 0;
}
@@ -836,9 +836,7 @@ void write_video(struct MPContext *mpctx, double endpts)
error:
MP_FATAL(mpctx, "Could not initialize video chain.\n");
uninit_video_chain(mpctx);
- if (!mpctx->current_track[STREAM_AUDIO])
- mpctx->stop_play = PT_NEXT_ENTRY;
- mpctx->error_playing = true;
+ error_on_track(mpctx, mpctx->current_track[STREAM_VIDEO][0]);
handle_force_window(mpctx, true);
mpctx->sleeptime = 0;
}