mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-23 12:43:46 +02:00
lavu/hwcontext_qsv: Join the download/upload session to the main session
This may reduce the number of internal threads when using hwupload or hwdownload filter. Signed-off-by: Haihao Xiang <haihao.xiang@intel.com>
This commit is contained in:
parent
697251bb0c
commit
74a8e080d0
@ -55,6 +55,10 @@
|
||||
(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)))
|
||||
|
||||
#define MFX_IMPL_VIA_MASK(impl) (0x0f00 & (impl))
|
||||
#define QSV_ONEVPL QSV_VERSION_ATLEAST(2, 0)
|
||||
#define QSV_HAVE_OPAQUE !QSV_ONEVPL
|
||||
@ -1136,6 +1140,17 @@ static int qsv_init_internal_session(AVHWFramesContext *ctx,
|
||||
int ret = AVERROR_UNKNOWN;
|
||||
/* hwctx->loader is non-NULL for oneVPL user and NULL for non-oneVPL user */
|
||||
void **loader = &hwctx->loader;
|
||||
mfxSession parent_session = hwctx->session;
|
||||
mfxIMPL impl;
|
||||
mfxVersion ver;
|
||||
|
||||
err = MFXQueryIMPL(parent_session, &impl);
|
||||
if (err == MFX_ERR_NONE)
|
||||
err = MFXQueryVersion(parent_session, &ver);
|
||||
if (err != MFX_ERR_NONE) {
|
||||
av_log(ctx, AV_LOG_ERROR, "Error querying the session attributes.\n");
|
||||
return AVERROR_UNKNOWN;
|
||||
}
|
||||
|
||||
#if QSV_HAVE_OPAQUE
|
||||
QSVFramesContext *s = ctx->hwctx;
|
||||
@ -1156,6 +1171,15 @@ static int qsv_init_internal_session(AVHWFramesContext *ctx,
|
||||
}
|
||||
}
|
||||
|
||||
if (QSV_RUNTIME_VERSION_ATLEAST(ver, 1, 25)) {
|
||||
err = MFXJoinSession(parent_session, *session);
|
||||
if (err != MFX_ERR_NONE) {
|
||||
av_log(ctx, AV_LOG_ERROR, "Error joining session.\n");
|
||||
ret = AVERROR_UNKNOWN;
|
||||
goto fail;
|
||||
}
|
||||
}
|
||||
|
||||
if (!opaque) {
|
||||
err = MFXVideoCORE_SetFrameAllocator(*session, &frame_allocator);
|
||||
if (err != MFX_ERR_NONE) {
|
||||
|
Loading…
Reference in New Issue
Block a user