On Fri, 26 Jun 2015 08:45:09 -0700 Philip Langdale <phil...@overt.org> wrote:
> This HWAccel isn't really usable right now due to an nvidia driver bug, > so we don't want it selected by default. > > HWAccels have a capabilities field and there's a comment about flags, > but no flags exist today, so let's add one for experimental hwaccels. > > Signed-off-by: Philip Langdale <phil...@overt.org> > --- > libavcodec/avcodec.h | 8 +++++++- > libavcodec/utils.c | 7 +++++++ > libavcodec/vdpau_hevc.c | 1 + > libavcodec/version.h | 2 +- > 4 files changed, 16 insertions(+), 2 deletions(-) > > diff --git a/libavcodec/avcodec.h b/libavcodec/avcodec.h > index 761d3c1..ddbf0a3 100644 > --- a/libavcodec/avcodec.h > +++ b/libavcodec/avcodec.h > @@ -894,6 +894,12 @@ typedef struct RcOverride{ > */ > #define CODEC_CAP_LOSSLESS 0x80000000 > > +/** > + * HWAccel is experimental and is thus avoided in favor of non experimental > + * codecs > + */ > +#define HWACCEL_CODEC_CAP_EXPERIMENTAL 0x0200 > + > #if FF_API_MB_TYPE > //The following defines may change, don't expect compatibility if you use > them. > #define MB_TYPE_INTRA4x4 0x0001 > @@ -3336,7 +3342,7 @@ typedef struct AVHWAccel { > > /** > * Hardware accelerated codec capabilities. > - * see FF_HWACCEL_CODEC_CAP_* > + * see HWACCEL_CODEC_CAP_* > */ > int capabilities; > > diff --git a/libavcodec/utils.c b/libavcodec/utils.c > index 7696582..40ea544 100644 > --- a/libavcodec/utils.c > +++ b/libavcodec/utils.c > @@ -1176,6 +1176,13 @@ static int setup_hwaccel(AVCodecContext *avctx, > return AVERROR(ENOENT); > } > > + if (hwa->capabilities & HWACCEL_CODEC_CAP_EXPERIMENTAL && > + avctx->strict_std_compliance > FF_COMPLIANCE_EXPERIMENTAL) { > + av_log(avctx, AV_LOG_WARNING, "Ignoring experimental hwaccel: %s\n", > + hwa->name); > + return AVERROR(ENOTSUP); > + } > + > if (hwa->priv_data_size) { > avctx->internal->hwaccel_priv_data = av_mallocz(hwa->priv_data_size); > if (!avctx->internal->hwaccel_priv_data) > diff --git a/libavcodec/vdpau_hevc.c b/libavcodec/vdpau_hevc.c > index 99e1a8d..928513b 100644 > --- a/libavcodec/vdpau_hevc.c > +++ b/libavcodec/vdpau_hevc.c > @@ -427,6 +427,7 @@ AVHWAccel ff_hevc_vdpau_hwaccel = { > .type = AVMEDIA_TYPE_VIDEO, > .id = AV_CODEC_ID_HEVC, > .pix_fmt = AV_PIX_FMT_VDPAU, > + .capabilities = HWACCEL_CODEC_CAP_EXPERIMENTAL, > .start_frame = vdpau_hevc_start_frame, > .end_frame = vdpau_hevc_end_frame, > .decode_slice = vdpau_hevc_decode_slice, > diff --git a/libavcodec/version.h b/libavcodec/version.h > index eff8820..1073588 100644 > --- a/libavcodec/version.h > +++ b/libavcodec/version.h > @@ -29,7 +29,7 @@ > #include "libavutil/version.h" > > #define LIBAVCODEC_VERSION_MAJOR 56 > -#define LIBAVCODEC_VERSION_MINOR 45 > +#define LIBAVCODEC_VERSION_MINOR 46 > #define LIBAVCODEC_VERSION_MICRO 100 > > #define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \ LGTM, but not sure if the flag really has to be public API. This is pretty much just a one-time thing with the vdpau code. _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel