2014-10-27, 23:19
After hacking arround in the vaapi driver I got it "kind of working". Just see yourself: https://bugs.freedesktop.org/attachment.cgi?id=108531
Just watch the ticker:
Deinterlace (yadif): Great quality
BOB and VAAPI-BOB: Fine
MCDI and MADI: Looks like something is really wrong :-)
For the adventurous, gentoo, arch folks... I just workarounded the segfault, no idea what this breaks:
Just watch the ticker:
Deinterlace (yadif): Great quality
BOB and VAAPI-BOB: Fine
MCDI and MADI: Looks like something is really wrong :-)
For the adventurous, gentoo, arch folks... I just workarounded the segfault, no idea what this breaks:
Code:
From 21d7b338e2d4be914896d698354fe4785b880ea0 Mon Sep 17 00:00:00 2001
From: fritsch <[email protected]>
Date: Mon, 27 Oct 2014 21:54:19 +0100
Subject: [PATCH] i965pp: Don't assert
---
src/i965_post_processing.c | 13 +++++++++----
1 file changed, 9 insertions(+), 4 deletions(-)
diff --git a/src/i965_post_processing.c b/src/i965_post_processing.c
index ddb553e..480dbaf 100755
--- a/src/i965_post_processing.c
+++ b/src/i965_post_processing.c
@@ -3813,11 +3813,16 @@ gen7_pp_nv12_dndi_initialize(VADriverContextP ctx, struct i965_post_processing_c
/* Copy previously generated field */
if (dndi_ctx->copy_out_previous) {
obj_surface = dndi_ctx->frame_store[DNDI_FRAME_OUT_PREVIOUS].obj_surface;
- assert(obj_surface && obj_surface != dst_obj_surface);
- assert(obj_surface->base.id != dst_obj_surface->base.id);
- status = vpp_surface_convert(ctx, obj_surface, dst_obj_surface);
- if (status == VA_STATUS_SUCCESS)
+ if ((obj_surface && obj_surface != dst_obj_surface) &&
+ (obj_surface->base.id != dst_obj_surface->base.id))
+ {
+ status = vpp_surface_convert(ctx, obj_surface, dst_obj_surface);
+ if (status == VA_STATUS_SUCCESS)
status = VA_STATUS_SUCCESS_1;
+ }
+ else
+ status = VA_STATUS_ERROR_INVALID_SURFACE;
+
return status;
}
--
1.9.1