1 /*
2  *  Copyright (c) 2014 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 
12 #ifndef VP9_ENCODER_VP9_AQ_CYCLICREFRESH_H_
13 #define VP9_ENCODER_VP9_AQ_CYCLICREFRESH_H_
14 
15 #include "vp9/common/vp9_blockd.h"
16 
17 #ifdef __cplusplus
18 extern "C" {
19 #endif
20 
21 struct VP9_COMP;
22 
23 struct CYCLIC_REFRESH;
24 typedef struct CYCLIC_REFRESH CYCLIC_REFRESH;
25 
26 CYCLIC_REFRESH *vp9_cyclic_refresh_alloc(int mi_rows, int mi_cols);
27 
28 void vp9_cyclic_refresh_free(CYCLIC_REFRESH *cr);
29 
30 // Prior to coding a given prediction block, of size bsize at (mi_row, mi_col),
31 // check if we should reset the segment_id, and update the cyclic_refresh map
32 // and segmentation map.
33 void vp9_cyclic_refresh_update_segment(struct VP9_COMP *const cpi,
34                                        MB_MODE_INFO *const mbmi,
35                                        int mi_row, int mi_col,
36                                        BLOCK_SIZE bsize, int use_rd);
37 
38 // Setup cyclic background refresh: set delta q and segmentation map.
39 void vp9_cyclic_refresh_setup(struct VP9_COMP *const cpi);
40 
41 void vp9_cyclic_refresh_set_rate_and_dist_sb(CYCLIC_REFRESH *cr,
42                                              int64_t rate_sb, int64_t dist_sb);
43 
44 int vp9_cyclic_refresh_get_rdmult(const CYCLIC_REFRESH *cr);
45 
46 #ifdef __cplusplus
47 }  // extern "C"
48 #endif
49 
50 #endif  // VP9_ENCODER_VP9_AQ_CYCLICREFRESH_H_
51