Line data Source code
1 : /*
2 : * Copyright (c) 2016, Alliance for Open Media. All rights reserved
3 : *
4 : * This source code is subject to the terms of the BSD 2 Clause License and
5 : * the Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License
6 : * was not distributed with this source code in the LICENSE file, you can
7 : * obtain it at www.aomedia.org/license/software. If the Alliance for Open
8 : * Media Patent License 1.0 was not distributed with this source code in the
9 : * PATENTS file, you can obtain it at www.aomedia.org/license/patent.
10 : */
11 : #ifndef AOM_AOMCX_H_
12 : #define AOM_AOMCX_H_
13 :
14 : /*!\defgroup aom_encoder AOMedia AOM/AV1 Encoder
15 : * \ingroup aom
16 : *
17 : * @{
18 : */
19 : #include "./aom.h"
20 : #include "./aom_encoder.h"
21 :
22 : /*!\file
23 : * \brief Provides definitions for using AOM or AV1 encoder algorithm within the
24 : * aom Codec Interface.
25 : */
26 :
27 : #ifdef __cplusplus
28 : extern "C" {
29 : #endif
30 :
31 : /*!\name Algorithm interface for AV1
32 : *
33 : * This interface provides the capability to encode raw AV1 streams.
34 : * @{
35 : */
36 : extern aom_codec_iface_t aom_codec_av1_cx_algo;
37 : extern aom_codec_iface_t *aom_codec_av1_cx(void);
38 : /*!@} - end algorithm interface member group*/
39 :
40 : /*
41 : * Algorithm Flags
42 : */
43 :
44 : /*!\brief Don't reference the last frame
45 : *
46 : * When this flag is set, the encoder will not use the last frame as a
47 : * predictor. When not set, the encoder will choose whether to use the
48 : * last frame or not automatically.
49 : */
50 : #define AOM_EFLAG_NO_REF_LAST (1 << 16)
51 :
52 : /*!\brief Don't reference the golden frame
53 : *
54 : * When this flag is set, the encoder will not use the golden frame as a
55 : * predictor. When not set, the encoder will choose whether to use the
56 : * golden frame or not automatically.
57 : */
58 : #define AOM_EFLAG_NO_REF_GF (1 << 17)
59 :
60 : /*!\brief Don't reference the alternate reference frame
61 : *
62 : * When this flag is set, the encoder will not use the alt ref frame as a
63 : * predictor. When not set, the encoder will choose whether to use the
64 : * alt ref frame or not automatically.
65 : */
66 : #define AOM_EFLAG_NO_REF_ARF (1 << 21)
67 :
68 : /*!\brief Don't update the last frame
69 : *
70 : * When this flag is set, the encoder will not update the last frame with
71 : * the contents of the current frame.
72 : */
73 : #define AOM_EFLAG_NO_UPD_LAST (1 << 18)
74 :
75 : /*!\brief Don't update the golden frame
76 : *
77 : * When this flag is set, the encoder will not update the golden frame with
78 : * the contents of the current frame.
79 : */
80 : #define AOM_EFLAG_NO_UPD_GF (1 << 22)
81 :
82 : /*!\brief Don't update the alternate reference frame
83 : *
84 : * When this flag is set, the encoder will not update the alt ref frame with
85 : * the contents of the current frame.
86 : */
87 : #define AOM_EFLAG_NO_UPD_ARF (1 << 23)
88 :
89 : /*!\brief Force golden frame update
90 : *
91 : * When this flag is set, the encoder copy the contents of the current frame
92 : * to the golden frame buffer.
93 : */
94 : #define AOM_EFLAG_FORCE_GF (1 << 19)
95 :
96 : /*!\brief Force alternate reference frame update
97 : *
98 : * When this flag is set, the encoder copy the contents of the current frame
99 : * to the alternate reference frame buffer.
100 : */
101 : #define AOM_EFLAG_FORCE_ARF (1 << 24)
102 :
103 : /*!\brief Disable entropy update
104 : *
105 : * When this flag is set, the encoder will not update its internal entropy
106 : * model based on the entropy of this frame.
107 : */
108 : #define AOM_EFLAG_NO_UPD_ENTROPY (1 << 20)
109 :
110 : /*!\brief AVx encoder control functions
111 : *
112 : * This set of macros define the control functions available for AVx
113 : * encoder interface.
114 : *
115 : * \sa #aom_codec_control
116 : */
117 : enum aome_enc_control_id {
118 : /*!\brief Codec control function to set which reference frame encoder can use.
119 : */
120 : AOME_USE_REFERENCE = 7,
121 :
122 : /*!\brief Codec control function to pass an ROI map to encoder.
123 : */
124 : AOME_SET_ROI_MAP = 8,
125 :
126 : /*!\brief Codec control function to pass an Active map to encoder.
127 : */
128 : AOME_SET_ACTIVEMAP,
129 :
130 : /*!\brief Codec control function to set encoder scaling mode.
131 : */
132 : AOME_SET_SCALEMODE = 11,
133 :
134 : /*!\brief Codec control function to set encoder internal speed settings.
135 : *
136 : * Changes in this value influences, among others, the encoder's selection
137 : * of motion estimation methods. Values greater than 0 will increase encoder
138 : * speed at the expense of quality.
139 : *
140 : * \note Valid range: 0..8
141 : */
142 : AOME_SET_CPUUSED = 13,
143 :
144 : /*!\brief Codec control function to enable automatic set and use alf frames.
145 : */
146 : AOME_SET_ENABLEAUTOALTREF,
147 :
148 : /*!\brief Codec control function to set sharpness.
149 : */
150 : AOME_SET_SHARPNESS = AOME_SET_ENABLEAUTOALTREF + 2,
151 :
152 : /*!\brief Codec control function to set the threshold for MBs treated static.
153 : */
154 : AOME_SET_STATIC_THRESHOLD,
155 :
156 : /*!\brief Codec control function to get last quantizer chosen by the encoder.
157 : *
158 : * Return value uses internal quantizer scale defined by the codec.
159 : */
160 : AOME_GET_LAST_QUANTIZER = AOME_SET_STATIC_THRESHOLD + 2,
161 :
162 : /*!\brief Codec control function to get last quantizer chosen by the encoder.
163 : *
164 : * Return value uses the 0..63 scale as used by the rc_*_quantizer config
165 : * parameters.
166 : */
167 : AOME_GET_LAST_QUANTIZER_64,
168 :
169 : /*!\brief Codec control function to set the max no of frames to create arf.
170 : */
171 : AOME_SET_ARNR_MAXFRAMES,
172 :
173 : /*!\brief Codec control function to set the filter strength for the arf.
174 : */
175 : AOME_SET_ARNR_STRENGTH,
176 :
177 : /*!\brief Codec control function to set visual tuning.
178 : */
179 : AOME_SET_TUNING = AOME_SET_ARNR_STRENGTH + 2,
180 :
181 : /*!\brief Codec control function to set constrained quality level.
182 : *
183 : * \attention For this value to be used aom_codec_enc_cfg_t::g_usage must be
184 : * set to #AOM_CQ.
185 : * \note Valid range: 0..63
186 : */
187 : AOME_SET_CQ_LEVEL,
188 :
189 : /*!\brief Codec control function to set Max data rate for Intra frames.
190 : *
191 : * This value controls additional clamping on the maximum size of a
192 : * keyframe. It is expressed as a percentage of the average
193 : * per-frame bitrate, with the special (and default) value 0 meaning
194 : * unlimited, or no additional clamping beyond the codec's built-in
195 : * algorithm.
196 : *
197 : * For example, to allocate no more than 4.5 frames worth of bitrate
198 : * to a keyframe, set this to 450.
199 : */
200 : AOME_SET_MAX_INTRA_BITRATE_PCT,
201 :
202 : /*!\brief Codec control function to set max data rate for Inter frames.
203 : *
204 : * This value controls additional clamping on the maximum size of an
205 : * inter frame. It is expressed as a percentage of the average
206 : * per-frame bitrate, with the special (and default) value 0 meaning
207 : * unlimited, or no additional clamping beyond the codec's built-in
208 : * algorithm.
209 : *
210 : * For example, to allow no more than 4.5 frames worth of bitrate
211 : * to an inter frame, set this to 450.
212 : */
213 : AV1E_SET_MAX_INTER_BITRATE_PCT = AOME_SET_MAX_INTRA_BITRATE_PCT + 2,
214 :
215 : /*!\brief Boost percentage for Golden Frame in CBR mode.
216 : *
217 : * This value controls the amount of boost given to Golden Frame in
218 : * CBR mode. It is expressed as a percentage of the average
219 : * per-frame bitrate, with the special (and default) value 0 meaning
220 : * the feature is off, i.e., no golden frame boost in CBR mode and
221 : * average bitrate target is used.
222 : *
223 : * For example, to allow 100% more bits, i.e, 2X, in a golden frame
224 : * than average frame, set this to 100.
225 : */
226 : AV1E_SET_GF_CBR_BOOST_PCT,
227 :
228 : /*!\brief Codec control function to set lossless encoding mode.
229 : *
230 : * AV1 can operate in lossless encoding mode, in which the bitstream
231 : * produced will be able to decode and reconstruct a perfect copy of
232 : * input source. This control function provides a mean to switch encoder
233 : * into lossless coding mode(1) or normal coding mode(0) that may be lossy.
234 : * 0 = lossy coding mode
235 : * 1 = lossless coding mode
236 : *
237 : * By default, encoder operates in normal coding mode (maybe lossy).
238 : */
239 : AV1E_SET_LOSSLESS = AV1E_SET_GF_CBR_BOOST_PCT + 2,
240 :
241 : /*!\brief Codec control function to set number of tile columns.
242 : *
243 : * In encoding and decoding, AV1 allows an input image frame be partitioned
244 : * into separated vertical tile columns, which can be encoded or decoded
245 : * independently. This enables easy implementation of parallel encoding and
246 : * decoding. This control requests the encoder to use column tiles in
247 : * encoding an input frame, with number of tile columns (in Log2 unit) as
248 : * the parameter:
249 : * 0 = 1 tile column
250 : * 1 = 2 tile columns
251 : * 2 = 4 tile columns
252 : * .....
253 : * n = 2**n tile columns
254 : * The requested tile columns will be capped by encoder based on image size
255 : * limitation (The minimum width of a tile column is 256 pixel, the maximum
256 : * is 4096).
257 : *
258 : * By default, the value is 0, i.e. one single column tile for entire image.
259 : */
260 : AV1E_SET_TILE_COLUMNS,
261 :
262 : /*!\brief Codec control function to set number of tile rows.
263 : *
264 : * In encoding and decoding, AV1 allows an input image frame be partitioned
265 : * into separated horizontal tile rows. Tile rows are encoded or decoded
266 : * sequentially. Even though encoding/decoding of later tile rows depends on
267 : * earlier ones, this allows the encoder to output data packets for tile rows
268 : * prior to completely processing all tile rows in a frame, thereby reducing
269 : * the latency in processing between input and output. The parameter
270 : * for this control describes the number of tile rows, which has a valid
271 : * range [0, 2]:
272 : * 0 = 1 tile row
273 : * 1 = 2 tile rows
274 : * 2 = 4 tile rows
275 : *
276 : * By default, the value is 0, i.e. one single row tile for entire image.
277 : */
278 : AV1E_SET_TILE_ROWS,
279 :
280 : /*!\brief Codec control function to enable frame parallel decoding feature.
281 : *
282 : * AV1 has a bitstream feature to reduce decoding dependency between frames
283 : * by turning off backward update of probability context used in encoding
284 : * and decoding. This allows staged parallel processing of more than one
285 : * video frames in the decoder. This control function provides a mean to
286 : * turn this feature on or off for bitstreams produced by encoder.
287 : *
288 : * By default, this feature is off.
289 : */
290 : AV1E_SET_FRAME_PARALLEL_DECODING,
291 :
292 : /*!\brief Codec control function to set adaptive quantization mode.
293 : *
294 : * AV1 has a segment based feature that allows encoder to adaptively change
295 : * quantization parameter for each segment within a frame to improve the
296 : * subjective quality. This control makes encoder operate in one of the
297 : * several AQ_modes supported.
298 : *
299 : * By default, encoder operates with AQ_Mode 0(adaptive quantization off).
300 : */
301 : AV1E_SET_AQ_MODE,
302 :
303 : /*!\brief Codec control function to enable/disable periodic Q boost.
304 : *
305 : * One AV1 encoder speed feature is to enable quality boost by lowering
306 : * frame level Q periodically. This control function provides a mean to
307 : * turn on/off this feature.
308 : * 0 = off
309 : * 1 = on
310 : *
311 : * By default, the encoder is allowed to use this feature for appropriate
312 : * encoding modes.
313 : */
314 : AV1E_SET_FRAME_PERIODIC_BOOST,
315 :
316 : /*!\brief Codec control function to set noise sensitivity.
317 : *
318 : * 0: off, 1: On(YOnly)
319 : */
320 : AV1E_SET_NOISE_SENSITIVITY,
321 :
322 : /*!\brief Codec control function to set content type.
323 : * \note Valid parameter range:
324 : * AOM_CONTENT_DEFAULT = Regular video content (Default)
325 : * AOM_CONTENT_SCREEN = Screen capture content
326 : */
327 : AV1E_SET_TUNE_CONTENT,
328 :
329 : /*!\brief Codec control function to set color space info.
330 : * \note Valid ranges: 0..7, default is "UNKNOWN".
331 : * 0 = UNKNOWN,
332 : * 1 = BT_601
333 : * 2 = BT_709
334 : * 3 = SMPTE_170
335 : * 4 = SMPTE_240
336 : * 5 = BT_2020
337 : * 6 = RESERVED
338 : * 7 = SRGB
339 : */
340 : AV1E_SET_COLOR_SPACE,
341 :
342 : /*!\brief Codec control function to set minimum interval between GF/ARF frames
343 : *
344 : * By default the value is set as 4.
345 : */
346 : AV1E_SET_MIN_GF_INTERVAL,
347 :
348 : /*!\brief Codec control function to set minimum interval between GF/ARF frames
349 : *
350 : * By default the value is set as 16.
351 : */
352 : AV1E_SET_MAX_GF_INTERVAL,
353 :
354 : /*!\brief Codec control function to get an Active map back from the encoder.
355 : */
356 : AV1E_GET_ACTIVEMAP,
357 :
358 : /*!\brief Codec control function to set color range bit.
359 : * \note Valid ranges: 0..1, default is 0
360 : * 0 = Limited range (16..235 or HBD equivalent)
361 : * 1 = Full range (0..255 or HBD equivalent)
362 : */
363 : AV1E_SET_COLOR_RANGE,
364 :
365 : /*!\brief Codec control function to set intended rendering image size.
366 : *
367 : * By default, this is identical to the image size in pixels.
368 : */
369 : AV1E_SET_RENDER_SIZE,
370 :
371 : /*!\brief Codec control function to set target level.
372 : *
373 : * 255: off (default); 0: only keep level stats; 10: target for level 1.0;
374 : * 11: target for level 1.1; ... 62: target for level 6.2
375 : */
376 : AV1E_SET_TARGET_LEVEL,
377 :
378 : /*!\brief Codec control function to get bitstream level.
379 : */
380 : AV1E_GET_LEVEL,
381 :
382 : /*!\brief Codec control function to set intended superblock size.
383 : *
384 : * By default, the superblock size is determined separately for each
385 : * frame by the encoder.
386 : *
387 : * Experiment: EXT_PARTITION
388 : */
389 : AV1E_SET_SUPERBLOCK_SIZE,
390 :
391 : /*!\brief Codec control function to enable automatic set and use
392 : * bwd-pred frames.
393 : *
394 : * Experiment: EXT_REFS
395 : */
396 : AOME_SET_ENABLEAUTOBWDREF,
397 :
398 : /*!\brief Codec control function to encode with quantisation matrices.
399 : *
400 : * AOM can operate with default quantisation matrices dependent on
401 : * quantisation level and block type.
402 : * 0 = do not use quantisation matrices
403 : * 1 = use quantisation matrices
404 : *
405 : * By default, the encoder operates without quantisation matrices.
406 : *
407 : * Experiment: AOM_QM
408 : */
409 : AV1E_SET_ENABLE_QM,
410 :
411 : /*!\brief Codec control function to set the min quant matrix flatness.
412 : *
413 : * AOM can operate with different ranges of quantisation matrices.
414 : * As quantisation levels increase, the matrices get flatter. This
415 : * control sets the minimum level of flatness from which the matrices
416 : * are determined.
417 : *
418 : * By default, the encoder sets this minimum at half the available
419 : * range.
420 : *
421 : * Experiment: AOM_QM
422 : */
423 : AV1E_SET_QM_MIN,
424 :
425 : /*!\brief Codec control function to set the max quant matrix flatness.
426 : *
427 : * AOM can operate with different ranges of quantisation matrices.
428 : * As quantisation levels increase, the matrices get flatter. This
429 : * control sets the maximum level of flatness possible.
430 : *
431 : * By default, the encoder sets this maximum at the top of the
432 : * available range.
433 : *
434 : * Experiment: AOM_QM
435 : */
436 : AV1E_SET_QM_MAX,
437 :
438 : /*!\brief Codec control function to set a maximum number of tile groups.
439 : *
440 : * This will set the maximum number of tile groups. This will be
441 : * overridden if an MTU size is set. The default value is 1.
442 : *
443 : * Experiment: TILE_GROUPS
444 : */
445 : AV1E_SET_NUM_TG,
446 :
447 : /*!\brief Codec control function to set an MTU size for a tile group.
448 : *
449 : * This will set the maximum number of bytes in a tile group. This can be
450 : * exceeded only if a single tile is larger than this amount.
451 : *
452 : * By default, the value is 0, in which case a fixed number of tile groups
453 : * is used.
454 : *
455 : * Experiment: TILE_GROUPS
456 : */
457 : AV1E_SET_MTU,
458 :
459 : /*!\brief Codec control function to set dependent_horz_tiles.
460 : *
461 : * In encoding and decoding, AV1 allows enabling dependent horizontal tile
462 : * The parameter for this control describes the value of this flag,
463 : * which has a valid range [0, 1]:
464 : * 0 = disable dependent horizontal tile
465 : * 1 = enable dependent horizontal tile,
466 : *
467 : * By default, the value is 0, i.e. disable dependent horizontal tile.
468 : */
469 : AV1E_SET_TILE_DEPENDENT_ROWS,
470 :
471 : /*!\brief Codec control function to set the number of symbols in an ANS data
472 : * window.
473 : *
474 : * The number of ANS symbols (both boolean and non-booleans alphabets) in an
475 : * ANS data window is set to 1 << value.
476 : *
477 : * \note Valid range: [8, 23]
478 : *
479 : * Experiment: ANS
480 : */
481 : AV1E_SET_ANS_WINDOW_SIZE_LOG2,
482 :
483 : /*!\brief Codec control function to set temporal mv prediction
484 : * enabling/disabling.
485 : *
486 : * This will enable or disable temporal mv predicton. The default value is 0.
487 : *
488 : * Experiment: TEMPMV_SIGNALING
489 : */
490 : AV1E_SET_DISABLE_TEMPMV,
491 :
492 : /*!\brief Codec control function to set loop_filter_across_tiles_enabled.
493 : *
494 : * In encoding and decoding, AV1 allows disabling loop filter across tile
495 : * boundary The parameter for this control describes the value of this flag,
496 : * which has a valid range [0, 1]:
497 : * 0 = disable loop filter across tile boundary
498 : * 1 = enable loop filter across tile boundary
499 : *
500 : * By default, the value is 1, i.e. enable loop filter across tile boundary.
501 : *
502 : * Experiment: LOOPFILTERING_ACROSS_TILES
503 : */
504 : AV1E_SET_TILE_LOOPFILTER,
505 :
506 : /*!\brief Codec control function to set the delta q mode
507 : *
508 : * AV1 has a segment based feature that allows encoder to adaptively change
509 : * quantization parameter for each segment within a frame to improve the
510 : * subjective quality. the delta q mode is added on top of segment based
511 : * feature, and allows control per 64x64 q and lf delta.This control makes
512 : * encoder operate in one of the several DELTA_Q_modes supported.
513 : *
514 : * By default, encoder operates with DELTAQ_Mode 0(deltaq signaling off).
515 : */
516 : AV1E_SET_DELTAQ_MODE,
517 :
518 : /*!\brief Codec control function to set the tile encoding mode to 0 or 1.
519 : *
520 : * 0 means that the tile encoding mode is TILE_NORMAL, and 1 means that the
521 : * tile encoding mode is TILE_VR.
522 : *
523 : * Experiment: EXT_TILE
524 : */
525 : AV1E_SET_TILE_ENCODING_MODE,
526 :
527 : /*!\brief Codec control function to enable the extreme motion vector unit test
528 : * in AV1. Please note that this is only used in motion vector unit test.
529 : *
530 : * 0 : off, 1 : MAX_EXTREME_MV, 2 : MIN_EXTREME_MV
531 : */
532 : AV1E_ENABLE_MOTION_VECTOR_UNIT_TEST,
533 : };
534 :
535 : /*!\brief aom 1-D scaling mode
536 : *
537 : * This set of constants define 1-D aom scaling modes
538 : */
539 : typedef enum aom_scaling_mode_1d {
540 : AOME_NORMAL = 0,
541 : AOME_FOURFIVE = 1,
542 : AOME_THREEFIVE = 2,
543 : AOME_ONETWO = 3
544 : } AOM_SCALING_MODE;
545 :
546 : /*!\brief aom region of interest map
547 : *
548 : * These defines the data structures for the region of interest map
549 : *
550 : */
551 :
552 : typedef struct aom_roi_map {
553 : /*! An id between 0 and 3 for each 16x16 region within a frame. */
554 : unsigned char *roi_map;
555 : unsigned int rows; /**< Number of rows. */
556 : unsigned int cols; /**< Number of columns. */
557 : // TODO(paulwilkins): broken for AV1 which has 8 segments
558 : // q and loop filter deltas for each segment
559 : // (see MAX_MB_SEGMENTS)
560 : int delta_q[4]; /**< Quantizer deltas. */
561 : int delta_lf[4]; /**< Loop filter deltas. */
562 : /*! Static breakout threshold for each segment. */
563 : unsigned int static_threshold[4];
564 : } aom_roi_map_t;
565 :
566 : /*!\brief aom active region map
567 : *
568 : * These defines the data structures for active region map
569 : *
570 : */
571 :
572 : typedef struct aom_active_map {
573 : /*!\brief specify an on (1) or off (0) each 16x16 region within a frame */
574 : unsigned char *active_map;
575 : unsigned int rows; /**< number of rows */
576 : unsigned int cols; /**< number of cols */
577 : } aom_active_map_t;
578 :
579 : /*!\brief aom image scaling mode
580 : *
581 : * This defines the data structure for image scaling mode
582 : *
583 : */
584 : typedef struct aom_scaling_mode {
585 : AOM_SCALING_MODE h_scaling_mode; /**< horizontal scaling mode */
586 : AOM_SCALING_MODE v_scaling_mode; /**< vertical scaling mode */
587 : } aom_scaling_mode_t;
588 :
589 : /*!brief AV1 encoder content type */
590 : typedef enum {
591 : AOM_CONTENT_DEFAULT,
592 : AOM_CONTENT_SCREEN,
593 : AOM_CONTENT_INVALID
594 : } aom_tune_content;
595 :
596 : /*!\brief Model tuning parameters
597 : *
598 : * Changes the encoder to tune for certain types of input material.
599 : *
600 : */
601 : typedef enum { AOM_TUNE_PSNR, AOM_TUNE_SSIM } aom_tune_metric;
602 :
603 : /*!\cond */
604 : /*!\brief Encoder control function parameter type
605 : *
606 : * Defines the data types that AOME/AV1E control functions take. Note that
607 : * additional common controls are defined in aom.h
608 : *
609 : */
610 :
611 0 : AOM_CTRL_USE_TYPE_DEPRECATED(AOME_USE_REFERENCE, int)
612 : #define AOM_CTRL_AOME_USE_REFERENCE
613 0 : AOM_CTRL_USE_TYPE(AOME_SET_ROI_MAP, aom_roi_map_t *)
614 : #define AOM_CTRL_AOME_SET_ROI_MAP
615 0 : AOM_CTRL_USE_TYPE(AOME_SET_ACTIVEMAP, aom_active_map_t *)
616 : #define AOM_CTRL_AOME_SET_ACTIVEMAP
617 0 : AOM_CTRL_USE_TYPE(AOME_SET_SCALEMODE, aom_scaling_mode_t *)
618 : #define AOM_CTRL_AOME_SET_SCALEMODE
619 :
620 0 : AOM_CTRL_USE_TYPE(AOME_SET_CPUUSED, int)
621 : #define AOM_CTRL_AOME_SET_CPUUSED
622 0 : AOM_CTRL_USE_TYPE(AOME_SET_ENABLEAUTOALTREF, unsigned int)
623 : #define AOM_CTRL_AOME_SET_ENABLEAUTOALTREF
624 :
625 0 : AOM_CTRL_USE_TYPE(AOME_SET_ENABLEAUTOBWDREF, unsigned int)
626 : #define AOM_CTRL_AOME_SET_ENABLEAUTOBWDREF
627 :
628 0 : AOM_CTRL_USE_TYPE(AOME_SET_SHARPNESS, unsigned int)
629 : #define AOM_CTRL_AOME_SET_SHARPNESS
630 0 : AOM_CTRL_USE_TYPE(AOME_SET_STATIC_THRESHOLD, unsigned int)
631 : #define AOM_CTRL_AOME_SET_STATIC_THRESHOLD
632 :
633 0 : AOM_CTRL_USE_TYPE(AOME_SET_ARNR_MAXFRAMES, unsigned int)
634 : #define AOM_CTRL_AOME_SET_ARNR_MAXFRAMES
635 0 : AOM_CTRL_USE_TYPE(AOME_SET_ARNR_STRENGTH, unsigned int)
636 : #define AOM_CTRL_AOME_SET_ARNR_STRENGTH
637 0 : AOM_CTRL_USE_TYPE(AOME_SET_TUNING, int) /* aom_tune_metric */
638 : #define AOM_CTRL_AOME_SET_TUNING
639 0 : AOM_CTRL_USE_TYPE(AOME_SET_CQ_LEVEL, unsigned int)
640 : #define AOM_CTRL_AOME_SET_CQ_LEVEL
641 :
642 0 : AOM_CTRL_USE_TYPE(AV1E_SET_TILE_COLUMNS, int)
643 : #define AOM_CTRL_AV1E_SET_TILE_COLUMNS
644 0 : AOM_CTRL_USE_TYPE(AV1E_SET_TILE_ROWS, int)
645 : #define AOM_CTRL_AV1E_SET_TILE_ROWS
646 :
647 0 : AOM_CTRL_USE_TYPE(AV1E_SET_TILE_DEPENDENT_ROWS, int)
648 : #define AOM_CTRL_AV1E_SET_TILE_DEPENDENT_ROWS
649 :
650 0 : AOM_CTRL_USE_TYPE(AV1E_SET_TILE_LOOPFILTER, int)
651 : #define AOM_CTRL_AV1E_SET_TILE_LOOPFILTER
652 :
653 0 : AOM_CTRL_USE_TYPE(AOME_GET_LAST_QUANTIZER, int *)
654 : #define AOM_CTRL_AOME_GET_LAST_QUANTIZER
655 0 : AOM_CTRL_USE_TYPE(AOME_GET_LAST_QUANTIZER_64, int *)
656 : #define AOM_CTRL_AOME_GET_LAST_QUANTIZER_64
657 :
658 0 : AOM_CTRL_USE_TYPE(AOME_SET_MAX_INTRA_BITRATE_PCT, unsigned int)
659 : #define AOM_CTRL_AOME_SET_MAX_INTRA_BITRATE_PCT
660 0 : AOM_CTRL_USE_TYPE(AOME_SET_MAX_INTER_BITRATE_PCT, unsigned int)
661 : #define AOM_CTRL_AOME_SET_MAX_INTER_BITRATE_PCT
662 :
663 0 : AOM_CTRL_USE_TYPE(AV1E_SET_GF_CBR_BOOST_PCT, unsigned int)
664 : #define AOM_CTRL_AV1E_SET_GF_CBR_BOOST_PCT
665 :
666 0 : AOM_CTRL_USE_TYPE(AV1E_SET_LOSSLESS, unsigned int)
667 : #define AOM_CTRL_AV1E_SET_LOSSLESS
668 :
669 0 : AOM_CTRL_USE_TYPE(AV1E_SET_ENABLE_QM, unsigned int)
670 : #define AOM_CTRL_AV1E_SET_ENABLE_QM
671 :
672 0 : AOM_CTRL_USE_TYPE(AV1E_SET_QM_MIN, unsigned int)
673 : #define AOM_CTRL_AV1E_SET_QM_MIN
674 :
675 0 : AOM_CTRL_USE_TYPE(AV1E_SET_QM_MAX, unsigned int)
676 : #define AOM_CTRL_AV1E_SET_QM_MAX
677 :
678 0 : AOM_CTRL_USE_TYPE(AV1E_SET_NUM_TG, unsigned int)
679 : #define AOM_CTRL_AV1E_SET_NUM_TG
680 0 : AOM_CTRL_USE_TYPE(AV1E_SET_MTU, unsigned int)
681 : #define AOM_CTRL_AV1E_SET_MTU
682 :
683 0 : AOM_CTRL_USE_TYPE(AV1E_SET_DISABLE_TEMPMV, unsigned int)
684 : #define AOM_CTRL_AV1E_SET_DISABLE_TEMPMV
685 :
686 0 : AOM_CTRL_USE_TYPE(AV1E_SET_FRAME_PARALLEL_DECODING, unsigned int)
687 : #define AOM_CTRL_AV1E_SET_FRAME_PARALLEL_DECODING
688 :
689 0 : AOM_CTRL_USE_TYPE(AV1E_SET_AQ_MODE, unsigned int)
690 : #define AOM_CTRL_AV1E_SET_AQ_MODE
691 :
692 0 : AOM_CTRL_USE_TYPE(AV1E_SET_DELTAQ_MODE, unsigned int)
693 : #define AOM_CTRL_AV1E_SET_DELTAQ_MODE
694 :
695 0 : AOM_CTRL_USE_TYPE(AV1E_SET_FRAME_PERIODIC_BOOST, unsigned int)
696 : #define AOM_CTRL_AV1E_SET_FRAME_PERIODIC_BOOST
697 :
698 0 : AOM_CTRL_USE_TYPE(AV1E_SET_NOISE_SENSITIVITY, unsigned int)
699 : #define AOM_CTRL_AV1E_SET_NOISE_SENSITIVITY
700 :
701 0 : AOM_CTRL_USE_TYPE(AV1E_SET_TUNE_CONTENT, int) /* aom_tune_content */
702 : #define AOM_CTRL_AV1E_SET_TUNE_CONTENT
703 :
704 0 : AOM_CTRL_USE_TYPE(AV1E_SET_COLOR_SPACE, int)
705 : #define AOM_CTRL_AV1E_SET_COLOR_SPACE
706 :
707 0 : AOM_CTRL_USE_TYPE(AV1E_SET_MIN_GF_INTERVAL, unsigned int)
708 : #define AOM_CTRL_AV1E_SET_MIN_GF_INTERVAL
709 :
710 0 : AOM_CTRL_USE_TYPE(AV1E_SET_MAX_GF_INTERVAL, unsigned int)
711 : #define AOM_CTRL_AV1E_SET_MAX_GF_INTERVAL
712 :
713 0 : AOM_CTRL_USE_TYPE(AV1E_GET_ACTIVEMAP, aom_active_map_t *)
714 : #define AOM_CTRL_AV1E_GET_ACTIVEMAP
715 :
716 0 : AOM_CTRL_USE_TYPE(AV1E_SET_COLOR_RANGE, int)
717 : #define AOM_CTRL_AV1E_SET_COLOR_RANGE
718 :
719 : /*!\brief
720 : *
721 : * TODO(rbultje) : add support of the control in ffmpeg
722 : */
723 : #define AOM_CTRL_AV1E_SET_RENDER_SIZE
724 0 : AOM_CTRL_USE_TYPE(AV1E_SET_RENDER_SIZE, int *)
725 :
726 0 : AOM_CTRL_USE_TYPE(AV1E_SET_SUPERBLOCK_SIZE, unsigned int)
727 : #define AOM_CTRL_AV1E_SET_SUPERBLOCK_SIZE
728 :
729 0 : AOM_CTRL_USE_TYPE(AV1E_SET_TARGET_LEVEL, unsigned int)
730 : #define AOM_CTRL_AV1E_SET_TARGET_LEVEL
731 :
732 0 : AOM_CTRL_USE_TYPE(AV1E_GET_LEVEL, int *)
733 : #define AOM_CTRL_AV1E_GET_LEVEL
734 :
735 0 : AOM_CTRL_USE_TYPE(AV1E_SET_ANS_WINDOW_SIZE_LOG2, unsigned int)
736 : #define AOM_CTRL_AV1E_SET_ANS_WINDOW_SIZE_LOG2
737 :
738 0 : AOM_CTRL_USE_TYPE(AV1E_SET_TILE_ENCODING_MODE, unsigned int)
739 : #define AOM_CTRL_AV1E_SET_TILE_ENCODING_MODE
740 :
741 0 : AOM_CTRL_USE_TYPE(AV1E_ENABLE_MOTION_VECTOR_UNIT_TEST, unsigned int)
742 : #define AOM_CTRL_AV1E_ENABLE_MOTION_VECTOR_UNIT_TEST
743 :
744 : /*!\endcond */
745 : /*! @} - end defgroup aom_encoder */
746 : #ifdef __cplusplus
747 : } // extern "C"
748 : #endif
749 :
750 : #endif // AOM_AOMCX_H_
|