From patchwork Thu Jun 2 03:41:08 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Xiang, Haihao" X-Patchwork-Id: 34742 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:6914:b0:82:6b11:2509 with SMTP id q20csp3803057pzj; Wed, 1 Jun 2022 20:42:04 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwk1uI4uBguITSq8J/horGuEvDgozqvwjd+GUpgpevwr+KZKqUeNc6aRE3rGfr5pG7lXHnX X-Received: by 2002:a17:907:d1d:b0:6fe:f789:31e with SMTP id gn29-20020a1709070d1d00b006fef789031emr2325941ejc.697.1654141324436; Wed, 01 Jun 2022 20:42:04 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1654141324; cv=none; d=google.com; s=arc-20160816; b=ZVJ9HHfQtKspLMlIgWcpX7nEptNxXtC7LQ0DqHBxZTiuP8vPSw0S6PYbc7c7DpLvLg 5bKVw802vn1eTT+wmFc04x22Pl6R6gdoZZdstZLbaa1VFAChLhK+ZVi4Y6Qo6PLYpo7d vOd4QYwrMg/sKldNafXyxEQB3Vo5n/zdLObpmDsbPaqUcu0bmMjMgCt/iD/DR+TzGscr IQu4YOrYsGzM1/t4EQrPh06Xl0fmVeKiKC/bkMoRYIh+RhGrQbezozomTge3MYSL2K7d bXzriajlkYwd7Jnisi8Pvn7qGC8bgNcjjMljes5PiKMfEhsZn9E+ZzFgY/t3XQ7M0zib gikg== 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:cc:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:message-id:date:to:from:dkim-signature :delivered-to; bh=+KDkZC5JzKW4UClGpGS4joZbLas25loFp/tDX+t0ACU=; b=YBa3/VSab7deOA0wnS2FgRSwjqlt/B0jEdfhznRIQQ3buV292BZYgk8Od5a3mA+hid bOpfNm/86yp7qFG43PNZ3B33C9mtlSI2tcU/bb4dPg7cGAIHGPpm/yJEXANkRKGUEQUe UcnljFe7I7+jdJ7MA6B4DpU5Lbltu7KIPIgaPDie2NmuFmafmwSC/fcDoXHyKxzTNMeR HR9SjsaFsBVks5WO6GGmUNFGwQpX+/3w7vO2o0h1KdcqWUn1/FxFSUkdonLne1joXAYv n7VDiz2Nb8QFUwBMu9xuIr1V1J0QcbHlQ8VhMisDVKZs/Z3M9HY9r9zPGXZMX+z5T/+J CsnA== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@intel.com header.s=Intel header.b=f+GrNcDv; 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 q25-20020a50c359000000b0042dd1a265easi3676236edb.362.2022.06.01.20.42.03; Wed, 01 Jun 2022 20:42:04 -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=@intel.com header.s=Intel header.b=f+GrNcDv; 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 B6DF368B7DD; Thu, 2 Jun 2022 06:41:59 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 1327468B756 for ; Thu, 2 Jun 2022 06:41:51 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1654141317; x=1685677317; h=from:to:cc:subject:date:message-id; bh=+cZUgDGMYccxniDfYwxYRyFag8uCfT+1scqXI66kNBA=; b=f+GrNcDvICw6QqUaGEpob5sNCM5eLItxFxBcHS+3iDMacq8Y93M6A+iQ XJI3jhTzh1oGb0Lb6iDyKREUEGukqXgO8aPHHsVqzRb4QNKvNVaqJpaW9 aVZq2epCVrnFfaz3XbcWl66qRZl9T0wtj8H/6L615xXQT+x0X3WQS0ol2 wfdIDdUPtRmLn9A6DqRfbanRXnS5FTSWyqBKBpilB/xhPBurlkBY+LWd7 fPiEBLe9t2v68qbtlXzCNs1P1s7W+ud9cU33Tzk2ipT+WK1+K0HeSSV2I 2p7Uaoedf+IvWcD+FyiEgncGucM3tSnRcOuIfSi8qPfEMBxmCkHfOeV/4 g==; X-IronPort-AV: E=McAfee;i="6400,9594,10365"; a="362181633" X-IronPort-AV: E=Sophos;i="5.91,270,1647327600"; d="scan'208";a="362181633" Received: from orsmga006.jf.intel.com ([10.7.209.51]) by fmsmga105.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 01 Jun 2022 20:41:48 -0700 X-IronPort-AV: E=Sophos;i="5.91,270,1647327600"; d="scan'208";a="552629511" Received: from xhh-dg164.sh.intel.com ([10.239.159.54]) by orsmga006-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 01 Jun 2022 20:41:47 -0700 From: "Xiang, Haihao" To: ffmpeg-devel@ffmpeg.org Date: Thu, 2 Jun 2022 11:41:08 +0800 Message-Id: <20220602034118.22447-1-haihao.xiang@intel.com> X-Mailer: git-send-email 2.17.1 Subject: [FFmpeg-devel] [PATCH v9 00/10] make QSV works with the Intel's oneVPL X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 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 Cc: Haihao Xiang MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: kQDPvshcz6WH From: Haihao Xiang The oneAPI Video Processing Library (oneVPL) is a single interface for encode, decode and video processing[1][2]. oneVPL is a successor to Intel(R) Media SDK, but removed obsolete features. Intel(R) Media SDK lifetime comes to an end now, new features for new Intel Gen platforms will be supported in oneVPL only[3]. It is recommended to use oneVPL for new work, even for currently available hardwares[4]. Hence, this patchset added a new option --enable-onevpl to bring the support for oneVPL in QSV, new features for oneVPL will be implemented in other patchset, for example, we are implementing av1_qsv encoder (https://github.com/intel-media-ci/ffmpeg/pull/515). option --enble-libmfx still works with Intel(R) Media SDK. Note user can't enable onevpl and libmfx together. oneVPL dispatcher: https://github.com/oneapi-src/oneVPL oneVPL GPU runtime for new Intel Gen platforms: https://github.com/oneapi-src/oneVPL-intel-gpu v9: - Don't add new member in AVVAAPIDeviceContext, leave a TODO for multiple Intel GPUs support on Linux (This update doesn't affect Windows user, it also doesn't affect Linux user with single Intel GPU. We are adding new API to get device info from libva) - Rebased this patchset against the latest master and fixed lots of conflicts [1] https://spec.oneapi.io/versions/latest/elements/oneVPL/source/index.html [2] https://www.intel.com/content/www/us/en/developer/tools/oneapi/onevpl.html [3] https://github.com/Intel-Media-SDK/MediaSDK/#media-sdk-support-matrix [4] https://www.intel.com/content/www/us/en/develop/documentation/upgrading-from-msdk-to-onevpl/top.html Haihao Xiang (10): configure: ensure --enable-libmfx uses libmfx 1.x configure: fix the check for MFX_CODEC_VP9 qsv: remove mfx/ prefix from mfx headers qsv: load user plugin for MFX_VERSION < 2.0 qsv: build audio related code when MFX_VERSION < 2.0 qsvenc: support multi-frame encode when MFX_VERSION < 2.0 qsvenc: support MFX_RATECONTROL_LA_EXT when MFX_VERSION < 2.0 qsv: support OPAQUE memory when MFX_VERSION < 2.0 qsv: use a new method to create mfx session when using oneVPL configure: add --enable-libvpl option configure | 32 +- libavcodec/qsv.c | 214 ++++++++++-- libavcodec/qsv.h | 4 +- libavcodec/qsv_internal.h | 6 +- libavcodec/qsvdec.c | 21 +- libavcodec/qsvenc.c | 25 +- libavcodec/qsvenc.h | 9 +- libavcodec/qsvenc_h264.c | 3 +- libavcodec/qsvenc_hevc.c | 3 +- libavcodec/qsvenc_jpeg.c | 3 +- libavcodec/qsvenc_mpeg2.c | 3 +- libavcodec/qsvenc_vp9.c | 3 +- libavfilter/qsvvpp.c | 145 ++++++++- libavfilter/qsvvpp.h | 12 +- libavfilter/vf_deinterlace_qsv.c | 73 +++-- libavfilter/vf_scale_qsv.c | 88 ++--- libavutil/hwcontext_opencl.c | 2 +- libavutil/hwcontext_qsv.c | 536 +++++++++++++++++++++++++++---- libavutil/hwcontext_qsv.h | 3 +- 19 files changed, 1001 insertions(+), 184 deletions(-)