ffmpeg | branch: master | Timo Rothenpieler <[email protected]> | Wed Jul  
1 16:09:08 2020 +0200| [3223f6b32d5d60c73b1e14475d4751770ae9344d] | committer: 
Timo Rothenpieler

avcodec/nvenc: add new h264 levels from Video SDK 10

Signed-off-by: Timo Rothenpieler <[email protected]>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=3223f6b32d5d60c73b1e14475d4751770ae9344d
---

 libavcodec/nvenc.h      |  1 +
 libavcodec/nvenc_h264.c | 12 +++++++++++-
 2 files changed, 12 insertions(+), 1 deletion(-)

diff --git a/libavcodec/nvenc.h b/libavcodec/nvenc.h
index 8392a51cff..fb3820f7cf 100644
--- a/libavcodec/nvenc.h
+++ b/libavcodec/nvenc.h
@@ -67,6 +67,7 @@ typedef void ID3D11Device;
 #define NVENC_HAVE_NEW_PRESETS
 #define NVENC_HAVE_MULTIPASS
 #define NVENC_HAVE_LDKFS
+#define NVENC_HAVE_H264_LVL6
 #endif
 
 typedef struct NvencSurface
diff --git a/libavcodec/nvenc_h264.c b/libavcodec/nvenc_h264.c
index 0c1a32178c..de8f4bd180 100644
--- a/libavcodec/nvenc_h264.c
+++ b/libavcodec/nvenc_h264.c
@@ -62,7 +62,11 @@ static const AVOption options[] = {
     { "main",         "",                                   0,                 
   AV_OPT_TYPE_CONST, { .i64 = NV_ENC_H264_PROFILE_MAIN },      0, 0, VE, 
"profile" },
     { "high",         "",                                   0,                 
   AV_OPT_TYPE_CONST, { .i64 = NV_ENC_H264_PROFILE_HIGH },      0, 0, VE, 
"profile" },
     { "high444p",     "",                                   0,                 
   AV_OPT_TYPE_CONST, { .i64 = NV_ENC_H264_PROFILE_HIGH_444P }, 0, 0, VE, 
"profile" },
-    { "level",        "Set the encoding level restriction", OFFSET(level),     
   AV_OPT_TYPE_INT,   { .i64 = NV_ENC_LEVEL_AUTOSELECT }, 
NV_ENC_LEVEL_AUTOSELECT, NV_ENC_LEVEL_H264_51, VE, "level" },
+#ifdef NVENC_HAVE_H264_LVL6
+    { "level",        "Set the encoding level restriction", OFFSET(level),     
   AV_OPT_TYPE_INT,   { .i64 = NV_ENC_LEVEL_AUTOSELECT }, 
NV_ENC_LEVEL_AUTOSELECT, NV_ENC_LEVEL_H264_62, VE, "level" },
+#else
+    { "level",        "Set the encoding level restriction", OFFSET(level),     
   AV_OPT_TYPE_INT,   { .i64 = NV_ENC_LEVEL_AUTOSELECT }, 
NV_ENC_LEVEL_AUTOSELECT, NV_ENC_LEVEL_H264_52, VE, "level" },
+#endif
     { "auto",         "",                                   0,                 
   AV_OPT_TYPE_CONST, { .i64 = NV_ENC_LEVEL_AUTOSELECT },    0, 0, VE, "level" 
},
     { "1",            "",                                   0,                 
   AV_OPT_TYPE_CONST, { .i64 = NV_ENC_LEVEL_H264_1 },        0, 0, VE, "level" 
},
     { "1.0",          "",                                   0,                 
   AV_OPT_TYPE_CONST, { .i64 = NV_ENC_LEVEL_H264_1 },        0, 0, VE, "level" 
},
@@ -86,6 +90,12 @@ static const AVOption options[] = {
     { "5",            "",                                   0,                 
   AV_OPT_TYPE_CONST, { .i64 = NV_ENC_LEVEL_H264_5 },        0, 0, VE, "level" 
},
     { "5.0",          "",                                   0,                 
   AV_OPT_TYPE_CONST, { .i64 = NV_ENC_LEVEL_H264_5 },        0, 0, VE, "level" 
},
     { "5.1",          "",                                   0,                 
   AV_OPT_TYPE_CONST, { .i64 = NV_ENC_LEVEL_H264_51 },       0, 0, VE, "level" 
},
+    { "5.2",          "",                                   0,                 
   AV_OPT_TYPE_CONST, { .i64 = NV_ENC_LEVEL_H264_52 },       0, 0, VE, "level" 
},
+#ifdef NVENC_HAVE_H264_LVL6
+    { "6.0",          "",                                   0,                 
   AV_OPT_TYPE_CONST, { .i64 = NV_ENC_LEVEL_H264_60 },       0, 0, VE, "level" 
},
+    { "6.1",          "",                                   0,                 
   AV_OPT_TYPE_CONST, { .i64 = NV_ENC_LEVEL_H264_61 },       0, 0, VE, "level" 
},
+    { "6.2",          "",                                   0,                 
   AV_OPT_TYPE_CONST, { .i64 = NV_ENC_LEVEL_H264_62 },       0, 0, VE, "level" 
},
+#endif
     { "rc",           "Override the preset rate-control",   OFFSET(rc),        
   AV_OPT_TYPE_INT,   { .i64 = -1 },                                  -1, 
INT_MAX, VE, "rc" },
     { "constqp",      "Constant QP mode",                   0,                 
   AV_OPT_TYPE_CONST, { .i64 = NV_ENC_PARAMS_RC_CONSTQP },                   0, 
0, VE, "rc" },
     { "vbr",          "Variable bitrate mode",              0,                 
   AV_OPT_TYPE_CONST, { .i64 = NV_ENC_PARAMS_RC_VBR },                       0, 
0, VE, "rc" },

_______________________________________________
ffmpeg-cvslog mailing list
[email protected]
https://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog

To unsubscribe, visit link above, or email
[email protected] with subject "unsubscribe".

Reply via email to