mirror of https://github.com/mpv-player/mpv
player: fix some oversights in video refactoring
vo_chain_uninit() isn't supposed to care much about the decoder (although decoders and outputs still go strictly together, so there is not much of an actual difference now). Also unset track.d_video correctly. Remove a stale declaration from dec_video.h as well.
This commit is contained in:
parent
7bb9203f7f
commit
536efe6faf
|
@ -280,11 +280,7 @@ void uninit_video_out(struct MPContext *mpctx)
|
||||||
static void vo_chain_uninit(struct vo_chain *vo_c)
|
static void vo_chain_uninit(struct vo_chain *vo_c)
|
||||||
{
|
{
|
||||||
mp_image_unrefp(&vo_c->input_mpi);
|
mp_image_unrefp(&vo_c->input_mpi);
|
||||||
if (vo_c) {
|
vf_destroy(vo_c->vf);
|
||||||
vf_destroy(vo_c->vf);
|
|
||||||
if (vo_c->video_src)
|
|
||||||
video_uninit(vo_c->video_src);
|
|
||||||
}
|
|
||||||
talloc_free(vo_c);
|
talloc_free(vo_c);
|
||||||
// this does not free the VO
|
// this does not free the VO
|
||||||
}
|
}
|
||||||
|
@ -292,7 +288,16 @@ static void vo_chain_uninit(struct vo_chain *vo_c)
|
||||||
void uninit_video_chain(struct MPContext *mpctx)
|
void uninit_video_chain(struct MPContext *mpctx)
|
||||||
{
|
{
|
||||||
if (mpctx->vo_chain) {
|
if (mpctx->vo_chain) {
|
||||||
|
struct track *track = mpctx->current_track[0][STREAM_VIDEO];
|
||||||
|
assert(track);
|
||||||
|
assert(track->d_video == mpctx->vo_chain->video_src);
|
||||||
|
|
||||||
reset_video_state(mpctx);
|
reset_video_state(mpctx);
|
||||||
|
|
||||||
|
video_uninit(track->d_video);
|
||||||
|
track->d_video = NULL;
|
||||||
|
mpctx->vo_chain->video_src = NULL;
|
||||||
|
|
||||||
vo_chain_uninit(mpctx->vo_chain);
|
vo_chain_uninit(mpctx->vo_chain);
|
||||||
mpctx->vo_chain = NULL;
|
mpctx->vo_chain = NULL;
|
||||||
mpctx->video_status = STATUS_EOF;
|
mpctx->video_status = STATUS_EOF;
|
||||||
|
|
|
@ -94,11 +94,6 @@ void video_set_start(struct dec_video *d_video, double start_pts);
|
||||||
#define VIDEO_SKIP -2
|
#define VIDEO_SKIP -2
|
||||||
int video_get_frame(struct dec_video *d_video, struct mp_image **out_mpi);
|
int video_get_frame(struct dec_video *d_video, struct mp_image **out_mpi);
|
||||||
|
|
||||||
struct demux_packet;
|
|
||||||
struct mp_image *video_decode(struct dec_video *d_video,
|
|
||||||
struct demux_packet *packet,
|
|
||||||
int drop_frame);
|
|
||||||
|
|
||||||
int video_vd_control(struct dec_video *d_video, int cmd, void *arg);
|
int video_vd_control(struct dec_video *d_video, int cmd, void *arg);
|
||||||
void video_reset(struct dec_video *d_video);
|
void video_reset(struct dec_video *d_video);
|
||||||
void video_reset_aspect(struct dec_video *d_video);
|
void video_reset_aspect(struct dec_video *d_video);
|
||||||
|
|
Loading…
Reference in New Issue