AOMedia AV1 Codec
aom_external_partition.h File Reference

Provides function pointer definitions for the external partition. More...

#include <stdint.h>

Go to the source code of this file.

Data Structures

struct  aom_ext_part_config
 Config information sent to the external partition model. More...
 
struct  aom_partition_features_before_none
 Features pass to the external model to make partition decisions. Specifically, features collected before NONE partition. Features "f" are used to determine: partition_none_allowed, partition_horz_allowed, partition_vert_allowed, do_rectangular_split, do_square_split Features "f_part2" are used to determine: prune_horz, prune_vert. More...
 
struct  aom_partition_features_none
 Features pass to the external model to make partition decisions. Specifically, features collected after NONE partition. More...
 
struct  aom_partition_features_split
 Features pass to the external model to make partition decisions. Specifically, features collected after SPLIT partition. More...
 
struct  aom_partition_features_rect
 Features pass to the external model to make partition decisions. Specifically, features collected after RECTANGULAR partition. More...
 
struct  aom_partition_features_ab
 Features pass to the external model to make partition decisions. Specifically, features collected after AB partition: HORZ_A, HORZ_B, VERT_A, VERT_B. More...
 
struct  aom_sb_tpl_features
 Features collected from the tpl process. More...
 
struct  aom_sb_simple_motion_features
 Features collected from the simple motion process. More...
 
struct  aom_sb_features
 Features of each super block. More...
 
struct  aom_partition_features
 Features pass to the external model to make partition decisions. More...
 
struct  aom_partition_decision
 Partition decisions received from the external model. More...
 
struct  aom_partition_stats
 Encoding stats for the given partition decision. More...
 
struct  aom_ext_part_funcs
 Callback function set for external partition model. More...
 

Macros

#define AOM_EXT_PART_ABI_VERSION   8
 Current ABI version number.
 
#define AOM_EXT_PART_SIZE_DIRECT_SPLIT   17
 Number of features to determine whether to skip partition none and do partition split directly. The same as "FEATURE_SIZE_SMS_SPLIT".
 
#define AOM_EXT_PART_SIZE_PRUNE_PART   25
 Number of features to use simple motion search to prune out rectangular partition in some direction. The same as "FEATURE_SIZE_SMS_PRUNE_PART".
 
#define AOM_EXT_PART_SIZE_PRUNE_NONE   4
 Number of features to prune split and rectangular partition after PARTITION_NONE.
 
#define AOM_EXT_PART_SIZE_TERM_NONE   28
 Number of features to terminates partition after partition none using simple_motion_search features and the rate, distortion, and rdcost of PARTITION_NONE. The same as "FEATURE_SIZE_SMS_TERM_NONE".
 
#define AOM_EXT_PART_SIZE_TERM_SPLIT   31
 Number of features to terminates partition after partition split.
 
#define AOM_EXT_PART_SIZE_PRUNE_RECT   9
 Number of features to prune rectangular partition using stats collected after partition split.
 
#define AOM_EXT_PART_SIZE_PRUNE_AB   10
 Number of features to prune AB partition using stats collected after rectangular partition..
 
#define AOM_EXT_PART_SIZE_PRUNE_4_WAY   18
 Number of features to prune 4-way partition using stats collected after AB partition.
 

Typedefs

typedef void * aom_ext_part_model_t
 Abstract external partition model handler.
 
typedef enum aom_ext_part_decision_mode aom_ext_part_decision_mode_t
 Decision mode of the external partition model. AOM_EXT_PART_WHOLE_TREE: the external partition model should provide the whole partition tree for the superblock.
 
typedef struct aom_ext_part_config aom_ext_part_config_t
 Config information sent to the external partition model.
 
typedef struct aom_partition_features_before_none aom_partition_features_before_none_t
 Features pass to the external model to make partition decisions. Specifically, features collected before NONE partition. Features "f" are used to determine: partition_none_allowed, partition_horz_allowed, partition_vert_allowed, do_rectangular_split, do_square_split Features "f_part2" are used to determine: prune_horz, prune_vert.
 
typedef struct aom_partition_features_none aom_partition_features_none_t
 Features pass to the external model to make partition decisions. Specifically, features collected after NONE partition.
 
typedef struct aom_partition_features_split aom_partition_features_split_t
 Features pass to the external model to make partition decisions. Specifically, features collected after SPLIT partition.
 
typedef struct aom_partition_features_rect aom_partition_features_rect_t
 Features pass to the external model to make partition decisions. Specifically, features collected after RECTANGULAR partition.
 
typedef struct aom_partition_features_ab aom_partition_features_ab_t
 Features pass to the external model to make partition decisions. Specifically, features collected after AB partition: HORZ_A, HORZ_B, VERT_A, VERT_B.
 
typedef struct aom_sb_tpl_features aom_sb_tpl_features_t
 Features collected from the tpl process.
 
typedef struct aom_sb_simple_motion_features aom_sb_simple_motion_features_t
 Features collected from the simple motion process.
 
typedef struct aom_sb_features aom_sb_features_t
 Features of each super block.
 
typedef struct aom_partition_features aom_partition_features_t
 Features pass to the external model to make partition decisions.
 
typedef struct aom_partition_decision aom_partition_decision_t
 Partition decisions received from the external model.
 
typedef struct aom_partition_stats aom_partition_stats_t
 Encoding stats for the given partition decision.
 
typedef enum aom_ext_part_status aom_ext_part_status_t
 Enum for return status.
 
typedef aom_ext_part_status_t(* aom_ext_part_create_model_fn_t) (void *priv, const aom_ext_part_config_t *part_config, aom_ext_part_model_t *ext_part_model)
 Callback of creating an external partition model.
 
typedef aom_ext_part_status_t(* aom_ext_part_send_features_fn_t) (aom_ext_part_model_t ext_part_model, const aom_partition_features_t *part_features)
 Callback of sending features to the external partition model.
 
typedef aom_ext_part_status_t(* aom_ext_part_get_decision_fn_t) (aom_ext_part_model_t ext_part_model, aom_partition_decision_t *ext_part_decision)
 Callback of receiving partition decisions from the external partition model.
 
typedef aom_ext_part_status_t(* aom_ext_part_send_partition_stats_fn_t) (aom_ext_part_model_t ext_part_model, const aom_partition_stats_t *ext_part_stats)
 Callback of sending stats to the external partition model.
 
typedef aom_ext_part_status_t(* aom_ext_part_delete_model_fn_t) (aom_ext_part_model_t ext_part_model)
 Callback of deleting the external partition model.
 
typedef struct aom_ext_part_funcs aom_ext_part_funcs_t
 Callback function set for external partition model.
 

Enumerations

enum  aom_ext_part_decision_mode { AOM_EXT_PART_WHOLE_TREE = 0 , AOM_EXT_PART_RECURSIVE = 1 }
 Decision mode of the external partition model. AOM_EXT_PART_WHOLE_TREE: the external partition model should provide the whole partition tree for the superblock. More...
 
enum  AOM_EXT_PART_FEATURE_ID {
  AOM_EXT_PART_FEATURE_BEFORE_NONE , AOM_EXT_PART_FEATURE_BEFORE_NONE_PART2 , AOM_EXT_PART_FEATURE_AFTER_NONE , AOM_EXT_PART_FEATURE_AFTER_NONE_PART2 ,
  AOM_EXT_PART_FEATURE_AFTER_SPLIT , AOM_EXT_PART_FEATURE_AFTER_SPLIT_PART2 , AOM_EXT_PART_FEATURE_AFTER_RECT , AOM_EXT_PART_FEATURE_AFTER_AB
}
 Feature id to tell the external model the current stage in partition pruning and what features to use to make decisions accordingly.
 
enum  aom_ext_part_status { AOM_EXT_PART_OK = 0 , AOM_EXT_PART_ERROR = 1 , AOM_EXT_PART_TEST = 2 }
 Enum for return status. More...
 

Detailed Description

Provides function pointer definitions for the external partition.

Note
The external partition API should be considered experimental. Until the external partition API is declared stable, breaking changes may be made to this API in a future libaom release.