* changes:
Merge rd_stats only when it is valid
Let parentheses in handle_inter_mode be symmetric
Add RD_STATS into MB_MODE_INFO
Add txb_coeff_cost_map
Since PVQ's max block size equals to the max transform size,
daala's definition of OD_BSIZE_MAX was changed from 5 down to 4 to
use AV1's max trasform size 32x32. However, dering also uses
OD_BSIZE_MAX and assumes its value is 5, which caused dering
not working.
Change-Id: I9d82bb24adc7d57552a8e0a8a7e798e77d96fd4b
Previously, do_cubic_filter would return results with the
wrong precision if the sample point was exactly aligned to
a pixel.
Change-Id: I40139f9a6701a8e72e691f37bb352f7814a7f306
PVQ replaces the scalar quantizer and coefficient coding with a new
design originally developed in Daala. It currently depends on the
Daala entropy coder although it could be adapted to work with another
entropy coder if needed:
./configure --enable-experimental --enable-daala_ec --enable-pvq
The version of PVQ in this commit is adapted from the following
revision of Daala:
fb51c1ade6
More information about PVQ:
- https://people.xiph.org/~jm/daala/pvq_demo/
- https://jmvalin.ca/papers/spie_pvq.pdf
The following files are copied as-is from Daala with minimal
adaptations, therefore we disable clang-format on those files
to make it easier to synchronize the AV1 and Daala codebases in the future:
av1/common/generic_code.c
av1/common/generic_code.h
av1/common/laplace_tables.c
av1/common/partition.c
av1/common/partition.h
av1/common/pvq.c
av1/common/pvq.h
av1/common/state.c
av1/common/state.h
av1/common/zigzag.h
av1/common/zigzag16.c
av1/common/zigzag32.c
av1/common/zigzag4.c
av1/common/zigzag64.c
av1/common/zigzag8.c
av1/decoder/decint.h
av1/decoder/generic_decoder.c
av1/decoder/laplace_decoder.c
av1/decoder/pvq_decoder.c
av1/decoder/pvq_decoder.h
av1/encoder/daala_compat_enc.c
av1/encoder/encint.h
av1/encoder/generic_encoder.c
av1/encoder/laplace_encoder.c
av1/encoder/pvq_encoder.c
av1/encoder/pvq_encoder.h
Known issues:
- Lossless mode is not supported, '--lossless=1' will give the same result as
'--end-usage=q --cq-level=1'.
- High bit depth is not supported by PVQ.
Change-Id: I1ae0d6517b87f4c1ccea944b2e12dc906979f25e
With RD_STATS in MB_MODE_INFO, we will be able to compare the results
from rate-distortion loop and the results from bitstream packing.
Change-Id: If1dba7d87126577a6f369ac087d4517f7cebb0c5
* changes:
Add av1_ prefix on ###_rd_stats functions
Use init_rd_stats() in encodeframe.c
Add transform block coefficient cost in RD_STATS for debugging
Add helper functions to modify RD_STATS
Add mi_row and mi_col into mbmi to facilitate rd_debug process
Add token cost comparison in write_modes_b()
This is just partial implementation
Compare token cost of pack_mb_tokens/pack_txb_tokens with token cost
from rate-distortion loop. If there is any difference, dump out mode
info.
Change-Id: I46b373ee2522c5047f799f36baf7cec5fbc06f06
* changes:
Reformatting the deringing code
Introducing OD_DERING_SIZE_LOG2 constant (3)
Renaming deringing blockwise write-back functions to make code clearer
Deringing refactoring: replace last_sbc with simpler dering_left flag
Getting rid of the od_dering_in type
Using a struct named dlist rather than an array named bskip. Simplified some
code.
No change in output
Change-Id: Id40d40b19b5d8f2ebafe347590fa1bb8cb80e6e1
The OD_DERING_VERY_LARGE values are now explicitly copied to the buffer instead
of being read from the line buffer when we're on the edge of the frame. This
will make it possible to make the line buffer 8-bit for non-high-bitdepth.
No change in output
Change-Id: I1a4134d67ac7f8c239f08d73941405c56f01050b
Now only buffering three lines across the entire frame and four lines
over the height of one superblock.
No change in output.
Change-Id: I6b99399974e197dc02f2e4ff2e60cdd7fdaa2e43
This introduces a line buffer that hold the last three lines of each original
row so that the next row can be deringed with the original input of the upper
row.
No change in output
Change-Id: I8fad3bc48745e9ce3e440289f453477a0c5442c0