diff options
author | wm4 <wm4@nowhere> | 2013-09-27 17:44:21 +0200 |
---|---|---|
committer | wm4 <wm4@nowhere> | 2013-09-27 18:00:03 +0200 |
commit | 0901fc8e0ea4b6c0337add563d1763f0db238023 (patch) | |
tree | 3e4e4b8f172081902afcf72d87ae444e8d17057b /video/vaapi.c | |
parent | 4d2f354da651a3c1fd9776ed5829f57961a46c10 (diff) | |
download | mpv-0901fc8e0ea4b6c0337add563d1763f0db238023.tar.bz2 mpv-0901fc8e0ea4b6c0337add563d1763f0db238023.tar.xz |
vaapi: check image format in va_surface_upload()
Just for robustness. Also print a warning in vo_vaapi if this happens.
Diffstat (limited to 'video/vaapi.c')
-rw-r--r-- | video/vaapi.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/video/vaapi.c b/video/vaapi.c index b18b9135cd..b7c6013e79 100644 --- a/video/vaapi.c +++ b/video/vaapi.c @@ -453,16 +453,19 @@ bool va_image_unmap(VADisplay display, VAImage *image) return check_va_status(status, "vaUnmapBuffer()"); } -bool va_surface_upload(struct va_surface *surface, const struct mp_image *mpi) +bool va_surface_upload(struct va_surface *surface, struct mp_image *mpi) { va_surface_priv_t *p = surface->p; if (p->image.image_id == VA_INVALID_ID) return false; + if (va_fourcc_to_imgfmt(p->image.format.fourcc) != mpi->imgfmt) + return false; + struct mp_image img; if (!va_image_map(p->display, &p->image, &img)) return false; - mp_image_copy(&img, (struct mp_image*)mpi); + mp_image_copy(&img, mpi); va_image_unmap(p->display, &p->image); if (!p->is_derived) { |