~ubuntu-branches/ubuntu/wily/gmerlin-encoders/wily-proposed

« back to all changes in this revision

Viewing changes to plugins/ffmpeg/params.h

  • Committer: Bazaar Package Importer
  • Author(s): IOhannes m zmoelnig (gpg-key at iem)
  • Date: 2011-01-15 20:19:05 UTC
  • Revision ID: james.westby@ubuntu.com-20110115201905-qign5pihv1b977ct
Tags: upstream-1.0.0
ImportĀ upstreamĀ versionĀ 1.0.0

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*****************************************************************
 
2
 * gmerlin-encoders - encoder plugins for gmerlin
 
3
 *
 
4
 * Copyright (c) 2001 - 2011 Members of the Gmerlin project
 
5
 * gmerlin-general@lists.sourceforge.net
 
6
 * http://gmerlin.sourceforge.net
 
7
 *
 
8
 * This program is free software: you can redistribute it and/or modify
 
9
 * it under the terms of the GNU General Public License as published by
 
10
 * the Free Software Foundation, either version 2 of the License, or
 
11
 * (at your option) any later version.
 
12
 *
 
13
 * This program is distributed in the hope that it will be useful,
 
14
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 
15
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
16
 * GNU General Public License for more details.
 
17
 *
 
18
 * You should have received a copy of the GNU General Public License
 
19
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
20
 * *****************************************************************/
 
21
 
 
22
/*
 
23
 *   IMPORTANT: To keep the mess at a reasonable level,
 
24
 *   *all* parameters *must* appear in the same order as in
 
25
 *   the AVCocecContext structure, except the flags, which come at the very end
 
26
 */
 
27
 
 
28
 
 
29
/** Rate control */
 
30
#define PARAM_BITRATE_AUDIO                     \
 
31
  { \
 
32
    .name =      "ff_bit_rate_audio",                 \
 
33
    .long_name = TRS("Bit rate (kbps)"),                \
 
34
    .type =      BG_PARAMETER_INT,                \
 
35
    .val_default = { .val_i = 128 },               \
 
36
  }
 
37
 
 
38
/** Rate control */
 
39
#define PARAM_BITRATE_VIDEO \
 
40
  { \
 
41
    .name =      "ff_bit_rate_video",                 \
 
42
    .long_name = TRS("Bit rate (kbps)"),                \
 
43
    .type =      BG_PARAMETER_INT,                \
 
44
    .val_default = { .val_i = 800 },               \
 
45
  }
 
46
 
 
47
/** Rate control */
 
48
#define PARAM_BITRATE_TOLERANCE                 \
 
49
  {                                               \
 
50
    .name =        "ff_bit_rate_tolerance",           \
 
51
    .long_name =   TRS("Bitrate tolerance (kbps)"),             \
 
52
    .type =        BG_PARAMETER_INT,             \
 
53
    .val_default = { .val_i = 8000 },           \
 
54
    .help_string = TRS("Number of bits the bitstream is allowed to diverge from the reference.\
 
55
 Unused for constant quantizer encoding") \
 
56
  }
 
57
 
 
58
/** Motion estimation */
 
59
#define PARAM_ME_METHOD                         \
 
60
  {\
 
61
    .name =      "ff_me_method",\
 
62
    .long_name = TRS("Motion estimation method"),\
 
63
    .type =      BG_PARAMETER_STRINGLIST,\
 
64
    .val_default = {val_str: "Zero"},\
 
65
    .multi_names = (char const *[]){"Zero", "Phods", "Log", "X1", "Epzs", "Full", (char *)0}, \
 
66
    .multi_labels = (char const *[]){TRS("Zero"), TRS("Phods"), TRS("Log"), \
 
67
TRS("X1"), TRS("Epzs"), TRS("Full"), (char *)0} \
 
68
  }
 
69
 
 
70
/** Frame types */
 
71
#define PARAM_GOP_SIZE                          \
 
72
  { \
 
73
    .name =      "gop_size", \
 
74
    .long_name = TRS("GOP size (0 = intra only)"), \
 
75
    .type =      BG_PARAMETER_SLIDER_INT, \
 
76
    .val_default = { .val_i = 250 },   \
 
77
    .val_min =     { .val_i = 0 },     \
 
78
    .val_max =     { .val_i = 300 },   \
 
79
  } \
 
80
 
 
81
/** Quantizer */
 
82
#define PARAM_QCOMPRESS \
 
83
  {                     \
 
84
    .name =        "ff_qcompress",                   \
 
85
    .long_name =   TRS("Quantizer compression"),\
 
86
    .type =        BG_PARAMETER_SLIDER_FLOAT,  \
 
87
    .val_default = { .val_f = 0.5 }, \
 
88
    .val_min =     { .val_f = 0.0 }, \
 
89
    .val_max =     { .val_f = 1.0 }, \
 
90
    .num_digits =  2, \
 
91
    .help_string = TRS("Amount of qscale change between easy & hard scenes") \
 
92
  }
 
93
 
 
94
/** Quantizer */
 
95
#define PARAM_QBLUR \
 
96
  {                 \
 
97
    .name =        "ff_qblur",                     \
 
98
    .long_name =   TRS("Quantizer blur"), \
 
99
    .type =        BG_PARAMETER_SLIDER_FLOAT,  \
 
100
    .val_default = { .val_f = 0.0 }, \
 
101
    .val_min =     { .val_f = 0.0 }, \
 
102
    .val_max =     { .val_f = 1.0 }, \
 
103
    .num_digits =  2,                  \
 
104
    .help_string = TRS("Amount of qscale smoothing over time"),        \
 
105
  }
 
106
 
 
107
/** Quantizer */
 
108
#define PARAM_QMIN \
 
109
  {\
 
110
    .name =      "ff_qmin", \
 
111
    .long_name = TRS("Minimum quantizer scale"), \
 
112
    .type =      BG_PARAMETER_SLIDER_INT, \
 
113
    .val_default = { .val_i = 2 }, \
 
114
    .val_min =     { .val_i = 0 }, \
 
115
    .val_max =     { .val_i = 31 },               \
 
116
  }
 
117
 
 
118
/** Quantizer */
 
119
#define PARAM_QMAX                              \
 
120
  {\
 
121
    .name =      "ff_qmax", \
 
122
    .long_name = TRS("Maximum quantizer scale"), \
 
123
    .type =      BG_PARAMETER_SLIDER_INT, \
 
124
    .val_default = { .val_i = 31 }, \
 
125
    .val_min =     { .val_i = 0 }, \
 
126
    .val_max =     { .val_i = 31 },               \
 
127
  } \
 
128
 
 
129
/** Quantizer */
 
130
#define PARAM_MAX_QDIFF \
 
131
  {                     \
 
132
    .name =      "ff_max_qdiff",                                  \
 
133
    .long_name = TRS("Maximum quantizer difference"),                  \
 
134
    .type =      BG_PARAMETER_SLIDER_INT,                               \
 
135
    .val_default = { .val_i = 3 },                                \
 
136
    .val_min =     { .val_i = 0 },                                \
 
137
    .val_max =     { .val_i = 31 },                               \
 
138
    .help_string = TRS("Maximum quantizer difference between frames")  \
 
139
  }
 
140
 
 
141
/** Frame types */
 
142
#define PARAM_MAX_B_FRAMES \
 
143
  {                                                                     \
 
144
    .name =      "ff_max_b_frames",                                       \
 
145
    .long_name = TRS("Max B-Frames"),                                          \
 
146
    .type =      BG_PARAMETER_SLIDER_INT,                                       \
 
147
    .val_default = { .val_i = 0 },                                        \
 
148
    .val_min =     { .val_i = 0 },                                        \
 
149
    .val_max =     { .val_i = FF_MAX_B_FRAMES },                          \
 
150
    .help_string = TRS("Maximum number of B-frames between non B-frames") \
 
151
  }
 
152
 
 
153
/** Quantizer */
 
154
#define PARAM_B_QUANT_FACTOR \
 
155
  {                                                                     \
 
156
    .name =      "ff_b_quant_factor",                                     \
 
157
    .long_name = TRS("B quantizer factor"),                                    \
 
158
    .type =        BG_PARAMETER_SLIDER_FLOAT,                                   \
 
159
    .val_default = { .val_f = 1.25 },                                 \
 
160
    .val_min =     { .val_f = -31.0 },                                \
 
161
    .val_max =     { .val_f = 31.0 },                                 \
 
162
    .num_digits =  2, \
 
163
    .help_string = TRS("Quantizer factor between B-frames and non-B-frames"),  \
 
164
  }
 
165
 
 
166
/** Frame types */
 
167
#define PARAM_B_FRAME_STRATEGY \
 
168
  {                                                             \
 
169
    .name =        "ff_b_frame_strategy",                         \
 
170
    .long_name =   TRS("Avoid B-frames in high motion scenes"),        \
 
171
    .type =        BG_PARAMETER_CHECKBUTTON,                             \
 
172
    .val_default = { .val_i = 0 },                                \
 
173
  }
 
174
 
 
175
#define PARAM_LUMA_ELIM_THRESHOLD               \
 
176
  {                                             \
 
177
    .name =      "ff_luma_elim_threshold",          \
 
178
    .long_name = TRS("Luma elimination threshold"),    \
 
179
    .type =        BG_PARAMETER_SLIDER_INT,             \
 
180
    .val_default = { .val_i =  0 },                                \
 
181
    .val_min =     { .val_i = -99 },                                \
 
182
    .val_max =     { .val_i =  99 },                                \
 
183
    .help_string = TRS("Single coefficient elimination threshold for " \
 
184
"luminance. Negative values also consider dc coefficient. -4 is " \
 
185
"JVT recommendation") \
 
186
  }
 
187
    
 
188
#define PARAM_CHROMA_ELIM_THRESHOLD               \
 
189
  {                                             \
 
190
    .name =      "ff_chroma_elim_threshold",          \
 
191
    .long_name = TRS("Chroma elimination threshold"),    \
 
192
    .type =        BG_PARAMETER_SLIDER_INT,             \
 
193
    .val_default = { .val_i =  0 },                                \
 
194
    .val_min =     { .val_i = -99 },                                \
 
195
    .val_max =     { .val_i =  99 },                                \
 
196
    .help_string = TRS("Single coefficient elimination threshold for " \
 
197
"chrominamce. Negative values also consider dc coefficient. 7 is " \
 
198
"JVT recommendation") \
 
199
  }
 
200
 
 
201
#define PARAM_STRICT_STANDARD_COMPLIANCE \
 
202
  {                                                              \
 
203
    .name = "ff_strict_std_compliance",                              \
 
204
    .long_name =   TRS("Standards compliance"),                         \
 
205
    .type =        BG_PARAMETER_SLIDER_INT,                              \
 
206
    .val_default = { .val_i =  0 },                                \
 
207
    .val_min =     { .val_i = -2 },                                \
 
208
    .val_max =     { .val_i =  2 },                                \
 
209
    .help_string = TRS("2: Strictly conform to a older more strict version\
 
210
 of the spec or reference software\n\
 
211
1: Strictly conform to all the things in the spec no matter what \
 
212
consequences\n\
 
213
0: Default\n\
 
214
-1: Allow inofficial extensions\n\
 
215
-2: Allow non standarized experimental things") \
 
216
  }
 
217
 
 
218
/** Quantizer */
 
219
#define PARAM_B_QUANT_OFFSET \
 
220
  { \
 
221
    .name =       "ff_b_quant_offset",                    \
 
222
    .long_name =  TRS("B quantizer offset"),                   \
 
223
    .type =       BG_PARAMETER_SLIDER_FLOAT,                    \
 
224
    .val_default = { .val_f = 1.25 },                   \
 
225
    .val_min =     { .val_f = 0.0 },                    \
 
226
    .val_max =     { .val_f = 31.0 },                   \
 
227
    .num_digits =  2, \
 
228
    .help_string = TRS("Quantizer offset between B-frames and non-B-frames\n"\
 
229
    "if > 0 then the last p frame quantizer will be used (q= lastp_q*factor+offset)\n"\
 
230
    "if < 0 then normal ratecontrol will be done (q= -normal_q*factor+offset)")\
 
231
  }
 
232
 
 
233
/** Rate control */
 
234
#define PARAM_RC_MIN_RATE \
 
235
  { \
 
236
    .name =        "ff_rc_min_rate",\
 
237
    .long_name =   TRS("Minimum bitrate (kbps)"),\
 
238
    .type =        BG_PARAMETER_INT,\
 
239
    .val_default = { .val_i = 0 },                        \
 
240
    .help_string = TRS("Minimum bitrate (0 means arbitrary)"), \
 
241
  }
 
242
 
 
243
/** Rate control */
 
244
#define PARAM_RC_MAX_RATE \
 
245
  {                                             \
 
246
    .name =      "ff_rc_max_rate",\
 
247
    .long_name = TRS("Maximum bitrate (kbps)"),\
 
248
    .type =      BG_PARAMETER_INT,\
 
249
    .val_default = { .val_i = 0 },                        \
 
250
    .help_string = TRS("Maximum bitrate (0 means arbitrary)"), \
 
251
  }
 
252
 
 
253
/** Rate control */
 
254
#define PARAM_RC_BUFFER_SIZE \
 
255
  {                          \
 
256
    .name =      "ff_rc_buffer_size",        \
 
257
    .long_name = TRS("RC buffer size"),           \
 
258
    .type =      BG_PARAMETER_INT,          \
 
259
    .val_default = { .val_i = 0 },           \
 
260
    .help_string = TRS("Decoder bitstream buffer size in kbits. When encoding " \
 
261
"with max and/or min bitrate, this must be specified.") \
 
262
  }
 
263
 
 
264
/** Rate control */
 
265
#define PARAM_RC_BUFFER_AGGRESSIVITY \
 
266
  {                                           \
 
267
    .name =       "ff_rc_buffer_aggressivity",    \
 
268
    .long_name =  TRS("RC buffer aggressivity"),               \
 
269
    .type =       BG_PARAMETER_SLIDER_FLOAT,                    \
 
270
    .val_default = { .val_f = 1.0 },                   \
 
271
    .val_min =     { .val_f = 0.01 },                    \
 
272
    .val_max =     { .val_f = 99.0 },                   \
 
273
    .num_digits =  2, \
 
274
  }
 
275
 
 
276
/** Quantizer */
 
277
#define PARAM_I_QUANT_FACTOR \
 
278
  {                                                                     \
 
279
    .name =      "ff_i_quant_factor",                                     \
 
280
    .long_name = TRS("I quantizer factor"),                                    \
 
281
    .type =        BG_PARAMETER_SLIDER_FLOAT,                                   \
 
282
    .val_default = { .val_f = -0.8 },                                 \
 
283
    .val_min =     { .val_f = -31.0 },                                \
 
284
    .val_max =     { .val_f = 31.0 },                                 \
 
285
    .num_digits =  1, \
 
286
    .help_string = TRS("Quantizer factor between P-frames and I-frames.\n"\
 
287
"If > 0 then the last P frame quantizer will be used (q= lastp_q*factor+offset).\n"\
 
288
"If < 0 then normal ratecontrol will be done (q= -normal_q*factor+offset)"),  \
 
289
  }
 
290
 
 
291
/** Quantizer */
 
292
#define PARAM_I_QUANT_OFFSET \
 
293
  {                                                              \
 
294
    .name =      "ff_i_quant_offset",                              \
 
295
    .long_name = TRS("I quantizer offset"),                             \
 
296
    .type =        BG_PARAMETER_SLIDER_FLOAT,                            \
 
297
    .val_default = { .val_f =  0.0 },                            \
 
298
    .val_min =     { .val_f =  0.0 },                            \
 
299
    .val_max =     { .val_f = 31.0 },                                 \
 
300
    .num_digits =  1, \
 
301
    .help_string = TRS("Quantizer offset between P-frames and I-frames"),  \
 
302
  }
 
303
 
 
304
/** Rate control */
 
305
#define PARAM_RC_INITIAL_COMPLEX \
 
306
  {                                                          \
 
307
    .name =      "ff_rc_initial_cplx",                           \
 
308
    .long_name = TRS("Initial RC complexity"),                      \
 
309
    .type =      BG_PARAMETER_SLIDER_FLOAT,\
 
310
    .val_default = { .val_f =  0.0 },                            \
 
311
    .val_min =     { .val_f =  0.0 },                            \
 
312
    .val_max =     { .val_f = 99.0 },                                 \
 
313
    .num_digits =  1, \
 
314
  }
 
315
 
 
316
/** Masking */
 
317
#define PARAM_LUMI_MASKING                      \
 
318
  {                                             \
 
319
    .name =        "ff_lumi_masking",               \
 
320
    .long_name = TRS("Luminance masking"),      \
 
321
    .type =      BG_PARAMETER_SLIDER_FLOAT,                              \
 
322
    .val_default = { .val_f =  0.0 },                            \
 
323
    .val_min =     { .val_f =  0.0 },                            \
 
324
    .val_max =     { .val_f =  1.0 },                          \
 
325
    .num_digits =  2, \
 
326
    .help_string = TRS("Encode very bright image parts with reduced quality."\
 
327
    " 0 means disabled, 0-0.3 is a sane range."),      \
 
328
  }
 
329
 
 
330
/** Masking */
 
331
#define PARAM_TEMPORAL_CPLX_MASKING                      \
 
332
  {                                             \
 
333
    .name =        "ff_temporal_cplx_masking",               \
 
334
    .long_name = TRS("Temporary complexity masking"),      \
 
335
    .type =      BG_PARAMETER_SLIDER_FLOAT,                              \
 
336
    .val_default = { .val_f =  0.0 },                            \
 
337
    .val_min =     { .val_f =  0.0 },                            \
 
338
    .val_max =     { .val_f =  1.0 },                          \
 
339
    .num_digits =  2, \
 
340
    .help_string = TRS("Encode very fast moving image parts with reduced quality."\
 
341
    " 0 means disabled."),      \
 
342
  }
 
343
 
 
344
/** Masking */
 
345
#define PARAM_SPATIAL_CPLX_MASKING             \
 
346
  {                                             \
 
347
    .name =        "ff_spatial_cplx_masking",               \
 
348
    .long_name = TRS("Spatial complexity masking"),      \
 
349
    .type =      BG_PARAMETER_SLIDER_FLOAT,                              \
 
350
    .val_default = { .val_f =  0.0 },                            \
 
351
    .val_min =     { .val_f =  0.0 },                            \
 
352
    .val_max =     { .val_f =  1.0 },                          \
 
353
    .num_digits =  2, \
 
354
    .help_string = TRS("Encode very complex image parts with reduced quality."\
 
355
    " 0 means disabled, 0-0.5 is a sane range."),                          \
 
356
  }
 
357
 
 
358
/** Masking */
 
359
#define PARAM_P_MASKING             \
 
360
  {                                             \
 
361
    .name =        "ff_p_masking",               \
 
362
    .long_name = TRS("Inter block masking"),      \
 
363
    .type =      BG_PARAMETER_SLIDER_FLOAT,                              \
 
364
    .val_default = { .val_f =  0.0 },                            \
 
365
    .val_min =     { .val_f =  0.0 },                            \
 
366
    .val_max =     { .val_f =  1.0 },                          \
 
367
    .num_digits =  2, \
 
368
    .help_string = TRS("Encode inter blocks with reduced quality (increases the quality of intra blocks). "\
 
369
    " 0 means disabled, 1 will double the bits allocated for intra blocks."),      \
 
370
  }
 
371
 
 
372
/** Masking */
 
373
#define PARAM_DARK_MASKING             \
 
374
  {                                             \
 
375
    .name =        "ff_dark_masking",               \
 
376
    .long_name = TRS("Darkness masking"),      \
 
377
    .type =      BG_PARAMETER_SLIDER_FLOAT,                              \
 
378
    .val_default = { .val_f =  0.0 },                            \
 
379
    .val_min =     { .val_f =  0.0 },                            \
 
380
    .val_max =     { .val_f =  1.0 },                            \
 
381
    .num_digits =  2, \
 
382
    .help_string = TRS("Encode very dark image parts with reduced quality. " \
 
383
    "0 means disabled, 0-0.3 is a sane range."),                          \
 
384
  }
 
385
 
 
386
#define PARAM_PREDICTION_METHOD                 \
 
387
  {                                               \
 
388
    .name =       "ff_prediction_method",             \
 
389
    .long_name = TRS("Precition method"),                \
 
390
    .type =      BG_PARAMETER_STRINGLIST,          \
 
391
    .val_default = { .val_str = "Left" },\
 
392
multi_names: (char const *[]){ "Left", "Plane", "Median", (char*)0 },    \
 
393
multi_labels: (char const *[]){ TRS("Left"), TRS("Plane"), TRS("Median"), (char*)0 },    \
 
394
  }
 
395
 
 
396
/** Quantizer */
 
397
#define PARAM_MB_QMIN \
 
398
  {                   \
 
399
  .name =      "ff_mb_qmin", \
 
400
    .long_name = TRS("Minimum MB quantizer"),          \
 
401
    .type =    BG_PARAMETER_SLIDER_INT,                 \
 
402
    .val_default = { .val_i = 2 },\
 
403
    .val_min =     { .val_i = 0 },\
 
404
    .val_max =     { .val_i = 31 },\
 
405
  }
 
406
 
 
407
/** Quantizer */
 
408
#define PARAM_MB_QMAX \
 
409
  {                   \
 
410
  .name =      "ff_mb_qmax", \
 
411
    .long_name = TRS("Maximum MB quantizer"),          \
 
412
    .type =    BG_PARAMETER_SLIDER_INT,                 \
 
413
    .val_default = { .val_i = 31 },\
 
414
    .val_min =     { .val_i = 0 },\
 
415
    .val_max =     { .val_i = 31 },\
 
416
  }
 
417
 
 
418
#define COMPARE_FUNCS (char const *[]){ "SAD", "SSE", "SATD", "DCT", "PSNR", \
 
419
                        "BIT", "RD", "ZERO", "VSAD", "VSSE", "NSSE", (char*)0 }
 
420
 
 
421
#define COMPARE_FUNCS_HELP TRS("SAD: Sum of absolute differences\n"\
 
422
"SSE: Sum of squared errors\n"\
 
423
"SATD: Sum of absolute Hadamard transformed differences\n"\
 
424
"DCT: Sum of absolute DCT transformed differences\n"\
 
425
"PSNR: Sum of squared quantization errors (low quality)\n"\
 
426
"BIT: Number of bits needed for the block\n"\
 
427
"RD: Rate distortion optimal (slow)\n"\
 
428
"ZERO: 0\n"\
 
429
"VSAD: Sum of absolute vertical differences\n"\
 
430
"VSSE: Sum of squared vertical differences\n"\
 
431
"NSSE: Noise preserving sum of squared differences")
 
432
 
 
433
/** Motion estimation */
 
434
#define PARAM_ME_CMP \
 
435
  {\
 
436
    .name = "ff_me_cmp",                          \
 
437
    .long_name = "ME compare function",           \
 
438
    .type =  BG_PARAMETER_STRINGLIST,                \
 
439
    .val_default = { .val_str = "SAD" },         \
 
440
    .multi_names = COMPARE_FUNCS,          \
 
441
    .help_string = TRS("Motion estimation compare function.") COMPARE_FUNCS_HELP \
 
442
  }
 
443
 
 
444
/** Motion estimation */
 
445
#define PARAM_ME_CMP_CHROMA \
 
446
  { \
 
447
    .name = "ff_me_cmp_chroma",                 \
 
448
    .long_name = TRS("Enable chroma ME compare"),    \
 
449
    .type = BG_PARAMETER_CHECKBUTTON,                  \
 
450
    .val_default = { .val_i = 0 },              \
 
451
  }
 
452
 
 
453
/** Motion estimation */
 
454
#define PARAM_ME_SUB_CMP                        \
 
455
  {\
 
456
    .name = "ff_me_sub_cmp",                          \
 
457
    .long_name = TRS("Subpixel ME compare function"),           \
 
458
    .type =  BG_PARAMETER_STRINGLIST,                \
 
459
    .val_default = { .val_str = "SAD" },         \
 
460
    .multi_names = COMPARE_FUNCS,          \
 
461
    .help_string = TRS("Subpixel motion estimation compare function.\n")COMPARE_FUNCS_HELP \
 
462
  }
 
463
 
 
464
/** Motion estimation */
 
465
#define PARAM_ME_SUB_CMP_CHROMA \
 
466
  { \
 
467
    .name = "ff_me_sub_cmp_chroma",                 \
 
468
    .long_name = TRS("Enable chroma subpixel ME compare"),    \
 
469
    .type = BG_PARAMETER_CHECKBUTTON,                  \
 
470
    .val_default = { .val_i = 0 },              \
 
471
  }
 
472
 
 
473
 
 
474
#define PARAM_MB_CMP \
 
475
  {\
 
476
    .name = "ff_mb_cmp",                          \
 
477
    .long_name = TRS("MB compare function"),           \
 
478
    .type =  BG_PARAMETER_STRINGLIST,                \
 
479
    .val_default = { .val_str = "SAD" },         \
 
480
    .multi_names = COMPARE_FUNCS,          \
 
481
    .help_string = TRS("Macroblock compare function.\n")COMPARE_FUNCS_HELP \
 
482
  }
 
483
 
 
484
#define PARAM_MB_CMP_CHROMA \
 
485
  { \
 
486
    .name = "ff_mb_cmp_chroma",                 \
 
487
    .long_name = TRS("Enable chroma macroblock ME compare"),    \
 
488
    .type = BG_PARAMETER_CHECKBUTTON,                  \
 
489
    .val_default = { .val_i = 0 },              \
 
490
  }
 
491
 
 
492
 
 
493
#define PARAM_ILDCT_CMP \
 
494
  {\
 
495
    .name = "ff_ildct_cmp",                          \
 
496
    .long_name = TRS("ILDCT compare function"),           \
 
497
    .type =  BG_PARAMETER_STRINGLIST,                \
 
498
    .val_default = { .val_str = "SAD" },         \
 
499
    .multi_names = COMPARE_FUNCS,          \
 
500
    .help_string = TRS("Interlaced dct compare function.\n")COMPARE_FUNCS_HELP \
 
501
  }
 
502
 
 
503
#define PARAM_ICDCT_CMP_CHROMA \
 
504
  { \
 
505
    .name = "ff_ildct_cmp_chroma",                 \
 
506
    .long_name = TRS("Enable chroma ILDCT ME compare"),    \
 
507
    .type = BG_PARAMETER_CHECKBUTTON,                  \
 
508
    .val_default = { .val_i = 0 },              \
 
509
  }
 
510
 
 
511
/** Motion estimation */
 
512
#define PARAM_DIA_SIZE \
 
513
  { \
 
514
    .name = "ff_dia_size",                        \
 
515
    .long_name = TRS("ME diamond size & shape"),\
 
516
    .type = BG_PARAMETER_SLIDER_INT,                  \
 
517
    .val_default = { .val_i = 0 },              \
 
518
    .val_min =     { .val_i = -9 },              \
 
519
    .val_max =     { .val_i =  9 },              \
 
520
    .help_string = TRS("Motion estimation diamond size. Negative means shape adaptive.") \
 
521
  }
 
522
 
 
523
#define PARAM_LAST_PREDICTOR_COUNT \
 
524
  { \
 
525
    .name = "ff_last_predictor_count",                        \
 
526
    .long_name = TRS("Last predictor count"),\
 
527
    .type = BG_PARAMETER_SLIDER_INT,                  \
 
528
    .val_default = { .val_i = 0 },              \
 
529
    .val_min =     { .val_i = 0 },              \
 
530
    .val_max =     { .val_i = 99 },              \
 
531
    .help_string = TRS("Amount of motion predictors from the previous frame.\n"\
 
532
"0 (default)\n"\
 
533
"a Will use 2a+1 x 2a+1 macroblock square of motion vector predictors " \
 
534
"from the previous frame.")\
 
535
  }
 
536
 
 
537
/** Motion estimation */
 
538
#define PARAM_PRE_ME \
 
539
  { \
 
540
    .name = "ff_pre_me", \
 
541
    .long_name = TRS("ME pre-pass"), \
 
542
    .type = BG_PARAMETER_SLIDER_INT,  \
 
543
    .val_default = { .val_i = 0 },              \
 
544
    .val_min =     { .val_i = 0 },              \
 
545
    .val_max =     { .val_i = 2 },              \
 
546
    .help_string = TRS("Motion estimation pre-pass\n"\
 
547
"0: disabled\n"\
 
548
"1: only after I-frames\n"\
 
549
"2: always") \
 
550
   }
 
551
 
 
552
/** Motion estimation */
 
553
#define PARAM_ME_PRE_CMP \
 
554
  {\
 
555
    .name = "ff_me_pre_cmp",                          \
 
556
    .long_name = TRS("ME pre-pass compare function"),           \
 
557
    .type =  BG_PARAMETER_STRINGLIST,                \
 
558
    .val_default = { .val_str = "SAD" },         \
 
559
    .multi_names = COMPARE_FUNCS,          \
 
560
    .help_string = TRS("Motion estimation pre-pass compare function.\n")COMPARE_FUNCS_HELP\
 
561
  }
 
562
 
 
563
/** Motion estimation */
 
564
#define PARAM_ME_PRE_CMP_CHROMA \
 
565
  { \
 
566
    .name = "ff_me_pre_cmp_chroma",                 \
 
567
    .long_name = TRS("Enable chroma ME pre-pass compare"),    \
 
568
    .type = BG_PARAMETER_CHECKBUTTON,                  \
 
569
    .val_default = { .val_i = 0 },              \
 
570
    .val_min =     { .val_i = 0 },              \
 
571
    .val_max =     { .val_i = 1 },              \
 
572
  }
 
573
 
 
574
/** Motion estimation */
 
575
#define PARAM_PRE_DIA_SIZE \
 
576
  { \
 
577
    .name = "ff_pre_dia_size",                        \
 
578
    .long_name = TRS("ME pre-pass diamond size & shape"),           \
 
579
    .type = BG_PARAMETER_SLIDER_INT,                  \
 
580
    .val_default = { .val_i = 0 },              \
 
581
    .val_min =     { .val_i = -9 },              \
 
582
    .val_max =     { .val_i =  9 },              \
 
583
    .help_string = TRS("Motion estimation pre-pass diamond size. Negative means shape adaptive.") \
 
584
  }
 
585
 
 
586
/** Motion estimation */
 
587
#define PARAM_ME_SUBPEL_QUALITY \
 
588
  { \
 
589
    .name = "ff_me_subpel_quality",                 \
 
590
    .long_name = TRS("Subpel ME quality"),               \
 
591
    .type = BG_PARAMETER_SLIDER_INT,                  \
 
592
    .val_default = { .val_i = 8 },              \
 
593
    .val_min =     { .val_i = 1 },              \
 
594
    .val_max =     { .val_i = 8 },              \
 
595
    .help_string = TRS("Subpel motion estimation refinement quality (for qpel). Higher values "\
 
596
"mean higher quality but slower encoding.") \
 
597
  }
 
598
 
 
599
/** Motion estimation */
 
600
#define PARAM_ME_RANGE \
 
601
  {                    \
 
602
    .name = "ff_me_range",                          \
 
603
    .long_name = TRS("Motion estimation range"),       \
 
604
    .type = BG_PARAMETER_SLIDER_INT,                    \
 
605
    .val_default = { .val_i = 0 },                \
 
606
    .val_min = { .val_i = 0 },                    \
 
607
    .val_max = { .val_i = 1000 },                 \
 
608
    .help_string = TRS("Motion estimation search range (0 means unlimited)"),  \
 
609
  }
 
610
 
 
611
/** Motion estimation */
 
612
#define PARAM_MB_DECISION \
 
613
  {                       \
 
614
    .name = "ff_mb_decision",                     \
 
615
    .long_name = TRS("MB decision mode"),              \
 
616
    .type = BG_PARAMETER_STRINGLIST,             \
 
617
    .val_default = { .val_str = "Use compare function" },        \
 
618
    .multi_names = (char const *[]){ "Use compare function", \
 
619
                          "Fewest bits", "Rate distoration", (char*)0 },\
 
620
    .multi_labels = (char const *[]){ TRS("Use compare function"), \
 
621
                          TRS("Fewest bits"), TRS("Rate distoration"), (char*)0 },\
 
622
  }
 
623
 
 
624
/** Frame types */
 
625
#define PARAM_SCENE_CHANGE_THRESHOLD \
 
626
  {                                 \
 
627
    .name =      "ff_scenechange_threshold",        \
 
628
    .long_name = TRS("Scenechange threshold"),            \
 
629
    .type = BG_PARAMETER_INT,             \
 
630
    .val_default = { .val_i = 0 },                \
 
631
    .val_min = { .val_i = -1000000000 },                    \
 
632
    .val_max = { .val_i = 1000000000 },                 \
 
633
    .help_string = TRS("Threshold for scene change detection.\n\
 
634
Negative values mean more sensitivity (more keyframes)") \
 
635
  }
 
636
 
 
637
/** Rate control */
 
638
#define PARAM_LMIN \
 
639
  {                \
 
640
    .name = "ff_lmin", \
 
641
    .long_name = TRS("Minimum lagrange multiplier"),    \
 
642
    .type = BG_PARAMETER_SLIDER_FLOAT,             \
 
643
    .val_default = { .val_f = 2.0 }, \
 
644
    .val_min =     {  .val_f = 1.0 }, \
 
645
    .val_min =     {  .val_f = 31.0 }, \
 
646
    .num_digits =  1, \
 
647
    .help_string = TRS("Minimum Lagrange multiplier for ratecontrol. "\
 
648
"Should possibly be the same as minimum quantizer scale.")\
 
649
  }
 
650
 
 
651
/** Rate control */
 
652
#define PARAM_LMAX \
 
653
  {                \
 
654
    .name = "ff_lmax", \
 
655
    .long_name = TRS("Maximum lagrange multipler"),    \
 
656
    .type = BG_PARAMETER_SLIDER_FLOAT,             \
 
657
    .val_default = { .val_f = 31.0 }, \
 
658
    .val_min =     {  .val_f = 1.0 }, \
 
659
    .val_min =     {  .val_f = 31.0 }, \
 
660
    .num_digits =  1, \
 
661
    .help_string = TRS("Maximum Lagrange multiplier for ratecontrol. "\
 
662
"Should possibly be the same as maximum quantizer scale.")\
 
663
  }
 
664
 
 
665
#define PARAM_NOISE_REDUCTION \
 
666
  { \
 
667
    .name = "ff_noise_reduction", \
 
668
    .long_name = TRS("Noise reduction"), \
 
669
    .type = BG_PARAMETER_SLIDER_INT, \
 
670
    .val_default = { .val_i = 0 },            \
 
671
    .val_min = { .val_i = 0 },                \
 
672
    .val_max = { .val_i = 2000 },             \
 
673
  }
 
674
 
 
675
/** Rate control */
 
676
#define PARAM_RC_INITIAL_BUFFER_OCCUPANCY \
 
677
  { \
 
678
    .name = "ff_rc_initial_buffer_occupancy",   \
 
679
    .long_name = TRS("Initial RC buffer occupancy"),   \
 
680
    .type = BG_PARAMETER_INT,                \
 
681
    .val_default = { .val_i = 0 },            \
 
682
    .help_string = TRS("Number of kilobits which should be loaded into \
 
683
the rc buffer before encoding starts. Must not be larger than \
 
684
RC buffer size") \
 
685
  }
 
686
 
 
687
 
 
688
/* Does nothing */
 
689
/** Frame types */
 
690
#define PARAM_INTER_THRESHOLD \
 
691
  { \
 
692
    .name = "ff_inter_threshold",   \
 
693
    .long_name = TRS("Inter threshold"),   \
 
694
    .type = BG_PARAMETER_INT,                \
 
695
    .val_default = { .val_i = 0 },            \
 
696
  }
 
697
 
 
698
/** Quantizer */
 
699
#define PARAM_QUANTIZER_NOISE_SHAPING \
 
700
  { \
 
701
  .name = "ff_quantizer_noise_shaping", \
 
702
    .long_name = TRS("Quantizer noise shaping"),\
 
703
    .type = BG_PARAMETER_SLIDER_INT, \
 
704
    .val_default = { .val_i = 0 },\
 
705
    .val_min =     { .val_i = 0 },\
 
706
    .val_max =     { .val_i = 3 },\
 
707
    .help_string = TRS("Choose quantization such that noise will be masked by "\
 
708
"similar-frequency content in the image") \
 
709
  }
 
710
 
 
711
/** Motion estimation */
 
712
#define PARAM_ME_THRESHOLD \
 
713
  { \
 
714
    .name = "ff_me_threshold", \
 
715
    .long_name = TRS("ME Theshold"),                   \
 
716
    .type = BG_PARAMETER_INT, \
 
717
    .val_default = { .val_i = 0 },\
 
718
    .val_min =     { .val_i = 0 },\
 
719
    .val_max =     { .val_i = 4000000 },\
 
720
    .help_string = TRS("Motion estimation threshold. under which no motion estimation is performed, but instead the user specified motion vectors are used") \
 
721
  }
 
722
 
 
723
#define PARAM_MB_THRESHOLD \
 
724
  { \
 
725
    .name = "ff_mb_threshold", \
 
726
    .long_name = TRS("MB Theshold"),\
 
727
    .type = BG_PARAMETER_INT, \
 
728
    .val_default = { .val_i = 0 },\
 
729
    .val_min =     { .val_i = 0 },\
 
730
    .val_max =     { .val_i = 4000000 },\
 
731
    .help_string = TRS("Macroblock threshold. under which the user specified macroblock types will be used") \
 
732
  }
 
733
 
 
734
#define PARAM_NSSE_WEIGHT \
 
735
  { \
 
736
    .name = "ff_nsse_weight", \
 
737
    .long_name = TRS("NSSE weight"),                   \
 
738
    .type = BG_PARAMETER_INT,                    \
 
739
    .val_default = { .val_i = 8 },\
 
740
    .help_string = TRS("Noise vs. SSE weight for the NSSE comparsion function. "\
 
741
"0 is identical to SSE")\
 
742
  }
 
743
 
 
744
/** Masking */
 
745
#define PARAM_BORDER_MASKING \
 
746
  { \
 
747
    .name = "ff_border_masking", \
 
748
    .long_name = TRS("Border masking"), \
 
749
    .type = BG_PARAMETER_SLIDER_FLOAT,                    \
 
750
    .val_default = { .val_f = 0.0 }, \
 
751
    .val_min =     { .val_f = 0.0 }, \
 
752
    .val_max =     { .val_f = 1.0 }, \
 
753
    .num_digits =  2, \
 
754
    .help_string = TRS("Encode image parts near the border with reduced quality."\
 
755
    " 0 means disabled")\
 
756
  }
 
757
 
 
758
#define PARAM_MB_LMIN \
 
759
  {                \
 
760
    .name = "ff_mb_lmin", \
 
761
    .long_name = TRS("Minimum MB lagrange multipler"),    \
 
762
    .type = BG_PARAMETER_SLIDER_FLOAT,             \
 
763
    .val_default = { .val_f = 2.0 }, \
 
764
    .val_min =     {  .val_f = 1.0 }, \
 
765
    .val_min =     {  .val_f = 31.0 }, \
 
766
    .num_digits =  1, \
 
767
    .help_string = TRS("Minimum macroblock Lagrange multiplier.") \
 
768
  }
 
769
 
 
770
#define PARAM_MB_LMAX \
 
771
  {                \
 
772
    .name = "ff_mb_lmax", \
 
773
    .long_name = TRS("Maximum MB lagrange multipler"),    \
 
774
    .type = BG_PARAMETER_SLIDER_FLOAT,             \
 
775
    .val_default = { .val_f = 31.0 }, \
 
776
    .val_min =     {  .val_f = 1.0 }, \
 
777
    .val_min =     {  .val_f = 31.0 }, \
 
778
    .num_digits =  1, \
 
779
    .help_string = TRS("Maximum macroblock Lagrange multiplier.") \
 
780
  }
 
781
 
 
782
/** Motion estimation */
 
783
#define PARAM_ME_PENALTY_COMPENSATION  \
 
784
  {                \
 
785
    .name = "ff_me_penalty_compensation", \
 
786
    .long_name = TRS("ME penalty compensation"),    \
 
787
    .type = BG_PARAMETER_INT,             \
 
788
    .val_default = { .val_i = 256 }, \
 
789
  }
 
790
 
 
791
#define PARAM_BIDIR_REFINE  \
 
792
  {                \
 
793
    .name = "ff_bidir_refine", \
 
794
    .long_name = TRS("Bidir refine"),    \
 
795
    .type = BG_PARAMETER_SLIDER_INT,             \
 
796
    .val_default = { .val_i = 0 }, \
 
797
    .val_min =     { .val_i = 0 }, \
 
798
    .val_max =     { .val_i = 4 }, \
 
799
  }
 
800
 
 
801
#define PARAM_BRD_SCALE  \
 
802
  {                \
 
803
    .name = "ff_brd_scale", \
 
804
    .long_name = TRS("BRD scale"),    \
 
805
    .type = BG_PARAMETER_SLIDER_INT,             \
 
806
    .val_default = { .val_i = 0 }, \
 
807
    .val_min =     { .val_i = 0 }, \
 
808
    .val_max =     { .val_i = 10 }, \
 
809
  }
 
810
 
 
811
 
 
812
/** Frame types */
 
813
#define PARAM_SCENECHANGE_FACTOR  \
 
814
  { \
 
815
    .name = "ff_scenechange_factor", \
 
816
    .long_name = TRS("Scenechange factor"),    \
 
817
    .type = BG_PARAMETER_INT,             \
 
818
    .val_default = { .val_i = 0 }, \
 
819
    .help_string = TRS("Multiplied by qscale for each frame and added to scene_change_score") \
 
820
  }
 
821
 
 
822
/** Quantizer */
 
823
#define PARAM_QSCALE \
 
824
  {                              \
 
825
    .name =        "ff_qscale", \
 
826
    .long_name =   "Fixed quantizer",              \
 
827
    .type =        BG_PARAMETER_SLIDER_INT, \
 
828
    .val_default = { .val_i = 10 },    \
 
829
    .val_min =     { .val_i = 1 },    \
 
830
    .val_max =     { .val_i = 31 },    \
 
831
    .help_string = TRS("Quantizer for fixed quality encoding. Lower means better, 1 is not recommended")\
 
832
  }
 
833
 
 
834
/* Flags */
 
835
 
 
836
/** Quantizer */
 
837
#define PARAM_FLAG_QSCALE \
 
838
  {                              \
 
839
    .name =        "ff_flag_qscale", \
 
840
    .long_name =   TRS("Use fixed quantizer"),              \
 
841
    .type =        BG_PARAMETER_CHECKBUTTON, \
 
842
    .val_default = { .val_i = 0 },    \
 
843
    .help_string = TRS("Use fixed quality encoding"),\
 
844
  }
 
845
 
 
846
/** Motion estimation */
 
847
#define PARAM_FLAG_4MV \
 
848
  {                              \
 
849
    .name =        "ff_flag_4mv", \
 
850
    .long_name =   TRS("4 MV per MB allowed"),      \
 
851
    .type =        BG_PARAMETER_CHECKBUTTON, \
 
852
    .val_default = { .val_i = 0 },    \
 
853
    .help_string = TRS("Allow 4 motion vectors per macroblock (slightly better quality). Works better if MB decision mode is \"Fewest bits\" or \"Rate distoration\".") \
 
854
  }
 
855
 
 
856
/** Motion estimation */
 
857
#define PARAM_FLAG_QPEL \
 
858
  {                              \
 
859
    .name =        "ff_flag_qpel", \
 
860
    .long_name =   TRS("Use qpel MC"),      \
 
861
    .type =        BG_PARAMETER_CHECKBUTTON, \
 
862
    .val_default = { .val_i = 0 },    \
 
863
    .help_string = TRS("Use 1/4 pixel motion compensation.  Warning: QPEL is not supported by all decoders.") \
 
864
  }
 
865
 
 
866
/** Motion estimation */
 
867
#define PARAM_FLAG_GMC \
 
868
  {                              \
 
869
    .name =        "ff_flag_gmc", \
 
870
    .long_name =   TRS("Use global motion compensation"),      \
 
871
    .type =        BG_PARAMETER_CHECKBUTTON, \
 
872
    .val_default = { .val_i = 0 },    \
 
873
    .help_string = TRS("Warning: GMC is not supported by all decoders") \
 
874
  }
 
875
 
 
876
/** Motion estimation */
 
877
#define PARAM_FLAG_MV0 \
 
878
  { \
 
879
    .name =        "ff_flag_mv0", \
 
880
    .long_name =   TRS("Always try a MB with MV=<0,0>"),       \
 
881
    .type =        BG_PARAMETER_CHECKBUTTON, \
 
882
    .val_default = { .val_i = 0 }, \
 
883
  }
 
884
 
 
885
#define PARAM_FLAG_PART \
 
886
  {                              \
 
887
    .name =        "ff_flag_part", \
 
888
    .long_name =   TRS("Use data partitioning"),      \
 
889
    .type =        BG_PARAMETER_CHECKBUTTON, \
 
890
    .val_default = { .val_i = 0 },    \
 
891
    .help_string = TRS("Use data partitioning for more robustness if the video is "\
 
892
"for transmitting over unreliable channels") \
 
893
  }
 
894
 
 
895
 
 
896
#define PARAM_FLAG_GRAY \
 
897
  {                              \
 
898
    .name =        "ff_flag_gray", \
 
899
    .long_name =   TRS("Grayscale mode"),      \
 
900
    .type =        BG_PARAMETER_CHECKBUTTON, \
 
901
    .val_default = { .val_i = 0 },    \
 
902
  }
 
903
 
 
904
#define PARAM_FLAG_EMU_EGDE \
 
905
  {                              \
 
906
    .name =        "ff_flag_emu_edge", \
 
907
    .long_name =   TRS("Don't draw edges"),      \
 
908
    .type =        BG_PARAMETER_CHECKBUTTON, \
 
909
    .val_default = { .val_i = 0 },    \
 
910
  }
 
911
 
 
912
/** Masking */
 
913
#define PARAM_FLAG_NORMALIZE_AQP   \
 
914
  {                              \
 
915
    .name =        "ff_flag_normalize_aqp", \
 
916
    .long_name =   TRS("Normalize adaptive quantization"),      \
 
917
    .type =        BG_PARAMETER_CHECKBUTTON, \
 
918
    .val_default = { .val_i = 0 },    \
 
919
    .help_string = TRS("When using masking, try to adjust the per "\
 
920
    "macroblock quantizers to maintain the desired average") \
 
921
  }
 
922
 
 
923
#define PARAM_FLAG_ALT_SCAN   \
 
924
  {                              \
 
925
    .name =        "ff_flag_alt_scan", \
 
926
    .long_name =   TRS("Use alternative scantable"),      \
 
927
    .type =        BG_PARAMETER_CHECKBUTTON, \
 
928
    .val_default = { .val_i = 0 },    \
 
929
  }
 
930
 
 
931
/** Quantizer */
 
932
#if LIBAVCODEC_VERSION_INT < ((52<<16)+(0<<8)+0)
 
933
#define PARAM_TRELLIS   \
 
934
  {                              \
 
935
    .name =        "ff_flag_trellis_quant", \
 
936
    .long_name =   TRS("Use trellis quantization"),      \
 
937
    .type =        BG_PARAMETER_CHECKBUTTON, \
 
938
    .val_default = { .val_i = 0 },    \
 
939
    .help_string = TRS("Use trellis quantization (improves quality)") \
 
940
  }
 
941
#else
 
942
#define PARAM_TRELLIS   \
 
943
  {                              \
 
944
    .name =        "ff_trellis", \
 
945
    .long_name =   TRS("Use trellis quantization"),      \
 
946
    .type =        BG_PARAMETER_CHECKBUTTON, \
 
947
    .val_default = { .val_i = 0 },    \
 
948
    .help_string = TRS("Use trellis quantization (improves quality)") \
 
949
  }
 
950
#endif
 
951
 
 
952
#define PARAM_FLAG_BITEXACT   \
 
953
  {                              \
 
954
    .name =        "ff_flag_bitexact", \
 
955
    .long_name =   TRS("Use only bitexact stuff"),      \
 
956
    .type =        BG_PARAMETER_CHECKBUTTON, \
 
957
    .val_default = { .val_i = 0 },    \
 
958
    .help_string = TRS("Use only bitexact stuff (except (i)dct)") \
 
959
  }
 
960
 
 
961
#define PARAM_FLAG_AC_PRED_H263   \
 
962
  {                              \
 
963
    .name =        "ff_flag_ac_pred", \
 
964
    .long_name =   TRS("Advanced intra coding"),  \
 
965
    .type =        BG_PARAMETER_CHECKBUTTON, \
 
966
    .val_default = { .val_i = 0 },    \
 
967
  }
 
968
 
 
969
#define PARAM_FLAG_AC_PRED_MPEG4   \
 
970
  {                              \
 
971
    .name =        "ff_flag_ac_pred", \
 
972
    .long_name =   TRS("MPEG-4 AC prediction"),  \
 
973
    .type =        BG_PARAMETER_CHECKBUTTON, \
 
974
    .val_default = { .val_i = 0 },    \
 
975
  }
 
976
 
 
977
#define PARAM_FLAG_H263P_UMV   \
 
978
  {                              \
 
979
    .name =        "ff_flag_h263p_umv", \
 
980
    .long_name =   TRS("Unlimited motion vector"),  \
 
981
    .type =        BG_PARAMETER_CHECKBUTTON, \
 
982
    .val_default = { .val_i = 0 },    \
 
983
  }
 
984
 
 
985
#define PARAM_FLAG_CBP_RD \
 
986
  {                       \
 
987
    .name = "ff_flag_cbp_rd", \
 
988
    .long_name = TRS("CBP RD"), \
 
989
    .type =        BG_PARAMETER_CHECKBUTTON, \
 
990
    .val_default = { .val_i = 0 },    \
 
991
    .help_string = TRS("Use rate distortion optimization for cbp"),\
 
992
  }
 
993
 
 
994
#define PARAM_FLAG_QP_RD \
 
995
  {                      \
 
996
    .name = "ff_flag_qp_rd", \
 
997
    .long_name = TRS("QP RD"), \
 
998
    .type =        BG_PARAMETER_CHECKBUTTON, \
 
999
    .val_default = { .val_i = 0 },    \
 
1000
    .help_string = TRS("Use rate distortion optimization for qp selection"),\
 
1001
  }
 
1002
 
 
1003
#define PARAM_FLAG_H263P_AIV \
 
1004
  {                      \
 
1005
    .name = "ff_flag_h263p_aiv", \
 
1006
    .long_name = TRS("Alternative inter vlc"), \
 
1007
    .type =        BG_PARAMETER_CHECKBUTTON, \
 
1008
    .val_default = { .val_i = 0 },    \
 
1009
  }
 
1010
 
 
1011
/* H.263(+) */
 
1012
#define PARAM_FLAG_OBMC \
 
1013
  { \
 
1014
    .name = "ff_flag_obmc", \
 
1015
    .long_name = TRS("OBMC"), \
 
1016
    .type =        BG_PARAMETER_CHECKBUTTON, \
 
1017
    .val_default = { .val_i = 0 },    \
 
1018
    .help_string = TRS("Overlapped block motion compensation (only supported with with simple MB decision)") \
 
1019
  }
 
1020
 
 
1021
#define PARAM_FLAG_LOOP_FILTER              \
 
1022
  { \
 
1023
    .name = "ff_flag_loop_filter", \
 
1024
    .long_name = TRS("Loop filter"), \
 
1025
    .type =        BG_PARAMETER_CHECKBUTTON, \
 
1026
    .val_default = { .val_i = 0 },    \
 
1027
  }
 
1028
 
 
1029
#define PARAM_FLAG_H263P_SLICE_STRUCT      \
 
1030
  { \
 
1031
    .name = "ff_flag_h263p_slice_struct", \
 
1032
    .long_name = TRS("H263P slice struct"), \
 
1033
    .type =        BG_PARAMETER_CHECKBUTTON, \
 
1034
    .val_default = { .val_i = 0 },    \
 
1035
  }
 
1036
 
 
1037
/** Frame types */
 
1038
#define PARAM_FLAG_CLOSED_GOP \
 
1039
  { \
 
1040
    .name = "ff_flag_closed_gop", \
 
1041
    .long_name = TRS("Close all GOPs"), \
 
1042
    .type =        BG_PARAMETER_CHECKBUTTON, \
 
1043
    .val_default = { .val_i = 0 },    \
 
1044
  }
 
1045
 
 
1046
#define PARAM_FLAG2_FAST \
 
1047
  { \
 
1048
    .name = "ff_flag2_fast", \
 
1049
    .long_name = TRS("Allow fast encoding"), \
 
1050
    .type =        BG_PARAMETER_CHECKBUTTON, \
 
1051
    .val_default = { .val_i = 0 },    \
 
1052
    .help_string = TRS("Allow non spec compliant speedup tricks") \
 
1053
}
 
1054
 
 
1055
/** Frame types */
 
1056
#define PARAM_FLAG2_STRICT_GOP                     \
 
1057
  { \
 
1058
    .name = "ff_flag2_strict_gop", \
 
1059
    .long_name = TRS("Strictly enforce GOP size"), \
 
1060
    .type =        BG_PARAMETER_CHECKBUTTON, \
 
1061
    .val_default = { .val_i = 0 },    \
 
1062
}
 
1063