summaryrefslogtreecommitdiff
path: root/libavfilter/qsvvpp.h
diff options
context:
space:
mode:
authorJames Almer <jamrial@gmail.com>2017-11-11 14:46:24 -0300
committerJames Almer <jamrial@gmail.com>2017-11-11 15:07:06 -0300
commit4391d6cb8180f1261e38a588b7c4ffc457531cb2 (patch)
tree395a644768e01bc663a00be797119c302929b58e /libavfilter/qsvvpp.h
parent64f9188aae2d5b9f94550285385c0110ea784226 (diff)
parenta5a6ac1a123a927e5bed984ed757a29b7ff87dab (diff)
downloadffmpeg-4391d6cb8180f1261e38a588b7c4ffc457531cb2.tar.gz
Merge commit 'a5a6ac1a123a927e5bed984ed757a29b7ff87dab'
* commit 'a5a6ac1a123a927e5bed984ed757a29b7ff87dab': libavfilter/overlay_qsv: Add QSV overlay vpp filter libavfilter/vf_vpp: Add common filters of the qsv vpp Merged-by: James Almer <jamrial@gmail.com>
Diffstat (limited to 'libavfilter/qsvvpp.h')
-rw-r--r--libavfilter/qsvvpp.h66
1 files changed, 66 insertions, 0 deletions
diff --git a/libavfilter/qsvvpp.h b/libavfilter/qsvvpp.h
new file mode 100644
index 0000000000..d720c9ba42
--- /dev/null
+++ b/libavfilter/qsvvpp.h
@@ -0,0 +1,66 @@
+/*
+ * This file is part of FFmpeg.
+ *
+ * FFmpeg is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * FFmpeg is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with FFmpeg; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+/**
+ * @file
+ * Intel Quick Sync Video VPP base function
+ */
+
+#ifndef AVFILTER_QSVVPP_H
+#define AVFILTER_QSVVPP_H
+
+#include <mfx/mfxvideo.h>
+
+#include "avfilter.h"
+
+#define FF_INLINK_IDX(link) ((int)((link)->dstpad - (link)->dst->input_pads))
+#define FF_OUTLINK_IDX(link) ((int)((link)->srcpad - (link)->src->output_pads))
+
+typedef struct QSVVPPContext QSVVPPContext;
+
+typedef struct QSVVPPCrop {
+ int in_idx; ///< Input index
+ int x, y, w, h; ///< Crop rectangle
+} QSVVPPCrop;
+
+typedef struct QSVVPPParam {
+ /* default is ff_filter_frame */
+ int (*filter_frame)(AVFilterLink *outlink, AVFrame *frame);
+
+ /* To fill with MFX enhanced filter configurations */
+ int num_ext_buf;
+ mfxExtBuffer **ext_buf;
+
+ /* Real output format */
+ enum AVPixelFormat out_sw_format;
+
+ /* Crop information for each input, if needed */
+ int num_crop;
+ QSVVPPCrop *crop;
+} QSVVPPParam;
+
+/* create and initialize the QSV session */
+int ff_qsvvpp_create(AVFilterContext *avctx, QSVVPPContext **vpp, QSVVPPParam *param);
+
+/* release the resources (eg.surfaces) */
+int ff_qsvvpp_free(QSVVPPContext **vpp);
+
+/* vpp filter frame and call the cb if needed */
+int ff_qsvvpp_filter_frame(QSVVPPContext *vpp, AVFilterLink *inlink, AVFrame *frame);
+
+#endif /* AVFILTER_QSVVPP_H */