X-Git-Url: https://git.sesse.net/?p=nageru;a=blobdiff_plain;f=nageru%2Fpbo_frame_allocator.cpp;h=54182a83a899fa3ca9994974a76316c90e812d4d;hp=d0859b357d98a313fb40587b2663dad517c7e2e5;hb=575f6eb1b052bb1291987753b1a8cccc7f1e3ab3;hpb=a839022c035b3d9387feabc02843c166ac78b469 diff --git a/nageru/pbo_frame_allocator.cpp b/nageru/pbo_frame_allocator.cpp index d0859b3..54182a8 100644 --- a/nageru/pbo_frame_allocator.cpp +++ b/nageru/pbo_frame_allocator.cpp @@ -315,26 +315,18 @@ bmusb::FrameAllocator::Frame PBOFrameAllocator::create_frame(size_t width, size_ MJPEGEncoder::VAResources resources = mjpeg_encoder->get_va_resources(width, height); MJPEGEncoder::ReleaseVAResources release(mjpeg_encoder, resources); - VAImage image; - VAStatus va_status = vaDeriveImage(va_dpy, resources.surface, &image); - CHECK_VASTATUS(va_status, "vaDeriveImage"); - - if (image.pitches[0] == stride) { + if (resources.image.pitches[0] == stride) { userdata->va_resources = move(resources); userdata->va_resources_release = move(release); - userdata->va_image = move(image); - va_status = vaMapBuffer(va_dpy, image.buf, (void **)&vf.data_copy); + VAStatus va_status = vaMapBuffer(va_dpy, resources.image.buf, (void **)&vf.data_copy); CHECK_VASTATUS(va_status, "vaMapBuffer"); - vf.data_copy += image.offsets[0]; + vf.data_copy += resources.image.offsets[0]; userdata->data_copy_current_src = Userdata::FROM_VA_API; } else { - printf("WARNING: Could not copy directly into VA-API MJPEG buffer for %zu x %zu, since producer and consumer disagreed on stride (%zu != %d).\n", width, height, stride, image.pitches[0]); + printf("WARNING: Could not copy directly into VA-API MJPEG buffer for %zu x %zu, since producer and consumer disagreed on stride (%zu != %d).\n", width, height, stride, resources.image.pitches[0]); vf.data_copy = userdata->data_copy_malloc; userdata->data_copy_current_src = Userdata::FROM_MALLOC; - - va_status = vaDestroyImage(va_dpy, image.image_id); - CHECK_VASTATUS(va_status, "vaDestroyImage"); } } else { vf.data_copy = nullptr;