@@ -1541,6 +1541,16 @@ static int vp9_export_enc_params(VP9Context *s, VP9Frame *frame)
if (s->s.h.segmentation.absolute_vals)
b->delta_qp -= par->qp;
}
+
+ if (td->block_structure[block_tile].skip)
+ b->flags |= AV_VIDEO_ENC_BLOCK_SKIP;
+ if (td->block_structure[block_tile].intra) {
+ b->flags |= AV_VIDEO_ENC_BLOCK_INTRA;
+ } else {
+ b->ref[0] = td->block_structure[block_tile].ref[0];
+ if (td->block_structure[block_tile].comp)
+ b->ref[1] = td->block_structure[block_tile].ref[1];
+ }
}
}
}
@@ -1295,6 +1295,12 @@ void ff_vp9_decode_block(VP9TileData *td, int row, int col,
td->block_structure[td->nb_block_structure].col = col;
td->block_structure[td->nb_block_structure].block_size_idx_x = av_log2(w4);
td->block_structure[td->nb_block_structure].block_size_idx_y = av_log2(h4);
+
+ td->block_structure[td->nb_block_structure].intra = b->intra;
+ td->block_structure[td->nb_block_structure].skip = b->skip;
+ td->block_structure[td->nb_block_structure].comp = b->comp;
+ td->block_structure[td->nb_block_structure].ref[0] = b->ref[0];
+ td->block_structure[td->nb_block_structure].ref[1] = b->ref[1];
td->nb_block_structure++;
}
@@ -231,6 +231,10 @@ struct VP9TileData {
unsigned int col:13;
unsigned int block_size_idx_x:2;
unsigned int block_size_idx_y:2;
+ unsigned int intra:1;
+ unsigned int skip:1;
+ unsigned int comp:1;
+ uint8_t ref[2];
} *block_structure;
unsigned int nb_block_structure;
};