| /* |
| * Copyright (c) 2024, Alliance for Open Media. All rights reserved |
| * |
| * This source code is subject to the terms of the BSD 3-Clause Clear License |
| * and the Alliance for Open Media Patent License 1.0. If the BSD 3-Clause Clear |
| * License was not distributed with this source code in the LICENSE file, you |
| * can obtain it at aomedia.org/license/software-license/bsd-3-c-c/. 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 |
| * aomedia.org/license/patent-license/. |
| */ |
| |
| #ifndef AV1_ENCODER_INTRA_DIP_MODE_PRUNE_TFLITE_H |
| #define AV1_ENCODER_INTRA_DIP_MODE_PRUNE_TFLITE_H |
| |
| #ifdef __cplusplus |
| extern "C" { |
| #endif |
| |
| #include "av1/common/av1_common_int.h" |
| |
| #define DIP_PRUNING_NUM_INPUTS 5 |
| #define DIP_PRUNING_MAX_INPUT_SIZE 64 |
| |
| typedef struct { |
| const char *name; |
| float values[DIP_PRUNING_MAX_INPUT_SIZE]; |
| int size; |
| int orig_index; |
| int tflite_index; |
| } dip_pruning_input; |
| |
| typedef struct { |
| dip_pruning_input inputs[DIP_PRUNING_NUM_INPUTS]; |
| } dip_pruning_inputs; |
| |
| static const float DIP_PRUNING_THRESHOLDS[6] = { |
| 0.588f, 0.462f, 0.562f, 0.5f, 0.525f, 0.05f, |
| }; |
| |
| static const int DIP_PRUNING_QPS[6] = { 85, 110, 135, 160, 185, 210 }; |
| |
| extern const uint8_t dip_pruning_tflite_qp85[58072]; |
| extern const uint8_t dip_pruning_tflite_qp110[58072]; |
| extern const uint8_t dip_pruning_tflite_qp135[58072]; |
| extern const uint8_t dip_pruning_tflite_qp160[58072]; |
| extern const uint8_t dip_pruning_tflite_qp185[58072]; |
| extern const uint8_t dip_pruning_tflite_qp210[58072]; |
| |
| int intra_dip_mode_prune_tflite(void **context, float *output, int qp); |
| |
| int intra_dip_mode_prune_get_model_index(int qp); |
| |
| dip_pruning_inputs *intra_dip_mode_prune_get_inputs(void **context, int qp); |
| |
| void intra_dip_mode_prune_normalize_and_resize_8x8(const uint16_t *input, |
| size_t stride, int bd, |
| size_t width, size_t height, |
| float *output); |
| void intra_dip_mode_prune_close(void **context); |
| #ifdef __cplusplus |
| } |
| #endif |
| |
| #endif // AV1_ENCODER_INTRA_DIP_MODE_PRUNE_TFLITE_H |