+ "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.")
+
+#if X264_BUILD >= 59
+#define AQ_MODE_TEXT N_("How AQ distributes bits")
+#define AQ_MODE_LONGTEXT N_("Defines bitdistribution mode for AQ, default 2\n" \
+ " - 0: Disabled\n"\
+ " - 1: Avoid moving bits between frames\n"\
+ " - 2: Move bits between frames")
+
+#define AQ_STRENGTH_TEXT N_("Strength of AQ")
+#define AQ_STRENGTH_LONGTEXT N_("Strength to reduce blocking and blurring in flat\n"\
+ "and textured areas, default 1.0 recommented to be between 0..2\n"\
+ " - 0.5: weak AQ\n"\
+ " - 1.5: strong AQ")
+#endif
+
+/* 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")
+#if X264_BUILD >= 58 /* r728 */
+#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" \
+ " - tesa: hadamard exhaustive search (extremely slow, primarily for testing)\n" )
+#else
+#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" )
+#endif
+
+#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 && X264_BUILD < 58
+static const char *const enc_me_list[] =
+ { "dia", "hex", "umh", "esa" };
+static const char *const enc_me_list_text[] =
+ { N_("dia"), N_("hex"), N_("umh"), N_("esa") };
+#endif
+
+#if X264_BUILD >= 58 /* r728 */
+static const char *const enc_me_list[] =
+ { "dia", "hex", "umh", "esa", "tesa" };
+static const char *const enc_me_list_text[] =
+ { N_("dia"), N_("hex"), N_("umh"), N_("esa"), N_("tesa") };
+#endif
+
+static const char *const enc_analyse_list[] =
+ { "none", "fast", "normal", "slow", "all" };
+static const char *const enc_analyse_list_text[] =
+ { N_("none"), N_("fast"), N_("normal"), N_("slow"), N_("all") };
+
+#if X264_BUILD >= 45 /* r457 */
+static const char *const direct_pred_list[] =
+ { "none", "spatial", "temporal", "auto" };
+static const char *const direct_pred_list_text[] =
+ { N_("none"), N_("spatial"), N_("temporal"), N_("auto") };
+#else
+static const char *const direct_pred_list[] =
+ { "none", "spatial", "temporal" };
+static const char *const direct_pred_list_text[] =
+ { N_("none"), N_("spatial"), N_("temporal") };
+#endif