Adjust style to match Google Coding Style a little more closely.

Most of these were picked up in the previous commit (prefix change from
vp8_ to vp9_), but I'm pushing this separately so that it's easier to
review.

Change-Id: I91e959895778b8632d7d33375523df8a7568a490
This commit is contained in:
Ronald S. Bultje 2012-10-30 14:25:33 -07:00
parent f88558fb1d
commit d115dbc24c
21 changed files with 764 additions and 631 deletions

View File

@ -172,7 +172,7 @@ extern "C"
} VP8_CONFIG; } VP8_CONFIG;
void vp9_initialize(); void vp9_initialize_enc();
VP8_PTR vp9_create_compressor(VP8_CONFIG *oxcf); VP8_PTR vp9_create_compressor(VP8_CONFIG *oxcf);
void vp9_remove_compressor(VP8_PTR *comp); void vp9_remove_compressor(VP8_PTR *comp);
@ -182,18 +182,41 @@ extern "C"
// receive a frames worth of data caller can assume that a copy of this frame is made // receive a frames worth of data caller can assume that a copy of this frame is made
// and not just a copy of the pointer.. // and not just a copy of the pointer..
int vp9_receive_raw_frame(VP8_PTR comp, unsigned int frame_flags, YV12_BUFFER_CONFIG *sd, int64_t time_stamp, int64_t end_time_stamp); int vp9_receive_raw_frame(VP8_PTR comp, unsigned int frame_flags,
int vp9_get_compressed_data(VP8_PTR comp, unsigned int *frame_flags, unsigned long *size, unsigned char *dest, int64_t *time_stamp, int64_t *time_end, int flush); YV12_BUFFER_CONFIG *sd, int64_t time_stamp,
int vp9_get_preview_raw_frame(VP8_PTR comp, YV12_BUFFER_CONFIG *dest, vp8_ppflags_t *flags); int64_t end_time_stamp);
int vp9_get_compressed_data(VP8_PTR comp, unsigned int *frame_flags,
unsigned long *size, unsigned char *dest,
int64_t *time_stamp, int64_t *time_end,
int flush);
int vp9_get_preview_raw_frame(VP8_PTR comp, YV12_BUFFER_CONFIG *dest,
vp8_ppflags_t *flags);
int vp9_use_as_reference(VP8_PTR comp, int ref_frame_flags); int vp9_use_as_reference(VP8_PTR comp, int ref_frame_flags);
int vp9_update_reference(VP8_PTR comp, int ref_frame_flags); int vp9_update_reference(VP8_PTR comp, int ref_frame_flags);
int vp9_get_reference(VP8_PTR comp, VP8_REFFRAME ref_frame_flag, YV12_BUFFER_CONFIG *sd);
int vp9_set_reference(VP8_PTR comp, VP8_REFFRAME ref_frame_flag, YV12_BUFFER_CONFIG *sd); int vp9_get_reference_enc(VP8_PTR comp, VP8_REFFRAME ref_frame_flag,
YV12_BUFFER_CONFIG *sd);
int vp9_set_reference_enc(VP8_PTR comp, VP8_REFFRAME ref_frame_flag,
YV12_BUFFER_CONFIG *sd);
int vp9_update_entropy(VP8_PTR comp, int update); int vp9_update_entropy(VP8_PTR comp, int update);
int vp9_set_roimap(VP8_PTR comp, unsigned char *map, unsigned int rows, unsigned int cols, int delta_q[4], int delta_lf[4], unsigned int threshold[4]);
int vp9_set_active_map(VP8_PTR comp, unsigned char *map, unsigned int rows, unsigned int cols); int vp9_set_roimap(VP8_PTR comp, unsigned char *map,
int vp9_set_internal_size(VP8_PTR comp, VPX_SCALING horiz_mode, VPX_SCALING vert_mode); unsigned int rows, unsigned int cols,
int delta_q[4], int delta_lf[4],
unsigned int threshold[4]);
int vp9_set_active_map(VP8_PTR comp, unsigned char *map,
unsigned int rows, unsigned int cols);
int vp9_set_internal_size(VP8_PTR comp,
VPX_SCALING horiz_mode, VPX_SCALING vert_mode);
int vp9_get_quantizer(VP8_PTR c); int vp9_get_quantizer(VP8_PTR c);
#ifdef __cplusplus #ifdef __cplusplus

View File

@ -1860,7 +1860,8 @@ static void segment_reference_frames(VP8_COMP *cpi) {
} }
} }
void vp9_pack_bitstream(VP8_COMP *cpi, unsigned char *dest, unsigned long *size) { void vp9_pack_bitstream(VP8_COMP *cpi, unsigned char *dest,
unsigned long *size) {
int i, j; int i, j;
VP8_HEADER oh; VP8_HEADER oh;
VP8_COMMON *const pc = &cpi->common; VP8_COMMON *const pc = &cpi->common;
@ -1883,12 +1884,15 @@ void vp9_pack_bitstream(VP8_COMP *cpi, unsigned char *dest, unsigned long *size)
compute_update_table(); compute_update_table();
// vp8_kf_default_bmode_probs() is called in vp9_setup_key_frame() once for each /* vp8_kf_default_bmode_probs() is called in vp9_setup_key_frame() once
// K frame before encode frame. pc->kf_bmode_prob doesn't get changed anywhere * for each K frame before encode frame. pc->kf_bmode_prob doesn't get
// else. No need to call it again here. --yw * changed anywhere else. No need to call it again here. --yw
// vp8_kf_default_bmode_probs( pc->kf_bmode_prob); * vp8_kf_default_bmode_probs( pc->kf_bmode_prob);
*/
// every keyframe send startcode, width, height, scale factor, clamp and color type /* every keyframe send startcode, width, height, scale factor, clamp
* and color type.
*/
if (oh.type == KEY_FRAME) { if (oh.type == KEY_FRAME) {
int v; int v;

View File

@ -503,7 +503,7 @@ void vp9_short_fdct8x8_c(short *InputData, short *OutputData, int pitch) {
} }
} }
void vp9_short_fhaar2x2_c(short *input, short *output, int pitch) { // pitch = 8 void vp9_short_fhaar2x2_c(short *input, short *output, int pitch) {
/* [1 1; 1 -1] orthogonal transform */ /* [1 1; 1 -1] orthogonal transform */
/* use position: 0,1, 4, 8 */ /* use position: 0,1, 4, 8 */
int i; int i;
@ -517,7 +517,6 @@ void vp9_short_fhaar2x2_c(short *input, short *output, int pitch) { // pitch = 8
op1[1] = (ip1[0] - ip1[1] + ip1[4] - ip1[8]) >> 1; op1[1] = (ip1[0] - ip1[1] + ip1[4] - ip1[8]) >> 1;
op1[4] = (ip1[0] + ip1[1] - ip1[4] - ip1[8]) >> 1; op1[4] = (ip1[0] + ip1[1] - ip1[4] - ip1[8]) >> 1;
op1[8] = (ip1[0] - ip1[1] - ip1[4] + ip1[8]) >> 1; op1[8] = (ip1[0] - ip1[1] - ip1[4] + ip1[8]) >> 1;
} }
/* For test */ /* For test */

View File

@ -54,31 +54,36 @@ int enc_debug = 0;
int mb_row_debug, mb_col_debug; int mb_row_debug, mb_col_debug;
#endif #endif
extern void vp9cx_initialize_me_consts(VP8_COMP *cpi, int QIndex); extern void vp9_initialize_me_consts(VP8_COMP *cpi, int QIndex);
extern void vp9_auto_select_speed(VP8_COMP *cpi); extern void vp9_auto_select_speed(VP8_COMP *cpi);
extern void vp8cx_init_mbrthread_data(VP8_COMP *cpi,
MACROBLOCK *x,
MB_ROW_COMP *mbr_ei,
int mb_row,
int count);
int64_t vp9_rd_pick_inter_mode_sb(VP8_COMP *cpi, MACROBLOCK *x, int64_t vp9_rd_pick_inter_mode_sb(VP8_COMP *cpi, MACROBLOCK *x,
int recon_yoffset, int recon_uvoffset, int recon_yoffset, int recon_uvoffset,
int *returnrate, int *returndistortion); int *returnrate, int *returndistortion);
extern void vp9cx_pick_mode_inter_macroblock(VP8_COMP *cpi, MACROBLOCK *x,
int recon_yoffset, extern void vp9_pick_mode_inter_macroblock(VP8_COMP *cpi, MACROBLOCK *x,
int recon_uvoffset, int *r, int *d); int recon_yoffset,
int recon_uvoffset, int *r, int *d);
void vp9_build_block_offsets(MACROBLOCK *x); void vp9_build_block_offsets(MACROBLOCK *x);
void vp9_setup_block_ptrs(MACROBLOCK *x); void vp9_setup_block_ptrs(MACROBLOCK *x);
void vp9cx_encode_inter_macroblock(VP8_COMP *cpi, MACROBLOCK *x, TOKENEXTRA **t,
int recon_yoffset, int recon_uvoffset, void vp9_encode_inter_macroblock(VP8_COMP *cpi, MACROBLOCK *x, TOKENEXTRA **t,
int output_enabled); int recon_yoffset, int recon_uvoffset,
void vp9cx_encode_inter_superblock(VP8_COMP *cpi, MACROBLOCK *x, TOKENEXTRA **t, int output_enabled);
int recon_yoffset, int recon_uvoffset, int mb_col, int mb_row);
void vp9cx_encode_intra_macro_block(VP8_COMP *cpi, MACROBLOCK *x, void vp9_encode_inter_superblock(VP8_COMP *cpi, MACROBLOCK *x, TOKENEXTRA **t,
TOKENEXTRA **t, int output_enabled); int recon_yoffset, int recon_uvoffset,
void vp9cx_encode_intra_super_block(VP8_COMP *cpi, int mb_col, int mb_row);
MACROBLOCK *x,
TOKENEXTRA **t, int mb_col); void vp9_encode_intra_macro_block(VP8_COMP *cpi, MACROBLOCK *x,
TOKENEXTRA **t, int output_enabled);
void vp9_encode_intra_super_block(VP8_COMP *cpi, MACROBLOCK *x,
TOKENEXTRA **t, int mb_col);
static void adjust_act_zbin(VP8_COMP *cpi, MACROBLOCK *x); static void adjust_act_zbin(VP8_COMP *cpi, MACROBLOCK *x);
#ifdef MODE_STATS #ifdef MODE_STATS
@ -605,7 +610,7 @@ static void pick_mb_modes(VP8_COMP *cpi,
if (mbmi->segment_id > 3) if (mbmi->segment_id > 3)
mbmi->segment_id = 0; mbmi->segment_id = 0;
vp9cx_mb_init_quantizer(cpi, x); vp9_mb_init_quantizer(cpi, x);
} else } else
// Set to Segment 0 by default // Set to Segment 0 by default
mbmi->segment_id = 0; mbmi->segment_id = 0;
@ -629,7 +634,7 @@ static void pick_mb_modes(VP8_COMP *cpi,
*totaldist += d; *totaldist += d;
// Dummy encode, do not do the tokenization // Dummy encode, do not do the tokenization
vp9cx_encode_intra_macro_block(cpi, x, tp, 0); vp9_encode_intra_macro_block(cpi, x, tp, 0);
// Note the encoder may have changed the segment_id // Note the encoder may have changed the segment_id
// Save the coding context // Save the coding context
@ -650,14 +655,14 @@ static void pick_mb_modes(VP8_COMP *cpi,
cpi->seg0_progress = (((mb_col & ~1) * 2 + (mb_row & ~1) * cm->mb_cols + i) << 16) / cm->MBs; cpi->seg0_progress = (((mb_col & ~1) * 2 + (mb_row & ~1) * cm->mb_cols + i) << 16) / cm->MBs;
} }
vp9cx_pick_mode_inter_macroblock(cpi, x, recon_yoffset, vp9_pick_mode_inter_macroblock(cpi, x, recon_yoffset,
recon_uvoffset, &r, &d); recon_uvoffset, &r, &d);
*totalrate += r; *totalrate += r;
*totaldist += d; *totaldist += d;
// Dummy encode, do not do the tokenization // Dummy encode, do not do the tokenization
vp9cx_encode_inter_macroblock(cpi, x, tp, vp9_encode_inter_macroblock(cpi, x, tp,
recon_yoffset, recon_uvoffset, 0); recon_yoffset, recon_uvoffset, 0);
seg_id = mbmi->segment_id; seg_id = mbmi->segment_id;
if (cpi->mb.e_mbd.segmentation_enabled && seg_id == 0) { if (cpi->mb.e_mbd.segmentation_enabled && seg_id == 0) {
@ -797,7 +802,7 @@ static void pick_sb_modes (VP8_COMP *cpi,
if (xd->mode_info_context->mbmi.segment_id > 3) if (xd->mode_info_context->mbmi.segment_id > 3)
xd->mode_info_context->mbmi.segment_id = 0; xd->mode_info_context->mbmi.segment_id = 0;
vp9cx_mb_init_quantizer(cpi, x); vp9_mb_init_quantizer(cpi, x);
} }
else else
/* Set to Segment 0 by default */ /* Set to Segment 0 by default */
@ -972,7 +977,7 @@ static void encode_sb(VP8_COMP *cpi,
// Is segmentation enabled // Is segmentation enabled
if (xd->segmentation_enabled) { if (xd->segmentation_enabled) {
vp9cx_mb_init_quantizer(cpi, x); vp9_mb_init_quantizer(cpi, x);
} }
x->active_ptr = cpi->active_map + map_index; x->active_ptr = cpi->active_map + map_index;
@ -987,10 +992,10 @@ static void encode_sb(VP8_COMP *cpi,
if (cm->frame_type == KEY_FRAME) { if (cm->frame_type == KEY_FRAME) {
#if CONFIG_SUPERBLOCKS #if CONFIG_SUPERBLOCKS
if (xd->mode_info_context->mbmi.encoded_as_sb) if (xd->mode_info_context->mbmi.encoded_as_sb)
vp9cx_encode_intra_super_block(cpi, x, tp, mb_col); vp9_encode_intra_super_block(cpi, x, tp, mb_col);
else else
#endif #endif
vp9cx_encode_intra_macro_block(cpi, x, tp, 1); vp9_encode_intra_macro_block(cpi, x, tp, 1);
// Note the encoder may have changed the segment_id // Note the encoder may have changed the segment_id
#ifdef MODE_STATS #ifdef MODE_STATS
@ -1013,11 +1018,12 @@ static void encode_sb(VP8_COMP *cpi,
#if CONFIG_SUPERBLOCKS #if CONFIG_SUPERBLOCKS
if (xd->mode_info_context->mbmi.encoded_as_sb) if (xd->mode_info_context->mbmi.encoded_as_sb)
vp9cx_encode_inter_superblock(cpi, x, tp, recon_yoffset, recon_uvoffset, mb_col, mb_row); vp9_encode_inter_superblock(cpi, x, tp, recon_yoffset, recon_uvoffset,
mb_col, mb_row);
else else
#endif #endif
vp9cx_encode_inter_macroblock(cpi, x, tp, vp9_encode_inter_macroblock(cpi, x, tp,
recon_yoffset, recon_uvoffset, 1); recon_yoffset, recon_uvoffset, 1);
// Note the encoder may have changed the segment_id // Note the encoder may have changed the segment_id
#ifdef MODE_STATS #ifdef MODE_STATS
@ -1360,10 +1366,10 @@ static void encode_frame_internal(VP8_COMP *cpi) {
vp8_zero(cpi->coef_counts_16x16); vp8_zero(cpi->coef_counts_16x16);
vp8_zero(cpi->hybrid_coef_counts_16x16); vp8_zero(cpi->hybrid_coef_counts_16x16);
vp9cx_frame_init_quantizer(cpi); vp9_frame_init_quantizer(cpi);
vp9_initialize_rd_consts(cpi, cm->base_qindex + cm->y1dc_delta_q); vp9_initialize_rd_consts(cpi, cm->base_qindex + cm->y1dc_delta_q);
vp9cx_initialize_me_consts(cpi, cm->base_qindex); vp9_initialize_me_consts(cpi, cm->base_qindex);
if (cpi->oxcf.tuning == VP8_TUNE_SSIM) { if (cpi->oxcf.tuning == VP8_TUNE_SSIM) {
// Initialize encode frame context. // Initialize encode frame context.
@ -1846,10 +1852,10 @@ static void update_sb_skip_coeff_state(VP8_COMP *cpi,
} }
} }
void vp9cx_encode_intra_super_block(VP8_COMP *cpi, void vp9_encode_intra_super_block(VP8_COMP *cpi,
MACROBLOCK *x, MACROBLOCK *x,
TOKENEXTRA **t, TOKENEXTRA **t,
int mb_col) { int mb_col) {
const int output_enabled = 1; const int output_enabled = 1;
int n; int n;
MACROBLOCKD *xd = &x->e_mbd; MACROBLOCKD *xd = &x->e_mbd;
@ -1926,10 +1932,10 @@ void vp9cx_encode_intra_super_block(VP8_COMP *cpi,
} }
#endif /* CONFIG_SUPERBLOCKS */ #endif /* CONFIG_SUPERBLOCKS */
void vp9cx_encode_intra_macro_block(VP8_COMP *cpi, void vp9_encode_intra_macro_block(VP8_COMP *cpi,
MACROBLOCK *x, MACROBLOCK *x,
TOKENEXTRA **t, TOKENEXTRA **t,
int output_enabled) { int output_enabled) {
MB_MODE_INFO * mbmi = &x->e_mbd.mode_info_context->mbmi; MB_MODE_INFO * mbmi = &x->e_mbd.mode_info_context->mbmi;
if ((cpi->oxcf.tuning == VP8_TUNE_SSIM) && output_enabled) { if ((cpi->oxcf.tuning == VP8_TUNE_SSIM) && output_enabled) {
adjust_act_zbin(cpi, x); adjust_act_zbin(cpi, x);
@ -1984,9 +1990,9 @@ extern int cnt_pm;
extern void vp9_fix_contexts(MACROBLOCKD *xd); extern void vp9_fix_contexts(MACROBLOCKD *xd);
void vp9cx_encode_inter_macroblock (VP8_COMP *cpi, MACROBLOCK *x, void vp9_encode_inter_macroblock(VP8_COMP *cpi, MACROBLOCK *x,
TOKENEXTRA **t, int recon_yoffset, TOKENEXTRA **t, int recon_yoffset,
int recon_uvoffset, int output_enabled) { int recon_uvoffset, int output_enabled) {
VP8_COMMON *cm = &cpi->common; VP8_COMMON *cm = &cpi->common;
MACROBLOCKD *const xd = &x->e_mbd; MACROBLOCKD *const xd = &x->e_mbd;
MB_MODE_INFO * mbmi = &xd->mode_info_context->mbmi; MB_MODE_INFO * mbmi = &xd->mode_info_context->mbmi;
@ -2170,8 +2176,9 @@ void vp9cx_encode_inter_macroblock (VP8_COMP *cpi, MACROBLOCK *x,
} }
#if CONFIG_SUPERBLOCKS #if CONFIG_SUPERBLOCKS
void vp9cx_encode_inter_superblock(VP8_COMP *cpi, MACROBLOCK *x, TOKENEXTRA **t, void vp9_encode_inter_superblock(VP8_COMP *cpi, MACROBLOCK *x, TOKENEXTRA **t,
int recon_yoffset, int recon_uvoffset, int mb_col, int mb_row) { int recon_yoffset, int recon_uvoffset,
int mb_col, int mb_row) {
const int output_enabled = 1; const int output_enabled = 1;
VP8_COMMON *cm = &cpi->common; VP8_COMMON *cm = &cpi->common;
MACROBLOCKD *xd = &x->e_mbd; MACROBLOCKD *xd = &x->e_mbd;

View File

@ -77,7 +77,7 @@ void vp9_encode_intra4x4block(const VP8_ENCODER_RTCD *rtcd,
vp9_ht_quantize_b_4x4(be, b, tx_type); vp9_ht_quantize_b_4x4(be, b, tx_type);
vp8_ihtllm_c(b->dqcoeff, b->diff, 32, tx_type, 4); vp8_ihtllm_c(b->dqcoeff, b->diff, 32, tx_type, 4);
} else { } else {
x->vp9_short_fdct4x4(be->src_diff, be->coeff, 32) ; x->vp9_short_fdct4x4(be->src_diff, be->coeff, 32);
x->quantize_b_4x4(be, b) ; x->quantize_b_4x4(be, b) ;
vp8_inverse_transform_b_4x4(IF_RTCD(&rtcd->common->idct), b, 32) ; vp8_inverse_transform_b_4x4(IF_RTCD(&rtcd->common->idct), b, 32) ;
} }

View File

@ -40,9 +40,14 @@
#endif #endif
extern void vp9_build_block_offsets(MACROBLOCK *x); extern void vp9_build_block_offsets(MACROBLOCK *x);
extern void vp9_setup_block_ptrs(MACROBLOCK *x); extern void vp9_setup_block_ptrs(MACROBLOCK *x);
extern void vp9cx_frame_init_quantizer(VP8_COMP *cpi);
extern void vp9_set_mbmode_and_mvs(MACROBLOCK *x, MB_PREDICTION_MODE mb, int_mv *mv); extern void vp9_frame_init_quantizer(VP8_COMP *cpi);
extern void vp9_set_mbmode_and_mvs(MACROBLOCK *x, MB_PREDICTION_MODE mb,
int_mv *mv);
extern void vp9_alloc_compressor_data(VP8_COMP *cpi); extern void vp9_alloc_compressor_data(VP8_COMP *cpi);
#define IIFACTOR 12.5 #define IIFACTOR 12.5
@ -485,7 +490,7 @@ void vp9_first_pass(VP8_COMP *cpi) {
// set up frame new frame for intra coded blocks // set up frame new frame for intra coded blocks
vp8_setup_intra_recon(new_yv12); vp8_setup_intra_recon(new_yv12);
vp9cx_frame_init_quantizer(cpi); vp9_frame_init_quantizer(cpi);
// Initialise the MV cost table to the defaults // Initialise the MV cost table to the defaults
// if( cm->current_video_frame == 0) // if( cm->current_video_frame == 0)
@ -1138,11 +1143,15 @@ void vp9_init_second_pass(VP8_COMP *cpi) {
// encoded in the second pass is a guess. However the sum duration is not. // encoded in the second pass is a guess. However the sum duration is not.
// Its calculated based on the actual durations of all frames from the first // Its calculated based on the actual durations of all frames from the first
// pass. // pass.
vp9_new_frame_rate(cpi, 10000000.0 * cpi->twopass.total_stats->count / cpi->twopass.total_stats->duration); vp9_new_frame_rate(cpi,
10000000.0 * cpi->twopass.total_stats->count /
cpi->twopass.total_stats->duration);
cpi->output_frame_rate = cpi->oxcf.frame_rate; cpi->output_frame_rate = cpi->oxcf.frame_rate;
cpi->twopass.bits_left = (int64_t)(cpi->twopass.total_stats->duration * cpi->oxcf.target_bandwidth / 10000000.0); cpi->twopass.bits_left = (int64_t)(cpi->twopass.total_stats->duration *
cpi->twopass.bits_left -= (int64_t)(cpi->twopass.total_stats->duration * two_pass_min_rate / 10000000.0); cpi->oxcf.target_bandwidth / 10000000.0);
cpi->twopass.bits_left -= (int64_t)(cpi->twopass.total_stats->duration *
two_pass_min_rate / 10000000.0);
// Calculate a minimum intra value to be used in determining the IIratio // Calculate a minimum intra value to be used in determining the IIratio
// scores used in the second pass. We have this minimum to make sure // scores used in the second pass. We have this minimum to make sure

View File

@ -17,8 +17,12 @@
void vp9_arch_x86_encoder_init(VP8_COMP *cpi); void vp9_arch_x86_encoder_init(VP8_COMP *cpi);
void vp8_arch_arm_encoder_init(VP8_COMP *cpi); void vp8_arch_arm_encoder_init(VP8_COMP *cpi);
void (*vp9_yv12_copy_partial_frame_ptr)(YV12_BUFFER_CONFIG *src_ybc, YV12_BUFFER_CONFIG *dst_ybc, int Fraction); void (*vp9_yv12_copy_partial_frame_ptr)(YV12_BUFFER_CONFIG *src_ybc,
extern void vp9_yv12_copy_partial_frame(YV12_BUFFER_CONFIG *src_ybc, YV12_BUFFER_CONFIG *dst_ybc, int Fraction); YV12_BUFFER_CONFIG *dst_ybc,
int fraction);
extern void vp9_yv12_copy_partial_frame(YV12_BUFFER_CONFIG *src_ybc,
YV12_BUFFER_CONFIG *dst_ybc,
int fraction);
void vp9_cmachine_specific_config(VP8_COMP *cpi) { void vp9_cmachine_specific_config(VP8_COMP *cpi) {
#if CONFIG_RUNTIME_CPU_DETECT #if CONFIG_RUNTIME_CPU_DETECT

View File

@ -17,21 +17,17 @@
void vp9_init_mode_costs(VP8_COMP *c) { void vp9_init_mode_costs(VP8_COMP *c) {
VP8_COMMON *x = &c->common; VP8_COMMON *x = &c->common;
{ const vp8_tree_p T = vp8_bmode_tree;
const vp8_tree_p T = vp8_bmode_tree; int i, j;
int i = 0; for (i = 0; i < VP8_BINTRAMODES; i++) {
for (j = 0; j < VP8_BINTRAMODES; j++) {
do { vp9_cost_tokens((int *)c->mb.bmode_costs[i][j],
int j = 0; x->kf_bmode_prob[i][j], T);
}
do {
vp9_cost_tokens((int *)c->mb.bmode_costs[i][j], x->kf_bmode_prob[i][j], T);
} while (++j < VP8_BINTRAMODES);
} while (++i < VP8_BINTRAMODES);
vp9_cost_tokens((int *)c->mb.inter_bmode_costs, x->fc.bmode_prob, T);
} }
vp9_cost_tokens((int *)c->mb.inter_bmode_costs, x->fc.bmode_prob, T);
vp9_cost_tokens((int *)c->mb.inter_bmode_costs, vp9_cost_tokens((int *)c->mb.inter_bmode_costs,
x->fc.sub_mv_ref_prob[0], vp8_sub_mv_ref_tree); x->fc.sub_mv_ref_prob[0], vp8_sub_mv_ref_tree);
@ -46,11 +42,8 @@ void vp9_init_mode_costs(VP8_COMP *c) {
vp9_cost_tokens(c->mb.i8x8_mode_costs, vp9_cost_tokens(c->mb.i8x8_mode_costs,
x->fc.i8x8_mode_prob, vp8_i8x8_mode_tree); x->fc.i8x8_mode_prob, vp8_i8x8_mode_tree);
{ for (i = 0; i <= VP8_SWITCHABLE_FILTERS; ++i)
int i; vp9_cost_tokens((int *)c->mb.switchable_interp_costs[i],
for (i = 0; i <= VP8_SWITCHABLE_FILTERS; ++i) x->fc.switchable_interp_prob[i],
vp9_cost_tokens((int *)c->mb.switchable_interp_costs[i], vp8_switchable_interp_tree);
x->fc.switchable_interp_prob[i],
vp8_switchable_interp_tree);
}
} }

View File

@ -60,20 +60,34 @@
#define RTCD(x) NULL #define RTCD(x) NULL
#endif #endif
extern void vp9cx_pick_filter_level_fast(YV12_BUFFER_CONFIG *sd, VP8_COMP *cpi); extern void vp9_pick_filter_level_fast(YV12_BUFFER_CONFIG *sd, VP8_COMP *cpi);
extern void vp9cx_set_alt_lf_level(VP8_COMP *cpi, int filt_val);
extern void vp9cx_pick_filter_level(YV12_BUFFER_CONFIG *sd, VP8_COMP *cpi); extern void vp9_set_alt_lf_level(VP8_COMP *cpi, int filt_val);
extern void vp9_pick_filter_level(YV12_BUFFER_CONFIG *sd, VP8_COMP *cpi);
extern void vp9_cmachine_specific_config(VP8_COMP *cpi); extern void vp9_cmachine_specific_config(VP8_COMP *cpi);
extern void vp8_deblock_frame(YV12_BUFFER_CONFIG *source, YV12_BUFFER_CONFIG *post, int filt_lvl, int low_var_thresh, int flag);
extern void vp8_deblock_frame(YV12_BUFFER_CONFIG *source,
YV12_BUFFER_CONFIG *post,
int filt_lvl, int low_var_thresh, int flag);
extern void print_parms(VP8_CONFIG *ocf, char *filenam); extern void print_parms(VP8_CONFIG *ocf, char *filenam);
extern unsigned int vp8_get_processor_freq(); extern unsigned int vp8_get_processor_freq();
extern void print_tree_update_probs(); extern void print_tree_update_probs();
extern void vp8cx_create_encoder_threads(VP8_COMP *cpi); extern void vp8cx_create_encoder_threads(VP8_COMP *cpi);
extern void vp8cx_remove_encoder_threads(VP8_COMP *cpi); extern void vp8cx_remove_encoder_threads(VP8_COMP *cpi);
#if HAVE_ARMV7 #if HAVE_ARMV7
extern void vp8_yv12_copy_frame_func_neon(YV12_BUFFER_CONFIG *src_ybc, YV12_BUFFER_CONFIG *dst_ybc); extern void vp8_yv12_copy_frame_func_neon(YV12_BUFFER_CONFIG *src_ybc,
extern void vp8_yv12_copy_src_frame_func_neon(YV12_BUFFER_CONFIG *src_ybc, YV12_BUFFER_CONFIG *dst_ybc); YV12_BUFFER_CONFIG *dst_ybc);
extern void vp8_yv12_copy_src_frame_func_neon(YV12_BUFFER_CONFIG *src_ybc,
YV12_BUFFER_CONFIG *dst_ybc);
#endif #endif
int vp9_calc_ss_err(YV12_BUFFER_CONFIG *source, YV12_BUFFER_CONFIG *dest); int vp9_calc_ss_err(YV12_BUFFER_CONFIG *source, YV12_BUFFER_CONFIG *dest);
@ -166,7 +180,7 @@ extern unsigned int inter_uv_modes[VP8_UV_MODES];
extern unsigned int inter_b_modes[B_MODE_COUNT]; extern unsigned int inter_b_modes[B_MODE_COUNT];
#endif #endif
extern void vp9cx_init_quantizer(VP8_COMP *cpi); extern void vp9_init_quantizer(VP8_COMP *cpi);
int vp8cx_base_skip_false_prob[QINDEX_RANGE][3]; int vp8cx_base_skip_false_prob[QINDEX_RANGE][3];
@ -306,7 +320,7 @@ static void update_base_skip_probs(VP8_COMP *cpi) {
} }
void vp9_initialize() { void vp9_initialize_enc() {
static int init_done = 0; static int init_done = 0;
if (!init_done) { if (!init_done) {
@ -1172,9 +1186,11 @@ void vp9_set_speed_features(VP8_COMP *cpi) {
} }
if (cpi->sf.search_method == NSTEP) { if (cpi->sf.search_method == NSTEP) {
vp9_init3smotion_compensation(&cpi->mb, cm->yv12_fb[cm->lst_fb_idx].y_stride); vp9_init3smotion_compensation(&cpi->mb,
cm->yv12_fb[cm->lst_fb_idx].y_stride);
} else if (cpi->sf.search_method == DIAMOND) { } else if (cpi->sf.search_method == DIAMOND) {
vp9_init_dsmotion_compensation(&cpi->mb, cm->yv12_fb[cm->lst_fb_idx].y_stride); vp9_init_dsmotion_compensation(&cpi->mb,
cm->yv12_fb[cm->lst_fb_idx].y_stride);
} }
cpi->mb.vp9_short_fdct16x16 = vp9_short_fdct16x16; cpi->mb.vp9_short_fdct16x16 = vp9_short_fdct16x16;
@ -1202,7 +1218,7 @@ void vp9_set_speed_features(VP8_COMP *cpi) {
cpi->mb.quantize_b_16x16 = vp9_regular_quantize_b_16x16; cpi->mb.quantize_b_16x16 = vp9_regular_quantize_b_16x16;
cpi->mb.quantize_b_2x2 = vp9_regular_quantize_b_2x2; cpi->mb.quantize_b_2x2 = vp9_regular_quantize_b_2x2;
vp9cx_init_quantizer(cpi); vp9_init_quantizer(cpi);
#if CONFIG_RUNTIME_CPU_DETECT #if CONFIG_RUNTIME_CPU_DETECT
cpi->mb.e_mbd.rtcd = &cpi->common.rtcd; cpi->mb.e_mbd.rtcd = &cpi->common.rtcd;
@ -1997,9 +2013,12 @@ VP8_PTR vp9_create_compressor(VP8_CONFIG *oxcf) {
// make sure frame 1 is okay // make sure frame 1 is okay
cpi->error_bins[0] = cpi->common.MBs; cpi->error_bins[0] = cpi->common.MBs;
// vp9cx_init_quantizer() is first called here. Add check in vp9cx_frame_init_quantizer() so that vp9cx_init_quantizer is only called later /* vp9_init_quantizer() is first called here. Add check in
// when needed. This will avoid unnecessary calls of vp9cx_init_quantizer() for every frame. * vp9_frame_init_quantizer() so that vp9_init_quantizer is only
vp9cx_init_quantizer(cpi); * called later when needed. This will avoid unnecessary calls of
* vp9_init_quantizer() for every frame.
*/
vp9_init_quantizer(cpi);
vp8_loop_filter_init(cm); vp8_loop_filter_init(cm);
@ -2386,7 +2405,8 @@ int vp9_update_reference(VP8_PTR ptr, int ref_frame_flags) {
return 0; return 0;
} }
int vp9_get_reference(VP8_PTR ptr, VP8_REFFRAME ref_frame_flag, YV12_BUFFER_CONFIG *sd) { int vp9_get_reference_enc(VP8_PTR ptr, VP8_REFFRAME ref_frame_flag,
YV12_BUFFER_CONFIG *sd) {
VP8_COMP *cpi = (VP8_COMP *)(ptr); VP8_COMP *cpi = (VP8_COMP *)(ptr);
VP8_COMMON *cm = &cpi->common; VP8_COMMON *cm = &cpi->common;
int ref_fb_idx; int ref_fb_idx;
@ -2404,7 +2424,9 @@ int vp9_get_reference(VP8_PTR ptr, VP8_REFFRAME ref_frame_flag, YV12_BUFFER_CONF
return 0; return 0;
} }
int vp9_set_reference(VP8_PTR ptr, VP8_REFFRAME ref_frame_flag, YV12_BUFFER_CONFIG *sd) {
int vp9_set_reference_enc(VP8_PTR ptr, VP8_REFFRAME ref_frame_flag,
YV12_BUFFER_CONFIG *sd) {
VP8_COMP *cpi = (VP8_COMP *)(ptr); VP8_COMP *cpi = (VP8_COMP *)(ptr);
VP8_COMMON *cm = &cpi->common; VP8_COMMON *cm = &cpi->common;
@ -2786,17 +2808,16 @@ static void loopfilter_frame(VP8_COMP *cpi, VP8_COMMON *cm) {
vpx_usec_timer_start(&timer); vpx_usec_timer_start(&timer);
if (cpi->sf.auto_filter == 0) if (cpi->sf.auto_filter == 0)
vp9cx_pick_filter_level_fast(cpi->Source, cpi); vp9_pick_filter_level_fast(cpi->Source, cpi);
else else
vp9cx_pick_filter_level(cpi->Source, cpi); vp9_pick_filter_level(cpi->Source, cpi);
vpx_usec_timer_mark(&timer); vpx_usec_timer_mark(&timer);
cpi->time_pick_lpf += vpx_usec_timer_elapsed(&timer); cpi->time_pick_lpf += vpx_usec_timer_elapsed(&timer);
} }
if (cm->filter_level > 0) { if (cm->filter_level > 0) {
vp9cx_set_alt_lf_level(cpi, cm->filter_level); vp9_set_alt_lf_level(cpi, cm->filter_level);
vp8_loop_filter_frame(cm, &cpi->mb.e_mbd); vp8_loop_filter_frame(cm, &cpi->mb.e_mbd);
} }
@ -3110,7 +3131,8 @@ static void encode_frame_to_data_rate
else else
zbin_oq_high = ZBIN_OQ_MAX; zbin_oq_high = ZBIN_OQ_MAX;
vp9_compute_frame_size_bounds(cpi, &frame_under_shoot_limit, &frame_over_shoot_limit); vp9_compute_frame_size_bounds(cpi, &frame_under_shoot_limit,
&frame_over_shoot_limit);
// Limit Q range for the adaptive loop. // Limit Q range for the adaptive loop.
bottom_index = cpi->active_best_quality; bottom_index = cpi->active_best_quality;
@ -3926,7 +3948,8 @@ static void encode_frame_to_data_rate
} }
} }
static void Pass2Encode(VP8_COMP *cpi, unsigned long *size, unsigned char *dest, unsigned int *frame_flags) { static void Pass2Encode(VP8_COMP *cpi, unsigned long *size,
unsigned char *dest, unsigned int *frame_flags) {
if (!cpi->common.refresh_alt_ref_frame) if (!cpi->common.refresh_alt_ref_frame)
vp9_second_pass(cpi); vp9_second_pass(cpi);
@ -3953,7 +3976,9 @@ extern void vp8_pop_neon(int64_t *store);
#endif #endif
int vp9_receive_raw_frame(VP8_PTR ptr, unsigned int frame_flags, YV12_BUFFER_CONFIG *sd, int64_t time_stamp, int64_t end_time) { int vp9_receive_raw_frame(VP8_PTR ptr, unsigned int frame_flags,
YV12_BUFFER_CONFIG *sd, int64_t time_stamp,
int64_t end_time) {
#if HAVE_ARMV7 #if HAVE_ARMV7
int64_t store_reg[8]; int64_t store_reg[8];
#endif #endif
@ -3972,8 +3997,8 @@ int vp9_receive_raw_frame(VP8_PTR ptr, unsigned int frame_flags, YV12_BUFFER_CON
#endif #endif
vpx_usec_timer_start(&timer); vpx_usec_timer_start(&timer);
if (vp9_lookahead_push(cpi->lookahead, sd, time_stamp, end_time, if (vp9_lookahead_push(cpi->lookahead, sd, time_stamp, end_time, frame_flags,
frame_flags, cpi->active_map_enabled ? cpi->active_map : NULL)) cpi->active_map_enabled ? cpi->active_map : NULL))
res = -1; res = -1;
cm->clr_type = sd->clrtype; cm->clr_type = sd->clrtype;
vpx_usec_timer_mark(&timer); vpx_usec_timer_mark(&timer);
@ -4005,7 +4030,9 @@ static int frame_is_reference(const VP8_COMP *cpi) {
} }
int vp9_get_compressed_data(VP8_PTR ptr, unsigned int *frame_flags, unsigned long *size, unsigned char *dest, int64_t *time_stamp, int64_t *time_end, int flush) { int vp9_get_compressed_data(VP8_PTR ptr, unsigned int *frame_flags,
unsigned long *size, unsigned char *dest,
int64_t *time_stamp, int64_t *time_end, int flush) {
#if HAVE_ARMV7 #if HAVE_ARMV7
int64_t store_reg[8]; int64_t store_reg[8];
#endif #endif
@ -4321,7 +4348,8 @@ int vp9_get_compressed_data(VP8_PTR ptr, unsigned int *frame_flags, unsigned lon
return 0; return 0;
} }
int vp9_get_preview_raw_frame(VP8_PTR comp, YV12_BUFFER_CONFIG *dest, vp8_ppflags_t *flags) { int vp9_get_preview_raw_frame(VP8_PTR comp, YV12_BUFFER_CONFIG *dest,
vp8_ppflags_t *flags) {
VP8_COMP *cpi = (VP8_COMP *) comp; VP8_COMP *cpi = (VP8_COMP *) comp;
if (cpi->common.refresh_alt_ref_frame) if (cpi->common.refresh_alt_ref_frame)
@ -4348,7 +4376,9 @@ int vp9_get_preview_raw_frame(VP8_PTR comp, YV12_BUFFER_CONFIG *dest, vp8_ppflag
} }
} }
int vp9_set_roimap(VP8_PTR comp, unsigned char *map, unsigned int rows, unsigned int cols, int delta_q[4], int delta_lf[4], unsigned int threshold[4]) { int vp9_set_roimap(VP8_PTR comp, unsigned char *map, unsigned int rows,
unsigned int cols, int delta_q[4], int delta_lf[4],
unsigned int threshold[4]) {
VP8_COMP *cpi = (VP8_COMP *) comp; VP8_COMP *cpi = (VP8_COMP *) comp;
signed char feature_data[SEG_LVL_MAX][MAX_MB_SEGMENTS]; signed char feature_data[SEG_LVL_MAX][MAX_MB_SEGMENTS];
MACROBLOCKD *xd = &cpi->mb.e_mbd; MACROBLOCKD *xd = &cpi->mb.e_mbd;
@ -4405,7 +4435,8 @@ int vp9_set_roimap(VP8_PTR comp, unsigned char *map, unsigned int rows, unsigned
return 0; return 0;
} }
int vp9_set_active_map(VP8_PTR comp, unsigned char *map, unsigned int rows, unsigned int cols) { int vp9_set_active_map(VP8_PTR comp, unsigned char *map,
unsigned int rows, unsigned int cols) {
VP8_COMP *cpi = (VP8_COMP *) comp; VP8_COMP *cpi = (VP8_COMP *) comp;
if (rows == cpi->common.mb_rows && cols == cpi->common.mb_cols) { if (rows == cpi->common.mb_rows && cols == cpi->common.mb_cols) {
@ -4422,7 +4453,8 @@ int vp9_set_active_map(VP8_PTR comp, unsigned char *map, unsigned int rows, unsi
} }
} }
int vp9_set_internal_size(VP8_PTR comp, VPX_SCALING horiz_mode, VPX_SCALING vert_mode) { int vp9_set_internal_size(VP8_PTR comp,
VPX_SCALING horiz_mode, VPX_SCALING vert_mode) {
VP8_COMP *cpi = (VP8_COMP *) comp; VP8_COMP *cpi = (VP8_COMP *) comp;
if (horiz_mode <= ONETWO) if (horiz_mode <= ONETWO)

View File

@ -757,16 +757,13 @@ typedef struct VP8_COMP {
} VP8_COMP; } VP8_COMP;
void control_data_rate(VP8_COMP *cpi);
void vp9_encode_frame(VP8_COMP *cpi); void vp9_encode_frame(VP8_COMP *cpi);
void vp9_pack_bitstream(VP8_COMP *cpi, unsigned char *dest, unsigned long *size); void vp9_pack_bitstream(VP8_COMP *cpi, unsigned char *dest,
unsigned long *size);
void vp9_activity_masking(VP8_COMP *cpi, MACROBLOCK *x); void vp9_activity_masking(VP8_COMP *cpi, MACROBLOCK *x);
int rd_cost_intra_mb(MACROBLOCKD *x);
void vp9_tokenize_mb(VP8_COMP *, MACROBLOCKD *, TOKENEXTRA **, int dry_run); void vp9_tokenize_mb(VP8_COMP *, MACROBLOCKD *, TOKENEXTRA **, int dry_run);
void vp9_stuff_mb(VP8_COMP *cpi, MACROBLOCKD *xd, TOKENEXTRA **t, int dry_run); void vp9_stuff_mb(VP8_COMP *cpi, MACROBLOCKD *xd, TOKENEXTRA **t, int dry_run);

View File

@ -33,21 +33,12 @@ extern void vp8_yv12_copy_frame_yonly_no_extend_frame_borders_neon(YV12_BUFFER_C
#define IF_RTCD(x) NULL #define IF_RTCD(x) NULL
#endif #endif
extern void extern void(*vp9_yv12_copy_partial_frame_ptr)(YV12_BUFFER_CONFIG *src_ybc,
(*vp9_yv12_copy_partial_frame_ptr)(YV12_BUFFER_CONFIG *src_ybc, YV12_BUFFER_CONFIG *dst_ybc,
YV12_BUFFER_CONFIG *dst_ybc, int fraction);
int Fraction);
extern void vp8_loop_filter_frame_segment void vp9_yv12_copy_partial_frame(YV12_BUFFER_CONFIG *src_ybc,
( YV12_BUFFER_CONFIG *dst_ybc, int Fraction) {
VP8_COMMON *cm,
MACROBLOCKD *xd,
int default_filt_lvl,
int segment
);
void
vp9_yv12_copy_partial_frame(YV12_BUFFER_CONFIG *src_ybc, YV12_BUFFER_CONFIG *dst_ybc, int Fraction) {
unsigned char *src_y, *dst_y; unsigned char *src_y, *dst_y;
int yheight; int yheight;
int ystride; int ystride;
@ -72,6 +63,7 @@ vp9_yv12_copy_partial_frame(YV12_BUFFER_CONFIG *src_ybc, YV12_BUFFER_CONFIG *dst
vpx_memcpy(dst_y, src_y, ystride * (linestocopy + 16)); vpx_memcpy(dst_y, src_y, ystride * (linestocopy + 16));
} }
static int vp8_calc_partial_ssl_err(YV12_BUFFER_CONFIG *source, static int vp8_calc_partial_ssl_err(YV12_BUFFER_CONFIG *source,
YV12_BUFFER_CONFIG *dest, int Fraction) { YV12_BUFFER_CONFIG *dest, int Fraction) {
int i, j; int i, j;
@ -146,7 +138,7 @@ static int get_max_filter_level(VP8_COMP *cpi, int base_qindex) {
return max_filter_level; return max_filter_level;
} }
void vp9cx_pick_filter_level_fast(YV12_BUFFER_CONFIG *sd, VP8_COMP *cpi) { void vp9_pick_filter_level_fast(YV12_BUFFER_CONFIG *sd, VP8_COMP *cpi) {
VP8_COMMON *cm = &cpi->common; VP8_COMMON *cm = &cpi->common;
int best_err = 0; int best_err = 0;
@ -226,7 +218,8 @@ void vp9cx_pick_filter_level_fast(YV12_BUFFER_CONFIG *sd, VP8_COMP *cpi) {
filt_err = vp8_calc_partial_ssl_err(sd, cm->frame_to_show, 3); filt_err = vp8_calc_partial_ssl_err(sd, cm->frame_to_show, 3);
// Re-instate the unfiltered frame // Re-instate the unfiltered frame
vp9_yv12_copy_partial_frame_ptr(&cpi->last_frame_uf, cm->frame_to_show, 3); vp9_yv12_copy_partial_frame_ptr(&cpi->last_frame_uf,
cm->frame_to_show, 3);
// Update the best case record or exit loop. // Update the best case record or exit loop.
if (filt_err < best_err) { if (filt_err < best_err) {
@ -252,10 +245,10 @@ void vp9cx_pick_filter_level_fast(YV12_BUFFER_CONFIG *sd, VP8_COMP *cpi) {
} }
// Stub function for now Alt LF not used // Stub function for now Alt LF not used
void vp9cx_set_alt_lf_level(VP8_COMP *cpi, int filt_val) { void vp9_set_alt_lf_level(VP8_COMP *cpi, int filt_val) {
} }
void vp9cx_pick_filter_level(YV12_BUFFER_CONFIG *sd, VP8_COMP *cpi) { void vp9_pick_filter_level(YV12_BUFFER_CONFIG *sd, VP8_COMP *cpi) {
VP8_COMMON *cm = &cpi->common; VP8_COMMON *cm = &cpi->common;
int best_err = 0; int best_err = 0;
@ -307,7 +300,7 @@ void vp9cx_pick_filter_level(YV12_BUFFER_CONFIG *sd, VP8_COMP *cpi) {
filter_step = (filt_mid < 16) ? 4 : filt_mid / 4; filter_step = (filt_mid < 16) ? 4 : filt_mid / 4;
// Get baseline error score // Get baseline error score
vp9cx_set_alt_lf_level(cpi, filt_mid); vp9_set_alt_lf_level(cpi, filt_mid);
vp8_loop_filter_frame_yonly(cm, &cpi->mb.e_mbd, filt_mid); vp8_loop_filter_frame_yonly(cm, &cpi->mb.e_mbd, filt_mid);
best_err = vp9_calc_ss_err(sd, cm->frame_to_show); best_err = vp9_calc_ss_err(sd, cm->frame_to_show);
@ -347,7 +340,7 @@ void vp9cx_pick_filter_level(YV12_BUFFER_CONFIG *sd, VP8_COMP *cpi) {
if ((filt_direction <= 0) && (filt_low != filt_mid)) { if ((filt_direction <= 0) && (filt_low != filt_mid)) {
// Get Low filter error score // Get Low filter error score
vp9cx_set_alt_lf_level(cpi, filt_low); vp9_set_alt_lf_level(cpi, filt_low);
vp8_loop_filter_frame_yonly(cm, &cpi->mb.e_mbd, filt_low); vp8_loop_filter_frame_yonly(cm, &cpi->mb.e_mbd, filt_low);
filt_err = vp9_calc_ss_err(sd, cm->frame_to_show); filt_err = vp9_calc_ss_err(sd, cm->frame_to_show);
@ -382,7 +375,7 @@ void vp9cx_pick_filter_level(YV12_BUFFER_CONFIG *sd, VP8_COMP *cpi) {
// Now look at filt_high // Now look at filt_high
if ((filt_direction >= 0) && (filt_high != filt_mid)) { if ((filt_direction >= 0) && (filt_high != filt_mid)) {
vp9cx_set_alt_lf_level(cpi, filt_high); vp9_set_alt_lf_level(cpi, filt_high);
vp8_loop_filter_frame_yonly(cm, &cpi->mb.e_mbd, filt_high); vp8_loop_filter_frame_yonly(cm, &cpi->mb.e_mbd, filt_high);
filt_err = vp9_calc_ss_err(sd, cm->frame_to_show); filt_err = vp9_calc_ss_err(sd, cm->frame_to_show);

View File

@ -349,7 +349,8 @@ void vp9_regular_quantize_b_16x16(BLOCK *b, BLOCKD *d) {
* these two C functions if corresponding optimized routine is not available. * these two C functions if corresponding optimized routine is not available.
* NEON optimized version implements currently the fast quantization for pair * NEON optimized version implements currently the fast quantization for pair
* of blocks. */ * of blocks. */
void vp9_regular_quantize_b_4x4_pair(BLOCK *b1, BLOCK *b2, BLOCKD *d1, BLOCKD *d2) { void vp9_regular_quantize_b_4x4_pair(BLOCK *b1, BLOCK *b2,
BLOCKD *d1, BLOCKD *d2) {
vp9_regular_quantize_b_4x4(b1, d1); vp9_regular_quantize_b_4x4(b1, d1);
vp9_regular_quantize_b_4x4(b2, d2); vp9_regular_quantize_b_4x4(b2, d2);
} }
@ -366,7 +367,7 @@ static void invert_quant(short *quant,
*shift = l; *shift = l;
} }
void vp9cx_init_quantizer(VP8_COMP *cpi) { void vp9_init_quantizer(VP8_COMP *cpi) {
int i; int i;
int quant_val; int quant_val;
int Q; int Q;
@ -530,7 +531,7 @@ void vp9cx_init_quantizer(VP8_COMP *cpi) {
} }
} }
void vp9cx_mb_init_quantizer(VP8_COMP *cpi, MACROBLOCK *x) { void vp9_mb_init_quantizer(VP8_COMP *cpi, MACROBLOCK *x) {
int i; int i;
int QIndex; int QIndex;
MACROBLOCKD *xd = &x->e_mbd; MACROBLOCKD *xd = &x->e_mbd;
@ -687,12 +688,12 @@ void vp9_update_zbin_extra(VP8_COMP *cpi, MACROBLOCK *x) {
x->block[24].zbin_extra = (short)zbin_extra; x->block[24].zbin_extra = (short)zbin_extra;
} }
void vp9cx_frame_init_quantizer(VP8_COMP *cpi) { void vp9_frame_init_quantizer(VP8_COMP *cpi) {
// Clear Zbin mode boost for default case // Clear Zbin mode boost for default case
cpi->zbin_mode_boost = 0; cpi->zbin_mode_boost = 0;
// MB level quantizer setup // MB level quantizer setup
vp9cx_mb_init_quantizer(cpi, &cpi->mb); vp9_mb_init_quantizer(cpi, &cpi->mb);
} }
void vp9_set_quantizer(struct VP8_COMP *cpi, int Q) { void vp9_set_quantizer(struct VP8_COMP *cpi, int Q) {
@ -711,5 +712,5 @@ void vp9_set_quantizer(struct VP8_COMP *cpi, int Q) {
// quantizer has to be reinitialized if any delta_q changes. // quantizer has to be reinitialized if any delta_q changes.
// As there are not any here for now this is inactive code. // As there are not any here for now this is inactive code.
// if(update) // if(update)
// vp9cx_init_quantizer(cpi); // vp9_init_quantizer(cpi);
} }

View File

@ -83,10 +83,15 @@ extern prototype_quantize_block(vp8_quantize_quantb_16x16);
extern prototype_quantize_mb(vp9_quantize_mby_16x16); extern prototype_quantize_mb(vp9_quantize_mby_16x16);
struct VP8_COMP; struct VP8_COMP;
extern void vp9_set_quantizer(struct VP8_COMP *cpi, int Q); extern void vp9_set_quantizer(struct VP8_COMP *cpi, int Q);
extern void vp9cx_frame_init_quantizer(struct VP8_COMP *cpi);
extern void vp9_frame_init_quantizer(struct VP8_COMP *cpi);
extern void vp9_update_zbin_extra(struct VP8_COMP *cpi, MACROBLOCK *x); extern void vp9_update_zbin_extra(struct VP8_COMP *cpi, MACROBLOCK *x);
extern void vp9cx_mb_init_quantizer(struct VP8_COMP *cpi, MACROBLOCK *x);
extern void vp9cx_init_quantizer(struct VP8_COMP *cpi); extern void vp9_mb_init_quantizer(struct VP8_COMP *cpi, MACROBLOCK *x);
extern void vp9_init_quantizer(struct VP8_COMP *cpi);
#endif #endif

View File

@ -650,7 +650,8 @@ void vp9_adjust_key_frame_context(VP8_COMP *cpi) {
} }
void vp9_compute_frame_size_bounds(VP8_COMP *cpi, int *frame_under_shoot_limit, int *frame_over_shoot_limit) { void vp9_compute_frame_size_bounds(VP8_COMP *cpi, int *frame_under_shoot_limit,
int *frame_over_shoot_limit) {
// Set-up bounds on acceptable frame size: // Set-up bounds on acceptable frame size:
if (cpi->oxcf.fixed_q >= 0) { if (cpi->oxcf.fixed_q >= 0) {
// Fixed Q scenario: frame size never outranges target (there is no target!) // Fixed Q scenario: frame size never outranges target (there is no target!)

View File

@ -22,7 +22,9 @@ extern void vp9_setup_key_frame(VP8_COMP *cpi);
extern void vp9_update_rate_correction_factors(VP8_COMP *cpi, int damp_var); extern void vp9_update_rate_correction_factors(VP8_COMP *cpi, int damp_var);
extern int vp9_regulate_q(VP8_COMP *cpi, int target_bits_per_frame); extern int vp9_regulate_q(VP8_COMP *cpi, int target_bits_per_frame);
extern void vp9_adjust_key_frame_context(VP8_COMP *cpi); extern void vp9_adjust_key_frame_context(VP8_COMP *cpi);
extern void vp9_compute_frame_size_bounds(VP8_COMP *cpi, int *frame_under_shoot_limit, int *frame_over_shoot_limit); extern void vp9_compute_frame_size_bounds(VP8_COMP *cpi,
int *frame_under_shoot_limit,
int *frame_over_shoot_limit);
// return of 0 means drop frame // return of 0 means drop frame
extern int vp9_pick_frame_size(VP8_COMP *cpi); extern int vp9_pick_frame_size(VP8_COMP *cpi);

View File

@ -52,7 +52,7 @@
#define IF_RTCD(x) NULL #define IF_RTCD(x) NULL
#endif #endif
extern void vp9cx_mb_init_quantizer(VP8_COMP *cpi, MACROBLOCK *x); extern void vp9_mb_init_quantizer(VP8_COMP *cpi, MACROBLOCK *x);
extern void vp9_update_zbin_extra(VP8_COMP *cpi, MACROBLOCK *x); extern void vp9_update_zbin_extra(VP8_COMP *cpi, MACROBLOCK *x);
#define MAXF(a,b) (((a) > (b)) ? (a) : (b)) #define MAXF(a,b) (((a) > (b)) ? (a) : (b))
@ -217,8 +217,8 @@ const MODE_DEFINITION vp8_mode_order[MAX_MODES] = {
#endif #endif
static void fill_token_costs( static void fill_token_costs(
unsigned int (*c)[COEF_BANDS] [PREV_COEF_CONTEXTS] [MAX_ENTROPY_TOKENS], unsigned int (*c)[COEF_BANDS][PREV_COEF_CONTEXTS][MAX_ENTROPY_TOKENS],
const vp8_prob(*p)[COEF_BANDS] [PREV_COEF_CONTEXTS] [ENTROPY_NODES], const vp8_prob(*p)[COEF_BANDS][PREV_COEF_CONTEXTS][ENTROPY_NODES],
int block_type_counts) { int block_type_counts) {
int i, j, k; int i, j, k;
@ -226,22 +226,21 @@ static void fill_token_costs(
for (j = 0; j < COEF_BANDS; j++) for (j = 0; j < COEF_BANDS; j++)
for (k = 0; k < PREV_COEF_CONTEXTS; k++) { for (k = 0; k < PREV_COEF_CONTEXTS; k++) {
if (k == 0 && ((j > 0 && i > 0) || (j > 1 && i == 0))) if (k == 0 && ((j > 0 && i > 0) || (j > 1 && i == 0)))
vp9_cost_tokens_skip((int *)(c [i][j][k]), vp9_cost_tokens_skip((int *)(c[i][j][k]),
p [i][j][k], p[i][j][k],
vp8_coef_tree); vp8_coef_tree);
else else
vp9_cost_tokens((int *)(c [i][j][k]), vp9_cost_tokens((int *)(c[i][j][k]),
p [i][j][k], p[i][j][k],
vp8_coef_tree); vp8_coef_tree);
} }
} }
static int rd_iifactor [ 32 ] = { 4, 4, 3, 2, 1, 0, 0, 0, static int rd_iifactor[32] = { 4, 4, 3, 2, 1, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, };
};
// 3* dc_qlookup[Q]*dc_qlookup[Q]; // 3* dc_qlookup[Q]*dc_qlookup[Q];
@ -269,7 +268,7 @@ static int compute_rd_mult(int qindex) {
return (11 * q * q) >> 6; return (11 * q * q) >> 6;
} }
void vp9cx_initialize_me_consts(VP8_COMP *cpi, int QIndex) { void vp9_initialize_me_consts(VP8_COMP *cpi, int QIndex) {
cpi->mb.sadperbit16 = sad_per_bit16lut[QIndex]; cpi->mb.sadperbit16 = sad_per_bit16lut[QIndex];
cpi->mb.sadperbit4 = sad_per_bit4lut[QIndex]; cpi->mb.sadperbit4 = sad_per_bit4lut[QIndex];
} }
@ -3530,8 +3529,10 @@ static int64_t handle_inter_mode(VP8_COMP *cpi, MACROBLOCK *x,
return this_rd; // if 0, this will be re-calculated by caller return this_rd; // if 0, this will be re-calculated by caller
} }
void vp9_rd_pick_inter_mode(VP8_COMP *cpi, MACROBLOCK *x, int recon_yoffset, int recon_uvoffset, void vp9_rd_pick_inter_mode(VP8_COMP *cpi, MACROBLOCK *x,
int *returnrate, int *returndistortion, int64_t *returnintra) { int recon_yoffset, int recon_uvoffset,
int *returnrate, int *returndistortion,
int64_t *returnintra) {
VP8_COMMON *cm = &cpi->common; VP8_COMMON *cm = &cpi->common;
MACROBLOCKD *xd = &x->e_mbd; MACROBLOCKD *xd = &x->e_mbd;
union b_mode_info best_bmodes[16]; union b_mode_info best_bmodes[16];
@ -4815,10 +4816,10 @@ int64_t vp9_rd_pick_inter_mode_sb(VP8_COMP *cpi, MACROBLOCK *x,
} }
#endif #endif
void vp9cx_pick_mode_inter_macroblock(VP8_COMP *cpi, MACROBLOCK *x, void vp9_pick_mode_inter_macroblock(VP8_COMP *cpi, MACROBLOCK *x,
int recon_yoffset, int recon_yoffset,
int recon_uvoffset, int recon_uvoffset,
int *totalrate, int *totaldist) { int *totalrate, int *totaldist) {
MACROBLOCKD *const xd = &x->e_mbd; MACROBLOCKD *const xd = &x->e_mbd;
MB_MODE_INFO * mbmi = &x->e_mbd.mode_info_context->mbmi; MB_MODE_INFO * mbmi = &x->e_mbd.mode_info_context->mbmi;
int rate, distortion; int rate, distortion;

View File

@ -16,22 +16,26 @@
#define RDCOST_8x8(RM,DM,R,D) ( ((128+((int64_t)R)*(RM)) >> 8) + ((int64_t)DM)*(D) ) #define RDCOST_8x8(RM,DM,R,D) ( ((128+((int64_t)R)*(RM)) >> 8) + ((int64_t)DM)*(D) )
extern void vp9_initialize_rd_consts(VP8_COMP *cpi, int Qvalue); extern void vp9_initialize_rd_consts(VP8_COMP *cpi, int Qvalue);
extern void vp9_rd_pick_inter_mode(VP8_COMP *cpi, MACROBLOCK *x, int recon_yoffset, int recon_uvoffset,
int *returnrate, int *returndistortion, int64_t *returnintra);
extern void vp9_rd_pick_intra_mode(VP8_COMP *cpi, MACROBLOCK *x, int *r, int *d);
extern void vp9_rd_pick_intra_mode_sb(VP8_COMP *cpi, MACROBLOCK *x, int *r, int *d);
extern void vp9_mv_pred extern void vp9_rd_pick_inter_mode(VP8_COMP *cpi, MACROBLOCK *x,
( int recon_yoffset, int recon_uvoffset,
VP8_COMP *cpi, int *returnrate, int *returndistortion,
MACROBLOCKD *xd, int64_t *returnintra);
const MODE_INFO *here,
int_mv *mvp, extern void vp9_rd_pick_intra_mode(VP8_COMP *cpi, MACROBLOCK *x,
int refframe, int *r, int *d);
int *ref_frame_sign_bias,
int *sr, extern void vp9_rd_pick_intra_mode_sb(VP8_COMP *cpi, MACROBLOCK *x,
int near_sadidx[] int *r, int *d);
);
extern void vp9_mv_pred(VP8_COMP *cpi, MACROBLOCKD *xd,
const MODE_INFO *here, int_mv *mvp,
int refframe, int *ref_frame_sign_bias,
int *sr, int near_sadidx[]);
extern void vp9_init_me_luts(); extern void vp9_init_me_luts();
extern void vp9_set_mbmode_and_mvs(MACROBLOCK *x, MB_PREDICTION_MODE mb, int_mv *mv);
extern void vp9_set_mbmode_and_mvs(MACROBLOCK *x,
MB_PREDICTION_MODE mb, int_mv *mv);
#endif #endif

View File

@ -30,47 +30,37 @@ unsigned int vp9_sad16x16_c(const unsigned char *src_ptr,
return sad_mx_n_c(src_ptr, src_stride, ref_ptr, ref_stride, 16, 16); return sad_mx_n_c(src_ptr, src_stride, ref_ptr, ref_stride, 16, 16);
} }
unsigned int vp9_sad8x8_c( unsigned int vp9_sad8x8_c(const unsigned char *src_ptr,
const unsigned char *src_ptr, int src_stride,
int src_stride, const unsigned char *ref_ptr,
const unsigned char *ref_ptr, int ref_stride,
int ref_stride, int max_sad) {
int max_sad) {
return sad_mx_n_c(src_ptr, src_stride, ref_ptr, ref_stride, 8, 8); return sad_mx_n_c(src_ptr, src_stride, ref_ptr, ref_stride, 8, 8);
} }
unsigned int vp9_sad16x8_c( unsigned int vp9_sad16x8_c(const unsigned char *src_ptr,
const unsigned char *src_ptr, int src_stride,
int src_stride, const unsigned char *ref_ptr,
const unsigned char *ref_ptr, int ref_stride,
int ref_stride, int max_sad) {
int max_sad) {
return sad_mx_n_c(src_ptr, src_stride, ref_ptr, ref_stride, 16, 8); return sad_mx_n_c(src_ptr, src_stride, ref_ptr, ref_stride, 16, 8);
} }
unsigned int vp9_sad8x16_c(const unsigned char *src_ptr,
unsigned int vp9_sad8x16_c( int src_stride,
const unsigned char *src_ptr, const unsigned char *ref_ptr,
int src_stride, int ref_stride,
const unsigned char *ref_ptr, int max_sad) {
int ref_stride,
int max_sad) {
return sad_mx_n_c(src_ptr, src_stride, ref_ptr, ref_stride, 8, 16); return sad_mx_n_c(src_ptr, src_stride, ref_ptr, ref_stride, 8, 16);
} }
unsigned int vp9_sad4x4_c( unsigned int vp9_sad4x4_c(const unsigned char *src_ptr,
const unsigned char *src_ptr, int src_stride,
int src_stride, const unsigned char *ref_ptr,
const unsigned char *ref_ptr, int ref_stride,
int ref_stride, int max_sad) {
int max_sad) {
return sad_mx_n_c(src_ptr, src_stride, ref_ptr, ref_stride, 4, 4); return sad_mx_n_c(src_ptr, src_stride, ref_ptr, ref_stride, 4, 4);
} }
@ -80,9 +70,12 @@ void vp9_sad32x32x3_c(const unsigned char *src_ptr,
int ref_stride, int ref_stride,
unsigned int *sad_array unsigned int *sad_array
) { ) {
sad_array[0] = vp9_sad32x32_c(src_ptr, src_stride, ref_ptr, ref_stride, 0x7fffffff); sad_array[0] = vp9_sad32x32_c(src_ptr, src_stride,
sad_array[1] = vp9_sad32x32_c(src_ptr, src_stride, ref_ptr + 1, ref_stride, 0x7fffffff); ref_ptr, ref_stride, 0x7fffffff);
sad_array[2] = vp9_sad32x32_c(src_ptr, src_stride, ref_ptr + 2, ref_stride, 0x7fffffff); sad_array[1] = vp9_sad32x32_c(src_ptr, src_stride,
ref_ptr + 1, ref_stride, 0x7fffffff);
sad_array[2] = vp9_sad32x32_c(src_ptr, src_stride,
ref_ptr + 2, ref_stride, 0x7fffffff);
} }
void vp9_sad32x32x8_c(const unsigned char *src_ptr, void vp9_sad32x32x8_c(const unsigned char *src_ptr,
@ -91,159 +84,250 @@ void vp9_sad32x32x8_c(const unsigned char *src_ptr,
int ref_stride, int ref_stride,
unsigned short *sad_array unsigned short *sad_array
) { ) {
sad_array[0] = (unsigned short)vp9_sad32x32_c(src_ptr, src_stride, ref_ptr, ref_stride, 0x7fffffff); sad_array[0] = (unsigned short)vp9_sad32x32_c(src_ptr, src_stride,
sad_array[1] = (unsigned short)vp9_sad32x32_c(src_ptr, src_stride, ref_ptr + 1, ref_stride, 0x7fffffff); ref_ptr, ref_stride,
sad_array[2] = (unsigned short)vp9_sad32x32_c(src_ptr, src_stride, ref_ptr + 2, ref_stride, 0x7fffffff); 0x7fffffff);
sad_array[3] = (unsigned short)vp9_sad32x32_c(src_ptr, src_stride, ref_ptr + 3, ref_stride, 0x7fffffff); sad_array[1] = (unsigned short)vp9_sad32x32_c(src_ptr, src_stride,
sad_array[4] = (unsigned short)vp9_sad32x32_c(src_ptr, src_stride, ref_ptr + 4, ref_stride, 0x7fffffff); ref_ptr + 1, ref_stride,
sad_array[5] = (unsigned short)vp9_sad32x32_c(src_ptr, src_stride, ref_ptr + 5, ref_stride, 0x7fffffff); 0x7fffffff);
sad_array[6] = (unsigned short)vp9_sad32x32_c(src_ptr, src_stride, ref_ptr + 6, ref_stride, 0x7fffffff); sad_array[2] = (unsigned short)vp9_sad32x32_c(src_ptr, src_stride,
sad_array[7] = (unsigned short)vp9_sad32x32_c(src_ptr, src_stride, ref_ptr + 7, ref_stride, 0x7fffffff); ref_ptr + 2, ref_stride,
0x7fffffff);
sad_array[3] = (unsigned short)vp9_sad32x32_c(src_ptr, src_stride,
ref_ptr + 3, ref_stride,
0x7fffffff);
sad_array[4] = (unsigned short)vp9_sad32x32_c(src_ptr, src_stride,
ref_ptr + 4, ref_stride,
0x7fffffff);
sad_array[5] = (unsigned short)vp9_sad32x32_c(src_ptr, src_stride,
ref_ptr + 5, ref_stride,
0x7fffffff);
sad_array[6] = (unsigned short)vp9_sad32x32_c(src_ptr, src_stride,
ref_ptr + 6, ref_stride,
0x7fffffff);
sad_array[7] = (unsigned short)vp9_sad32x32_c(src_ptr, src_stride,
ref_ptr + 7, ref_stride,
0x7fffffff);
} }
void vp9_sad16x16x3_c( void vp9_sad16x16x3_c(const unsigned char *src_ptr,
const unsigned char *src_ptr, int src_stride,
int src_stride, const unsigned char *ref_ptr,
const unsigned char *ref_ptr, int ref_stride,
int ref_stride, unsigned int *sad_array) {
unsigned int *sad_array sad_array[0] = vp9_sad16x16_c(src_ptr, src_stride,
) { ref_ptr, ref_stride, 0x7fffffff);
sad_array[0] = vp9_sad16x16_c(src_ptr, src_stride, ref_ptr, ref_stride, 0x7fffffff); sad_array[1] = vp9_sad16x16_c(src_ptr, src_stride,
sad_array[1] = vp9_sad16x16_c(src_ptr, src_stride, ref_ptr + 1, ref_stride, 0x7fffffff); ref_ptr + 1, ref_stride, 0x7fffffff);
sad_array[2] = vp9_sad16x16_c(src_ptr, src_stride, ref_ptr + 2, ref_stride, 0x7fffffff); sad_array[2] = vp9_sad16x16_c(src_ptr, src_stride,
ref_ptr + 2, ref_stride, 0x7fffffff);
} }
void vp9_sad16x16x8_c( void vp9_sad16x16x8_c(const unsigned char *src_ptr,
const unsigned char *src_ptr, int src_stride,
int src_stride, const unsigned char *ref_ptr,
const unsigned char *ref_ptr, int ref_stride,
int ref_stride, unsigned short *sad_array) {
unsigned short *sad_array sad_array[0] = (unsigned short)vp9_sad16x16_c(src_ptr, src_stride,
) { ref_ptr, ref_stride,
sad_array[0] = (unsigned short)vp9_sad16x16_c(src_ptr, src_stride, ref_ptr, ref_stride, 0x7fffffff); 0x7fffffff);
sad_array[1] = (unsigned short)vp9_sad16x16_c(src_ptr, src_stride, ref_ptr + 1, ref_stride, 0x7fffffff); sad_array[1] = (unsigned short)vp9_sad16x16_c(src_ptr, src_stride,
sad_array[2] = (unsigned short)vp9_sad16x16_c(src_ptr, src_stride, ref_ptr + 2, ref_stride, 0x7fffffff); ref_ptr + 1, ref_stride,
sad_array[3] = (unsigned short)vp9_sad16x16_c(src_ptr, src_stride, ref_ptr + 3, ref_stride, 0x7fffffff); 0x7fffffff);
sad_array[4] = (unsigned short)vp9_sad16x16_c(src_ptr, src_stride, ref_ptr + 4, ref_stride, 0x7fffffff); sad_array[2] = (unsigned short)vp9_sad16x16_c(src_ptr, src_stride,
sad_array[5] = (unsigned short)vp9_sad16x16_c(src_ptr, src_stride, ref_ptr + 5, ref_stride, 0x7fffffff); ref_ptr + 2, ref_stride,
sad_array[6] = (unsigned short)vp9_sad16x16_c(src_ptr, src_stride, ref_ptr + 6, ref_stride, 0x7fffffff); 0x7fffffff);
sad_array[7] = (unsigned short)vp9_sad16x16_c(src_ptr, src_stride, ref_ptr + 7, ref_stride, 0x7fffffff); sad_array[3] = (unsigned short)vp9_sad16x16_c(src_ptr, src_stride,
ref_ptr + 3, ref_stride,
0x7fffffff);
sad_array[4] = (unsigned short)vp9_sad16x16_c(src_ptr, src_stride,
ref_ptr + 4, ref_stride,
0x7fffffff);
sad_array[5] = (unsigned short)vp9_sad16x16_c(src_ptr, src_stride,
ref_ptr + 5, ref_stride,
0x7fffffff);
sad_array[6] = (unsigned short)vp9_sad16x16_c(src_ptr, src_stride,
ref_ptr + 6, ref_stride,
0x7fffffff);
sad_array[7] = (unsigned short)vp9_sad16x16_c(src_ptr, src_stride,
ref_ptr + 7, ref_stride,
0x7fffffff);
} }
void vp9_sad16x8x3_c( void vp9_sad16x8x3_c(const unsigned char *src_ptr,
const unsigned char *src_ptr, int src_stride,
int src_stride, const unsigned char *ref_ptr,
const unsigned char *ref_ptr, int ref_stride,
int ref_stride, unsigned int *sad_array) {
unsigned int *sad_array sad_array[0] = vp9_sad16x8_c(src_ptr, src_stride,
) { ref_ptr, ref_stride, 0x7fffffff);
sad_array[0] = vp9_sad16x8_c(src_ptr, src_stride, ref_ptr, ref_stride, 0x7fffffff); sad_array[1] = vp9_sad16x8_c(src_ptr, src_stride,
sad_array[1] = vp9_sad16x8_c(src_ptr, src_stride, ref_ptr + 1, ref_stride, 0x7fffffff); ref_ptr + 1, ref_stride, 0x7fffffff);
sad_array[2] = vp9_sad16x8_c(src_ptr, src_stride, ref_ptr + 2, ref_stride, 0x7fffffff); sad_array[2] = vp9_sad16x8_c(src_ptr, src_stride,
ref_ptr + 2, ref_stride, 0x7fffffff);
} }
void vp9_sad16x8x8_c( void vp9_sad16x8x8_c(const unsigned char *src_ptr,
const unsigned char *src_ptr, int src_stride,
int src_stride, const unsigned char *ref_ptr,
const unsigned char *ref_ptr, int ref_stride,
int ref_stride, unsigned short *sad_array) {
unsigned short *sad_array sad_array[0] = (unsigned short)vp9_sad16x8_c(src_ptr, src_stride,
) { ref_ptr, ref_stride,
sad_array[0] = (unsigned short)vp9_sad16x8_c(src_ptr, src_stride, ref_ptr, ref_stride, 0x7fffffff); 0x7fffffff);
sad_array[1] = (unsigned short)vp9_sad16x8_c(src_ptr, src_stride, ref_ptr + 1, ref_stride, 0x7fffffff); sad_array[1] = (unsigned short)vp9_sad16x8_c(src_ptr, src_stride,
sad_array[2] = (unsigned short)vp9_sad16x8_c(src_ptr, src_stride, ref_ptr + 2, ref_stride, 0x7fffffff); ref_ptr + 1, ref_stride,
sad_array[3] = (unsigned short)vp9_sad16x8_c(src_ptr, src_stride, ref_ptr + 3, ref_stride, 0x7fffffff); 0x7fffffff);
sad_array[4] = (unsigned short)vp9_sad16x8_c(src_ptr, src_stride, ref_ptr + 4, ref_stride, 0x7fffffff); sad_array[2] = (unsigned short)vp9_sad16x8_c(src_ptr, src_stride,
sad_array[5] = (unsigned short)vp9_sad16x8_c(src_ptr, src_stride, ref_ptr + 5, ref_stride, 0x7fffffff); ref_ptr + 2, ref_stride,
sad_array[6] = (unsigned short)vp9_sad16x8_c(src_ptr, src_stride, ref_ptr + 6, ref_stride, 0x7fffffff); 0x7fffffff);
sad_array[7] = (unsigned short)vp9_sad16x8_c(src_ptr, src_stride, ref_ptr + 7, ref_stride, 0x7fffffff); sad_array[3] = (unsigned short)vp9_sad16x8_c(src_ptr, src_stride,
ref_ptr + 3, ref_stride,
0x7fffffff);
sad_array[4] = (unsigned short)vp9_sad16x8_c(src_ptr, src_stride,
ref_ptr + 4, ref_stride,
0x7fffffff);
sad_array[5] = (unsigned short)vp9_sad16x8_c(src_ptr, src_stride,
ref_ptr + 5, ref_stride,
0x7fffffff);
sad_array[6] = (unsigned short)vp9_sad16x8_c(src_ptr, src_stride,
ref_ptr + 6, ref_stride,
0x7fffffff);
sad_array[7] = (unsigned short)vp9_sad16x8_c(src_ptr, src_stride,
ref_ptr + 7, ref_stride,
0x7fffffff);
} }
void vp9_sad8x8x3_c( void vp9_sad8x8x3_c(const unsigned char *src_ptr,
const unsigned char *src_ptr, int src_stride,
int src_stride, const unsigned char *ref_ptr,
const unsigned char *ref_ptr, int ref_stride,
int ref_stride, unsigned int *sad_array) {
unsigned int *sad_array sad_array[0] = vp9_sad8x8_c(src_ptr, src_stride,
) { ref_ptr, ref_stride, 0x7fffffff);
sad_array[0] = vp9_sad8x8_c(src_ptr, src_stride, ref_ptr, ref_stride, 0x7fffffff); sad_array[1] = vp9_sad8x8_c(src_ptr, src_stride,
sad_array[1] = vp9_sad8x8_c(src_ptr, src_stride, ref_ptr + 1, ref_stride, 0x7fffffff); ref_ptr + 1, ref_stride, 0x7fffffff);
sad_array[2] = vp9_sad8x8_c(src_ptr, src_stride, ref_ptr + 2, ref_stride, 0x7fffffff); sad_array[2] = vp9_sad8x8_c(src_ptr, src_stride,
ref_ptr + 2, ref_stride, 0x7fffffff);
} }
void vp9_sad8x8x8_c( void vp9_sad8x8x8_c(const unsigned char *src_ptr,
const unsigned char *src_ptr, int src_stride,
int src_stride, const unsigned char *ref_ptr,
const unsigned char *ref_ptr, int ref_stride,
int ref_stride, unsigned short *sad_array) {
unsigned short *sad_array sad_array[0] = (unsigned short)vp9_sad8x8_c(src_ptr, src_stride,
) { ref_ptr, ref_stride,
sad_array[0] = (unsigned short)vp9_sad8x8_c(src_ptr, src_stride, ref_ptr, ref_stride, 0x7fffffff); 0x7fffffff);
sad_array[1] = (unsigned short)vp9_sad8x8_c(src_ptr, src_stride, ref_ptr + 1, ref_stride, 0x7fffffff); sad_array[1] = (unsigned short)vp9_sad8x8_c(src_ptr, src_stride,
sad_array[2] = (unsigned short)vp9_sad8x8_c(src_ptr, src_stride, ref_ptr + 2, ref_stride, 0x7fffffff); ref_ptr + 1, ref_stride,
sad_array[3] = (unsigned short)vp9_sad8x8_c(src_ptr, src_stride, ref_ptr + 3, ref_stride, 0x7fffffff); 0x7fffffff);
sad_array[4] = (unsigned short)vp9_sad8x8_c(src_ptr, src_stride, ref_ptr + 4, ref_stride, 0x7fffffff); sad_array[2] = (unsigned short)vp9_sad8x8_c(src_ptr, src_stride,
sad_array[5] = (unsigned short)vp9_sad8x8_c(src_ptr, src_stride, ref_ptr + 5, ref_stride, 0x7fffffff); ref_ptr + 2, ref_stride,
sad_array[6] = (unsigned short)vp9_sad8x8_c(src_ptr, src_stride, ref_ptr + 6, ref_stride, 0x7fffffff); 0x7fffffff);
sad_array[7] = (unsigned short)vp9_sad8x8_c(src_ptr, src_stride, ref_ptr + 7, ref_stride, 0x7fffffff); sad_array[3] = (unsigned short)vp9_sad8x8_c(src_ptr, src_stride,
ref_ptr + 3, ref_stride,
0x7fffffff);
sad_array[4] = (unsigned short)vp9_sad8x8_c(src_ptr, src_stride,
ref_ptr + 4, ref_stride,
0x7fffffff);
sad_array[5] = (unsigned short)vp9_sad8x8_c(src_ptr, src_stride,
ref_ptr + 5, ref_stride,
0x7fffffff);
sad_array[6] = (unsigned short)vp9_sad8x8_c(src_ptr, src_stride,
ref_ptr + 6, ref_stride,
0x7fffffff);
sad_array[7] = (unsigned short)vp9_sad8x8_c(src_ptr, src_stride,
ref_ptr + 7, ref_stride,
0x7fffffff);
} }
void vp9_sad8x16x3_c( void vp9_sad8x16x3_c(const unsigned char *src_ptr,
const unsigned char *src_ptr, int src_stride,
int src_stride, const unsigned char *ref_ptr,
const unsigned char *ref_ptr, int ref_stride,
int ref_stride, unsigned int *sad_array) {
unsigned int *sad_array sad_array[0] = vp9_sad8x16_c(src_ptr, src_stride,
) { ref_ptr, ref_stride, 0x7fffffff);
sad_array[0] = vp9_sad8x16_c(src_ptr, src_stride, ref_ptr, ref_stride, 0x7fffffff); sad_array[1] = vp9_sad8x16_c(src_ptr, src_stride,
sad_array[1] = vp9_sad8x16_c(src_ptr, src_stride, ref_ptr + 1, ref_stride, 0x7fffffff); ref_ptr + 1, ref_stride, 0x7fffffff);
sad_array[2] = vp9_sad8x16_c(src_ptr, src_stride, ref_ptr + 2, ref_stride, 0x7fffffff); sad_array[2] = vp9_sad8x16_c(src_ptr, src_stride,
ref_ptr + 2, ref_stride, 0x7fffffff);
} }
void vp9_sad8x16x8_c( void vp9_sad8x16x8_c(const unsigned char *src_ptr,
const unsigned char *src_ptr, int src_stride,
int src_stride, const unsigned char *ref_ptr,
const unsigned char *ref_ptr, int ref_stride,
int ref_stride, unsigned short *sad_array) {
unsigned short *sad_array sad_array[0] = (unsigned short)vp9_sad8x16_c(src_ptr, src_stride,
) { ref_ptr, ref_stride,
sad_array[0] = (unsigned short)vp9_sad8x16_c(src_ptr, src_stride, ref_ptr, ref_stride, 0x7fffffff); 0x7fffffff);
sad_array[1] = (unsigned short)vp9_sad8x16_c(src_ptr, src_stride, ref_ptr + 1, ref_stride, 0x7fffffff); sad_array[1] = (unsigned short)vp9_sad8x16_c(src_ptr, src_stride,
sad_array[2] = (unsigned short)vp9_sad8x16_c(src_ptr, src_stride, ref_ptr + 2, ref_stride, 0x7fffffff); ref_ptr + 1, ref_stride,
sad_array[3] = (unsigned short)vp9_sad8x16_c(src_ptr, src_stride, ref_ptr + 3, ref_stride, 0x7fffffff); 0x7fffffff);
sad_array[4] = (unsigned short)vp9_sad8x16_c(src_ptr, src_stride, ref_ptr + 4, ref_stride, 0x7fffffff); sad_array[2] = (unsigned short)vp9_sad8x16_c(src_ptr, src_stride,
sad_array[5] = (unsigned short)vp9_sad8x16_c(src_ptr, src_stride, ref_ptr + 5, ref_stride, 0x7fffffff); ref_ptr + 2, ref_stride,
sad_array[6] = (unsigned short)vp9_sad8x16_c(src_ptr, src_stride, ref_ptr + 6, ref_stride, 0x7fffffff); 0x7fffffff);
sad_array[7] = (unsigned short)vp9_sad8x16_c(src_ptr, src_stride, ref_ptr + 7, ref_stride, 0x7fffffff); sad_array[3] = (unsigned short)vp9_sad8x16_c(src_ptr, src_stride,
ref_ptr + 3, ref_stride,
0x7fffffff);
sad_array[4] = (unsigned short)vp9_sad8x16_c(src_ptr, src_stride,
ref_ptr + 4, ref_stride,
0x7fffffff);
sad_array[5] = (unsigned short)vp9_sad8x16_c(src_ptr, src_stride,
ref_ptr + 5, ref_stride,
0x7fffffff);
sad_array[6] = (unsigned short)vp9_sad8x16_c(src_ptr, src_stride,
ref_ptr + 6, ref_stride,
0x7fffffff);
sad_array[7] = (unsigned short)vp9_sad8x16_c(src_ptr, src_stride,
ref_ptr + 7, ref_stride,
0x7fffffff);
} }
void vp9_sad4x4x3_c( void vp9_sad4x4x3_c(const unsigned char *src_ptr,
const unsigned char *src_ptr, int src_stride,
int src_stride, const unsigned char *ref_ptr,
const unsigned char *ref_ptr, int ref_stride,
int ref_stride, unsigned int *sad_array) {
unsigned int *sad_array sad_array[0] = vp9_sad4x4_c(src_ptr, src_stride,
) { ref_ptr, ref_stride, 0x7fffffff);
sad_array[0] = vp9_sad4x4_c(src_ptr, src_stride, ref_ptr, ref_stride, 0x7fffffff); sad_array[1] = vp9_sad4x4_c(src_ptr, src_stride,
sad_array[1] = vp9_sad4x4_c(src_ptr, src_stride, ref_ptr + 1, ref_stride, 0x7fffffff); ref_ptr + 1, ref_stride, 0x7fffffff);
sad_array[2] = vp9_sad4x4_c(src_ptr, src_stride, ref_ptr + 2, ref_stride, 0x7fffffff); sad_array[2] = vp9_sad4x4_c(src_ptr, src_stride,
ref_ptr + 2, ref_stride, 0x7fffffff);
} }
void vp9_sad4x4x8_c( void vp9_sad4x4x8_c(const unsigned char *src_ptr,
const unsigned char *src_ptr, int src_stride,
int src_stride, const unsigned char *ref_ptr,
const unsigned char *ref_ptr, int ref_stride,
int ref_stride, unsigned short *sad_array) {
unsigned short *sad_array sad_array[0] = (unsigned short)vp9_sad4x4_c(src_ptr, src_stride,
) { ref_ptr, ref_stride,
sad_array[0] = (unsigned short)vp9_sad4x4_c(src_ptr, src_stride, ref_ptr, ref_stride, 0x7fffffff); 0x7fffffff);
sad_array[1] = (unsigned short)vp9_sad4x4_c(src_ptr, src_stride, ref_ptr + 1, ref_stride, 0x7fffffff); sad_array[1] = (unsigned short)vp9_sad4x4_c(src_ptr, src_stride,
sad_array[2] = (unsigned short)vp9_sad4x4_c(src_ptr, src_stride, ref_ptr + 2, ref_stride, 0x7fffffff); ref_ptr + 1, ref_stride,
sad_array[3] = (unsigned short)vp9_sad4x4_c(src_ptr, src_stride, ref_ptr + 3, ref_stride, 0x7fffffff); 0x7fffffff);
sad_array[4] = (unsigned short)vp9_sad4x4_c(src_ptr, src_stride, ref_ptr + 4, ref_stride, 0x7fffffff); sad_array[2] = (unsigned short)vp9_sad4x4_c(src_ptr, src_stride,
sad_array[5] = (unsigned short)vp9_sad4x4_c(src_ptr, src_stride, ref_ptr + 5, ref_stride, 0x7fffffff); ref_ptr + 2, ref_stride,
sad_array[6] = (unsigned short)vp9_sad4x4_c(src_ptr, src_stride, ref_ptr + 6, ref_stride, 0x7fffffff); 0x7fffffff);
sad_array[7] = (unsigned short)vp9_sad4x4_c(src_ptr, src_stride, ref_ptr + 7, ref_stride, 0x7fffffff); sad_array[3] = (unsigned short)vp9_sad4x4_c(src_ptr, src_stride,
ref_ptr + 3, ref_stride,
0x7fffffff);
sad_array[4] = (unsigned short)vp9_sad4x4_c(src_ptr, src_stride,
ref_ptr + 4, ref_stride,
0x7fffffff);
sad_array[5] = (unsigned short)vp9_sad4x4_c(src_ptr, src_stride,
ref_ptr + 5, ref_stride,
0x7fffffff);
sad_array[6] = (unsigned short)vp9_sad4x4_c(src_ptr, src_stride,
ref_ptr + 6, ref_stride,
0x7fffffff);
sad_array[7] = (unsigned short)vp9_sad4x4_c(src_ptr, src_stride,
ref_ptr + 7, ref_stride,
0x7fffffff);
} }
void vp9_sad32x32x4d_c(const unsigned char *src_ptr, void vp9_sad32x32x4d_c(const unsigned char *src_ptr,
@ -252,84 +336,97 @@ void vp9_sad32x32x4d_c(const unsigned char *src_ptr,
int ref_stride, int ref_stride,
unsigned int *sad_array unsigned int *sad_array
) { ) {
sad_array[0] = vp9_sad32x32_c(src_ptr, src_stride, ref_ptr[0], ref_stride, 0x7fffffff); sad_array[0] = vp9_sad32x32_c(src_ptr, src_stride,
sad_array[1] = vp9_sad32x32_c(src_ptr, src_stride, ref_ptr[1], ref_stride, 0x7fffffff); ref_ptr[0], ref_stride, 0x7fffffff);
sad_array[2] = vp9_sad32x32_c(src_ptr, src_stride, ref_ptr[2], ref_stride, 0x7fffffff); sad_array[1] = vp9_sad32x32_c(src_ptr, src_stride,
sad_array[3] = vp9_sad32x32_c(src_ptr, src_stride, ref_ptr[3], ref_stride, 0x7fffffff); ref_ptr[1], ref_stride, 0x7fffffff);
sad_array[2] = vp9_sad32x32_c(src_ptr, src_stride,
ref_ptr[2], ref_stride, 0x7fffffff);
sad_array[3] = vp9_sad32x32_c(src_ptr, src_stride,
ref_ptr[3], ref_stride, 0x7fffffff);
} }
void vp9_sad16x16x4d_c( void vp9_sad16x16x4d_c(const unsigned char *src_ptr,
const unsigned char *src_ptr, int src_stride,
int src_stride, unsigned char *ref_ptr[],
unsigned char *ref_ptr[], int ref_stride,
int ref_stride, unsigned int *sad_array) {
unsigned int *sad_array sad_array[0] = vp9_sad16x16_c(src_ptr, src_stride,
) { ref_ptr[0], ref_stride, 0x7fffffff);
sad_array[0] = vp9_sad16x16_c(src_ptr, src_stride, ref_ptr[0], ref_stride, 0x7fffffff); sad_array[1] = vp9_sad16x16_c(src_ptr, src_stride,
sad_array[1] = vp9_sad16x16_c(src_ptr, src_stride, ref_ptr[1], ref_stride, 0x7fffffff); ref_ptr[1], ref_stride, 0x7fffffff);
sad_array[2] = vp9_sad16x16_c(src_ptr, src_stride, ref_ptr[2], ref_stride, 0x7fffffff); sad_array[2] = vp9_sad16x16_c(src_ptr, src_stride,
sad_array[3] = vp9_sad16x16_c(src_ptr, src_stride, ref_ptr[3], ref_stride, 0x7fffffff); ref_ptr[2], ref_stride, 0x7fffffff);
sad_array[3] = vp9_sad16x16_c(src_ptr, src_stride,
ref_ptr[3], ref_stride, 0x7fffffff);
} }
void vp9_sad16x8x4d_c( void vp9_sad16x8x4d_c(const unsigned char *src_ptr,
const unsigned char *src_ptr, int src_stride,
int src_stride, unsigned char *ref_ptr[],
unsigned char *ref_ptr[], int ref_stride,
int ref_stride, unsigned int *sad_array) {
unsigned int *sad_array sad_array[0] = vp9_sad16x8_c(src_ptr, src_stride,
) { ref_ptr[0], ref_stride, 0x7fffffff);
sad_array[0] = vp9_sad16x8_c(src_ptr, src_stride, ref_ptr[0], ref_stride, 0x7fffffff); sad_array[1] = vp9_sad16x8_c(src_ptr, src_stride,
sad_array[1] = vp9_sad16x8_c(src_ptr, src_stride, ref_ptr[1], ref_stride, 0x7fffffff); ref_ptr[1], ref_stride, 0x7fffffff);
sad_array[2] = vp9_sad16x8_c(src_ptr, src_stride, ref_ptr[2], ref_stride, 0x7fffffff); sad_array[2] = vp9_sad16x8_c(src_ptr, src_stride,
sad_array[3] = vp9_sad16x8_c(src_ptr, src_stride, ref_ptr[3], ref_stride, 0x7fffffff); ref_ptr[2], ref_stride, 0x7fffffff);
sad_array[3] = vp9_sad16x8_c(src_ptr, src_stride,
ref_ptr[3], ref_stride, 0x7fffffff);
} }
void vp9_sad8x8x4d_c( void vp9_sad8x8x4d_c(const unsigned char *src_ptr,
const unsigned char *src_ptr, int src_stride,
int src_stride, unsigned char *ref_ptr[],
unsigned char *ref_ptr[], int ref_stride,
int ref_stride, unsigned int *sad_array) {
unsigned int *sad_array sad_array[0] = vp9_sad8x8_c(src_ptr, src_stride,
) { ref_ptr[0], ref_stride, 0x7fffffff);
sad_array[0] = vp9_sad8x8_c(src_ptr, src_stride, ref_ptr[0], ref_stride, 0x7fffffff); sad_array[1] = vp9_sad8x8_c(src_ptr, src_stride,
sad_array[1] = vp9_sad8x8_c(src_ptr, src_stride, ref_ptr[1], ref_stride, 0x7fffffff); ref_ptr[1], ref_stride, 0x7fffffff);
sad_array[2] = vp9_sad8x8_c(src_ptr, src_stride, ref_ptr[2], ref_stride, 0x7fffffff); sad_array[2] = vp9_sad8x8_c(src_ptr, src_stride,
sad_array[3] = vp9_sad8x8_c(src_ptr, src_stride, ref_ptr[3], ref_stride, 0x7fffffff); ref_ptr[2], ref_stride, 0x7fffffff);
sad_array[3] = vp9_sad8x8_c(src_ptr, src_stride,
ref_ptr[3], ref_stride, 0x7fffffff);
} }
void vp9_sad8x16x4d_c( void vp9_sad8x16x4d_c(const unsigned char *src_ptr,
const unsigned char *src_ptr, int src_stride,
int src_stride, unsigned char *ref_ptr[],
unsigned char *ref_ptr[], int ref_stride,
int ref_stride, unsigned int *sad_array) {
unsigned int *sad_array sad_array[0] = vp9_sad8x16_c(src_ptr, src_stride,
) { ref_ptr[0], ref_stride, 0x7fffffff);
sad_array[0] = vp9_sad8x16_c(src_ptr, src_stride, ref_ptr[0], ref_stride, 0x7fffffff); sad_array[1] = vp9_sad8x16_c(src_ptr, src_stride,
sad_array[1] = vp9_sad8x16_c(src_ptr, src_stride, ref_ptr[1], ref_stride, 0x7fffffff); ref_ptr[1], ref_stride, 0x7fffffff);
sad_array[2] = vp9_sad8x16_c(src_ptr, src_stride, ref_ptr[2], ref_stride, 0x7fffffff); sad_array[2] = vp9_sad8x16_c(src_ptr, src_stride,
sad_array[3] = vp9_sad8x16_c(src_ptr, src_stride, ref_ptr[3], ref_stride, 0x7fffffff); ref_ptr[2], ref_stride, 0x7fffffff);
sad_array[3] = vp9_sad8x16_c(src_ptr, src_stride,
ref_ptr[3], ref_stride, 0x7fffffff);
} }
void vp9_sad4x4x4d_c( void vp9_sad4x4x4d_c(const unsigned char *src_ptr,
const unsigned char *src_ptr, int src_stride,
int src_stride, unsigned char *ref_ptr[],
unsigned char *ref_ptr[], int ref_stride,
int ref_stride, unsigned int *sad_array) {
unsigned int *sad_array sad_array[0] = vp9_sad4x4_c(src_ptr, src_stride,
) { ref_ptr[0], ref_stride, 0x7fffffff);
sad_array[0] = vp9_sad4x4_c(src_ptr, src_stride, ref_ptr[0], ref_stride, 0x7fffffff); sad_array[1] = vp9_sad4x4_c(src_ptr, src_stride,
sad_array[1] = vp9_sad4x4_c(src_ptr, src_stride, ref_ptr[1], ref_stride, 0x7fffffff); ref_ptr[1], ref_stride, 0x7fffffff);
sad_array[2] = vp9_sad4x4_c(src_ptr, src_stride, ref_ptr[2], ref_stride, 0x7fffffff); sad_array[2] = vp9_sad4x4_c(src_ptr, src_stride,
sad_array[3] = vp9_sad4x4_c(src_ptr, src_stride, ref_ptr[3], ref_stride, 0x7fffffff); ref_ptr[2], ref_stride, 0x7fffffff);
sad_array[3] = vp9_sad4x4_c(src_ptr, src_stride,
ref_ptr[3], ref_stride, 0x7fffffff);
} }
/* Copy 2 macroblocks to a buffer */ /* Copy 2 macroblocks to a buffer */
void vp9_copy32xn_c( void vp9_copy32xn_c(unsigned char *src_ptr,
unsigned char *src_ptr, int src_stride,
int src_stride, unsigned char *dst_ptr,
unsigned char *dst_ptr, int dst_stride,
int dst_stride, int height) {
int height) {
int r; int r;
for (r = 0; r < height; r++) { for (r = 0; r < height; r++) {

View File

@ -16,14 +16,16 @@
#ifndef __INC_SEGMENTATION_H__ #ifndef __INC_SEGMENTATION_H__
#define __INC_SEGMENTATION_H__ 1 #define __INC_SEGMENTATION_H__ 1
extern void vp9_update_gf_useage_maps(VP8_COMP *cpi, VP8_COMMON *cm, MACROBLOCK *x); extern void vp9_update_gf_useage_maps(VP8_COMP *cpi, VP8_COMMON *cm,
MACROBLOCK *x);
extern void vp9_enable_segmentation(VP8_PTR ptr); extern void vp9_enable_segmentation(VP8_PTR ptr);
extern void vp9_disable_segmentation(VP8_PTR ptr); extern void vp9_disable_segmentation(VP8_PTR ptr);
// Valid values for a segment are 0 to 3 // Valid values for a segment are 0 to 3
// Segmentation map is arrange as [Rows][Columns] // Segmentation map is arrange as [Rows][Columns]
extern void vp9_set_segmentation_map(VP8_PTR ptr, unsigned char *segmentation_map); extern void vp9_set_segmentation_map(VP8_PTR ptr,
unsigned char *segmentation_map);
// The values given for each segment can be either deltas (from the default // The values given for each segment can be either deltas (from the default
// value chosen for the frame) or absolute values. // value chosen for the frame) or absolute values.
@ -36,7 +38,8 @@ extern void vp9_set_segmentation_map(VP8_PTR ptr, unsigned char *segmentation_ma
// abs_delta = SEGMENT_DELTADATA (deltas) abs_delta = SEGMENT_ABSDATA (use // abs_delta = SEGMENT_DELTADATA (deltas) abs_delta = SEGMENT_ABSDATA (use
// the absolute values given). // the absolute values given).
// //
extern void vp9_set_segment_data(VP8_PTR ptr, signed char *feature_data, unsigned char abs_delta); extern void vp9_set_segment_data(VP8_PTR ptr, signed char *feature_data,
unsigned char abs_delta);
extern void vp9_choose_segmap_coding_method(VP8_COMP *cpi); extern void vp9_choose_segmap_coding_method(VP8_COMP *cpi);

View File

@ -13,30 +13,25 @@
#include "vp8/common/filter.h" #include "vp8/common/filter.h"
unsigned int vp9_get_mb_ss_c unsigned int vp9_get_mb_ss_c(const short *src_ptr) {
( unsigned int i, sum = 0;
const short *src_ptr
) {
unsigned int i = 0, sum = 0;
do { for (i = 0; i < 256; i++) {
sum += (src_ptr[i] * src_ptr[i]); sum += (src_ptr[i] * src_ptr[i]);
i++; }
} while (i < 256);
return sum; return sum;
} }
static void variance( static void variance(const unsigned char *src_ptr,
const unsigned char *src_ptr, int source_stride,
int source_stride, const unsigned char *ref_ptr,
const unsigned char *ref_ptr, int recon_stride,
int recon_stride, int w,
int w, int h,
int h, unsigned int *sse,
unsigned int *sse, int *sum) {
int *sum) {
int i, j; int i, j;
int diff; int diff;
@ -70,89 +65,78 @@ unsigned int vp9_variance32x32_c(const unsigned char *src_ptr,
} }
#endif #endif
unsigned int vp9_variance16x16_c( unsigned int vp9_variance16x16_c(const unsigned char *src_ptr,
const unsigned char *src_ptr, int source_stride,
int source_stride, const unsigned char *ref_ptr,
const unsigned char *ref_ptr, int recon_stride,
int recon_stride, unsigned int *sse) {
unsigned int *sse) {
unsigned int var; unsigned int var;
int avg; int avg;
variance(src_ptr, source_stride, ref_ptr, recon_stride, 16, 16, &var, &avg); variance(src_ptr, source_stride, ref_ptr, recon_stride, 16, 16, &var, &avg);
*sse = var; *sse = var;
return (var - ((avg * avg) >> 8)); return (var - ((avg * avg) >> 8));
} }
unsigned int vp9_variance8x16_c( unsigned int vp9_variance8x16_c(const unsigned char *src_ptr,
const unsigned char *src_ptr, int source_stride,
int source_stride, const unsigned char *ref_ptr,
const unsigned char *ref_ptr, int recon_stride,
int recon_stride, unsigned int *sse) {
unsigned int *sse) {
unsigned int var; unsigned int var;
int avg; int avg;
variance(src_ptr, source_stride, ref_ptr, recon_stride, 8, 16, &var, &avg); variance(src_ptr, source_stride, ref_ptr, recon_stride, 8, 16, &var, &avg);
*sse = var; *sse = var;
return (var - ((avg * avg) >> 7)); return (var - ((avg * avg) >> 7));
} }
unsigned int vp9_variance16x8_c( unsigned int vp9_variance16x8_c(const unsigned char *src_ptr,
const unsigned char *src_ptr, int source_stride,
int source_stride, const unsigned char *ref_ptr,
const unsigned char *ref_ptr, int recon_stride,
int recon_stride, unsigned int *sse) {
unsigned int *sse) {
unsigned int var; unsigned int var;
int avg; int avg;
variance(src_ptr, source_stride, ref_ptr, recon_stride, 16, 8, &var, &avg); variance(src_ptr, source_stride, ref_ptr, recon_stride, 16, 8, &var, &avg);
*sse = var; *sse = var;
return (var - ((avg * avg) >> 7)); return (var - ((avg * avg) >> 7));
} }
unsigned int vp9_variance8x8_c( unsigned int vp9_variance8x8_c(const unsigned char *src_ptr,
const unsigned char *src_ptr, int source_stride,
int source_stride, const unsigned char *ref_ptr,
const unsigned char *ref_ptr, int recon_stride,
int recon_stride, unsigned int *sse) {
unsigned int *sse) {
unsigned int var; unsigned int var;
int avg; int avg;
variance(src_ptr, source_stride, ref_ptr, recon_stride, 8, 8, &var, &avg); variance(src_ptr, source_stride, ref_ptr, recon_stride, 8, 8, &var, &avg);
*sse = var; *sse = var;
return (var - ((avg * avg) >> 6)); return (var - ((avg * avg) >> 6));
} }
unsigned int vp9_variance4x4_c( unsigned int vp9_variance4x4_c(const unsigned char *src_ptr,
const unsigned char *src_ptr, int source_stride,
int source_stride, const unsigned char *ref_ptr,
const unsigned char *ref_ptr, int recon_stride,
int recon_stride, unsigned int *sse) {
unsigned int *sse) {
unsigned int var; unsigned int var;
int avg; int avg;
variance(src_ptr, source_stride, ref_ptr, recon_stride, 4, 4, &var, &avg); variance(src_ptr, source_stride, ref_ptr, recon_stride, 4, 4, &var, &avg);
*sse = var; *sse = var;
return (var - ((avg * avg) >> 4)); return (var - ((avg * avg) >> 4));
} }
unsigned int vp9_mse16x16_c( unsigned int vp9_mse16x16_c(const unsigned char *src_ptr,
const unsigned char *src_ptr, int source_stride,
int source_stride, const unsigned char *ref_ptr,
const unsigned char *ref_ptr, int recon_stride,
int recon_stride, unsigned int *sse) {
unsigned int *sse) {
unsigned int var; unsigned int var;
int avg; int avg;
@ -190,16 +174,13 @@ unsigned int vp9_mse16x16_c(
* to the next. * to the next.
* *
****************************************************************************/ ****************************************************************************/
static void var_filter_block2d_bil_first_pass static void var_filter_block2d_bil_first_pass(const unsigned char *src_ptr,
( unsigned short *output_ptr,
const unsigned char *src_ptr, unsigned int src_pixels_per_line,
unsigned short *output_ptr, int pixel_step,
unsigned int src_pixels_per_line, unsigned int output_height,
int pixel_step, unsigned int output_width,
unsigned int output_height, const short *vp8_filter) {
unsigned int output_width,
const short *vp8_filter
) {
unsigned int i, j; unsigned int i, j;
for (i = 0; i < output_height; i++) { for (i = 0; i < output_height; i++) {
@ -245,16 +226,13 @@ static void var_filter_block2d_bil_first_pass
* to the next. * to the next.
* *
****************************************************************************/ ****************************************************************************/
static void var_filter_block2d_bil_second_pass static void var_filter_block2d_bil_second_pass(const unsigned short *src_ptr,
( unsigned char *output_ptr,
const unsigned short *src_ptr, unsigned int src_pixels_per_line,
unsigned char *output_ptr, unsigned int pixel_step,
unsigned int src_pixels_per_line, unsigned int output_height,
unsigned int pixel_step, unsigned int output_width,
unsigned int output_height, const short *vp8_filter) {
unsigned int output_width,
const short *vp8_filter
) {
unsigned int i, j; unsigned int i, j;
int Temp; int Temp;
@ -275,16 +253,13 @@ static void var_filter_block2d_bil_second_pass
} }
unsigned int vp9_sub_pixel_variance4x4_c unsigned int vp9_sub_pixel_variance4x4_c(const unsigned char *src_ptr,
( int src_pixels_per_line,
const unsigned char *src_ptr, int xoffset,
int src_pixels_per_line, int yoffset,
int xoffset, const unsigned char *dst_ptr,
int yoffset, int dst_pixels_per_line,
const unsigned char *dst_ptr, unsigned int *sse) {
int dst_pixels_per_line,
unsigned int *sse
) {
unsigned char temp2[20 * 16]; unsigned char temp2[20 * 16];
const short *HFilter, *VFilter; const short *HFilter, *VFilter;
unsigned short FData3[5 * 4]; // Temp data bufffer used in filtering unsigned short FData3[5 * 4]; // Temp data bufffer used in filtering
@ -302,16 +277,13 @@ unsigned int vp9_sub_pixel_variance4x4_c
} }
unsigned int vp9_sub_pixel_variance8x8_c unsigned int vp9_sub_pixel_variance8x8_c(const unsigned char *src_ptr,
( int src_pixels_per_line,
const unsigned char *src_ptr, int xoffset,
int src_pixels_per_line, int yoffset,
int xoffset, const unsigned char *dst_ptr,
int yoffset, int dst_pixels_per_line,
const unsigned char *dst_ptr, unsigned int *sse) {
int dst_pixels_per_line,
unsigned int *sse
) {
unsigned short FData3[9 * 8]; // Temp data bufffer used in filtering unsigned short FData3[9 * 8]; // Temp data bufffer used in filtering
unsigned char temp2[20 * 16]; unsigned char temp2[20 * 16];
const short *HFilter, *VFilter; const short *HFilter, *VFilter;
@ -325,16 +297,13 @@ unsigned int vp9_sub_pixel_variance8x8_c
return vp9_variance8x8_c(temp2, 8, dst_ptr, dst_pixels_per_line, sse); return vp9_variance8x8_c(temp2, 8, dst_ptr, dst_pixels_per_line, sse);
} }
unsigned int vp9_sub_pixel_variance16x16_c unsigned int vp9_sub_pixel_variance16x16_c(const unsigned char *src_ptr,
( int src_pixels_per_line,
const unsigned char *src_ptr, int xoffset,
int src_pixels_per_line, int yoffset,
int xoffset, const unsigned char *dst_ptr,
int yoffset, int dst_pixels_per_line,
const unsigned char *dst_ptr, unsigned int *sse) {
int dst_pixels_per_line,
unsigned int *sse
) {
unsigned short FData3[17 * 16]; // Temp data bufffer used in filtering unsigned short FData3[17 * 16]; // Temp data bufffer used in filtering
unsigned char temp2[20 * 16]; unsigned char temp2[20 * 16];
const short *HFilter, *VFilter; const short *HFilter, *VFilter;
@ -370,12 +339,11 @@ unsigned int vp9_sub_pixel_variance32x32_c(const unsigned char *src_ptr,
} }
#endif #endif
unsigned int vp9_variance_halfpixvar16x16_h_c( unsigned int vp9_variance_halfpixvar16x16_h_c(const unsigned char *src_ptr,
const unsigned char *src_ptr, int source_stride,
int source_stride, const unsigned char *ref_ptr,
const unsigned char *ref_ptr, int recon_stride,
int recon_stride, unsigned int *sse) {
unsigned int *sse) {
return vp9_sub_pixel_variance16x16_c(src_ptr, source_stride, 8, 0, return vp9_sub_pixel_variance16x16_c(src_ptr, source_stride, 8, 0,
ref_ptr, recon_stride, sse); ref_ptr, recon_stride, sse);
} }
@ -402,23 +370,21 @@ unsigned int vp9_variance_halfpixvar16x16_v_c(const unsigned char *src_ptr,
} }
#if CONFIG_SUPERBLOCKS #if CONFIG_SUPERBLOCKS
unsigned int vp9_variance_halfpixvar32x32_v_c( unsigned int vp9_variance_halfpixvar32x32_v_c(const unsigned char *src_ptr,
const unsigned char *src_ptr, int source_stride,
int source_stride, const unsigned char *ref_ptr,
const unsigned char *ref_ptr, int recon_stride,
int recon_stride, unsigned int *sse) {
unsigned int *sse) {
return vp9_sub_pixel_variance32x32_c(src_ptr, source_stride, 0, 8, return vp9_sub_pixel_variance32x32_c(src_ptr, source_stride, 0, 8,
ref_ptr, recon_stride, sse); ref_ptr, recon_stride, sse);
} }
#endif #endif
unsigned int vp9_variance_halfpixvar16x16_hv_c( unsigned int vp9_variance_halfpixvar16x16_hv_c(const unsigned char *src_ptr,
const unsigned char *src_ptr, int source_stride,
int source_stride, const unsigned char *ref_ptr,
const unsigned char *ref_ptr, int recon_stride,
int recon_stride, unsigned int *sse) {
unsigned int *sse) {
return vp9_sub_pixel_variance16x16_c(src_ptr, source_stride, 8, 8, return vp9_sub_pixel_variance16x16_c(src_ptr, source_stride, 8, 8,
ref_ptr, recon_stride, sse); ref_ptr, recon_stride, sse);
} }
@ -434,17 +400,16 @@ unsigned int vp9_variance_halfpixvar32x32_hv_c(const unsigned char *src_ptr,
} }
#endif #endif
unsigned int vp9_sub_pixel_mse16x16_c unsigned int vp9_sub_pixel_mse16x16_c(const unsigned char *src_ptr,
( int src_pixels_per_line,
const unsigned char *src_ptr, int xoffset,
int src_pixels_per_line, int yoffset,
int xoffset, const unsigned char *dst_ptr,
int yoffset, int dst_pixels_per_line,
const unsigned char *dst_ptr, unsigned int *sse) {
int dst_pixels_per_line, vp9_sub_pixel_variance16x16_c(src_ptr, src_pixels_per_line,
unsigned int *sse xoffset, yoffset, dst_ptr,
) { dst_pixels_per_line, sse);
vp9_sub_pixel_variance16x16_c(src_ptr, src_pixels_per_line, xoffset, yoffset, dst_ptr, dst_pixels_per_line, sse);
return *sse; return *sse;
} }
@ -456,21 +421,20 @@ unsigned int vp9_sub_pixel_mse32x32_c(const unsigned char *src_ptr,
const unsigned char *dst_ptr, const unsigned char *dst_ptr,
int dst_pixels_per_line, int dst_pixels_per_line,
unsigned int *sse) { unsigned int *sse) {
vp9_sub_pixel_variance32x32_c(src_ptr, src_pixels_per_line, xoffset, yoffset, dst_ptr, dst_pixels_per_line, sse); vp9_sub_pixel_variance32x32_c(src_ptr, src_pixels_per_line,
xoffset, yoffset, dst_ptr,
dst_pixels_per_line, sse);
return *sse; return *sse;
} }
#endif #endif
unsigned int vp9_sub_pixel_variance16x8_c unsigned int vp9_sub_pixel_variance16x8_c(const unsigned char *src_ptr,
( int src_pixels_per_line,
const unsigned char *src_ptr, int xoffset,
int src_pixels_per_line, int yoffset,
int xoffset, const unsigned char *dst_ptr,
int yoffset, int dst_pixels_per_line,
const unsigned char *dst_ptr, unsigned int *sse) {
int dst_pixels_per_line,
unsigned int *sse
) {
unsigned short FData3[16 * 9]; // Temp data bufffer used in filtering unsigned short FData3[16 * 9]; // Temp data bufffer used in filtering
unsigned char temp2[20 * 16]; unsigned char temp2[20 * 16];
const short *HFilter, *VFilter; const short *HFilter, *VFilter;
@ -484,37 +448,33 @@ unsigned int vp9_sub_pixel_variance16x8_c
return vp9_variance16x8_c(temp2, 16, dst_ptr, dst_pixels_per_line, sse); return vp9_variance16x8_c(temp2, 16, dst_ptr, dst_pixels_per_line, sse);
} }
unsigned int vp9_sub_pixel_variance8x16_c unsigned int vp9_sub_pixel_variance8x16_c(const unsigned char *src_ptr,
( int src_pixels_per_line,
const unsigned char *src_ptr, int xoffset,
int src_pixels_per_line, int yoffset,
int xoffset, const unsigned char *dst_ptr,
int yoffset, int dst_pixels_per_line,
const unsigned char *dst_ptr, unsigned int *sse) {
int dst_pixels_per_line,
unsigned int *sse
) {
unsigned short FData3[9 * 16]; // Temp data bufffer used in filtering unsigned short FData3[9 * 16]; // Temp data bufffer used in filtering
unsigned char temp2[20 * 16]; unsigned char temp2[20 * 16];
const short *HFilter, *VFilter; const short *HFilter, *VFilter;
HFilter = vp8_bilinear_filters[xoffset]; HFilter = vp8_bilinear_filters[xoffset];
VFilter = vp8_bilinear_filters[yoffset]; VFilter = vp8_bilinear_filters[yoffset];
var_filter_block2d_bil_first_pass(src_ptr, FData3, src_pixels_per_line,
var_filter_block2d_bil_first_pass(src_ptr, FData3, src_pixels_per_line, 1, 17, 8, HFilter); 1, 17, 8, HFilter);
var_filter_block2d_bil_second_pass(FData3, temp2, 8, 8, 16, 8, VFilter); var_filter_block2d_bil_second_pass(FData3, temp2, 8, 8, 16, 8, VFilter);
return vp9_variance8x16_c(temp2, 8, dst_ptr, dst_pixels_per_line, sse); return vp9_variance8x16_c(temp2, 8, dst_ptr, dst_pixels_per_line, sse);
} }
#if CONFIG_NEWBESTREFMV #if CONFIG_NEWBESTREFMV
unsigned int vp8_variance2x16_c( unsigned int vp8_variance2x16_c(const unsigned char *src_ptr,
const unsigned char *src_ptr, const int source_stride,
const int source_stride, const unsigned char *ref_ptr,
const unsigned char *ref_ptr, const int recon_stride,
const int recon_stride, unsigned int *sse) {
unsigned int *sse) {
unsigned int var; unsigned int var;
int avg; int avg;
@ -523,12 +483,11 @@ unsigned int vp8_variance2x16_c(
return (var - ((avg * avg) >> 5)); return (var - ((avg * avg) >> 5));
} }
unsigned int vp8_variance16x2_c( unsigned int vp8_variance16x2_c(const unsigned char *src_ptr,
const unsigned char *src_ptr, const int source_stride,
const int source_stride, const unsigned char *ref_ptr,
const unsigned char *ref_ptr, const int recon_stride,
const int recon_stride, unsigned int *sse) {
unsigned int *sse) {
unsigned int var; unsigned int var;
int avg; int avg;
@ -537,16 +496,13 @@ unsigned int vp8_variance16x2_c(
return (var - ((avg * avg) >> 5)); return (var - ((avg * avg) >> 5));
} }
unsigned int vp8_sub_pixel_variance16x2_c unsigned int vp8_sub_pixel_variance16x2_c(const unsigned char *src_ptr,
( const int src_pixels_per_line,
const unsigned char *src_ptr, const int xoffset,
const int src_pixels_per_line, const int yoffset,
const int xoffset, const unsigned char *dst_ptr,
const int yoffset, const int dst_pixels_per_line,
const unsigned char *dst_ptr, unsigned int *sse) {
const int dst_pixels_per_line,
unsigned int *sse
) {
unsigned short FData3[16 * 3]; // Temp data bufffer used in filtering unsigned short FData3[16 * 3]; // Temp data bufffer used in filtering
unsigned char temp2[20 * 16]; unsigned char temp2[20 * 16];
const short *HFilter, *VFilter; const short *HFilter, *VFilter;
@ -561,16 +517,13 @@ unsigned int vp8_sub_pixel_variance16x2_c
return vp8_variance16x2_c(temp2, 16, dst_ptr, dst_pixels_per_line, sse); return vp8_variance16x2_c(temp2, 16, dst_ptr, dst_pixels_per_line, sse);
} }
unsigned int vp8_sub_pixel_variance2x16_c unsigned int vp8_sub_pixel_variance2x16_c(const unsigned char *src_ptr,
( const int src_pixels_per_line,
const unsigned char *src_ptr, const int xoffset,
const int src_pixels_per_line, const int yoffset,
const int xoffset, const unsigned char *dst_ptr,
const int yoffset, const int dst_pixels_per_line,
const unsigned char *dst_ptr, unsigned int *sse) {
const int dst_pixels_per_line,
unsigned int *sse
) {
unsigned short FData3[2 * 17]; // Temp data bufffer used in filtering unsigned short FData3[2 * 17]; // Temp data bufffer used in filtering
unsigned char temp2[2 * 16]; unsigned char temp2[2 * 16];
const short *HFilter, *VFilter; const short *HFilter, *VFilter;

View File

@ -364,7 +364,7 @@ static vpx_codec_err_t vp8e_set_config(vpx_codec_alg_priv_t *ctx,
} }
int vp9_reverse_trans(int); int vp9_reverse_trans(int q);
static vpx_codec_err_t get_param(vpx_codec_alg_priv_t *ctx, static vpx_codec_err_t get_param(vpx_codec_alg_priv_t *ctx,
@ -379,7 +379,8 @@ static vpx_codec_err_t get_param(vpx_codec_alg_priv_t *ctx,
switch (ctrl_id) { switch (ctrl_id) {
MAP(VP8E_GET_LAST_QUANTIZER, vp9_get_quantizer(ctx->cpi)); MAP(VP8E_GET_LAST_QUANTIZER, vp9_get_quantizer(ctx->cpi));
MAP(VP8E_GET_LAST_QUANTIZER_64, vp9_reverse_trans(vp9_get_quantizer(ctx->cpi))); MAP(VP8E_GET_LAST_QUANTIZER_64,
vp9_reverse_trans(vp9_get_quantizer(ctx->cpi)));
} }
return VPX_CODEC_OK; return VPX_CODEC_OK;
@ -482,7 +483,7 @@ static vpx_codec_err_t vp8e_common_init(vpx_codec_ctx_t *ctx,
priv->deprecated_mode = NO_MODE_SET; priv->deprecated_mode = NO_MODE_SET;
vp9_initialize(); vp9_initialize_enc();
res = validate_config(priv, &priv->cfg, &priv->vp8_cfg); res = validate_config(priv, &priv->cfg, &priv->vp8_cfg);
@ -674,8 +675,10 @@ static vpx_codec_err_t vp8e_encode(vpx_codec_alg_priv_t *ctx,
cx_data_sz = ctx->cx_data_sz; cx_data_sz = ctx->cx_data_sz;
lib_flags = 0; lib_flags = 0;
while (cx_data_sz >= ctx->cx_data_sz / 2 while (cx_data_sz >= ctx->cx_data_sz / 2 &&
&& -1 != vp9_get_compressed_data(ctx->cpi, &lib_flags, &size, cx_data, &dst_time_stamp, &dst_end_time_stamp, !img)) { -1 != vp9_get_compressed_data(ctx->cpi, &lib_flags, &size,
cx_data, &dst_time_stamp,
&dst_end_time_stamp, !img)) {
if (size) { if (size) {
vpx_codec_pts_t round, delta; vpx_codec_pts_t round, delta;
vpx_codec_cx_pkt_t pkt; vpx_codec_cx_pkt_t pkt;
@ -766,7 +769,7 @@ static vpx_codec_err_t vp8e_set_reference(vpx_codec_alg_priv_t *ctx,
YV12_BUFFER_CONFIG sd; YV12_BUFFER_CONFIG sd;
image2yuvconfig(&frame->img, &sd); image2yuvconfig(&frame->img, &sd);
vp9_set_reference(ctx->cpi, frame->frame_type, &sd); vp9_set_reference_enc(ctx->cpi, frame->frame_type, &sd);
return VPX_CODEC_OK; return VPX_CODEC_OK;
} else } else
return VPX_CODEC_INVALID_PARAM; return VPX_CODEC_INVALID_PARAM;
@ -784,7 +787,7 @@ static vpx_codec_err_t vp8e_get_reference(vpx_codec_alg_priv_t *ctx,
YV12_BUFFER_CONFIG sd; YV12_BUFFER_CONFIG sd;
image2yuvconfig(&frame->img, &sd); image2yuvconfig(&frame->img, &sd);
vp9_get_reference(ctx->cpi, frame->frame_type, &sd); vp9_get_reference_enc(ctx->cpi, frame->frame_type, &sd);
return VPX_CODEC_OK; return VPX_CODEC_OK;
} else } else
return VPX_CODEC_INVALID_PARAM; return VPX_CODEC_INVALID_PARAM;
@ -894,7 +897,8 @@ static vpx_codec_err_t vp8e_set_roi_map(vpx_codec_alg_priv_t *ctx,
if (data) { if (data) {
vpx_roi_map_t *roi = (vpx_roi_map_t *)data; vpx_roi_map_t *roi = (vpx_roi_map_t *)data;
if (!vp9_set_roimap(ctx->cpi, roi->roi_map, roi->rows, roi->cols, roi->delta_q, roi->delta_lf, roi->static_threshold)) if (!vp9_set_roimap(ctx->cpi, roi->roi_map, roi->rows, roi->cols,
roi->delta_q, roi->delta_lf, roi->static_threshold))
return VPX_CODEC_OK; return VPX_CODEC_OK;
else else
return VPX_CODEC_INVALID_PARAM; return VPX_CODEC_INVALID_PARAM;
@ -929,7 +933,8 @@ static vpx_codec_err_t vp8e_set_scalemode(vpx_codec_alg_priv_t *ctx,
if (data) { if (data) {
int res; int res;
vpx_scaling_mode_t scalemode = *(vpx_scaling_mode_t *)data; vpx_scaling_mode_t scalemode = *(vpx_scaling_mode_t *)data;
res = vp9_set_internal_size(ctx->cpi, scalemode.h_scaling_mode, scalemode.v_scaling_mode); res = vp9_set_internal_size(ctx->cpi, scalemode.h_scaling_mode,
scalemode.v_scaling_mode);
if (!res) { if (!res) {
/*force next frame a key frame to effect scaling mode */ /*force next frame a key frame to effect scaling mode */