OSDN Git Service

avcodec/nvenc: convert tier to AVOptions
authorAndrey Turkin <andrey.turkin@gmail.com>
Wed, 25 May 2016 15:06:02 +0000 (18:06 +0300)
committerTimo Rothenpieler <timo@rothenpieler.org>
Tue, 31 May 2016 13:48:43 +0000 (15:48 +0200)
Signed-off-by: Timo Rothenpieler <timo@rothenpieler.org>
libavcodec/nvenc.c
libavcodec/nvenc.h
libavcodec/nvenc_hevc.c

index a078043..d749605 100644 (file)
@@ -708,16 +708,7 @@ static av_cold int nvenc_setup_hevc_config(AVCodecContext *avctx)
 
     hevc->level = ctx->level;
 
-    if (ctx->tier) {
-        if (!strcmp(ctx->tier, "main")) {
-            hevc->tier = NV_ENC_TIER_HEVC_MAIN;
-        } else if (!strcmp(ctx->tier, "high")) {
-            hevc->tier = NV_ENC_TIER_HEVC_HIGH;
-        } else {
-            av_log(avctx, AV_LOG_FATAL, "Tier \"%s\" is unknown! Supported tiers: main, high\n", ctx->tier);
-            return AVERROR(EINVAL);
-        }
-    }
+    hevc->tier = ctx->tier;
 
     return 0;
 }
index fdb8853..8007311 100644 (file)
@@ -169,7 +169,7 @@ typedef struct NvencContext
     int preset;
     int profile;
     int level;
-    char *tier;
+    int tier;
     int cbr;
     int twopass;
     int gpu;
index 2278bb7..2bd6521 100644 (file)
@@ -62,7 +62,9 @@ static const AVOption options[] = {
     { "6.0",     "",                                     0,                    AV_OPT_TYPE_CONST,  { .i64 = NV_ENC_LEVEL_HEVC_6 },  0, 0, VE,  "level" },
     { "6.1",     "",                                     0,                    AV_OPT_TYPE_CONST,  { .i64 = NV_ENC_LEVEL_HEVC_61 }, 0, 0, VE,  "level" },
     { "6.2",     "",                                     0,                    AV_OPT_TYPE_CONST,  { .i64 = NV_ENC_LEVEL_HEVC_62 }, 0, 0, VE,  "level" },
-    { "tier", "Set the encoding tier (main or high)", OFFSET(tier), AV_OPT_TYPE_STRING, { .str = "main" }, 0, 0, VE },
+    { "tier",    "Set the encoding tier",                OFFSET(tier),         AV_OPT_TYPE_INT,    { .i64 = NV_ENC_TIER_HEVC_MAIN }, NV_ENC_TIER_HEVC_MAIN, NV_ENC_TIER_HEVC_HIGH, VE, "tier"},
+    { "main",    "",                                     0,                    AV_OPT_TYPE_CONST,  { .i64 = NV_ENC_TIER_HEVC_MAIN }, 0, 0, VE, "tier" },
+    { "high",    "",                                     0,                    AV_OPT_TYPE_CONST,  { .i64 = NV_ENC_TIER_HEVC_HIGH }, 0, 0, VE, "tier" },
     { "cbr", "Use cbr encoding mode", OFFSET(cbr), AV_OPT_TYPE_BOOL, { .i64 = 0 }, 0, 1, VE },
     { "2pass", "Use 2pass encoding mode", OFFSET(twopass), AV_OPT_TYPE_BOOL, { .i64 = -1 }, -1, 1, VE },
     { "gpu", "Selects which NVENC capable GPU to use. First GPU is 0, second is 1, and so on.", OFFSET(gpu), AV_OPT_TYPE_INT, { .i64 = 0 }, 0, INT_MAX, VE },