From: Yaowu Xu Date: Wed, 6 Jan 2016 16:36:18 +0000 (-0800) Subject: Merge branch 'master' into nextgenv2 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=55118ad0611683da48619065ebac4716438381b2;p=libvpx Merge branch 'master' into nextgenv2 Conflicts: vp10/decoder/decodeframe.c vp10/encoder/bitstream.c Change-Id: I743449f49b723d2ce357832619a28b53369d0547 --- 55118ad0611683da48619065ebac4716438381b2 diff --cc vp10/decoder/decodeframe.c index 207ceda26,2bfedf638..bc8608834 --- a/vp10/decoder/decodeframe.c +++ b/vp10/decoder/decodeframe.c @@@ -2977,9 -2108,11 +2977,9 @@@ static size_t read_uncompressed_header( } setup_segmentation_dequant(cm); - cm->tx_mode = (xd->lossless[0]) ? ONLY_4X4 - : read_tx_mode(rb); -#if CONFIG_MISC_FIXES + cm->tx_mode = (!cm->seg.enabled && xd->lossless[0]) ? ONLY_4X4 + : read_tx_mode(rb); cm->reference_mode = read_frame_reference_mode(cm, rb); -#endif setup_tile_info(cm, rb); sz = vpx_rb_read_literal(rb, 16); diff --cc vp10/encoder/bitstream.c index 31f636ade,d4b8c36db..5ddc7bba5 --- a/vp10/encoder/bitstream.c +++ b/vp10/encoder/bitstream.c @@@ -696,49 -297,14 +696,49 @@@ static void pack_inter_mode_mvs(VP10_CO } } +#if CONFIG_SUPERTX + if (supertx_enabled) + skip = mbmi->skip; + else + skip = write_skip(cm, xd, segment_id, mi, w); +#else skip = write_skip(cm, xd, segment_id, mi, w); +#endif // CONFIG_SUPERTX - if (!segfeature_active(seg, segment_id, SEG_LVL_REF_FRAME)) - vpx_write(w, is_inter, vp10_get_intra_inter_prob(cm, xd)); +#if CONFIG_SUPERTX + if (!supertx_enabled) +#endif // CONFIG_SUPERTX + if (!segfeature_active(seg, segment_id, SEG_LVL_REF_FRAME)) + vpx_write(w, is_inter, vp10_get_intra_inter_prob(cm, xd)); if (bsize >= BLOCK_8X8 && cm->tx_mode == TX_MODE_SELECT && +#if CONFIG_SUPERTX + !supertx_enabled && +#endif // CONFIG_SUPERTX - !(is_inter && skip)) { + !(is_inter && skip) && !xd->lossless[segment_id]) { - write_selected_tx_size(cm, xd, w); +#if CONFIG_VAR_TX + if (is_inter) { // This implies skip flag is 0. + const TX_SIZE max_tx_size = max_txsize_lookup[bsize]; + const int txb_size = txsize_to_bsize[max_tx_size]; + const int bs = num_4x4_blocks_wide_lookup[txb_size]; + const int width = num_4x4_blocks_wide_lookup[bsize]; + const int height = num_4x4_blocks_high_lookup[bsize]; + int idx, idy; + for (idy = 0; idy < height; idy += bs) + for (idx = 0; idx < width; idx += bs) + write_tx_size_inter(cm, xd, mbmi, max_tx_size, idy, idx, w); + } else { + set_txfm_ctx(xd->left_txfm_context, mbmi->tx_size, xd->n8_h); + set_txfm_ctx(xd->above_txfm_context, mbmi->tx_size, xd->n8_w); + + write_selected_tx_size(cm, xd, w); + } + } else { + set_txfm_ctx(xd->left_txfm_context, mbmi->tx_size, xd->n8_h); + set_txfm_ctx(xd->above_txfm_context, mbmi->tx_size, xd->n8_w); +#else + write_selected_tx_size(cm, xd, w); +#endif } if (!is_inter) { @@@ -1900,7 -1260,8 +1901,7 @@@ static void write_uncompressed_header(V encode_loopfilter(&cm->lf, wb); encode_quantization(cm, wb); encode_segmentation(cm, xd, wb); - if (xd->lossless[0]) -#if CONFIG_MISC_FIXES + if (!cm->seg.enabled && xd->lossless[0]) cm->tx_mode = TX_4X4; else write_txfm_mode(cm->tx_mode, wb);