#include "vpx_ports/config.h"
#include "vpx_scale/yv12config.h"
#include "postproc.h"
+#include "vp9/common/textblit.h"
#include "vpx_scale/vpxscale.h"
#include "systemdependent.h"
};
-extern void vp9_blit_text(const char *msg, unsigned char *address,
- const int pitch);
-extern void vp9_blit_line(int x0, int x1, int y0, int y1,
- unsigned char *image, const int pitch);
/****************************************************************************
*/
void vp9_post_proc_down_and_across_c(unsigned char *src_ptr,
#include "blockd.h"
-extern void init_intra_left_above_pixels(MACROBLOCKD *xd);
+extern void vp9_recon_intra_mbuv(MACROBLOCKD *xd);
#endif // __INC_RECONINTRA_H
prototype void vp9_dequant_idct_add_16x16 "short *input, short *dq, unsigned char *pred, unsigned char *dest, int pitch, int stride"
specialize vp9_dequant_idct_add_16x16
+prototype void vp9_dequant_idct_add_8x8 "short *input, short *dq, unsigned char *pred, unsigned char *dest, int pitch, int stride"
+specialize vp9_dequant_idct_add_8x8
+
+prototype void vp9_dequant_dc_idct_add_8x8 "short *input, short *dq, unsigned char *pred, unsigned char *dest, int pitch, int stride, int Dc"
+specialize vp9_dequant_dc_idct_add_8x8
+
prototype void vp9_dequant_idct_add "short *input, short *dq, unsigned char *pred, unsigned char *dest, int pitch, int stride"
specialize vp9_dequant_idct_add
#include <stdlib.h>
+#include "vp9/common/textblit.h"
void vp9_blit_text(const char *msg, unsigned char *address, const int pitch) {
int letter_bitmap;
--- /dev/null
+/*
+ * 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.
+ */
+
+#ifndef __INC_TEXTBLIT_H
+#define __INC_TEXTBLIT_H
+
+extern void vp9_blit_text(const char *msg, unsigned char *address,
+ const int pitch);
+extern void vp9_blit_line(int x0, int x1, int y0, int y1,
+ unsigned char *image, const int pitch);
+
+#endif // __INC_TEXTBLIT_H
#include "vp9/common/reconintra.h"
#include "vp9/common/reconintra4x4.h"
#include "vp9/common/reconinter.h"
+#include "vp9/decoder/decodframe.h"
#include "detokenize.h"
#include "vp9/common/invtrans.h"
#include "vp9/common/alloccommon.h"
--- /dev/null
+/*
+ * 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.
+ */
+
+
+#ifndef __INC_DECODFRAME_H
+#define __INC_DECODFRAME_H
+
+struct VP9Decompressor;
+
+extern void vp9_init_de_quantizer(struct VP9Decompressor *pbi);
+
+#endif // __INC_DECODFRAME_H
*/
-#include "vpx_ports/config.h"
+#include "vpx_rtcd.h"
#include "dequantize.h"
#include "vp9/common/idct.h"
#include "vpx_mem/vpx_mem.h"
#include "onyxd_int.h"
-extern void vp9_short_idct4x4llm_c(short *input, short *output, int pitch);
-extern void vp9_short_idct4x4llm_1_c(short *input, short *output, int pitch);
-extern void vp9_short_idct8x8_c(short *input, short *output, int pitch);
-extern void vp9_short_idct8x8_1_c(short *input, short *output, int pitch);
-
-#if CONFIG_LOSSLESS
-extern void vp9_short_inv_walsh4x4_x8_c(short *input, short *output,
- int pitch);
-extern void vp9_short_inv_walsh4x4_1_x8_c(short *input, short *output,
- int pitch);
-#endif
-
#ifdef DEC_DEBUG
extern int dec_debug;
#endif
* be found in the AUTHORS file in the root of the source tree.
*/
-#include "vpx_ports/config.h"
+#include "vpx_rtcd.h"
#include "vp9/common/idct.h"
-#include "dequantize.h"
-
-void vp9_dequant_dc_idct_add_c(short *input, short *dq, unsigned char *pred,
- unsigned char *dest, int pitch, int stride,
- int Dc);
-void vp9_dequant_idct_add_c(short *input, short *dq, unsigned char *pred,
- unsigned char *dest, int pitch, int stride);
-void vp9_dc_only_idct_add_c(short input_dc, unsigned char *pred_ptr,
- unsigned char *dst_ptr, int pitch, int stride);
-#if CONFIG_LOSSLESS
-void vp9_dequant_idct_add_lossless_c(short *input, short *dq,
- unsigned char *pred, unsigned char *dest,
- int pitch, int stride);
-void vp9_dc_only_idct_add_lossless_c(short input_dc, unsigned char *pred_ptr,
- unsigned char *dst_ptr,
- int pitch, int stride);
-#endif
void vp9_dequant_dc_idct_add_y_block_c(short *q, short *dq,
unsigned char *pre,
#include "vpx_scale/vpxscale.h"
#include "vp9/common/systemdependent.h"
#include "vpx_ports/vpx_timer.h"
+#include "vp9/decoder/decodframe.h"
#include "detokenize.h"
#if ARCH_ARM
#include "vpx_ports/arm.h"
#endif
-extern void vp9_init_de_quantizer(VP9D_COMP *pbi);
static int get_free_fb(VP9_COMMON *cm);
static void ref_cnt_fb(int *buf, int *idx, int new_idx);
#include "vpx_ports/config.h"
+#include "vp9/encoder/encodeframe.h"
#include "encodemb.h"
#include "encodemv.h"
#include "vp9/common/common.h"
#include "vp9/common/findnearmv.h"
#include "vp9/common/reconintra.h"
#include "vp9/common/seg_common.h"
+#include "vp9/encoder/tokenize.h"
#include "vpx_rtcd.h"
#include <stdio.h>
#include <math.h>
int mb_row_debug, mb_col_debug;
#endif
-extern void vp9_initialize_me_consts(VP9_COMP *cpi, int QIndex);
+static void encode_inter_macroblock(VP9_COMP *cpi, MACROBLOCK *x,
+ TOKENEXTRA **t, int recon_yoffset,
+ int recon_uvoffset, int output_enabled);
-extern void vp9_auto_select_speed(VP9_COMP *cpi);
+static void encode_inter_superblock(VP9_COMP *cpi, MACROBLOCK *x,
+ TOKENEXTRA **t, int recon_yoffset,
+ int recon_uvoffset, int mb_col, int mb_row);
-int64_t vp9_rd_pick_inter_mode_sb(VP9_COMP *cpi, MACROBLOCK *x,
- int recon_yoffset, int recon_uvoffset,
- int *returnrate, int *returndistortion);
+static void encode_intra_macro_block(VP9_COMP *cpi, MACROBLOCK *x,
+ TOKENEXTRA **t, int output_enabled);
-extern void vp9_pick_mode_inter_macroblock(VP9_COMP *cpi, MACROBLOCK *x,
- int recon_yoffset,
- int recon_uvoffset, int *r, int *d);
-
-void vp9_build_block_offsets(MACROBLOCK *x);
-
-void vp9_setup_block_ptrs(MACROBLOCK *x);
-
-void vp9_encode_inter_macroblock(VP9_COMP *cpi, MACROBLOCK *x, TOKENEXTRA **t,
- int recon_yoffset, int recon_uvoffset,
- int output_enabled);
-
-void vp9_encode_inter_superblock(VP9_COMP *cpi, MACROBLOCK *x, TOKENEXTRA **t,
- int recon_yoffset, int recon_uvoffset,
- int mb_col, int mb_row);
-
-void vp9_encode_intra_macro_block(VP9_COMP *cpi, MACROBLOCK *x,
- TOKENEXTRA **t, int output_enabled);
-
-void vp9_encode_intra_super_block(VP9_COMP *cpi, MACROBLOCK *x,
- TOKENEXTRA **t, int mb_col);
+static void encode_intra_super_block(VP9_COMP *cpi, MACROBLOCK *x,
+ TOKENEXTRA **t, int mb_col);
static void adjust_act_zbin(VP9_COMP *cpi, MACROBLOCK *x);
*totaldist += d;
// Dummy encode, do not do the tokenization
- vp9_encode_intra_macro_block(cpi, x, tp, 0);
+ encode_intra_macro_block(cpi, x, tp, 0);
// Note the encoder may have changed the segment_id
// Save the coding context
*totaldist += d;
// Dummy encode, do not do the tokenization
- vp9_encode_inter_macroblock(cpi, x, tp,
- recon_yoffset, recon_uvoffset, 0);
+ encode_inter_macroblock(cpi, x, tp,
+ recon_yoffset, recon_uvoffset, 0);
seg_id = mbmi->segment_id;
if (cpi->mb.e_mbd.segmentation_enabled && seg_id == 0) {
if (cm->frame_type == KEY_FRAME) {
#if CONFIG_SUPERBLOCKS
if (xd->mode_info_context->mbmi.encoded_as_sb)
- vp9_encode_intra_super_block(cpi, x, tp, mb_col);
+ encode_intra_super_block(cpi, x, tp, mb_col);
else
#endif
- vp9_encode_intra_macro_block(cpi, x, tp, 1);
+ encode_intra_macro_block(cpi, x, tp, 1);
// Note the encoder may have changed the segment_id
#ifdef MODE_STATS
#if CONFIG_SUPERBLOCKS
if (xd->mode_info_context->mbmi.encoded_as_sb)
- vp9_encode_inter_superblock(cpi, x, tp, recon_yoffset, recon_uvoffset,
- mb_col, mb_row);
+ encode_inter_superblock(cpi, x, tp, recon_yoffset, recon_uvoffset,
+ mb_col, mb_row);
else
#endif
- vp9_encode_inter_macroblock(cpi, x, tp,
- recon_yoffset, recon_uvoffset, 1);
+ encode_inter_macroblock(cpi, x, tp,
+ recon_yoffset, recon_uvoffset, 1);
// Note the encoder may have changed the segment_id
#ifdef MODE_STATS
}
}
-void vp9_encode_intra_super_block(VP9_COMP *cpi,
- MACROBLOCK *x,
- TOKENEXTRA **t,
- int mb_col) {
+static void encode_intra_super_block(VP9_COMP *cpi, MACROBLOCK *x,
+ TOKENEXTRA **t, int mb_col) {
const int output_enabled = 1;
int n;
MACROBLOCKD *xd = &x->e_mbd;
}
#endif /* CONFIG_SUPERBLOCKS */
-void vp9_encode_intra_macro_block(VP9_COMP *cpi,
- MACROBLOCK *x,
- TOKENEXTRA **t,
- int output_enabled) {
+static void encode_intra_macro_block(VP9_COMP *cpi, MACROBLOCK *x,
+ TOKENEXTRA **t, int output_enabled) {
MB_MODE_INFO * mbmi = &x->e_mbd.mode_info_context->mbmi;
if ((cpi->oxcf.tuning == VP8_TUNE_SSIM) && output_enabled) {
adjust_act_zbin(cpi, x);
#endif
}
-extern void vp9_fix_contexts(MACROBLOCKD *xd);
-
-void vp9_encode_inter_macroblock(VP9_COMP *cpi, MACROBLOCK *x,
- TOKENEXTRA **t, int recon_yoffset,
- int recon_uvoffset, int output_enabled) {
+static void encode_inter_macroblock(VP9_COMP *cpi, MACROBLOCK *x,
+ TOKENEXTRA **t, int recon_yoffset,
+ int recon_uvoffset, int output_enabled) {
VP9_COMMON *cm = &cpi->common;
MACROBLOCKD *const xd = &x->e_mbd;
MB_MODE_INFO * mbmi = &xd->mode_info_context->mbmi;
}
#if CONFIG_SUPERBLOCKS
-void vp9_encode_inter_superblock(VP9_COMP *cpi, MACROBLOCK *x, TOKENEXTRA **t,
- int recon_yoffset, int recon_uvoffset,
- int mb_col, int mb_row) {
+static void encode_inter_superblock(VP9_COMP *cpi, MACROBLOCK *x,
+ TOKENEXTRA **t, int recon_yoffset,
+ int recon_uvoffset,
+ int mb_col, int mb_row) {
const int output_enabled = 1;
VP9_COMMON *cm = &cpi->common;
MACROBLOCKD *xd = &x->e_mbd;
--- /dev/null
+/*
+ * 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.
+ */
+
+
+#ifndef __INC_ENCODEFRAME_H
+#define __INC_ENCODEFRAME_H
+
+struct macroblock;
+
+extern void vp9_build_block_offsets(struct macroblock *x);
+
+extern void vp9_setup_block_ptrs(struct macroblock *x);
+
+#endif // __INC_ENCODEFRAME_H
#include "mcomp.h"
#include "firstpass.h"
#include "vpx_scale/vpxscale.h"
+#include "vp9/encoder/encodeframe.h"
#include "encodemb.h"
#include "vp9/common/extend.h"
#include "vp9/common/systemdependent.h"
#include "vpx_mem/vpx_mem.h"
#include "vp9/common/swapyv12buffer.h"
#include <stdio.h>
+#include "vp9/encoder/quantize.h"
#include "rdopt.h"
#include "ratectrl.h"
#include "vp9/common/quant_common.h"
#define IF_RTCD(x) NULL
#endif
-extern void vp9_build_block_offsets(MACROBLOCK *x);
-
-extern void vp9_setup_block_ptrs(MACROBLOCK *x);
-
-extern void vp9_frame_init_quantizer(VP9_COMP *cpi);
-
-extern void vp9_set_mbmode_and_mvs(MACROBLOCK *x, MB_PREDICTION_MODE mb,
- int_mv *mv);
-
-extern void vp9_alloc_compressor_data(VP9_COMP *cpi);
-
#define IIFACTOR 12.5
#define IIKFACTOR1 12.5
#define IIKFACTOR2 15.0
#include "vp9/common/pred_common.h"
#include "vp9/encoder/rdopt.h"
#include "bitstream.h"
+#include "vp9/encoder/picklpf.h"
#include "ratectrl.h"
#if CONFIG_NEWBESTREFMV
#define RTCD(x) NULL
#endif
-extern void vp9_pick_filter_level_fast(YV12_BUFFER_CONFIG *sd, VP9_COMP *cpi);
-
-extern void vp9_set_alt_lf_level(VP9_COMP *cpi, int filt_val);
-
-extern void vp9_pick_filter_level(YV12_BUFFER_CONFIG *sd, VP9_COMP *cpi);
-
extern void vp9_cmachine_specific_config(VP9_COMP *cpi);
-extern void vp9_deblock_frame(YV12_BUFFER_CONFIG *source,
- YV12_BUFFER_CONFIG *post,
- int filt_lvl, int low_var_thresh, int flag);
-
extern void print_tree_update_probs();
#if HAVE_ARMV7
YV12_BUFFER_CONFIG *dst_ybc);
#endif
-int vp9_calc_ss_err(YV12_BUFFER_CONFIG *source, YV12_BUFFER_CONFIG *dest);
-
-extern void vp9_temporal_filter_prepare_c(VP9_COMP *cpi, int distance);
-
static void set_default_lf_deltas(VP9_COMP *cpi);
#define DEFAULT_INTERP_FILTER EIGHTTAP /* SWITCHABLE for better performance */
void vp9_activity_masking(VP9_COMP *cpi, MACROBLOCK *x);
-void vp9_tokenize_mb(VP9_COMP *, MACROBLOCKD *, TOKENEXTRA **, int dry_run);
-void vp9_stuff_mb(VP9_COMP *cpi, MACROBLOCKD *xd, TOKENEXTRA **t, int dry_run);
-
void vp9_set_speed_features(VP9_COMP *cpi);
+extern int vp9_calc_ss_err(YV12_BUFFER_CONFIG *source,
+ YV12_BUFFER_CONFIG *dest);
+
+extern void vp9_alloc_compressor_data(VP9_COMP *cpi);
+
#if CONFIG_DEBUG
#define CHECK_MEM_ERROR(lval,expr) do {\
lval = (expr); \
#include "vp9/common/onyxc_int.h"
#include "onyx_int.h"
+#include "vp9/encoder/picklpf.h"
#include "quantize.h"
#include "vpx_mem/vpx_mem.h"
#include "vpx_scale/vpxscale.h"
#include "vpx_ports/arm.h"
#endif
-extern int vp9_calc_ss_err(YV12_BUFFER_CONFIG *source,
- YV12_BUFFER_CONFIG *dest);
#if HAVE_ARMV7
extern void vp8_yv12_copy_frame_yonly_no_extend_frame_borders_neon(YV12_BUFFER_CONFIG *src_ybc, YV12_BUFFER_CONFIG *dst_ybc);
#endif
--- /dev/null
+/*
+ * 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.
+ */
+
+
+#ifndef __INC_PICKLPF_H
+#define __INC_PICKLPF_H
+
+struct yv12_buffer_config;
+struct VP9_COMP;
+
+extern void vp9_pick_filter_level_fast(struct yv12_buffer_config *sd,
+ struct VP9_COMP *cpi);
+
+extern void vp9_set_alt_lf_level(struct VP9_COMP *cpi, int filt_val);
+
+extern void vp9_pick_filter_level(struct yv12_buffer_config *sd,
+ struct VP9_COMP *cpi);
+
+#endif // __INC_PICKLPF_H
#define IF_RTCD(x) NULL
#endif
-extern void vp9_mb_init_quantizer(VP9_COMP *cpi, MACROBLOCK *x);
-extern void vp9_update_zbin_extra(VP9_COMP *cpi, MACROBLOCK *x);
-
#define MAXF(a,b) (((a) > (b)) ? (a) : (b))
#define INVALID_MV 0x80008000
}
}
-void vp9_auto_select_speed(VP9_COMP *cpi) {
- int milliseconds_for_compress = (int)(1000000 / cpi->oxcf.frame_rate);
-
- milliseconds_for_compress = milliseconds_for_compress * (16 - cpi->oxcf.cpu_used) / 16;
-
- /*
- // this is done during parameter valid check
- if( cpi->oxcf.cpu_used > 16)
- cpi->oxcf.cpu_used = 16;
- if( cpi->oxcf.cpu_used < -16)
- cpi->oxcf.cpu_used = -16;
- */
-
- if (cpi->avg_pick_mode_time < milliseconds_for_compress &&
- (cpi->avg_encode_time - cpi->avg_pick_mode_time) <
- milliseconds_for_compress) {
- if (cpi->avg_pick_mode_time == 0) {
- cpi->Speed = 4;
- } else {
- if (milliseconds_for_compress * 100 < cpi->avg_encode_time * 95) {
- cpi->Speed += 2;
- cpi->avg_pick_mode_time = 0;
- cpi->avg_encode_time = 0;
-
- if (cpi->Speed > 16) {
- cpi->Speed = 16;
- }
- }
-
- if (milliseconds_for_compress * 100 >
- cpi->avg_encode_time * auto_speed_thresh[cpi->Speed]) {
- cpi->Speed -= 1;
- cpi->avg_pick_mode_time = 0;
- cpi->avg_encode_time = 0;
-
- // In real-time mode, cpi->speed is in [4, 16].
- if (cpi->Speed < 4) { // if ( cpi->Speed < 0 )
- cpi->Speed = 4; // cpi->Speed = 0;
- }
- }
- }
- } else {
- cpi->Speed += 4;
-
- if (cpi->Speed > 16)
- cpi->Speed = 16;
-
-
- cpi->avg_pick_mode_time = 0;
- cpi->avg_encode_time = 0;
- }
-}
-
int vp9_block_error_c(short *coeff, short *dqcoeff, int block_size) {
int i, error = 0;
return this_rd; // if 0, this will be re-calculated by caller
}
-void vp9_rd_pick_inter_mode(VP9_COMP *cpi, MACROBLOCK *x,
- int recon_yoffset, int recon_uvoffset,
- int *returnrate, int *returndistortion,
- int64_t *returnintra) {
+static void rd_pick_inter_mode(VP9_COMP *cpi, MACROBLOCK *x,
+ int recon_yoffset, int recon_uvoffset,
+ int *returnrate, int *returndistortion,
+ int64_t *returnintra) {
VP9_COMMON *cm = &cpi->common;
MACROBLOCKD *xd = &x->e_mbd;
union b_mode_info best_bmodes[16];
{
int zbin_mode_boost_enabled = cpi->zbin_mode_boost_enabled;
- vp9_rd_pick_inter_mode(cpi, x, recon_yoffset, recon_uvoffset, &rate,
- &distortion, &intra_error);
+ rd_pick_inter_mode(cpi, x, recon_yoffset, recon_uvoffset, &rate,
+ &distortion, &intra_error);
/* restore cpi->zbin_mode_boost_enabled */
cpi->zbin_mode_boost_enabled = zbin_mode_boost_enabled;
extern void vp9_initialize_rd_consts(VP9_COMP *cpi, int Qvalue);
-extern void vp9_rd_pick_inter_mode(VP9_COMP *cpi, MACROBLOCK *x,
- int recon_yoffset, int recon_uvoffset,
- int *returnrate, int *returndistortion,
- int64_t *returnintra);
+extern void vp9_initialize_me_consts(VP9_COMP *cpi, int QIndex);
extern void vp9_rd_pick_intra_mode(VP9_COMP *cpi, MACROBLOCK *x,
int *r, int *d);
extern void vp9_rd_pick_intra_mode_sb(VP9_COMP *cpi, MACROBLOCK *x,
int *r, int *d);
+extern void vp9_pick_mode_inter_macroblock(VP9_COMP *cpi, MACROBLOCK *x,
+ int recon_yoffset,
+ int recon_uvoffset, int *r, int *d);
+
+extern int64_t vp9_rd_pick_inter_mode_sb(VP9_COMP *cpi, MACROBLOCK *x,
+ int recon_yoffset, int recon_uvoffset,
+ int *returnrate, int *returndist);
+
extern void vp9_mv_pred(VP9_COMP *cpi, MACROBLOCKD *xd,
const MODE_INFO *here, int_mv *mvp,
int refframe, int *ref_frame_sign_bias,
#define TEMPORAL_INVOKE(ctx,fn) vp9_temporal_filter_##fn
#endif
+struct VP9_COMP;
+
+extern void vp9_temporal_filter_prepare_c(struct VP9_COMP *cpi, int distance);
+
#endif // __INC_TEMPORAL_FILTER_H
[PREV_COEF_CONTEXTS][ENTROPY_NODES] [2];
#endif /* ENTROPY_STATS */
-void vp9_stuff_mb(VP9_COMP *cpi, MACROBLOCKD *xd, TOKENEXTRA **t, int dry_run);
-void vp9_fix_contexts(MACROBLOCKD *xd);
-
static TOKENVALUE dct_value_tokens[DCT_MAX_VALUE * 2];
const TOKENVALUE *vp9_dct_value_tokens_ptr;
static int dct_value_cost[DCT_MAX_VALUE * 2];
unsigned char skip_eob_node;
} TOKENEXTRA;
-int rd_cost_mby(MACROBLOCKD *);
-
extern int vp9_mby_is_skippable_4x4(MACROBLOCKD *xd, int has_y2_block);
extern int vp9_mbuv_is_skippable_4x4(MACROBLOCKD *xd);
extern int vp9_mby_is_skippable_8x8(MACROBLOCKD *xd, int has_y2_block);
extern int vp9_mbuv_is_skippable_8x8(MACROBLOCKD *xd);
extern int vp9_mby_is_skippable_16x16(MACROBLOCKD *xd);
+struct VP9_COMP;
+
+extern void vp9_tokenize_mb(struct VP9_COMP *cpi, MACROBLOCKD *xd,
+ TOKENEXTRA **t, int dry_run);
+
+extern void vp9_stuff_mb(struct VP9_COMP *cpi, MACROBLOCKD *xd,
+ TOKENEXTRA **t, int dry_run);
+
+extern void vp9_fix_contexts(MACROBLOCKD *xd);
+
#ifdef ENTROPY_STATS
void init_context_counters();
void print_context_counters();