avcodec/nvenc: add rate control option
[ffmpeg.git] / libavcodec / nvenc.h
index fdb6350..fd44ebc 100644 (file)
@@ -104,6 +104,35 @@ typedef struct NvencDynLoadFunctions
 
 } NvencDynLoadFunctions;
 
+enum {
+    PRESET_DEFAULT = 0,
+    PRESET_SLOW,
+    PRESET_MEDIUM,
+    PRESET_FAST,
+    PRESET_HP,
+    PRESET_HQ,
+    PRESET_BD ,
+    PRESET_LOW_LATENCY_DEFAULT ,
+    PRESET_LOW_LATENCY_HQ ,
+    PRESET_LOW_LATENCY_HP,
+    PRESET_LOSSLESS_DEFAULT, // lossless presets must be the last ones
+    PRESET_LOSSLESS_HP,
+};
+
+enum {
+    NV_ENC_H264_PROFILE_BASELINE,
+    NV_ENC_H264_PROFILE_MAIN,
+    NV_ENC_H264_PROFILE_HIGH,
+    NV_ENC_H264_PROFILE_HIGH_444P,
+};
+
+enum {
+    NVENC_LOWLATENCY = 1,
+    NVENC_LOSSLESS   = 2,
+    NVENC_ONE_PASS   = 4,
+    NVENC_TWO_PASSES = 8,
+};
+
 typedef struct NvencContext
 {
     AVClass *avclass;
@@ -137,13 +166,15 @@ typedef struct NvencContext
 
     void *nvencoder;
 
-    char *preset;
-    char *profile;
-    char *level;
-    char *tier;
+    int preset;
+    int profile;
+    int level;
+    int tier;
+    int rc;
     int cbr;
     int twopass;
     int gpu;
+    int flags;
     int buffer_delay;
 } NvencContext;