+#define KEYINT_TEXT N_("Maximum GOP size")
+#define KEYINT_LONGTEXT N_( "Sets maximum interval between IDR-frames." \
+ "Larger values save bits, thus improving quality for a given bitrate at " \
+ "the cost of seeking precision." )
+
+#define MIN_KEYINT_TEXT N_("Minimum GOP size")
+#define MIN_KEYINT_LONGTEXT N_( "Sets minimum interval between IDR-frames. " \
+ "In H.264, I-frames do not necessarily bound a closed GOP because it is " \
+ "allowable for a P-frame to be predicted from more frames than just the " \
+ "one frame before it (also see reference frame option). Therefore, " \
+ "I-frames are not necessarily seekable. IDR-frames restrict subsequent " \
+ "P-frames from referring to any frame prior to the IDR-frame. \n" \
+ "If scenecuts appear within this interval, they are still encoded as " \
+ "I-frames, but do not start a new GOP." )
+
+#define SCENE_TEXT N_("Extra I-frames aggressivity" )
+#define SCENE_LONGTEXT N_( "Scene-cut detection. Controls how " \
+ "aggressively to insert extra I-frames. With small values of " \
+ "scenecut, the codec often has " \
+ "to force an I-frame when it would exceed keyint. " \
+ "Good values of scenecut may find a better location for the " \
+ "I-frame. Large values use more I-frames " \
+ "than necessary, thus wasting bits. -1 disables scene-cut detection, so " \
+ "I-frames are inserted only every other keyint frames, which probably " \
+ "leads to ugly encoding artifacts. Range 1 to 100." )
+
+#if X264_BUILD >= 55 /* r607 */
+#define PRESCENE_TEXT N_("Faster, less precise scenecut detection" )
+#define PRESCENE_LONGTEXT N_( "Faster, less precise scenecut detection. " \
+ "Required and implied by multi-threading." )
+#endif
+
+#define BFRAMES_TEXT N_("B-frames between I and P")
+#define BFRAMES_LONGTEXT N_( "Number of consecutive B-frames between I and " \
+ "P-frames. Range 1 to 16." )
+
+#define B_ADAPT_TEXT N_("Adaptive B-frame decision")
+#define B_ADAPT_LONGTEXT N_( "Force the specified number of " \
+ "consecutive B-frames to be used, except possibly before an I-frame." )
+
+#define B_BIAS_TEXT N_("Influence (bias) B-frames usage")
+#define B_BIAS_LONGTEXT N_( "Bias the choice to use B-frames. Positive values " \
+ "cause more B-frames, negative values cause less B-frames." )
+
+#define BPYRAMID_TEXT N_("Keep some B-frames as references")
+#define BPYRAMID_LONGTEXT N_( "Allows B-frames to be used as references for " \
+ "predicting other frames. Keeps the middle of 2+ consecutive B-frames " \
+ "as a reference, and reorders frame appropriately." )
+
+#define CABAC_TEXT N_("CABAC")
+#define CABAC_LONGTEXT N_( "CABAC (Context-Adaptive Binary Arithmetic "\
+ "Coding). Slightly slows down encoding and decoding, but should save " \
+ "10 to 15% bitrate." )
+
+#define REF_TEXT N_("Number of reference frames")
+#define REF_LONGTEXT N_( "Number of previous frames used as predictors. " \
+ "This is effective in Anime, but seems to make little difference in " \
+ "live-action source material. Some decoders are unable to deal with " \
+ "large frameref values. Range 1 to 16." )
+
+#define NF_TEXT N_("Skip loop filter")
+#define NF_LONGTEXT N_( "Deactivate the deblocking loop filter (decreases quality).")
+
+#define FILTER_TEXT N_("Loop filter AlphaC0 and Beta parameters alpha:beta")
+#define FILTER_LONGTEXT N_( "Loop filter AlphaC0 and Beta parameters. " \
+ "Range -6 to 6 for both alpha and beta parameters. -6 means light " \
+ "filter, 6 means strong.")
+
+#define LEVEL_TEXT N_("H.264 level")
+#define LEVEL_LONGTEXT N_( "Specify H.264 level (as defined by Annex A " \
+ "of the standard). Levels are not enforced; it's up to the user to select " \
+ "a level compatible with the rest of the encoding options. Range 1 to 5.1 " \
+ "(10 to 51 is also allowed).")
+
+/* In order to play an interlaced output stream encoded by x264, a decoder needs
+ mbaff support. r570 is using the 'mb' part and not 'aff' yet; so it's really
+ 'pure-interlaced' mode */
+#if X264_BUILD >= 51 /* r570 */
+#define INTERLACED_TEXT N_("Interlaced mode")
+#define INTERLACED_LONGTEXT N_( "Pure-interlaced mode.")
+#endif
+
+/* Ratecontrol */
+
+#define QP_TEXT N_("Set QP")
+#define QP_LONGTEXT N_( "This selects the quantizer to use. " \
+ "Lower values result in better fidelity, but higher bitrates. 26 is a " \
+ "good default value. Range 0 (lossless) to 51." )
+
+#define CRF_TEXT N_("Quality-based VBR")
+#define CRF_LONGTEXT N_( "1-pass Quality-based VBR. Range 0 to 51." )
+
+#define QPMIN_TEXT N_("Min QP")
+#define QPMIN_LONGTEXT N_( "Minimum quantizer parameter. 15 to 35 seems to " \
+ "be a useful range." )
+
+#define QPMAX_TEXT N_("Max QP")
+#define QPMAX_LONGTEXT N_( "Maximum quantizer parameter." )
+
+#define QPSTEP_TEXT N_("Max QP step")
+#define QPSTEP_LONGTEXT N_( "Max QP step between frames.")
+
+#define RATETOL_TEXT N_("Average bitrate tolerance")
+#define RATETOL_LONGTEXT N_( "Allowed variance in average " \
+ "bitrate (in kbits/s).")
+
+#define VBV_MAXRATE_TEXT N_("Max local bitrate")
+#define VBV_MAXRATE_LONGTEXT N_( "Sets a maximum local bitrate (in kbits/s).")
+
+#define VBV_BUFSIZE_TEXT N_("VBV buffer")
+#define VBV_BUFSIZE_LONGTEXT N_( "Averaging period for the maximum " \
+ "local bitrate (in kbits).")
+
+#define VBV_INIT_TEXT N_("Initial VBV buffer occupancy")
+#define VBV_INIT_LONGTEXT N_( "Sets the initial buffer occupancy as a " \
+ "fraction of the buffer size. Range 0.0 to 1.0.")
+
+/* IP Ratio < 1 is technically valid but should never improve quality */
+#define IPRATIO_TEXT N_("QP factor between I and P")
+#define IPRATIO_LONGTEXT N_( "QP factor between I and P. Range 1.0 to 2.0.")
+
+/* PB ratio < 1 is not valid and breaks ratecontrol */
+#define PBRATIO_TEXT N_("QP factor between P and B")
+#define PBRATIO_LONGTEXT N_( "QP factor between P and B. Range 1.0 to 2.0.")
+
+#define CHROMA_QP_OFFSET_TEXT N_("QP difference between chroma and luma")
+#define CHROMA_QP_OFFSET_LONGTEXT N_( "QP difference between chroma and luma.")
+
+#define PASS_TEXT N_("Multipass ratecontrol")
+#define PASS_LONGTEXT N_( "Multipass ratecontrol:\n" \
+ " - 1: First pass, creates stats file\n" \
+ " - 2: Last pass, does not overwrite stats file\n" \
+ " - 3: Nth pass, overwrites stats file\n" )
+
+#define QCOMP_TEXT N_("QP curve compression")
+#define QCOMP_LONGTEXT N_( "QP curve compression. Range 0.0 (CBR) to 1.0 (QCP).")
+
+#define CPLXBLUR_TEXT N_("Reduce fluctuations in QP")
+#define CPLXBLUR_LONGTEXT N_( "This reduces the fluctuations in QP " \
+ "before curve compression. Temporally blurs complexity.")
+
+#define QBLUR_TEXT N_("Reduce fluctuations in QP")
+#define QBLUR_LONGTEXT N_( "This reduces the fluctations in QP " \
+ "after curve compression. Temporally blurs quants.")
+
+/* Analysis */
+
+#define ANALYSE_TEXT N_("Partitions to consider")
+#define ANALYSE_LONGTEXT N_( "Partitions to consider in analyse mode: \n" \
+ " - none : \n" \
+ " - fast : i4x4\n" \
+ " - normal: i4x4,p8x8,(i8x8)\n" \
+ " - slow : i4x4,p8x8,(i8x8),b8x8\n" \
+ " - all : i4x4,p8x8,(i8x8),b8x8,p4x4\n" \
+ "(p4x4 requires p8x8. i8x8 requires 8x8dct).")
+
+#define DIRECT_PRED_TEXT N_("Direct MV prediction mode")
+#define DIRECT_PRED_LONGTEXT N_( "Direct MV prediction mode.")
+
+#if X264_BUILD >= 52 /* r573 */
+#define DIRECT_PRED_SIZE_TEXT N_("Direct prediction size")
+#define DIRECT_PRED_SIZE_LONGTEXT N_( "Direct prediction size: "\
+ " - 0: 4x4\n" \
+ " - 1: 8x8\n" \
+ " - -1: smallest possible according to level\n" )
+#endif
+
+#define WEIGHTB_TEXT N_("Weighted prediction for B-frames")
+#define WEIGHTB_LONGTEXT N_( "Weighted prediction for B-frames.")
+
+#define ME_TEXT N_("Integer pixel motion estimation method")
+#define ME_LONGTEXT N_( "Selects the motion estimation algorithm: "\
+ " - dia: diamond search, radius 1 (fast)\n" \
+ " - hex: hexagonal search, radius 2\n" \
+ " - umh: uneven multi-hexagon search (better but slower)\n" \
+ " - esa: exhaustive search (extremely slow, primarily for testing)\n" )
+
+#if X264_BUILD >= 24
+#define MERANGE_TEXT N_("Maximum motion vector search range")
+#define MERANGE_LONGTEXT N_( "Maximum distance to search for " \
+ "motion estimation, measured from predicted position(s). " \
+ "Default of 16 is good for most footage, high motion sequences may " \
+ "benefit from settings between 24 and 32. Range 0 to 64." )
+
+#define MVRANGE_TEXT N_("Maximum motion vector length")
+#define MVRANGE_LONGTEXT N_( "Maximum motion vector length in pixels. " \
+ "-1 is automatic, based on level." )
+#endif
+
+#if X264_BUILD >= 55 /* r607 */
+#define MVRANGE_THREAD_TEXT N_("Minimum buffer space between threads")
+#define MVRANGE_THREAD_LONGTEXT N_( "Minimum buffer space between threads. " \
+ "-1 is automatic, based on number of threads." )
+#endif
+
+#define SUBME_TEXT N_("Subpixel motion estimation and partition decision " \
+ "quality")
+#if X264_BUILD >= 46 /* r477 */
+#define SUBME_MAX 7
+#define SUBME_LONGTEXT N_( "This parameter controls quality versus speed " \
+ "tradeoffs involved in the motion estimation decision process " \
+ "(lower = quicker and higher = better quality). Range 1 to 7." )
+#elif X264_BUILD >= 30 /* r262 */
+#define SUBME_MAX 6
+#define SUBME_LONGTEXT N_( "This parameter controls quality versus speed " \
+ "tradeoffs involved in the motion estimation decision process " \
+ "(lower = quicker and higher = better quality). Range 1 to 6." )
+#else
+#define SUBME_MAX 5
+#define SUBME_LONGTEXT N_( "This parameter controls quality versus speed " \
+ "tradeoffs involved in the motion estimation decision process " \
+ "(lower = quicker and higher = better quality). Range 1 to 5." )
+#endif
+
+#define B_RDO_TEXT N_("RD based mode decision for B-frames")
+#define B_RDO_LONGTEXT N_( "RD based mode decision for B-frames. This " \
+ "requires subme 6 (or higher).")
+
+#define MIXED_REFS_TEXT N_("Decide references on a per partition basis")
+#define MIXED_REFS_LONGTEXT N_( "Allows each 8x8 or 16x8 partition to " \
+ "independently select a reference frame, as opposed to only one ref " \
+ "per macroblock." )
+
+#define CHROMA_ME_TEXT N_("Chroma in motion estimation")
+#define CHROMA_ME_LONGTEXT N_( "Chroma ME for subpel and mode decision in " \
+ "P-frames.")
+
+#define BIME_TEXT N_("Jointly optimize both MVs in B-frames")
+#define BIME_LONGTEXT N_( "Joint bidirectional motion refinement.")
+
+#define TRANSFORM_8X8DCT_TEXT N_("Adaptive spatial transform size")
+#define TRANSFORM_8X8DCT_LONGTEXT N_( \
+ "SATD-based decision for 8x8 transform in inter-MBs.")
+
+#define TRELLIS_TEXT N_("Trellis RD quantization" )
+#define TRELLIS_LONGTEXT N_( "Trellis RD quantization: \n" \
+ " - 0: disabled\n" \
+ " - 1: enabled only on the final encode of a MB\n" \
+ " - 2: enabled on all mode decisions\n" \
+ "This requires CABAC." )
+
+#define FAST_PSKIP_TEXT N_("Early SKIP detection on P-frames")
+#define FAST_PSKIP_LONGTEXT N_( "Early SKIP detection on P-frames.")
+
+#define DCT_DECIMATE_TEXT N_("Coefficient thresholding on P-frames")
+#define DCT_DECIMATE_LONGTEXT N_( "Coefficient thresholding on P-frames." \
+ "Eliminate dct blocks containing only a small single coefficient.")
+
+/* Noise reduction 1 is too weak to measure, suggest at least 10 */
+#define NR_TEXT N_("Noise reduction")
+#define NR_LONGTEXT N_( "Dct-domain noise reduction. Adaptive pseudo-deadzone. " \
+ "10 to 1000 seems to be a useful range." )
+
+#if X264_BUILD >= 52 /* r573 */
+#define DEADZONE_INTER_TEXT N_("Inter luma quantization deadzone")
+#define DEADZONE_INTER_LONGTEXT N_( "Set the size of the inter luma quantization deadzone. " \
+ "Range 0 to 32." )
+
+#define DEADZONE_INTRA_TEXT N_("Intra luma quantization deadzone")
+#define DEADZONE_INTRA_LONGTEXT N_( "Set the size of the intra luma quantization deadzone. " \
+ "Range 0 to 32." )
+#endif
+
+/* Input/Output */
+
+#if X264_BUILD >= 55 /* r607 */
+#define NON_DETERMINISTIC_TEXT N_("Non-deterministic optimizations when threaded")
+#define NON_DETERMINISTIC_LONGTEXT N_( "Slightly improve quality of SMP, " \
+ "at the cost of repeatability.")
+#endif
+
+#define ASM_TEXT N_("CPU optimizations")
+#define ASM_LONGTEXT N_( "Use assembler CPU optimizations.")
+
+#define STATS_TEXT N_("Filename for 2 pass stats file")
+#define STATS_LONGTEXT N_( "Filename for 2 pass stats file for multi-pass encoding.")
+
+#define PSNR_TEXT N_("PSNR computation")
+#define PSNR_LONGTEXT N_( "Compute and print PSNR stats. This has no effect on " \
+ "the actual encoding quality." )
+
+#define SSIM_TEXT N_("SSIM computation")
+#define SSIM_LONGTEXT N_( "Compute and print SSIM stats. This has no effect on " \
+ "the actual encoding quality." )
+
+#define QUIET_TEXT N_("Quiet mode")
+#define QUIET_LONGTEXT N_( "Quiet mode.")
+
+#define VERBOSE_TEXT N_("Statistics")
+#define VERBOSE_LONGTEXT N_( "Print stats for each frame.")
+
+#if X264_BUILD >= 47 /* r518 */
+#define SPS_ID_TEXT N_("SPS and PPS id numbers")
+#define SPS_ID_LONGTEXT N_( "Set SPS and PPS id numbers to allow concatenating " \
+ "streams with different settings.")
+#endif
+
+#define AUD_TEXT N_("Access unit delimiters")
+#define AUD_LONGTEXT N_( "Generate access unit delimiter NAL units.")
+
+#if X264_BUILD >= 24
+static const char *enc_me_list[] =
+ { "dia", "hex", "umh", "esa" };
+static const char *enc_me_list_text[] =
+ { N_("dia"), N_("hex"), N_("umh"), N_("esa") };
+#endif
+
+static const char *enc_analyse_list[] =
+ { "none", "fast", "normal", "slow", "all" };
+static const char *enc_analyse_list_text[] =
+ { N_("none"), N_("fast"), N_("normal"), N_("slow"), N_("all") };
+
+#if X264_BUILD >= 45 /* r457 */
+static const char *direct_pred_list[] =
+ { "none", "spatial", "temporal", "auto" };
+static const char *direct_pred_list_text[] =
+ { N_("none"), N_("spatial"), N_("temporal"), N_("auto") };
+#else
+static const char *direct_pred_list[] =
+ { "none", "spatial", "temporal" };
+static const char *direct_pred_list_text[] =
+ { N_("none"), N_("spatial"), N_("temporal") };
+#endif