encodemb.h 2.88 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 "av1/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
void vp10_encode_sby_pass1(MACROBLOCK *x, BLOCK_SIZE bsize);
48 49
void vp10_xform_quant(MACROBLOCK *x, int plane, int block, int blk_row,
                      int blk_col, BLOCK_SIZE plane_bsize, TX_SIZE tx_size,
Angie Chiang's avatar
Angie Chiang committed
50
                      VP10_XFORM_QUANT xform_quant_idx);
51 52
#if CONFIG_NEW_QUANT
void vp10_xform_quant_nuq(MACROBLOCK *x, int plane, int block, int blk_row,
53 54
                          int blk_col, BLOCK_SIZE plane_bsize, TX_SIZE tx_size,
                          int ctx);
55 56
void vp10_xform_quant_dc_nuq(MACROBLOCK *x, int plane, int block, int blk_row,
                             int blk_col, BLOCK_SIZE plane_bsize,
57
                             TX_SIZE tx_size, int ctx);
58 59
void vp10_xform_quant_fp_nuq(MACROBLOCK *x, int plane, int block, int blk_row,
                             int blk_col, BLOCK_SIZE plane_bsize,
60
                             TX_SIZE tx_size, int ctx);
61 62
void vp10_xform_quant_dc_fp_nuq(MACROBLOCK *x, int plane, int block,
                                int blk_row, int blk_col,
63 64
                                BLOCK_SIZE plane_bsize, TX_SIZE tx_size,
                                int ctx);
65
#endif
Jingning Han's avatar
Jingning Han committed
66

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

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

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

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

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

83
#endif  // VP10_ENCODER_ENCODEMB_H_