/* * Copyright (c) 2016, Alliance for Open Media. All rights reserved. * * This source code is subject to the terms of the BSD 2 Clause License and * the Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License * was not distributed with this source code in the LICENSE file, you can * obtain it at www.aomedia.org/license/software. If the Alliance for Open * Media Patent License 1.0 was not distributed with this source code in the * PATENTS file, you can obtain it at www.aomedia.org/license/patent. */ #ifndef AOM_AV1_ENCODER_SPEED_FEATURES_H_ #define AOM_AV1_ENCODER_SPEED_FEATURES_H_ #include "av1/common/enums.h" #include "av1/encoder/enc_enums.h" #include "av1/encoder/mcomp.h" #include "av1/encoder/encodemb.h" #ifdef __cplusplus extern "C" { #endif /*! @file */ /*!\cond */ #define MAX_MESH_STEP … MESH_PATTERN; enum { … } UENUM1BYTE(…) …; enum { … } UENUM1BYTE(…) …; enum { … }; enum { … }; enum { … }; enum { … } UENUM1BYTE(…) …; /* This enumeration defines when the rate control recode loop will be * enabled. */ enum { … } UENUM1BYTE(…) …; enum { … } UENUM1BYTE(…) …; enum { … } UENUM1BYTE(…) …; /*!\endcond */ /*!\enum CDEF_PICK_METHOD * \brief This enumeration defines a variety of CDEF pick methods */ CDEF_PICK_METHOD; /*!\cond */ enum { … } UENUM1BYTE(…) …; enum { … } UENUM1BYTE(…) …; enum { … } UENUM1BYTE(…) …; enum { … } UENUM1BYTE(…) …; enum { … } UENUM1BYTE(…) …; enum { … } UENUM1BYTE(…) …; TX_TYPE_SEARCH; enum { … } UENUM1BYTE(…) …; enum { … } UENUM1BYTE(…) …; enum { … } UENUM1BYTE(…) …; enum { … } UENUM1BYTE(…) …; /*!\endcond */ /*!\enum INTERNAL_COST_UPDATE_TYPE * \brief This enum decides internally how often to update the entropy costs * * INTERNAL_COST_UPD_TYPE is similar to \ref COST_UPDATE_TYPE but has slightly * more flexibility in update frequency. This enum is separate from \ref * COST_UPDATE_TYPE because although \ref COST_UPDATE_TYPE is not exposed, its * values are public so it cannot be modified without breaking public API. * Due to the use of AOMMIN() in populate_unified_cost_update_freq() to * compute the unified cost update frequencies (out of COST_UPDATE_TYPE and * INTERNAL_COST_UPDATE_TYPE), the values of this enum type must be listed in * the order of increasing frequencies. * * \warning In case of any updates/modifications to the enum COST_UPDATE_TYPE, * update the enum INTERNAL_COST_UPDATE_TYPE as well. */ INTERNAL_COST_UPDATE_TYPE; /*!\enum SIMPLE_MOTION_SEARCH_PRUNE_LEVEL * \brief This enumeration defines a variety of simple motion search based * partition prune levels */ SIMPLE_MOTION_SEARCH_PRUNE_LEVEL; /*!\enum PRUNE_MESH_SEARCH_LEVEL * \brief This enumeration defines a variety of mesh search prune levels. */ PRUNE_MESH_SEARCH_LEVEL; /*!\enum INTER_SEARCH_EARLY_TERM_IDX * \brief This enumeration defines inter search early termination index in * non-rd path based on sse value. */ INTER_SEARCH_EARLY_TERM_IDX; /*! * \brief Sequence/frame level speed vs quality features */ HIGH_LEVEL_SPEED_FEATURES; /*! * Speed features for the first pass. */ FIRST_PASS_SPEED_FEATURES; /*!\cond */ TPL_SPEED_FEATURES; GLOBAL_MOTION_SPEED_FEATURES; PARTITION_SPEED_FEATURES; MV_SPEED_FEATURES; INTER_MODE_SPEED_FEATURES; INTERP_FILTER_SPEED_FEATURES; INTRA_MODE_SPEED_FEATURES; TX_SPEED_FEATURES; RD_CALC_SPEED_FEATURES; WINNER_MODE_SPEED_FEATURES; LOOP_FILTER_SPEED_FEATURES; REAL_TIME_SPEED_FEATURES; /*!\endcond */ /*! * \brief Top level speed vs quality trade off data struture. */ SPEED_FEATURES; /*!\cond */ struct AV1_COMP; /*!\endcond */ /*!\brief Frame size independent speed vs quality trade off flags * *\ingroup speed_features * * \param[in] cpi Top - level encoder instance structure * \param[in] speed Speed setting passed in from the command line * * \remark No return value but configures the various speed trade off flags * based on the passed in speed setting. (Higher speed gives lower * quality) */ void av1_set_speed_features_framesize_independent(struct AV1_COMP *cpi, int speed); /*!\brief Frame size dependent speed vs quality trade off flags * *\ingroup speed_features * * \param[in] cpi Top - level encoder instance structure * \param[in] speed Speed setting passed in from the command line * * \remark No return value but configures the various speed trade off flags * based on the passed in speed setting and frame size. (Higher speed * corresponds to lower quality) */ void av1_set_speed_features_framesize_dependent(struct AV1_COMP *cpi, int speed); /*!\brief Q index dependent speed vs quality trade off flags * *\ingroup speed_features * * \param[in] cpi Top - level encoder instance structure * \param[in] speed Speed setting passed in from the command line * * \remark No return value but configures the various speed trade off flags * based on the passed in speed setting and current frame's Q index. * (Higher speed corresponds to lower quality) */ void av1_set_speed_features_qindex_dependent(struct AV1_COMP *cpi, int speed); #ifdef __cplusplus } // extern "C" #endif #endif // AOM_AV1_ENCODER_SPEED_FEATURES_H_