1 /* 2 * Copyright (c) 2010 The WebM project authors. All Rights Reserved. 3 * 4 * Use of this source code is governed by a BSD-style license 5 * that can be found in the LICENSE file in the root of the source 6 * tree. An additional intellectual property rights grant can be found 7 * in the file PATENTS. All contributing project authors may 8 * be found in the AUTHORS file in the root of the source tree. 9 */ 10 11 #ifndef VP9_ENCODER_VP9_RDOPT_H_ 12 #define VP9_ENCODER_VP9_RDOPT_H_ 13 14 #include "vp9/common/vp9_blockd.h" 15 16 #include "vp9/encoder/vp9_block.h" 17 #include "vp9/encoder/vp9_context_tree.h" 18 19 #ifdef __cplusplus 20 extern "C" { 21 #endif 22 23 struct TileInfo; 24 struct VP9_COMP; 25 struct macroblock; 26 struct RD_COST; 27 28 void vp9_rd_pick_intra_mode_sb(struct VP9_COMP *cpi, struct macroblock *x, 29 struct RD_COST *rd_cost, BLOCK_SIZE bsize, 30 PICK_MODE_CONTEXT *ctx, int64_t best_rd); 31 32 unsigned int vp9_get_sby_perpixel_variance(VP9_COMP *cpi, 33 const struct buf_2d *ref, 34 BLOCK_SIZE bs); 35 #if CONFIG_VP9_HIGHBITDEPTH 36 unsigned int vp9_high_get_sby_perpixel_variance(VP9_COMP *cpi, 37 const struct buf_2d *ref, 38 BLOCK_SIZE bs, int bd); 39 #endif 40 41 void vp9_rd_pick_inter_mode_sb(struct VP9_COMP *cpi, 42 struct TileDataEnc *tile_data, 43 struct macroblock *x, 44 int mi_row, int mi_col, 45 struct RD_COST *rd_cost, 46 BLOCK_SIZE bsize, PICK_MODE_CONTEXT *ctx, 47 int64_t best_rd_so_far); 48 49 void vp9_rd_pick_inter_mode_sb_seg_skip(struct VP9_COMP *cpi, 50 struct TileDataEnc *tile_data, 51 struct macroblock *x, 52 struct RD_COST *rd_cost, 53 BLOCK_SIZE bsize, 54 PICK_MODE_CONTEXT *ctx, 55 int64_t best_rd_so_far); 56 57 int vp9_internal_image_edge(struct VP9_COMP *cpi); 58 int vp9_active_h_edge(struct VP9_COMP *cpi, int mi_row, int mi_step); 59 int vp9_active_v_edge(struct VP9_COMP *cpi, int mi_col, int mi_step); 60 int vp9_active_edge_sb(struct VP9_COMP *cpi, int mi_row, int mi_col); 61 62 void vp9_rd_pick_inter_mode_sub8x8(struct VP9_COMP *cpi, 63 struct TileDataEnc *tile_data, 64 struct macroblock *x, 65 int mi_row, int mi_col, 66 struct RD_COST *rd_cost, 67 BLOCK_SIZE bsize, PICK_MODE_CONTEXT *ctx, 68 int64_t best_rd_so_far); 69 70 #ifdef __cplusplus 71 } // extern "C" 72 #endif 73 74 #endif // VP9_ENCODER_VP9_RDOPT_H_ 75