summaryrefslogtreecommitdiffstats
path: root/libavfilter
diff options
context:
space:
mode:
authorJames Almer <jamrial@gmail.com>2018-04-13 20:34:23 -0300
committerJames Almer <jamrial@gmail.com>2018-04-13 20:34:23 -0300
commitf790410b6baa4ee53e8a5796e986de0cae78b073 (patch)
treedc092d2c1bf35c8eb9888f7b3f77c4720bacf423 /libavfilter
parentae7e66fb4b1a256fb79a016b9c585de84ac77339 (diff)
parentcca5e4f040971db6de0bfe6968f00c021d8a9c42 (diff)
downloadffmpeg-streaming-f790410b6baa4ee53e8a5796e986de0cae78b073.zip
ffmpeg-streaming-f790410b6baa4ee53e8a5796e986de0cae78b073.tar.gz
Merge commit 'cca5e4f040971db6de0bfe6968f00c021d8a9c42'
* commit 'cca5e4f040971db6de0bfe6968f00c021d8a9c42': qsv: adding Multi Frame Encode support Merged-by: James Almer <jamrial@gmail.com>
Diffstat (limited to 'libavfilter')
-rw-r--r--libavfilter/qsvvpp.c9
-rw-r--r--libavfilter/qsvvpp.h8
-rw-r--r--libavfilter/vf_deinterlace_qsv.c7
-rw-r--r--libavfilter/vf_scale_qsv.c7
4 files changed, 28 insertions, 3 deletions
diff --git a/libavfilter/qsvvpp.c b/libavfilter/qsvvpp.c
index f32b46d..732cf56 100644
--- a/libavfilter/qsvvpp.c
+++ b/libavfilter/qsvvpp.c
@@ -515,9 +515,12 @@ static int init_vpp_session(AVFilterContext *avctx, QSVVPPContext *s)
if (ret != MFX_ERR_NONE)
return AVERROR_UNKNOWN;
}
- ret = MFXJoinSession(device_hwctx->session, s->session);
- if (ret != MFX_ERR_NONE)
- return AVERROR_UNKNOWN;
+
+ if (QSV_RUNTIME_VERSION_ATLEAST(ver, 1, 25)) {
+ ret = MFXJoinSession(device_hwctx->session, s->session);
+ if (ret != MFX_ERR_NONE)
+ return AVERROR_UNKNOWN;
+ }
if (IS_OPAQUE_MEMORY(s->in_mem_mode) || IS_OPAQUE_MEMORY(s->out_mem_mode)) {
s->opaque_alloc.In.Surfaces = s->surface_ptrs_in;
diff --git a/libavfilter/qsvvpp.h b/libavfilter/qsvvpp.h
index d720c9b..ff02b64 100644
--- a/libavfilter/qsvvpp.h
+++ b/libavfilter/qsvvpp.h
@@ -31,6 +31,14 @@
#define FF_INLINK_IDX(link) ((int)((link)->dstpad - (link)->dst->input_pads))
#define FF_OUTLINK_IDX(link) ((int)((link)->srcpad - (link)->src->output_pads))
+#define QSV_VERSION_ATLEAST(MAJOR, MINOR) \
+ (MFX_VERSION_MAJOR > (MAJOR) || \
+ MFX_VERSION_MAJOR == (MAJOR) && MFX_VERSION_MINOR >= (MINOR))
+
+#define QSV_RUNTIME_VERSION_ATLEAST(MFX_VERSION, MAJOR, MINOR) \
+ (MFX_VERSION.Major > (MAJOR)) || \
+ (MFX_VERSION.Major == (MAJOR) && MFX_VERSION.Minor >= (MINOR))
+
typedef struct QSVVPPContext QSVVPPContext;
typedef struct QSVVPPCrop {
diff --git a/libavfilter/vf_deinterlace_qsv.c b/libavfilter/vf_deinterlace_qsv.c
index 897e6bd..c9e76c6 100644
--- a/libavfilter/vf_deinterlace_qsv.c
+++ b/libavfilter/vf_deinterlace_qsv.c
@@ -35,6 +35,7 @@
#include "libavutil/opt.h"
#include "libavutil/pixdesc.h"
#include "libavutil/time.h"
+#include "libavfilter/qsvvpp.h"
#include "avfilter.h"
#include "formats.h"
@@ -215,6 +216,12 @@ static int init_out_session(AVFilterContext *ctx)
return AVERROR_UNKNOWN;
}
+ if (QSV_RUNTIME_VERSION_ATLEAST(ver, 1, 25)) {
+ err = MFXJoinSession(device_hwctx->session, s->session);
+ if (err != MFX_ERR_NONE)
+ return AVERROR_UNKNOWN;
+ }
+
memset(&par, 0, sizeof(par));
s->deint_conf.Header.BufferId = MFX_EXTBUFF_VPP_DEINTERLACING;
diff --git a/libavfilter/vf_scale_qsv.c b/libavfilter/vf_scale_qsv.c
index c6f683e..d118994 100644
--- a/libavfilter/vf_scale_qsv.c
+++ b/libavfilter/vf_scale_qsv.c
@@ -36,6 +36,7 @@
#include "libavutil/opt.h"
#include "libavutil/pixdesc.h"
#include "libavutil/time.h"
+#include "libavfilter/qsvvpp.h"
#include "avfilter.h"
#include "formats.h"
@@ -315,6 +316,12 @@ static int init_out_session(AVFilterContext *ctx)
return AVERROR_UNKNOWN;
}
+ if (QSV_RUNTIME_VERSION_ATLEAST(ver, 1, 25)) {
+ err = MFXJoinSession(device_hwctx->session, s->session);
+ if (err != MFX_ERR_NONE)
+ return AVERROR_UNKNOWN;
+ }
+
memset(&par, 0, sizeof(par));
if (opaque) {
OpenPOWER on IntegriCloud