Merge "Reusing FRAME_CONTEXT struct to simplify the code."

This commit is contained in:
Dmitry Kovalev
2013-09-29 12:02:26 -07:00
committed by Gerrit Code Review
2 changed files with 3 additions and 52 deletions

View File

@@ -61,16 +61,11 @@
#define INTRA_ZBIN_BOOST 0 #define INTRA_ZBIN_BOOST 0
typedef struct { typedef struct {
nmv_context nmvc;
int nmvjointcost[MV_JOINTS]; int nmvjointcost[MV_JOINTS];
int nmvcosts[2][MV_VALS]; int nmvcosts[2][MV_VALS];
int nmvcosts_hp[2][MV_VALS]; int nmvcosts_hp[2][MV_VALS];
vp9_prob segment_pred_probs[PREDICTION_PROBS]; vp9_prob segment_pred_probs[PREDICTION_PROBS];
vp9_prob intra_inter_prob[INTRA_INTER_CONTEXTS];
vp9_prob comp_inter_prob[COMP_INTER_CONTEXTS];
vp9_prob single_ref_prob[REF_CONTEXTS][2];
vp9_prob comp_ref_prob[REF_CONTEXTS];
unsigned char *last_frame_seg_map_copy; unsigned char *last_frame_seg_map_copy;
@@ -79,20 +74,8 @@ typedef struct {
// 0 = ZERO_MV, MV // 0 = ZERO_MV, MV
signed char last_mode_lf_deltas[MAX_MODE_LF_DELTAS]; signed char last_mode_lf_deltas[MAX_MODE_LF_DELTAS];
vp9_coeff_probs_model coef_probs[TX_SIZES][BLOCK_TYPES];
vp9_prob y_mode_prob[4][INTRA_MODES - 1];
vp9_prob uv_mode_prob[INTRA_MODES][INTRA_MODES - 1];
vp9_prob partition_prob[2][NUM_PARTITION_CONTEXTS][PARTITION_TYPES - 1];
vp9_prob switchable_interp_prob[SWITCHABLE_FILTERS + 1]
[SWITCHABLE_FILTERS - 1];
int inter_mode_counts[INTER_MODE_CONTEXTS][INTER_MODES - 1][2]; int inter_mode_counts[INTER_MODE_CONTEXTS][INTER_MODES - 1][2];
vp9_prob inter_mode_probs[INTER_MODE_CONTEXTS][INTER_MODES - 1]; FRAME_CONTEXT fc;
struct tx_probs tx_probs;
vp9_prob mbskip_probs[MBSKIP_CONTEXTS];
} CODING_CONTEXT; } CODING_CONTEXT;
typedef struct { typedef struct {

View File

@@ -76,35 +76,19 @@ void vp9_save_coding_context(VP9_COMP *cpi) {
// restored with a call to vp9_restore_coding_context. These functions are // restored with a call to vp9_restore_coding_context. These functions are
// intended for use in a re-code loop in vp9_compress_frame where the // intended for use in a re-code loop in vp9_compress_frame where the
// quantizer value is adjusted between loop iterations. // quantizer value is adjusted between loop iterations.
cc->nmvc = cm->fc.nmvc;
vp9_copy(cc->nmvjointcost, cpi->mb.nmvjointcost); vp9_copy(cc->nmvjointcost, cpi->mb.nmvjointcost);
vp9_copy(cc->nmvcosts, cpi->mb.nmvcosts); vp9_copy(cc->nmvcosts, cpi->mb.nmvcosts);
vp9_copy(cc->nmvcosts_hp, cpi->mb.nmvcosts_hp); vp9_copy(cc->nmvcosts_hp, cpi->mb.nmvcosts_hp);
vp9_copy(cc->inter_mode_probs, cm->fc.inter_mode_probs);
vp9_copy(cc->y_mode_prob, cm->fc.y_mode_prob);
vp9_copy(cc->uv_mode_prob, cm->fc.uv_mode_prob);
vp9_copy(cc->partition_prob, cm->fc.partition_prob);
vp9_copy(cc->segment_pred_probs, cm->seg.pred_probs); vp9_copy(cc->segment_pred_probs, cm->seg.pred_probs);
vp9_copy(cc->intra_inter_prob, cm->fc.intra_inter_prob);
vp9_copy(cc->comp_inter_prob, cm->fc.comp_inter_prob);
vp9_copy(cc->single_ref_prob, cm->fc.single_ref_prob);
vp9_copy(cc->comp_ref_prob, cm->fc.comp_ref_prob);
vpx_memcpy(cpi->coding_context.last_frame_seg_map_copy, vpx_memcpy(cpi->coding_context.last_frame_seg_map_copy,
cm->last_frame_seg_map, (cm->mi_rows * cm->mi_cols)); cm->last_frame_seg_map, (cm->mi_rows * cm->mi_cols));
vp9_copy(cc->last_ref_lf_deltas, cm->lf.last_ref_deltas); vp9_copy(cc->last_ref_lf_deltas, cm->lf.last_ref_deltas);
vp9_copy(cc->last_mode_lf_deltas, cm->lf.last_mode_deltas); vp9_copy(cc->last_mode_lf_deltas, cm->lf.last_mode_deltas);
vp9_copy(cc->coef_probs, cm->fc.coef_probs); cc->fc = cm->fc;
vp9_copy(cc->switchable_interp_prob, cm->fc.switchable_interp_prob);
cc->tx_probs = cm->fc.tx_probs;
vp9_copy(cc->mbskip_probs, cm->fc.mbskip_probs);
} }
void vp9_restore_coding_context(VP9_COMP *cpi) { void vp9_restore_coding_context(VP9_COMP *cpi) {
@@ -113,25 +97,12 @@ void vp9_restore_coding_context(VP9_COMP *cpi) {
// Restore key state variables to the snapshot state stored in the // Restore key state variables to the snapshot state stored in the
// previous call to vp9_save_coding_context. // previous call to vp9_save_coding_context.
cm->fc.nmvc = cc->nmvc;
vp9_copy(cpi->mb.nmvjointcost, cc->nmvjointcost); vp9_copy(cpi->mb.nmvjointcost, cc->nmvjointcost);
vp9_copy(cpi->mb.nmvcosts, cc->nmvcosts); vp9_copy(cpi->mb.nmvcosts, cc->nmvcosts);
vp9_copy(cpi->mb.nmvcosts_hp, cc->nmvcosts_hp); vp9_copy(cpi->mb.nmvcosts_hp, cc->nmvcosts_hp);
vp9_copy(cm->fc.inter_mode_probs, cc->inter_mode_probs);
vp9_copy(cm->fc.y_mode_prob, cc->y_mode_prob);
vp9_copy(cm->fc.uv_mode_prob, cc->uv_mode_prob);
vp9_copy(cm->fc.partition_prob, cc->partition_prob);
vp9_copy(cm->seg.pred_probs, cc->segment_pred_probs); vp9_copy(cm->seg.pred_probs, cc->segment_pred_probs);
vp9_copy(cm->fc.intra_inter_prob, cc->intra_inter_prob);
vp9_copy(cm->fc.comp_inter_prob, cc->comp_inter_prob);
vp9_copy(cm->fc.single_ref_prob, cc->single_ref_prob);
vp9_copy(cm->fc.comp_ref_prob, cc->comp_ref_prob);
vpx_memcpy(cm->last_frame_seg_map, vpx_memcpy(cm->last_frame_seg_map,
cpi->coding_context.last_frame_seg_map_copy, cpi->coding_context.last_frame_seg_map_copy,
(cm->mi_rows * cm->mi_cols)); (cm->mi_rows * cm->mi_cols));
@@ -139,10 +110,7 @@ void vp9_restore_coding_context(VP9_COMP *cpi) {
vp9_copy(cm->lf.last_ref_deltas, cc->last_ref_lf_deltas); vp9_copy(cm->lf.last_ref_deltas, cc->last_ref_lf_deltas);
vp9_copy(cm->lf.last_mode_deltas, cc->last_mode_lf_deltas); vp9_copy(cm->lf.last_mode_deltas, cc->last_mode_lf_deltas);
vp9_copy(cm->fc.coef_probs, cc->coef_probs); cm->fc = cc->fc;
vp9_copy(cm->fc.switchable_interp_prob, cc->switchable_interp_prob);
cm->fc.tx_probs = cc->tx_probs;
vp9_copy(cm->fc.mbskip_probs, cc->mbskip_probs);
} }
void vp9_setup_key_frame(VP9_COMP *cpi) { void vp9_setup_key_frame(VP9_COMP *cpi) {