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 VPX_VP9_ENCODER_VP9_RDOPT_H_
12 #define VPX_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 #if !CONFIG_REALTIME_ONLY
33 void vp9_rd_pick_inter_mode_sb(struct VP9_COMP *cpi,
34                                struct TileDataEnc *tile_data,
35                                struct macroblock *x, int mi_row, int mi_col,
36                                struct RD_COST *rd_cost, BLOCK_SIZE bsize,
37                                PICK_MODE_CONTEXT *ctx, int64_t best_rd_so_far);
38 
39 void vp9_rd_pick_inter_mode_sb_seg_skip(
40     struct VP9_COMP *cpi, struct TileDataEnc *tile_data, struct macroblock *x,
41     struct RD_COST *rd_cost, BLOCK_SIZE bsize, PICK_MODE_CONTEXT *ctx,
42     int64_t best_rd_so_far);
43 #endif
44 
45 int vp9_internal_image_edge(struct VP9_COMP *cpi);
46 int vp9_active_h_edge(struct VP9_COMP *cpi, int mi_row, int mi_step);
47 int vp9_active_v_edge(struct VP9_COMP *cpi, int mi_col, int mi_step);
48 int vp9_active_edge_sb(struct VP9_COMP *cpi, int mi_row, int mi_col);
49 
50 #if !CONFIG_REALTIME_ONLY
51 void vp9_rd_pick_inter_mode_sub8x8(struct VP9_COMP *cpi,
52                                    struct TileDataEnc *tile_data,
53                                    struct macroblock *x, int mi_row, int mi_col,
54                                    struct RD_COST *rd_cost, BLOCK_SIZE bsize,
55                                    PICK_MODE_CONTEXT *ctx,
56                                    int64_t best_rd_so_far);
57 #endif
58 
59 #ifdef __cplusplus
60 }  // extern "C"
61 #endif
62 
63 #endif  // VPX_VP9_ENCODER_VP9_RDOPT_H_
64