diff --git a/deps/media-playback/media-playback/media.c b/deps/media-playback/media-playback/media.c index 5de6b6da2..806186bf2 100644 --- a/deps/media-playback/media-playback/media.c +++ b/deps/media-playback/media-playback/media.c @@ -416,10 +416,15 @@ static void mp_media_next_video(mp_media_t *m, bool preload) d->got_first_keyframe = true; } - if (preload) - m->v_preload_cb(m->opaque, frame); - else + if (preload) { + if (m->seek_next_ts && m->v_seek_cb) { + m->v_seek_cb(m->opaque, frame); + } else { + m->v_preload_cb(m->opaque, frame); + } + } else { m->v_cb(m->opaque, frame); + } } static void mp_media_calc_next_ns(mp_media_t *m) @@ -780,6 +785,7 @@ bool mp_media_init(mp_media_t *media, const struct mp_media_info *info) media->v_cb = info->v_cb; media->a_cb = info->a_cb; media->stop_cb = info->stop_cb; + media->v_seek_cb = info->v_seek_cb; media->v_preload_cb = info->v_preload_cb; media->force_range = info->force_range; media->buffering = info->buffering; diff --git a/deps/media-playback/media-playback/media.h b/deps/media-playback/media-playback/media.h index d2b143891..fa4188390 100644 --- a/deps/media-playback/media-playback/media.h +++ b/deps/media-playback/media-playback/media.h @@ -46,6 +46,7 @@ struct mp_media { AVFormatContext *fmt; mp_video_cb v_preload_cb; + mp_video_cb v_seek_cb; mp_stop_cb stop_cb; mp_video_cb v_cb; mp_audio_cb a_cb; @@ -109,6 +110,7 @@ struct mp_media_info { mp_video_cb v_cb; mp_video_cb v_preload_cb; + mp_video_cb v_seek_cb; mp_audio_cb a_cb; mp_stop_cb stop_cb;