Merge "Modify vp9_setup_interp_filters function" into experimental

This commit is contained in:
Yunqing Wang 2013-04-03 14:09:01 -07:00 коммит произвёл Gerrit Code Review
Родитель 30d83c4159 4ca882f32f
Коммит dcd3a5c055
3 изменённых файлов: 27 добавлений и 22 удалений

Просмотреть файл

@ -206,20 +206,6 @@ void vp9_setup_scale_factors_for_frame(struct scale_factors *scale,
void vp9_setup_interp_filters(MACROBLOCKD *xd,
INTERPOLATIONFILTERTYPE mcomp_filter_type,
VP9_COMMON *cm) {
int i;
/* Calculate scaling factors for each of the 3 available references */
for (i = 0; i < 3; ++i) {
if (cm->active_ref_idx[i] >= NUM_YV12_BUFFERS) {
memset(&cm->active_ref_scale[i], 0, sizeof(cm->active_ref_scale[i]));
continue;
}
vp9_setup_scale_factors_for_frame(&cm->active_ref_scale[i],
&cm->yv12_fb[cm->active_ref_idx[i]],
cm->width, cm->height);
}
if (xd->mode_info_context) {
MB_MODE_INFO *mbmi = &xd->mode_info_context->mbmi;
@ -229,7 +215,6 @@ void vp9_setup_interp_filters(MACROBLOCKD *xd,
cm->active_ref_scale);
}
switch (mcomp_filter_type) {
case EIGHTTAP:
case SWITCHABLE:

Просмотреть файл

@ -1103,13 +1103,6 @@ static void init_frame(VP9D_COMP *pbi) {
vp9_setup_past_independence(pc, xd);
}
if (pc->frame_type != KEY_FRAME) {
pc->mcomp_filter_type = pc->use_bilinear_mc_filter ? BILINEAR : EIGHTTAP;
// To enable choice of different interpolation filters
vp9_setup_interp_filters(xd, pc->mcomp_filter_type, pc);
}
xd->mode_info_context = pc->mi;
xd->prev_mode_info_context = pc->prev_mi;
xd->frame_type = pc->frame_type;
@ -1767,6 +1760,19 @@ int vp9_decode_frame(VP9D_COMP *pbi, const uint8_t **p_data_end) {
#if CONFIG_COMP_INTERINTRA_PRED
pc->use_interintra = vp9_read_bit(&header_bc);
#endif
/* Calculate scaling factors for each of the 3 available references */
for (i = 0; i < 3; ++i) {
if (pc->active_ref_idx[i] >= NUM_YV12_BUFFERS) {
memset(&pc->active_ref_scale[i], 0, sizeof(pc->active_ref_scale[i]));
continue;
}
vp9_setup_scale_factors_for_frame(&pc->active_ref_scale[i],
&pc->yv12_fb[pc->active_ref_idx[i]],
pc->width, pc->height);
}
// To enable choice of different interploation filters
vp9_setup_interp_filters(xd, pc->mcomp_filter_type, pc);
}

Просмотреть файл

@ -3640,6 +3640,7 @@ int vp9_get_compressed_data(VP9_PTR ptr, unsigned int *frame_flags,
VP9_COMMON *cm = &cpi->common;
struct vpx_usec_timer cmptimer;
YV12_BUFFER_CONFIG *force_src_buffer = NULL;
int i;
if (!cpi)
return -1;
@ -3784,7 +3785,20 @@ int vp9_get_compressed_data(VP9_PTR ptr, unsigned int *frame_flags,
cm->width, cm->height,
VP9BORDERINPIXELS);
/* Calculate scaling factors for each of the 3 available references */
for (i = 0; i < 3; ++i) {
if (cm->active_ref_idx[i] >= NUM_YV12_BUFFERS) {
memset(&cm->active_ref_scale[i], 0, sizeof(cm->active_ref_scale[i]));
continue;
}
vp9_setup_scale_factors_for_frame(&cm->active_ref_scale[i],
&cm->yv12_fb[cm->active_ref_idx[i]],
cm->width, cm->height);
}
vp9_setup_interp_filters(&cpi->mb.e_mbd, DEFAULT_INTERP_FILTER, cm);
if (cpi->pass == 1) {
Pass1Encode(cpi, size, dest, frame_flags);
} else if (cpi->pass == 2) {