summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPetri Hintukainen <phintuka@users.sourceforge.net>2014-05-05 11:54:32 +0300
committerPetri Hintukainen <phintuka@users.sourceforge.net>2014-05-05 11:54:32 +0300
commit7040738102ad85b68b19be78b9e1f6f65680afc9 (patch)
treea1eee410ee584525339dd2f6ebde8b382abb7606 /src
parent3136e508a2311641f35836029c8dbd05abc99c0b (diff)
downloadxine-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.c11
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()");