On Tue, 3 Oct 2017 15:58:32 +0200 Timo Rothenpieler <t...@rothenpieler.org> wrote:
> Am 03.10.2017 um 15:15 schrieb wm4: > > Currently, AVHWAccels are looked up using a (codec_id, pixfmt) tuple. > > This means it's impossible to have 2 decoders for the same codec and > > using the same opaque hardware pixel format. > > > > This breaks merging Libav's CUVID hwaccel. FFmpeg has its own CUVID > > support, but it's a full stream decoder, using NVIDIA's codec parser. > > The Libav one is a true hwaccel, which is based on the builtin software > > decoders. > > > > Fix this by introducing another field to disambiguate AVHWAccels, and > > use it for our CUVID decoders. FF_CODEC_CAP_HWACCEL_REQUIRE_CLASS makes > > this mechanism backwards compatible and optional. > > --- > > libavcodec/Makefile | 1 + > > libavcodec/avcodec.h | 5 +++++ > > libavcodec/cuviddec.c | 2 ++ > > libavcodec/decode.c | 12 ++++++++---- > > libavcodec/internal.h | 5 +++++ > > 5 files changed, 21 insertions(+), 4 deletions(-) > > > > diff --git a/libavcodec/Makefile b/libavcodec/Makefile > > index fa3ab8f08a..3e0d654541 100644 > > --- a/libavcodec/Makefile > > +++ b/libavcodec/Makefile > > @@ -820,6 +820,7 @@ OBJS-$(CONFIG_ADPCM_YAMAHA_DECODER) += adpcm.o > > adpcm_data.o > > OBJS-$(CONFIG_ADPCM_YAMAHA_ENCODER) += adpcmenc.o adpcm_data.o > > > > # hardware accelerators > > +OBJS-$(CONFIG_CUVID) += cuvid.o > > OBJS-$(CONFIG_D3D11VA) += dxva2.o > > OBJS-$(CONFIG_DXVA2) += dxva2.o > > OBJS-$(CONFIG_VAAPI) += vaapi_decode.o > > diff --git a/libavcodec/avcodec.h b/libavcodec/avcodec.h > > index 52cc5b0ca0..ecc49e5643 100644 > > --- a/libavcodec/avcodec.h > > +++ b/libavcodec/avcodec.h > > @@ -4000,6 +4000,11 @@ typedef struct AVHWAccel { > > * Internal hwaccel capabilities. > > */ > > int caps_internal; > > + > > + /** > > + * Some hwaccels are ambiguous if only > > This seems to be truncated? Fixed locally with: /** * Some hwaccels are ambiguous if only the id and pix_fmt fields are used. * If non-NULL, the associated AVCodec must have * FF_CODEC_CAP_HWACCEL_REQUIRE_CLASS set. */ const AVClass *decoder_class; _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel