1*fb1b10abSAndroid Build Coastguard Worker /* 2*fb1b10abSAndroid Build Coastguard Worker * Copyright (c) 2023 The WebM project authors. All Rights Reserved. 3*fb1b10abSAndroid Build Coastguard Worker * 4*fb1b10abSAndroid Build Coastguard Worker * Use of this source code is governed by a BSD-style license 5*fb1b10abSAndroid Build Coastguard Worker * that can be found in the LICENSE file in the root of the source 6*fb1b10abSAndroid Build Coastguard Worker * tree. An additional intellectual property rights grant can be found 7*fb1b10abSAndroid Build Coastguard Worker * in the file PATENTS. All contributing project authors may 8*fb1b10abSAndroid Build Coastguard Worker * be found in the AUTHORS file in the root of the source tree. 9*fb1b10abSAndroid Build Coastguard Worker */ 10*fb1b10abSAndroid Build Coastguard Worker 11*fb1b10abSAndroid Build Coastguard Worker /*!\file 12*fb1b10abSAndroid Build Coastguard Worker * \brief Describes the TPL stats descriptor and associated operations 13*fb1b10abSAndroid Build Coastguard Worker * 14*fb1b10abSAndroid Build Coastguard Worker */ 15*fb1b10abSAndroid Build Coastguard Worker #ifndef VPX_VPX_VPX_TPL_H_ 16*fb1b10abSAndroid Build Coastguard Worker #define VPX_VPX_VPX_TPL_H_ 17*fb1b10abSAndroid Build Coastguard Worker 18*fb1b10abSAndroid Build Coastguard Worker #include "./vpx_integer.h" 19*fb1b10abSAndroid Build Coastguard Worker #include "./vpx_codec.h" 20*fb1b10abSAndroid Build Coastguard Worker 21*fb1b10abSAndroid Build Coastguard Worker #ifdef __cplusplus 22*fb1b10abSAndroid Build Coastguard Worker extern "C" { 23*fb1b10abSAndroid Build Coastguard Worker #endif 24*fb1b10abSAndroid Build Coastguard Worker 25*fb1b10abSAndroid Build Coastguard Worker /*!\brief Current ABI version number 26*fb1b10abSAndroid Build Coastguard Worker * 27*fb1b10abSAndroid Build Coastguard Worker * \internal 28*fb1b10abSAndroid Build Coastguard Worker * If this file is altered in any way that changes the ABI, this value 29*fb1b10abSAndroid Build Coastguard Worker * must be bumped. Examples include, but are not limited to, changing 30*fb1b10abSAndroid Build Coastguard Worker * types, removing or reassigning enums, adding/removing/rearranging 31*fb1b10abSAndroid Build Coastguard Worker * fields to structures 32*fb1b10abSAndroid Build Coastguard Worker */ 33*fb1b10abSAndroid Build Coastguard Worker #define VPX_TPL_ABI_VERSION 4 /**<\hideinitializer*/ 34*fb1b10abSAndroid Build Coastguard Worker 35*fb1b10abSAndroid Build Coastguard Worker /*!\brief Temporal dependency model stats for each block before propagation */ 36*fb1b10abSAndroid Build Coastguard Worker typedef struct VpxTplBlockStats { 37*fb1b10abSAndroid Build Coastguard Worker int16_t row; /**< Pixel row of the top left corner */ 38*fb1b10abSAndroid Build Coastguard Worker int16_t col; /**< Pixel col of the top left corner */ 39*fb1b10abSAndroid Build Coastguard Worker int64_t intra_cost; /**< Intra cost */ 40*fb1b10abSAndroid Build Coastguard Worker int64_t inter_cost; /**< Inter cost */ 41*fb1b10abSAndroid Build Coastguard Worker int16_t mv_r; /**< Motion vector row */ 42*fb1b10abSAndroid Build Coastguard Worker int16_t mv_c; /**< Motion vector col */ 43*fb1b10abSAndroid Build Coastguard Worker int64_t srcrf_rate; /**< Rate from source ref frame */ 44*fb1b10abSAndroid Build Coastguard Worker int64_t srcrf_dist; /**< Distortion from source ref frame */ 45*fb1b10abSAndroid Build Coastguard Worker int64_t inter_pred_err; /**< Inter prediction error */ 46*fb1b10abSAndroid Build Coastguard Worker int64_t intra_pred_err; /**< Intra prediction error */ 47*fb1b10abSAndroid Build Coastguard Worker int ref_frame_index; /**< Ref frame index in the ref frame buffer */ 48*fb1b10abSAndroid Build Coastguard Worker } VpxTplBlockStats; 49*fb1b10abSAndroid Build Coastguard Worker 50*fb1b10abSAndroid Build Coastguard Worker /*!\brief Temporal dependency model stats for each frame before propagation */ 51*fb1b10abSAndroid Build Coastguard Worker typedef struct VpxTplFrameStats { 52*fb1b10abSAndroid Build Coastguard Worker int frame_width; /**< Frame width */ 53*fb1b10abSAndroid Build Coastguard Worker int frame_height; /**< Frame height */ 54*fb1b10abSAndroid Build Coastguard Worker int num_blocks; /**< Number of blocks. Size of block_stats_list */ 55*fb1b10abSAndroid Build Coastguard Worker VpxTplBlockStats *block_stats_list; /**< List of tpl stats for each block */ 56*fb1b10abSAndroid Build Coastguard Worker } VpxTplFrameStats; 57*fb1b10abSAndroid Build Coastguard Worker 58*fb1b10abSAndroid Build Coastguard Worker /*!\brief Temporal dependency model stats for each GOP before propagation */ 59*fb1b10abSAndroid Build Coastguard Worker typedef struct VpxTplGopStats { 60*fb1b10abSAndroid Build Coastguard Worker int size; /**< GOP size, also the size of frame_stats_list. */ 61*fb1b10abSAndroid Build Coastguard Worker VpxTplFrameStats *frame_stats_list; /**< List of tpl stats for each frame */ 62*fb1b10abSAndroid Build Coastguard Worker } VpxTplGopStats; 63*fb1b10abSAndroid Build Coastguard Worker 64*fb1b10abSAndroid Build Coastguard Worker #ifdef __cplusplus 65*fb1b10abSAndroid Build Coastguard Worker } // extern "C" 66*fb1b10abSAndroid Build Coastguard Worker #endif 67*fb1b10abSAndroid Build Coastguard Worker 68*fb1b10abSAndroid Build Coastguard Worker #endif // VPX_VPX_VPX_TPL_H_ 69