encodemb.h 2.9 KB
Newer Older
Jingning Han's avatar
Jingning Han committed
1
2
3
4
5
6
7
8
9
10
/*
 *  Copyright (c) 2010 The WebM project authors. All Rights Reserved.
 *
 *  Use of this source code is governed by a BSD-style license
 *  that can be found in the LICENSE file in the root of the source
 *  tree. An additional intellectual property rights grant can be found
 *  in the file PATENTS.  All contributing project authors may
 *  be found in the AUTHORS file in the root of the source tree.
 */

11
12
#ifndef VP10_ENCODER_ENCODEMB_H_
#define VP10_ENCODER_ENCODEMB_H_
Jingning Han's avatar
Jingning Han committed
13
14

#include "./vpx_config.h"
15
#include "vp10/encoder/block.h"
Jingning Han's avatar
Jingning Han committed
16
17
18
19
20

#ifdef __cplusplus
extern "C" {
#endif

21
22
23
24
25
struct optimize_ctx {
  ENTROPY_CONTEXT ta[MAX_MB_PLANE][2 * MAX_MIB_SIZE];
  ENTROPY_CONTEXT tl[MAX_MB_PLANE][2 * MAX_MIB_SIZE];
};

Jingning Han's avatar
Jingning Han committed
26
27
28
29
struct encode_b_args {
  MACROBLOCK *x;
  struct optimize_ctx *ctx;
  int8_t *skip;
30
31
  ENTROPY_CONTEXT *ta;
  ENTROPY_CONTEXT *tl;
32
  int8_t enable_optimize_b;
Jingning Han's avatar
Jingning Han committed
33
};
Angie Chiang's avatar
Angie Chiang committed
34
35
36
37
38

typedef enum VP10_XFORM_QUANT {
  VP10_XFORM_QUANT_FP = 0,
  VP10_XFORM_QUANT_B = 1,
  VP10_XFORM_QUANT_DC = 2,
39
40
  VP10_XFORM_QUANT_SKIP_QUANT = 3,
  VP10_XFORM_QUANT_LAST = 4
Angie Chiang's avatar
Angie Chiang committed
41
42
} VP10_XFORM_QUANT;

Jingning Han's avatar
Jingning Han committed
43
void vp10_encode_sb(MACROBLOCK *x, BLOCK_SIZE bsize);
44
45
46
#if CONFIG_SUPERTX
void vp10_encode_sb_supertx(MACROBLOCK *x, BLOCK_SIZE bsize);
#endif  // CONFIG_SUPERTX
Jingning Han's avatar
Jingning Han committed
47
48
void vp10_encode_sby_pass1(MACROBLOCK *x, BLOCK_SIZE bsize);
void vp10_xform_quant(MACROBLOCK *x, int plane, int block,
49
                      int blk_row, int blk_col,
Angie Chiang's avatar
Angie Chiang committed
50
51
                      BLOCK_SIZE plane_bsize, TX_SIZE tx_size,
                      VP10_XFORM_QUANT xform_quant_idx);
52
53
54
#if CONFIG_NEW_QUANT
void vp10_xform_quant_nuq(MACROBLOCK *x, int plane, int block, int blk_row,
                          int blk_col, BLOCK_SIZE plane_bsize,
55
                          TX_SIZE tx_size, int ctx);
56
57
void vp10_xform_quant_dc_nuq(MACROBLOCK *x, int plane, int block, int blk_row,
                             int blk_col, BLOCK_SIZE plane_bsize,
58
                             TX_SIZE tx_size, int ctx);
59
60
void vp10_xform_quant_fp_nuq(MACROBLOCK *x, int plane, int block, int blk_row,
                             int blk_col, BLOCK_SIZE plane_bsize,
61
                             TX_SIZE tx_size, int ctx);
62
63
void vp10_xform_quant_dc_fp_nuq(MACROBLOCK *x, int plane, int block,
                                int blk_row, int blk_col,
64
65
                                BLOCK_SIZE plane_bsize, TX_SIZE tx_size,
                                int ctx);
66
#endif
Jingning Han's avatar
Jingning Han committed
67

68
69
70
int vp10_optimize_b(MACROBLOCK *mb, int plane, int block,
                    TX_SIZE tx_size, int ctx);

Jingning Han's avatar
Jingning Han committed
71
72
void vp10_subtract_plane(MACROBLOCK *x, BLOCK_SIZE bsize, int plane);

73
74
75
void vp10_encode_block_intra(int plane, int block, int blk_row, int blk_col,
                             BLOCK_SIZE plane_bsize,
                             TX_SIZE tx_size, void *arg);
Jingning Han's avatar
Jingning Han committed
76

hui su's avatar
hui su committed
77
78
void vp10_encode_intra_block_plane(MACROBLOCK *x, BLOCK_SIZE bsize, int plane,
                                   int enable_optimize_b);
Jingning Han's avatar
Jingning Han committed
79
80
81
82
83

#ifdef __cplusplus
}  // extern "C"
#endif

84
#endif  // VP10_ENCODER_ENCODEMB_H_