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