diff options
author | Petri Hintukainen <phintuka@users.sourceforge.net> | 2014-05-05 11:54:32 +0300 |
---|---|---|
committer | Petri Hintukainen <phintuka@users.sourceforge.net> | 2014-05-05 11:54:32 +0300 |
commit | 7040738102ad85b68b19be78b9e1f6f65680afc9 (patch) | |
tree | a1eee410ee584525339dd2f6ebde8b382abb7606 /src | |
parent | 3136e508a2311641f35836029c8dbd05abc99c0b (diff) | |
download | xine-lib-7040738102ad85b68b19be78b9e1f6f65680afc9.tar.gz xine-lib-7040738102ad85b68b19be78b9e1f6f65680afc9.tar.bz2 |
video_out_vaapi: fix overlay with libva 1.3.0
Patch from https://bugs.freedesktop.org/show_bug.cgi?id=77408
Diffstat (limited to 'src')
-rw-r--r-- | src/video_out/video_out_vaapi.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/src/video_out/video_out_vaapi.c b/src/video_out/video_out_vaapi.c index 2d111019d..e7da0ac77 100644 --- a/src/video_out/video_out_vaapi.c +++ b/src/video_out/video_out_vaapi.c @@ -2451,9 +2451,11 @@ static int vaapi_ovl_associate(vo_driver_t *this_gen, int format, int bShow) { unsigned int flags = 0; unsigned int output_width = va_context->width; unsigned int output_height = va_context->height; - void *p_base = NULL; + unsigned char *p_base = NULL; + uint32_t *p_src; VAStatus vaStatus; + int i; vaapi_destroy_subpicture(this_gen); vaStatus = vaapi_create_subpicture(this_gen, this->overlay_bitmap_width, this->overlay_bitmap_height); @@ -2464,7 +2466,12 @@ static int vaapi_ovl_associate(vo_driver_t *this_gen, int format, int bShow) { if(!vaapi_check_status(this_gen, vaStatus, "vaMapBuffer()")) return 0; - xine_fast_memcpy((uint32_t *)p_base, this->overlay_bitmap, this->overlay_bitmap_width * this->overlay_bitmap_height * sizeof(uint32_t)); + p_src = this->overlay_bitmap; + for (i = 0; i < this->overlay_bitmap_height; i++) { + xine_fast_memcpy((uint32_t *)p_base, p_src, this->overlay_bitmap_width * sizeof(uint32_t)); + p_base += va_context->va_subpic_image.pitches[0]; + p_src += this->overlay_bitmap_width; + } vaStatus = vaUnmapBuffer(va_context->va_display, va_context->va_subpic_image.buf); vaapi_check_status(this_gen, vaStatus, "vaUnmapBuffer()"); |