}
CHECK_MEM_ERROR(cm, roi->roi_map, vpx_malloc(rows * cols));
- // Copy to ROI sturcture in the compressor.
+ // Copy to ROI structure in the compressor.
memcpy(roi->roi_map, map, rows * cols);
memcpy(&roi->delta_q, delta_q, MAX_SEGMENTS * sizeof(delta_q[0]));
memcpy(&roi->delta_lf, delta_lf, MAX_SEGMENTS * sizeof(delta_lf[0]));
}
}
-static void init_motion_estimation(VP9_COMP *cpi);
-
static void update_initial_width(VP9_COMP *cpi, int use_highbitdepth,
int subsampling_x, int subsampling_y) {
VP9_COMMON *const cm = &cpi->common;
cm->use_highbitdepth = use_highbitdepth;
#endif
alloc_util_frame_buffers(cpi);
- init_motion_estimation(cpi);
cpi->initial_width = cm->width;
cpi->initial_height = cm->height;
cpi->initial_mbs = cm->MBs;
#if CONFIG_RATE_CTRL
// This part needs to be after save_coding_context() because
- // restore_coding_context may be called in the end of this function.
+ // restore_coding_context will be called in the end of this function.
// TODO(angiebird): This is a hack for making sure the encoder use the
// external_quantize_index exactly. Avoid this kind of hack later.
if (cpi->encode_command.use_external_quantize_index) {
// Special case reset for qlow for constrained quality.
// This should only trigger where there is very substantial
// undershoot on a frame and the auto cq level is above
- // the user passsed in value.
+ // the user passed in value.
if (oxcf->rc_mode == VPX_CQ && q < q_low) {
q_low = q;
}
}
if (cpi->sf.recode_loop >= ALLOW_RECODE_KFARFGF)
- if (loop || !enable_acl) restore_coding_context(cpi);
+ if (loop) restore_coding_context(cpi);
} while (loop);
#ifdef AGGRESSIVE_VBR
// Skip recoding, if model diff is below threshold
const int thresh = compute_context_model_thresh(cpi);
const int diff = compute_context_model_diff(cm);
- if (diff < thresh) {
- vpx_clear_system_state();
- restore_coding_context(cpi);
- return;
+ if (diff >= thresh) {
+ vp9_encode_frame(cpi);
}
-
- vp9_encode_frame(cpi);
+ }
+ if (cpi->sf.recode_loop >= ALLOW_RECODE_KFARFGF) {
vpx_clear_system_state();
restore_coding_context(cpi);
}
}
#ifdef ENABLE_KF_DENOISE
-// Baseline Kernal weights for denoise
+// Baseline kernel weights for denoise
static uint8_t dn_kernal_3[9] = { 1, 2, 1, 2, 4, 2, 1, 2, 1 };
static uint8_t dn_kernal_5[25] = { 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 2, 4,
2, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1 };
tmp_ptr += stride;
}
- // Select the kernal size.
+ // Select the kernel size.
if (max_diff > (strength + (strength >> 1))) {
kernal_size = 3;
half_k_size = 1;
}
kernal_ptr = (kernal_size == 3) ? dn_kernal_3 : dn_kernal_5;
- // Apply the kernal
+ // Apply the kernel
tmp_ptr = src_ptr - (stride * half_k_size) - half_k_size;
for (i = 0; i < kernal_size; ++i) {
for (j = 0; j < kernal_size; ++j) {
tmp_ptr += stride;
}
- // Select the kernal size.
+ // Select the kernel size.
if (max_diff > (strength + (strength >> 1))) {
kernal_size = 3;
half_k_size = 1;
}
kernal_ptr = (kernal_size == 3) ? dn_kernal_3 : dn_kernal_5;
- // Apply the kernal
+ // Apply the kernel
tmp_ptr = src_ptr - (stride * half_k_size) - half_k_size;
for (i = 0; i < kernal_size; ++i) {
for (j = 0; j < kernal_size; ++j) {
}
#endif // CONFIG_VP9_HIGHBITDEPTH
-// Apply thresholded spatial noise supression to a given buffer.
+// Apply thresholded spatial noise suppression to a given buffer.
static void spatial_denoise_buffer(VP9_COMP *cpi, uint8_t *buffer,
const int stride, const int width,
const int height, const int strength) {
}
}
-// Apply thresholded spatial noise supression to source.
+// Apply thresholded spatial noise suppression to source.
static void spatial_denoise_frame(VP9_COMP *cpi) {
YV12_BUFFER_CONFIG *src = cpi->Source;
const VP9EncoderConfig *const oxcf = &cpi->oxcf;
int step_param;
uint32_t bestsme = UINT_MAX;
const MvLimits tmp_mv_limits = x->mv_limits;
- // lambda is used to adjust the importance of motion vector consitency.
+ // lambda is used to adjust the importance of motion vector consistency.
// TODO(angiebird): Figure out lambda's proper value.
const int lambda = cpi->tpl_stats[frame_idx].lambda;
int_mv nb_full_mvs[NB_MVS_NUM];
assert(kMvPreCheckSize == (kMvPreCheckLines * (kMvPreCheckLines + 1)) >> 1);
// no new mv
- // diagnal scan order
+ // diagonal scan order
tmp_idx = 0;
for (idx = 0; idx < kMvPreCheckLines; ++idx) {
int r;
}
static void init_encode_frame_result(ENCODE_FRAME_RESULT *encode_frame_result) {
- encode_frame_result->show_idx = -1; // Actual encoding deosn't happen.
+ encode_frame_result->show_idx = -1; // Actual encoding doesn't happen.
}
#if !CONFIG_REALTIME_ONLY
-static void update_encode_frame_result(ENCODE_FRAME_RESULT *encode_frame_result,
- int show_idx,
- FRAME_UPDATE_TYPE update_type,
- const YV12_BUFFER_CONFIG *source_frame,
- const YV12_BUFFER_CONFIG *coded_frame,
- int quantize_index, uint32_t bit_depth,
- uint32_t input_bit_depth) {
+static void update_encode_frame_result(
+ int show_idx, FRAME_UPDATE_TYPE update_type,
+ const YV12_BUFFER_CONFIG *source_frame,
+ const YV12_BUFFER_CONFIG *coded_frame, int quantize_index,
+ uint32_t bit_depth, uint32_t input_bit_depth,
+ ENCODE_FRAME_RESULT *encode_frame_result) {
+#if CONFIG_RATE_CTRL
PSNR_STATS psnr;
#if CONFIG_VP9_HIGHBITDEPTH
vpx_calc_highbd_psnr(source_frame, coded_frame, &psnr, bit_depth,
input_bit_depth);
-#else
+#else // CONFIG_VP9_HIGHBITDEPTH
(void)bit_depth;
(void)input_bit_depth;
vpx_calc_psnr(source_frame, coded_frame, &psnr);
-#endif
+#endif // CONFIG_VP9_HIGHBITDEPTH
encode_frame_result->psnr = psnr.psnr[0];
encode_frame_result->sse = psnr.sse[0];
+#else // CONFIG_RATE_CTRL
+ (void)bit_depth;
+ (void)input_bit_depth;
+ (void)source_frame;
+ (void)coded_frame;
+#endif // CONFIG_RATE_CTRL
encode_frame_result->show_idx = show_idx;
encode_frame_result->update_type = update_type;
encode_frame_result->quantize_index = quantize_index;
// 1) twopass.gf_group.index is initialized at define_gf_group by vp9_zero()
// for the first frame in the gf_group and is updated for the next frame at
// vp9_twopass_postencode_update().
- // 2) cpi->Source is updated at the beginging of this function, i.e.
+ // 2) cpi->Source is updated at the beginning of this function, i.e.
// vp9_get_compressed_data()
- // 3) cm->new_fb_idx is updated at the beginging of this function by
+ // 3) cm->new_fb_idx is updated at the beginning of this function by
// get_free_fb(cm)
// TODO(angiebird): Improve the codebase to make the update of frame
// dependent variables more robust.
update_encode_frame_result(
- encode_frame_result, source->show_idx,
+ source->show_idx,
cpi->twopass.gf_group.update_type[cpi->twopass.gf_group.index],
cpi->Source, get_frame_new_buffer(cm), vp9_get_quantizer(cpi),
- cpi->oxcf.input_bit_depth, cm->bit_depth);
+ cpi->oxcf.input_bit_depth, cm->bit_depth, encode_frame_result);
vp9_twopass_postencode_update(cpi);
} else if (cpi->use_svc) {
SvcEncode(cpi, size, dest, frame_flags);