summaryrefslogtreecommitdiff
path: root/vp9/decoder
diff options
context:
space:
mode:
authorDmitry Kovalev <dkovalev@google.com>2013-11-12 16:54:30 -0800
committerGerrit Code Review <gerrit@gerrit.golo.chromium.org>2013-11-12 16:54:30 -0800
commit73a5cbeba4d698a564ffe2cea12cbb1b596f5424 (patch)
treed9c30ef500da4679045f000e49471a6b5f0097ac /vp9/decoder
parent3a2ea76469c30968c35d305c66482e690659f942 (diff)
parent4a96e64dc2f9d765c5b10179a2381b4f73f64bc7 (diff)
downloadlibvpx-73a5cbeba4d698a564ffe2cea12cbb1b596f5424.tar
libvpx-73a5cbeba4d698a564ffe2cea12cbb1b596f5424.tar.gz
libvpx-73a5cbeba4d698a564ffe2cea12cbb1b596f5424.tar.bz2
libvpx-73a5cbeba4d698a564ffe2cea12cbb1b596f5424.zip
Merge "Using max_tx_size instead of bsize when possible."
Diffstat (limited to 'vp9/decoder')
-rw-r--r--vp9/decoder/vp9_decodemv.c29
1 files changed, 13 insertions, 16 deletions
diff --git a/vp9/decoder/vp9_decodemv.c b/vp9/decoder/vp9_decodemv.c
index 14f2ce57a..b948429b3 100644
--- a/vp9/decoder/vp9_decodemv.c
+++ b/vp9/decoder/vp9_decodemv.c
@@ -62,31 +62,28 @@ static int read_segment_id(vp9_reader *r, const struct segmentation *seg) {
}
static TX_SIZE read_selected_tx_size(VP9_COMMON *cm, MACROBLOCKD *xd,
- BLOCK_SIZE bsize, vp9_reader *r) {
- const uint8_t context = vp9_get_pred_context_tx_size(xd);
- const vp9_prob *tx_probs = get_tx_probs(bsize, context, &cm->fc.tx_probs);
+ TX_SIZE max_tx_size, vp9_reader *r) {
+ const int ctx = vp9_get_pred_context_tx_size(xd);
+ const vp9_prob *tx_probs = get_tx_probs(max_tx_size, ctx, &cm->fc.tx_probs);
TX_SIZE tx_size = vp9_read(r, tx_probs[0]);
- if (tx_size != TX_4X4 && bsize >= BLOCK_16X16) {
+ if (tx_size != TX_4X4 && max_tx_size >= TX_16X16) {
tx_size += vp9_read(r, tx_probs[1]);
- if (tx_size != TX_8X8 && bsize >= BLOCK_32X32)
+ if (tx_size != TX_8X8 && max_tx_size >= TX_32X32)
tx_size += vp9_read(r, tx_probs[2]);
}
if (!cm->frame_parallel_decoding_mode)
- ++get_tx_counts(bsize, context, &cm->counts.tx)[tx_size];
+ ++get_tx_counts(max_tx_size, ctx, &cm->counts.tx)[tx_size];
return tx_size;
}
-static TX_SIZE read_tx_size(VP9_COMMON *const cm, MACROBLOCKD *const xd,
- TX_MODE tx_mode, BLOCK_SIZE bsize, int allow_select,
- vp9_reader *r) {
- if (allow_select && tx_mode == TX_MODE_SELECT && bsize >= BLOCK_8X8) {
- return read_selected_tx_size(cm, xd, bsize, r);
- } else {
- const TX_SIZE max_tx_size_block = max_txsize_lookup[bsize];
- const TX_SIZE max_tx_size_txmode = tx_mode_to_biggest_tx_size[tx_mode];
- return MIN(max_tx_size_block, max_tx_size_txmode);
- }
+static TX_SIZE read_tx_size(VP9_COMMON *cm, MACROBLOCKD *xd, TX_MODE tx_mode,
+ BLOCK_SIZE bsize, int allow_select, vp9_reader *r) {
+ const TX_SIZE max_tx_size = max_txsize_lookup[bsize];
+ if (allow_select && tx_mode == TX_MODE_SELECT && bsize >= BLOCK_8X8)
+ return read_selected_tx_size(cm, xd, max_tx_size, r);
+ else
+ return MIN(max_tx_size, tx_mode_to_biggest_tx_size[tx_mode]);
}
static void set_segment_id(VP9_COMMON *cm, BLOCK_SIZE bsize,