diff --git a/vp9/decoder/vp9_decodframe.c b/vp9/decoder/vp9_decodframe.c index fefa2af556de3ece9f0b4f752ef6f36d5ea067ee..a16b6108aaaa382669dfb3cfb1438755baede934 100644 --- a/vp9/decoder/vp9_decodframe.c +++ b/vp9/decoder/vp9_decodframe.c @@ -1481,6 +1481,8 @@ int vp9_decode_frame(VP9D_COMP *pbi, const uint8_t **p_data_end) { pc->clamp_type = (CLAMP_TYPE)vp9_read_bit(&header_bc); pc->error_resilient_mode = vp9_read_bit(&header_bc); + xd->lossless = vp9_read_bit(&header_bc); + setup_loopfilter(pc, xd, &header_bc); // Dummy read for now @@ -1549,7 +1551,6 @@ int vp9_decode_frame(VP9D_COMP *pbi, const uint8_t **p_data_end) { setup_pred_probs(pc, &header_bc); - xd->lossless = vp9_read_bit(&header_bc); pc->txfm_mode = xd->lossless ? ONLY_4X4 : read_txfm_mode(&header_bc); if (pc->txfm_mode == TX_MODE_SELECT) { pc->prob_tx[0] = vp9_read_prob(&header_bc); diff --git a/vp9/encoder/vp9_bitstream.c b/vp9/encoder/vp9_bitstream.c index 952a99f640d1ba7f4c25f4e29d9d1271316296de..e94f616c34092f0c8223532e60ea7be44bd9df34 100644 --- a/vp9/encoder/vp9_bitstream.c +++ b/vp9/encoder/vp9_bitstream.c @@ -1803,6 +1803,9 @@ void vp9_pack_bitstream(VP9_COMP *cpi, unsigned char *dest, // error resilient mode vp9_write_bit(&header_bc, pc->error_resilient_mode); + // lossless mode: note this needs to be before loopfilter + vp9_write_bit(&header_bc, cpi->mb.e_mbd.lossless); + // Encode the loop filter level and type vp9_write_bit(&header_bc, pc->filter_type); vp9_write_literal(&header_bc, pc->filter_level, 6); @@ -2072,7 +2075,6 @@ void vp9_pack_bitstream(VP9_COMP *cpi, unsigned char *dest, } } - vp9_write_bit(&header_bc, cpi->mb.e_mbd.lossless); if (cpi->mb.e_mbd.lossless) { pc->txfm_mode = ONLY_4X4; } else {