From patchwork Sun Oct 8 15:11:44 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Mark Thompson X-Patchwork-Id: 5457 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.2.161.90 with SMTP id m26csp1688273jah; Sun, 8 Oct 2017 08:18:36 -0700 (PDT) X-Received: by 10.223.128.3 with SMTP id 3mr6600792wrk.196.1507475916292; Sun, 08 Oct 2017 08:18:36 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1507475916; cv=none; d=google.com; s=arc-20160816; b=v1/a4TeGfejtFc3M8Xyr4VN+XiLTcqZ2Y0VEn8TBMEp2myapvNV+6ygtDmyDCLjN7B maqJqa5EbiGEnIzcJfH/4ZCXgy1r675lbt7KPL9Fk/hAFzAJx/BCxtg44SPGYfxBnvWU yYdBHCzcJXi1cx9in/3UqyjAuHPbdA9V+Jdgz5NCpBjlllc5B/ZS7SXsqCnfrAhEMU6u kbGvZS69xNSzFxQeRHoOP0Gp8ZCoJbfVmYxNnV2wmjcPJzd8uAww/GiYV3Fy27MgzILu HpVXywhem2MJj83lnPJ8+XOdW4T6rruZMJZtLy4YE5yWOeE0ZSixxEP7/tj+8H/1IKpE ciQA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:mime-version:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:references:in-reply-to:message-id:date :to:from:dkim-signature:delivered-to:arc-authentication-results; bh=6YjpaD9aaSUcn0Y8ienKMV157fkR2cG74ojbsq2mt1U=; b=TQN+g2KetDi/eZf8w4lAmC61M98lNfdZyz3vhDB3OPbu8Z8970dHd8T29d+nhBjvUu IRJfp1lj9U3W4CVeNozhxxoBIqYaAkNgLJPcrvWb0KLkSxmmNhrbaKwLnhtgy6E9n3sd N6CIn/Iuo0qokxFc98IlEXpMvXdoC/cwQ0jyXQsgXgD3qdDUVqLVOrLHEw+H7CcFD7er 60XMGi7m+8Lkka6b5jlqTJNGzhBMKAW3SG7JQR87/t03GxKc23ajuGnq3Y37/+Ib9Bkf GVKZlXhnZIe1InYoT5butrvo9dtgn+hEowhvpcLHABXleGKYPh2eSqlnFUgi3B3bh25H 1c9g== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@jkqxz-net.20150623.gappssmtp.com header.s=20150623 header.b=hikBUPFJ; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id r196si4829360wmf.101.2017.10.08.08.18.35; Sun, 08 Oct 2017 08:18:36 -0700 (PDT) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@jkqxz-net.20150623.gappssmtp.com header.s=20150623 header.b=hikBUPFJ; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 2C0F9689DFF; Sun, 8 Oct 2017 18:18:32 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wm0-f42.google.com (mail-wm0-f42.google.com [74.125.82.42]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id B6EAD689D99 for ; Sun, 8 Oct 2017 18:18:25 +0300 (EEST) Received: by mail-wm0-f42.google.com with SMTP id u138so17560702wmu.4 for ; Sun, 08 Oct 2017 08:18:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=jkqxz-net.20150623.gappssmtp.com; s=20150623; h=from:to:subject:date:message-id:in-reply-to:references; bh=e1edxI11E9+uaWIXuytRleFETBe7r2hUCw+hef2CV5E=; b=hikBUPFJ3yBuoIteUlo3sTxb6G07uaAThKJxyPJiE3PFMcGP8tc69LXbuHbslC153q S8r/zIzsqQo4YOCBXT4tmioo2WwSn+QkTSncuzfGoGuYgFdwNWRwKG8KqYBSW0vDLw70 2oQ3Q4Un1Hdx/BQ6F2eqTTLyMGYouuvr5I/VdVRMtpPvcc/4oFnxet0T4EMxolFdYcnZ MT6K0JNtkkcQZBPKHdP3+gNeeQ7i4wURRtZVdyGGoMxvcV1i5d0lmaE5lqYPXfefz24z 2V1B1l530maMVwwSbmh01JziYYTQSh7CsmHOQOlKj6DDGnv/17hkqGzGw2YIUxrsQAsm eHLg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references; bh=e1edxI11E9+uaWIXuytRleFETBe7r2hUCw+hef2CV5E=; b=BWPRTxYPNhAqPtxwXnwUq/SH8lSJ6he5urMAQgfdQWI9KIMW3L+g02hvFIFfMx3U5q iyXYAs+T169Y7ZIWd73tQprR4MLvT0p4jROdXOG/a50XIS4MXLLSV+/5LUs2cL3ckiEG HHEJXjEHSzqra5i9AOYIrM9jp79TeWEema/st/7gU+bxZ0oZjdEBEl8ancz1WMiXvlmA XpspQObSK6qnPACbEmPp6fbaUL36IlOT0QR5sHdhyPY+f1hxCJBtz6IzdMAZt1E7LDX7 ofAo93tS7XtV3e7Tr51eWvgXqlFcgF1mp2H9h8ydzp1k/Zebaoq9L78aJCin0LlTYMzk nlsg== X-Gm-Message-State: AMCzsaVJJHx8ly0bo4O0aAFL9x6cg4OTsvqbNlYxTuTx83qOUNU+/1vh 1DX7sl4eNL9ePf7XneFEw6sOVyvY X-Google-Smtp-Source: AOwi7QDJbWyywV563ETvA0ow3eCitiSu8DulzFTjaTPyQ+M+QB/+dSH1+Y0VVSx48YqtiKfInY7buA== X-Received: by 10.223.168.66 with SMTP id l60mr6898797wrc.144.1507475513038; Sun, 08 Oct 2017 08:11:53 -0700 (PDT) Received: from rywe.jkqxz.net (cpc91242-cmbg18-2-0-cust650.5-4.cable.virginm.net. [82.8.130.139]) by smtp.gmail.com with ESMTPSA id b190sm6770476wma.22.2017.10.08.08.11.52 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 08 Oct 2017 08:11:52 -0700 (PDT) From: Mark Thompson To: ffmpeg-devel@ffmpeg.org Date: Sun, 8 Oct 2017 16:11:44 +0100 Message-Id: <20171008151146.13505-4-sw@jkqxz.net> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20171008151146.13505-1-sw@jkqxz.net> References: <20171008151146.13505-1-sw@jkqxz.net> Subject: [FFmpeg-devel] [PATCH 4/6] hwcontext_vaapi: Set message callbacks on internally-created devices X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" The message callbacks are library-safe in libva2, so we can now use them. Also factorise out the common connection code to avoid duplicating this change. --- libavutil/hwcontext_vaapi.c | 74 +++++++++++++++++++++++++++------------------ 1 file changed, 45 insertions(+), 29 deletions(-) diff --git a/libavutil/hwcontext_vaapi.c b/libavutil/hwcontext_vaapi.c index 9214dc6e50..b2f2e376d8 100644 --- a/libavutil/hwcontext_vaapi.c +++ b/libavutil/hwcontext_vaapi.c @@ -1094,14 +1094,53 @@ static void vaapi_device_free(AVHWDeviceContext *ctx) av_freep(&priv); } +#if CONFIG_VAAPI_1 +static void vaapi_device_log_error(void *context, const char *message) +{ + AVHWDeviceContext *ctx = context; + + av_log(ctx, AV_LOG_ERROR, "libva: %s", message); +} + +static void vaapi_device_log_info(void *context, const char *message) +{ + AVHWDeviceContext *ctx = context; + + av_log(ctx, AV_LOG_VERBOSE, "libva: %s", message); +} +#endif + +static int vaapi_device_connect(AVHWDeviceContext *ctx, + VADisplay display) +{ + AVVAAPIDeviceContext *hwctx = ctx->hwctx; + int major, minor; + VAStatus vas; + +#if CONFIG_VAAPI_1 + vaSetErrorCallback(display, &vaapi_device_log_error, ctx); + vaSetInfoCallback (display, &vaapi_device_log_info, ctx); +#endif + + hwctx->display = display; + + vas = vaInitialize(display, &major, &minor); + if (vas != VA_STATUS_SUCCESS) { + av_log(ctx, AV_LOG_ERROR, "Failed to initialise VAAPI " + "connection: %d (%s).\n", vas, vaErrorStr(vas)); + return AVERROR(EIO); + } + av_log(ctx, AV_LOG_VERBOSE, "Initialised VAAPI connection: " + "version %d.%d\n", major, minor); + + return 0; +} + static int vaapi_device_create(AVHWDeviceContext *ctx, const char *device, AVDictionary *opts, int flags) { - AVVAAPIDeviceContext *hwctx = ctx->hwctx; VAAPIDevicePriv *priv; - VADisplay display = 0; - VAStatus vas; - int major, minor; + VADisplay display = NULL; priv = av_mallocz(sizeof(*priv)); if (!priv) @@ -1163,18 +1202,7 @@ static int vaapi_device_create(AVHWDeviceContext *ctx, const char *device, return AVERROR(EINVAL); } - hwctx->display = display; - - vas = vaInitialize(display, &major, &minor); - if (vas != VA_STATUS_SUCCESS) { - av_log(ctx, AV_LOG_ERROR, "Failed to initialise VAAPI " - "connection: %d (%s).\n", vas, vaErrorStr(vas)); - return AVERROR(EIO); - } - av_log(ctx, AV_LOG_VERBOSE, "Initialised VAAPI connection: " - "version %d.%d\n", major, minor); - - return 0; + return vaapi_device_connect(ctx, display); } static int vaapi_device_derive(AVHWDeviceContext *ctx, @@ -1183,11 +1211,8 @@ static int vaapi_device_derive(AVHWDeviceContext *ctx, #if CONFIG_LIBDRM if (src_ctx->type == AV_HWDEVICE_TYPE_DRM) { AVDRMDeviceContext *src_hwctx = src_ctx->hwctx; - AVVAAPIDeviceContext *hwctx = ctx->hwctx; VADisplay *display; - VAStatus vas; VAAPIDevicePriv *priv; - int major, minor; if (src_hwctx->fd < 0) { av_log(ctx, AV_LOG_ERROR, "DRM instance requires an associated " @@ -1212,16 +1237,7 @@ static int vaapi_device_derive(AVHWDeviceContext *ctx, return AVERROR(EIO); } - hwctx->display = display; - - vas = vaInitialize(display, &major, &minor); - if (vas != VA_STATUS_SUCCESS) { - av_log(ctx, AV_LOG_ERROR, "Failed to initialise VAAPI " - "connection: %d (%s).\n", vas, vaErrorStr(vas)); - return AVERROR(EIO); - } - - return 0; + return vaapi_device_connect(ctx, display); } #endif return AVERROR(ENOSYS);