summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2019-12-15 23:40:11 +0100
committerwm4 <wm4@nowhere>2019-12-15 23:40:11 +0100
commit4ae43a1c40b2e6f96ce2c62bc5f16d55f91436f5 (patch)
tree467a44aca8dc9a5b865365539f7ef2f7088986c7
parent2c6d42e70488e00ae0290b2edc27a6eb592bada7 (diff)
downloadmpv-4ae43a1c40b2e6f96ce2c62bc5f16d55f91436f5.tar.bz2
mpv-4ae43a1c40b2e6f96ce2c62bc5f16d55f91436f5.tar.xz
vd_lavc: fix broken assert()
This assert() sometimes triggered (and still triggers) with lavc API bugs. It tries to check that at least 1 plane is set to a non-NULL value. Obviously, a valid frame returned by successful decoding should never have it. The problem is that some hwdecs use integer surface IDs cast to a pointer. Recently, it happened that newer Intel drivers started using surface ID 0 under certain circumstances (for unknown reasons), which triggers this assert. Just get rid of it. For the sake of #7185, add an assert() specifically for nvdec. That failure needs to be further analyzed, is probably a FFmpeg bug, and without this assert() would just crash somewhere further down the video chain. Fixes: #7261
-rw-r--r--video/decode/vd_lavc.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/video/decode/vd_lavc.c b/video/decode/vd_lavc.c
index 0fe3edd7ac..2acfa9a9c0 100644
--- a/video/decode/vd_lavc.c
+++ b/video/decode/vd_lavc.c
@@ -1062,7 +1062,8 @@ static int decode_frame(struct mp_filter *vd)
av_frame_unref(ctx->pic);
return ret;
}
- assert(mpi->planes[0] || mpi->planes[3]);
+ if (mpi->imgfmt == IMGFMT_CUDA)
+ assert(mpi->planes[0]);
mpi->pts = mp_pts_from_av(ctx->pic->pts, &ctx->codec_timebase);
mpi->dts = mp_pts_from_av(ctx->pic->pkt_dts, &ctx->codec_timebase);