This function go through each transform block in the
prediction block and call av1_write_coeffs_txb to
pack coefficients into the bitstream
Change-Id: I6dedebef6cf8957f9173241a7de60e9936bc0be8
Replaces the int64 and int32 divisions in least-squares and
gamma or delta computation with a mechanism that decomposes
the divisor D such that 1/D = y * 2^-k where y is obtained
from a lookup table indexed by 8 highest bits of the difference
D - 2^floor(log2(D)). The main complexity is now only from
computing this decomposition, which is essentially equivalent
to finding floor(log2(D)) (position of highest
bit in a 64-bit integer).
Also includes an out of memory bug fix and some cleanups.
Change-Id: I9247fdff5f6b4191175d4b4656357bfff626f02c
This is used at cmake generation time via a command line like this:
$ cmake path/to/aom -DCMAKE_TOOLCHAIN_FILE=path/to/aom/build/cmake/toolchain/armv7-ios.cmake
BUG=https://bugs.chromium.org/p/aomedia/issues/detail?id=76
Change-Id: Iadacc32c43bc23e0f670b88e3c1563c44319945c
- Stop acting as if Yasm is the only assembler.
- Kill generation and report error when yasm is not found for x86
and x86_64 (remove the generic fallback).
- Use $AOM_AS_FLAGS to pass assembler specific flags.
- Add include guard in aom_optimization.cmake.
BUG=https://bugs.chromium.org/p/aomedia/issues/detail?id=76
Change-Id: Ic68d6c81071c24a8ceb6806d04ab8959be97d876
This draft version only pass compiling check, it's not working yet.
The following goal is to use new coding system when doing bitstream
packing but keep old coding system in RD loop.
Change-Id: I224a1581d1cc5c67d73e71558fb77d9faf9c2470
This commit implements support for twopass encoding using the xiphrc
experimental rate control system. Most of the code and logic comes
from the theora project encoder.
Currently support is limited to the bitrate targeting mode of the
rate control system and while it does visibly improve quality and does
bring rate closer to the target than the one pass mode there's still
tuning and bug fixing to be done.
Change-Id: Iae0d65bbce5ddfbb95b436e2238a43d6100a23b3
Doing tokenize in the last step of RD loop and then doing packing
tokens in bitstream packing phase is hard for debugging.
Therefore, we create a frame-level buffer to store the txfm coeffs
from the reconstruction in RD loop and then in bitstream packing
phase, we can code the txfm coeffs directly.
Change-Id: I999470eef6e038317a91585df2bdfc20aca3573e
Fixes some rd-debug mismatches coding cat6 tokens with tx size < 32x32.
For these tokens the high extrabits are elided during tokenization and
detokenization, but the rd cost was computed with the old tables from
VP9 where these high extrabits are always coded.
Change-Id: I4a9a6ea822ff821e1932c351d43a57bdb4d6d466
The offset of neighbors is communicated to av1_make_inter_predictors
so as to use the correct mi in gm warping
Change-Id: I471bbdf2112ed678969492b11730f15d9527eb7e
Update the first PARTITION_PLOFFSET (4) contexts with the four classic
partitions. The extended partitions are only codable above 8x8, but
there are PARTITION_PLOFFSET (4) contexts for dropping below 8x8.
Change-Id: Ib3291dded6dc24103222e8f470504c20e29adb88
The function is_rect_tx previously was only defined when
both ext-tx and rect-tx are enabled together. This function
needs to be defined when rect-tx is enabled alone to fix
failing asserts.
Change-Id: Ic8153a55b768cb49caac07d6aeaee109d63410a9
Frame Super-Resolution is an experiment currently under development.
This commit just adds an experimental flag for it.
The goal of the experiment is to compress a downsampled version of a
frame instead of the full resolution one when bandwidth is limited. The
decoder will need to upsample and filter the frame it recieves after
decoding. It is thought that this will result in a visually superior
result in low bandwidth scenarios.
Change-Id: Ia8af8692cffd133db3838693fd85ded2442b078c
In the last position, No-EOB values and zero are all not
possible.
AWCY, objective-1-fast: -0.08% all metrics
AWCY, screen content:
PSNR YCbCr: -0.42% -0.42% -0.43%
PSNRHVS: -0.40%
SSIM: -0.41%
MSSSIM: -0.41%
CIEDE2000: -0.42%
Change-Id: Iad012abfd2a48a2c9ff27512f92b27235a5a8a4a
The initial CDF for each frame is stored in
the frame context. CDFs for actual coding are
stored in the tile structures, and these are
what get adapted. The initial CDF is replaced
by an average CDF derived from these tile CDFs.
This is carried forward to future frames when
backward adaptation is on.
CDFs are no longer set from the 8 bit probabilities
in backwards adaptation.
For now, 8 bit probabilities are maintained for
use in the encoder and for symbols which do not
have a CDF.
Change-Id: I106b30510bfad1fa57d077f7702acc1864378a09
One codepath originally skipped a function which forks between
gm prediction and regular inter prediction. This change fixes this
for both high bit depth and regular bit depth.
Change-Id: I741d67a7c89eb6eb0cd35c02219739dc3ddb3841
Generated using av1_tree_to_cdf().
Note: These are currently overwritten by CDFs generated from default
probability tables. But they will be used eventually when we remove the
default probability tables.
Change-Id: I41a6047fd13e05156a50b2d54349ffdd7e1e4c4a
Function apply_selfguided_restoration_highbd_sse4_1() is producing
mismatch to c version, it is removed for now, allowing investigation
and fix.
BUG=aomedia:392
Change-Id: Ic55e7a6958112c02930b1d5f3af2e2ea089fe500
This reverts commit 48c10c7d91.
Reason for revert: this incorrectly detects feenableexcept for
i686-w64-mingw32 (at least), causing the link to fail
BUG=aomedia:388
Change-Id: I141fec2285bd67d1312f1eb6be528cc69108cd27
avoids a floating point error being generated. this doesn't change
behavior, the -HUGE_VAL return was being ignored due to the min()
BUG=aomedia:388
Change-Id: I698aab248c777b02b60081bb7619e0aa6f3a0ba2
The addition of a 2D array to the HandleInterModeArgs struct means there
is now a non-optional member in the opt_args struct passed to
handle_inter_mode and its child functions. Since opt_args no longer
consists solely of optional members I've renamed it args.
Change-Id: I7f3b22188777d8fdac2c244746638c34b5d8636c
The bitstream has now changed as we enabled ALT_INTRA by default now, so
need to update the golden MD5.
BUG=aomedia:389
Change-Id: Ic62d1628e572e5ea252d6f6eef8d8312db62dbb8
Two 2D arrays were passed to HandleInterMode and not used elsewhere.
One has been added to the HandleInterModeArgs struct to
simplify handle_inter_mode's signature and the the calling function.
The other has been unread since commit
beacb3ff79. That patch removed the
"skip_txfm optimization" but left the single_skippable array in place,
even though it was no longer read. Since the array's only usage has been
removed, this patch removes the variable outright.
Change-Id: I6e680a9ddc6f67961153819a62009751252757a8
This keeps track of how many calls have been made
to read symbols or bits. A given syntax element
may make multiple calls to symbol decoding functions,
and these variables keep track of the entropy
decoding engine throughput.
Change-Id: Iab3a720cbfe68f8d5ca3e4c415f7baa683b24268
Adds an option controlled by a macro to replace one of
the guided filters in the self-guided tool with a simple
bandpass filtered version generated with a 3x3 kernel.
By default the macro USE_HIGHPASS_IN_SGRPROJ is 0 (turned
off), that defaults us to the dual self-guided filter.
When the macro is turned on, the larger radius guided
filter is replaced by a simpler filter that is much faster.
Results (if USE_HIGHPASS_IN_SGRPROJ is on vs. off):
lowres: performance drop by +0.14% (BDRATE)
midres: performance drop by +0.27% (BDRATE)
Further experiments on this variation of guided filters is
pending.
Change-Id: I7bbcfcad7ee266cd49a8dc6d96795a454feb1a94