ref: 53a11656cd4f38c8d005f18ff7e00ca64c4d004b
parent: d9439fdc3685bcd40b21ffe85302a06481697f43
author: Ronald S. Bultje <[email protected]>
date: Mon Jan 4 10:13:29 EST 2016
vp10: only assume ONLY_4X4 if segmentation is disabled. Otherwise, per-segment lossless might mean that some segments are not lossless and they could still want to use another mode. The per-block tx points remain uncoded on blocks where (per the segment id) the Q value implies lossless. Change-Id: If210206ab1fe3dd11976797370c77f961f13dfa0
--- a/vp10/decoder/decodeframe.c
+++ b/vp10/decoder/decodeframe.c
@@ -2109,8 +2109,8 @@
setup_segmentation_dequant(cm);
#if CONFIG_MISC_FIXES
- cm->tx_mode = (xd->lossless[0]) ? ONLY_4X4
- : read_tx_mode(rb);
+ 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
--- a/vp10/encoder/bitstream.c
+++ b/vp10/encoder/bitstream.c
@@ -1261,7 +1261,7 @@
encode_quantization(cm, wb);
encode_segmentation(cm, xd, wb);
#if CONFIG_MISC_FIXES
- if (xd->lossless[0])
+ if (!cm->seg.enabled && xd->lossless[0])
cm->tx_mode = TX_4X4;
else
write_txfm_mode(cm->tx_mode, wb);