Fixed bug to use mode_info_stride rather than mb_cols
Both encoder & decoder were using mb_cols to offset from one row of MODE_INFO structures to the next when they should have been using mode_info_stride. Fixing this in both encoder and decoder gives around a 3KB size saving and 0.025dB PSNR improvement on the one 720P clip I tried. (Also removed "index" which was being updated but not used) Change-Id: I413bea802b142886bfcf8d8aa7f5a2f0c524fd4b
This commit is contained in:
Родитель
ae9023a3c9
Коммит
ae63ce248a
|
@ -479,7 +479,7 @@ static void read_mb_modes_mv(VP8D_COMP *pbi, MODE_INFO *mi, MB_MODE_INFO *mbmi,
|
||||||
pred_context += (mi-1)->mbmi.seg_id_predicted;
|
pred_context += (mi-1)->mbmi.seg_id_predicted;
|
||||||
if (mb_row != 0)
|
if (mb_row != 0)
|
||||||
pred_context +=
|
pred_context +=
|
||||||
(mi-pbi->common.mb_cols)->mbmi.seg_id_predicted;
|
(mi-pbi->common.mode_info_stride)->mbmi.seg_id_predicted;
|
||||||
|
|
||||||
mbmi->seg_id_predicted =
|
mbmi->seg_id_predicted =
|
||||||
vp8_read(bc,
|
vp8_read(bc,
|
||||||
|
|
|
@ -944,7 +944,6 @@ static void pack_inter_mode_mvs(VP8_COMP *const cpi)
|
||||||
|
|
||||||
int i;
|
int i;
|
||||||
int pred_context;
|
int pred_context;
|
||||||
int index = 0;
|
|
||||||
|
|
||||||
const int *const rfct = cpi->count_mb_ref_frame_usage;
|
const int *const rfct = cpi->count_mb_ref_frame_usage;
|
||||||
const int rf_intra = rfct[INTRA_FRAME];
|
const int rf_intra = rfct[INTRA_FRAME];
|
||||||
|
@ -1093,7 +1092,7 @@ static void pack_inter_mode_mvs(VP8_COMP *const cpi)
|
||||||
if (mb_col != 0)
|
if (mb_col != 0)
|
||||||
pred_context += (m-1)->mbmi.seg_id_predicted;
|
pred_context += (m-1)->mbmi.seg_id_predicted;
|
||||||
if (mb_row != 0)
|
if (mb_row != 0)
|
||||||
pred_context += (m-pc->mb_cols)->mbmi.seg_id_predicted;
|
pred_context += (m-pc->mode_info_stride)->mbmi.seg_id_predicted;
|
||||||
|
|
||||||
// Code the prediction flag for this mb
|
// Code the prediction flag for this mb
|
||||||
vp8_write( w, m->mbmi.seg_id_predicted,
|
vp8_write( w, m->mbmi.seg_id_predicted,
|
||||||
|
@ -1108,7 +1107,6 @@ static void pack_inter_mode_mvs(VP8_COMP *const cpi)
|
||||||
// Normal undpredicted coding
|
// Normal undpredicted coding
|
||||||
write_mb_segid(w, mi, &cpi->mb.e_mbd);
|
write_mb_segid(w, mi, &cpi->mb.e_mbd);
|
||||||
}
|
}
|
||||||
index++;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//#if CONFIG_SEGFEATURES
|
//#if CONFIG_SEGFEATURES
|
||||||
|
@ -1329,7 +1327,6 @@ static void write_kfmodes(VP8_COMP *cpi)
|
||||||
/* const */
|
/* const */
|
||||||
MODE_INFO *m = c->mi;
|
MODE_INFO *m = c->mi;
|
||||||
int i;
|
int i;
|
||||||
int index = 0;
|
|
||||||
int mb_row = -1;
|
int mb_row = -1;
|
||||||
int prob_skip_false = 0;
|
int prob_skip_false = 0;
|
||||||
|
|
||||||
|
@ -1375,7 +1372,6 @@ static void write_kfmodes(VP8_COMP *cpi)
|
||||||
|
|
||||||
if (cpi->mb.e_mbd.update_mb_segmentation_map)
|
if (cpi->mb.e_mbd.update_mb_segmentation_map)
|
||||||
{
|
{
|
||||||
index++;
|
|
||||||
write_mb_segid(bc, &m->mbmi, &cpi->mb.e_mbd);
|
write_mb_segid(bc, &m->mbmi, &cpi->mb.e_mbd);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Загрузка…
Ссылка в новой задаче