]> granicus.if.org Git - libvpx/blob - vp10/encoder/rdopt.h
78b0c22d3d2520f15a8b8510fffd3dfe69f45476
[libvpx] / vp10 / encoder / rdopt.h
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 VP10_ENCODER_RDOPT_H_
12 #define VP10_ENCODER_RDOPT_H_
13
14 #include "vp10/common/blockd.h"
15
16 #include "vp10/encoder/block.h"
17 #include "vp10/encoder/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 vp10_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 vp10_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 vp10_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 vp10_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 vp10_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 vp10_internal_image_edge(struct VP9_COMP *cpi);
58 int vp10_active_h_edge(struct VP9_COMP *cpi, int mi_row, int mi_step);
59 int vp10_active_v_edge(struct VP9_COMP *cpi, int mi_col, int mi_step);
60 int vp10_active_edge_sb(struct VP9_COMP *cpi, int mi_row, int mi_col);
61
62 void vp10_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  // VP10_ENCODER_RDOPT_H_