On Dec 25, 2014 2:57 PM, <t...@rothenpieler.org> wrote: > > From: Timo Rothenpieler <t...@rothenpieler.org> > > --- > libavcodec/nvenc.c | 17 ++++++++++++++++- > 1 file changed, 16 insertions(+), 1 deletion(-) > > diff --git a/libavcodec/nvenc.c b/libavcodec/nvenc.c > index ebc3249..76f9aa6 100644 > --- a/libavcodec/nvenc.c > +++ b/libavcodec/nvenc.c > @@ -50,6 +50,10 @@ > #define DL_CLOSE_FUNC(l) dlclose(l) > #endif > > +#if NVENCAPI_MAJOR_VERSION < 5 > +#define NVENC_NEED_LICENSE 1 > +#endif > +
I would skip the separate license define and just check the version in the two places where its used right now. > typedef enum cudaError_enum { > CUDA_SUCCESS = 0 > } CUresult; > @@ -67,7 +71,9 @@ typedef CUresult(CUDAAPI *PCUCTXDESTROY)(CUcontext ctx); > > typedef NVENCSTATUS (NVENCAPI* PNVENCODEAPICREATEINSTANCE)(NV_ENCODE_API_FUNCTION_LIST *functionList); > > +#ifdef NVENC_NEED_LICENSE > static const GUID dummy_license = { 0x0, 0x0, 0x0, { 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 } }; > +#endif > > typedef struct NvencInputSurface > { > @@ -465,7 +471,6 @@ static av_cold int nvenc_encode_init(AVCodecContext *avctx) > CUcontext cu_context_curr; > CUresult cu_res; > GUID encoder_preset = NV_ENC_PRESET_HQ_GUID; > - GUID license = dummy_license; > NVENCSTATUS nv_status = NV_ENC_SUCCESS; > int surfaceCount = 0; > int i, num_mbs; > @@ -473,6 +478,10 @@ static av_cold int nvenc_encode_init(AVCodecContext *avctx) > int res = 0; > int dw, dh; > > +#ifdef NVENC_NEED_LICENSE > + GUID license = dummy_license; > +#endif > + > NvencContext *ctx = avctx->priv_data; > NvencDynLoadFunctions *dl_fn = &ctx->nvenc_dload_funcs; > NV_ENCODE_API_FUNCTION_LIST *p_nvenc = &dl_fn->nvenc_funcs; > @@ -494,7 +503,10 @@ static av_cold int nvenc_encode_init(AVCodecContext *avctx) > preset_config.presetCfg.version = NV_ENC_CONFIG_VER; > encode_session_params.version = NV_ENC_OPEN_ENCODE_SESSION_EX_PARAMS_VER; > encode_session_params.apiVersion = NVENCAPI_VERSION; > + > +#ifdef NVENC_NEED_LICENSE > encode_session_params.clientKeyPtr = &license; > +#endif > > if (ctx->gpu >= dl_fn->nvenc_device_count) { > av_log(avctx, AV_LOG_FATAL, "Requested GPU %d, but only %d GPUs are available!\n", ctx->gpu, dl_fn->nvenc_device_count); > @@ -1066,7 +1078,10 @@ static int nvenc_encode_frame(AVCodecContext *avctx, AVPacket *pkt, > pic_params.inputDuration = 0; > pic_params.codecPicParams.h264PicParams.sliceMode = ctx->encode_config.encodeCodecConfig.h264Config.sliceMode; > pic_params.codecPicParams.h264PicParams.sliceModeData = ctx->encode_config.encodeCodecConfig.h264Config.sliceModeData; > + > +#if NVENCAPI_MAJOR_VERSION < 5 > memcpy(&pic_params.rcParams, &ctx->encode_config.rcParams, sizeof(NV_ENC_RC_PARAMS)); > +#endif > > res = timestamp_queue_enqueue(&ctx->timestamp_list, frame->ptr); Otherwise, LGTM if tested. _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel