[FFmpeg-devel] [PATCH v4 09/10] qsv: use a new method to create mfx session when using oneVPL
Xiang, Haihao
haihao.xiang at intel.com
Wed Sep 29 10:26:08 EEST 2021
On Tue, 2021-09-28 at 16:53 -0300, James Almer wrote:
> On 9/23/2021 3:28 AM, Haihao Xiang wrote:
> > In oneVPL, MFXLoad() and MFXCreateSession() are required to create a
> > workable mfx session[1]
> >
> > Add AccelerationMode config filter for D3D9/D3D11 session (galinart)
> >
> > The default device is changed to d3d11va for oneVPL when both d3d11va
> > and dxva2 are enabled on Microsoft Windows
> >
> > This is in preparation for oneVPL support
> >
> > [1]
> > https://spec.oneapi.io/versions/latest/elements/oneVPL/source/programming_guide/VPL_prg_session.html#onevpl-dispatcher
> >
> > Signed-off-by: galinart <artem.galin at intel.com>
> > ---
> > libavcodec/qsv.c | 191 ++++++++++++++++--
> > libavcodec/qsv_internal.h | 1 +
> > libavcodec/qsvdec.c | 4 +
> > libavcodec/qsvenc.h | 3 +
> > libavcodec/qsvenc_h264.c | 1 -
> > libavcodec/qsvenc_hevc.c | 1 -
> > libavcodec/qsvenc_jpeg.c | 1 -
> > libavcodec/qsvenc_mpeg2.c | 1 -
> > libavcodec/qsvenc_vp9.c | 1 -
> > libavfilter/qsvvpp.c | 107 ++++++++++-
> > libavfilter/qsvvpp.h | 5 +
> > libavfilter/vf_deinterlace_qsv.c | 14 +-
> > libavfilter/vf_scale_qsv.c | 12 +-
> > libavutil/hwcontext_qsv.c | 319 +++++++++++++++++++++++++++----
> > libavutil/hwcontext_qsv.h | 16 ++
> > 15 files changed, 588 insertions(+), 89 deletions(-)
>
> [...]
>
> > diff --git a/libavutil/hwcontext_qsv.h b/libavutil/hwcontext_qsv.h
> > index 42e34d0dda..65415d3d8c 100644
> > --- a/libavutil/hwcontext_qsv.h
> > +++ b/libavutil/hwcontext_qsv.h
> > @@ -19,8 +19,23 @@
> > #ifndef AVUTIL_HWCONTEXT_QSV_H
> > #define AVUTIL_HWCONTEXT_QSV_H
> >
> > +#include <mfxdefs.h>
> > #include <mfxvideo.h>
> >
> > +#if (MFX_VERSION_MAJOR < 2)
> > +
> > +typedef void * mfxLoader;
>
> No, use void* in AVQSVDeviceContext below.
>
> > +
> > +static av_always_inline void MFXUnload (mfxLoader mfxloader)
> > +{
> > +}
>
> Neither of these belong in an exported header. They are not part of our
> API, so we can't define them in our headers.
> For MFXUnload, either do it in an internal header, or directly in the c
> files where needed. And preferably as
>
> #define MFXUnload(a) do{}while(0)
>
> Instead.
>
> > +
> > +#else
> > +
> > +#include <mfxdispatcher.h>
> > +
> > +#endif
> > +
> > /**
> > * @file
> > * An API-specific header for AV_HWDEVICE_TYPE_QSV.
> > @@ -33,6 +48,7 @@
> > * This struct is allocated as AVHWDeviceContext.hwctx
> > */
> > typedef struct AVQSVDeviceContext {
> > + mfxLoader loader;
>
> New fields should go at the end of the struct.
>
> > mfxSession session;
> > } AVQSVDeviceContext;
> >
> >
Thanks for the comments, I will update the patch.
BRs
Haihao
More information about the ffmpeg-devel
mailing list