[FFmpeg-devel] [PATCH v3 3/4] libavcodec/qsv: enabling d3d11va support, added mfxhdlpair

Max Dmitrichenko maxim.d33 at gmail.com
Sun Apr 26 21:55:56 EEST 2020


On Sun, Apr 26, 2020 at 8:31 PM Mark Thompson <sw at jkqxz.net> wrote:

> On 24/04/2020 15:52, artem.galin at gmail.com wrote:
> > From: Artem Galin <artem.galin at intel.com>
> >
> > Adding DX11 relevant device type checks and adjusting callbacks with
> > proper MediaSDK pair type support.
> >
> > Extending structure for proper MediaSDK pair type support.
> >
> > Signed-off-by: Artem Galin <artem.galin at intel.com>
> > ---
> >  libavcodec/qsv.c          | 66 +++++++++++++++++++++++++++++++--------
> >  libavcodec/qsv_internal.h |  1 +
> >  2 files changed, 54 insertions(+), 13 deletions(-)
> >
> > diff --git a/libavcodec/qsv.c b/libavcodec/qsv.c
> > index db98c75073..35e62417f6 100644
> > --- a/libavcodec/qsv.c
> > +++ b/libavcodec/qsv.c
> > @@ -36,6 +36,8 @@
> >  #include "avcodec.h"
> >  #include "qsv_internal.h"
> >
> > +#define MFX_IMPL_VIA_MASK(impl) (0x0f00 & (impl))
> > +
> >  #if QSV_VERSION_ATLEAST(1, 12)
> >  #include "mfx/mfxvp8.h"
> >  #endif
> > @@ -221,8 +223,15 @@ int ff_qsv_find_surface_idx(QSVFramesContext *ctx,
> QSVFrame *frame)
> >      int i;
> >      for (i = 0; i < ctx->nb_mids; i++) {
> >          QSVMid *mid = &ctx->mids[i];
> > +#if CONFIG_VAAPI
> >          if (mid->handle == frame->surface.Data.MemId)
> >              return i;
> > +#else
> > +        mfxHDLPair *pair = (mfxHDLPair*)frame->surface.Data.MemId;
> > +        if ((mid->handle_pair.first == pair->first) &&
> > +            (mid->handle_pair.second == pair->second))
> > +            return i;
> > +#endif
>
> Is there any reason not to pass around an mfxHDLPair on Linux as well?
> All the #ifdefs you're adding here are not fun.
>
>
Linux doesnt rely on .second field the same as DX11



> >      }
> >      return AVERROR_BUG;
> >  }
> > @@ -362,7 +371,11 @@ static int ff_qsv_set_display_handle(AVCodecContext
> *avctx, QSVSession *qs)
> >  int ff_qsv_init_internal_session(AVCodecContext *avctx, QSVSession *qs,
> >                                   const char *load_plugins, int gpu_copy)
> >  {
> > +#if CONFIG_D3D11VA
> > +    mfxIMPL          impl = MFX_IMPL_AUTO_ANY | MFX_IMPL_VIA_D3D11;
>
> Does that still do the right thing on systems where only D3D9 works?
>
>
yes, it is only a hint for D11 when possible.


> > ...
>
> - Mark
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel at ffmpeg.org
> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>
> To unsubscribe, visit link above, or email
> ffmpeg-devel-request at ffmpeg.org with subject "unsubscribe".



and thanks for reviews, Mark

regards
Max


More information about the ffmpeg-devel mailing list