Adds a separate scale numerator for resize and superres scaling on
keyframes. They will only use this factor in their respective FIXED
modes.
Change-Id: I4ef9a5760a5423ec632d644e6c7fec674bbb46f4
RESIZE_SCALE_DENOMINATOR and SUPERRES_SCALE_DENOMINATOR were two
constants with the same value that did essentially the same thing.
This patch merges the two into SCALE_DENOMINATOR for simplicity's sake.
Change-Id: I252a9b7f89f10d77bdb0c3cf2d67d31d337afa4b
Unifies the command line arguments for resize and superes.
Removes resize arguments that are currently unused.
Change-Id: I1362dffceb8257cee539f92679d1e8d79df08e66
Adds "superres-mode" and "superres-numerator" arguments to configure
superres scaling.
There are only two modes right now: SUPERRES_FIXED and SUPERRES_DYNAMIC.
0 sets the fixed mode and 1 sets the dynamic mode.
For the fixed mode superres will scale to the provided numerator where
possible. The cumulative scale change over resizing and superres is
limited to 1/2, so it may have to back off.
For the dynamic mode, the provided numerator will be used as the initial
numerator. Asides from that it's just random for now.
Change-Id: Ibae01c77abba2599fbf51096459d09ddca458d4f
Adds handling needed for the pre-encode downscaling for superres
encoding. Makes use of the existing resizing functionality, just
adjusting the target resolution after the resize logic and before the
resize has actually occurred.
Since the upscaling portion of superres is not yet implemented, superres
scaling is not yet allowed to trigger. The numerator is set to be equal
to the denominator and the superres_pending flag is not set.
Change-Id: Ia5dac752d653c3bda319f0c8196e95bac2c8c554
This unit test was ported from VP9. To prevent the motion vector out of
range bug, added a motion vector unit test. In the 4k video encoding,
always forced to use extreme motion vectors and also encouraged to use
INTER modes. In the decoding, checked if the motion vector was valid,
and also checked the encoder/decoder mismatch.
Change-Id: I1c72ea7c32a3cec9c67f1bbdc168e60507e57516
Added 2 tile encoding modes:
TILE_NORMAL mode supports the large-scale tile coding up to 1024 x 1024
tiles;
TILE_VR mode supports the large-scale tile coding and also the decoding
of a single tile.
TILE_NORMAL mode allows the non-vr content to be encoded in multiple tiles
without using the coding tool that are designed for vr applications.
Change-Id: Id804806a1bbcb916b7f5dc7e2c5509d88f3defcb
kMinCompressedSize was defined as a global constant, so it
was exported by default and possibly causing duplicate
symbol issues for applications. In particular, libvpx also
exports this symbol.
Instead, move the definition into the only function which
references is. As a local variable it is hidden from the
linker and not part of the global symbol table.
Change-Id: If8b3bc4c487197237adb04749cd3dd4792e39893
The "good" speed levels are universally better than the "rt" ones,
running faster to achieve the same quality.
rt mode also turned off alt refs and lag-in-frames, but these
are still accessible separately (and the low latency test case
explicitly sets them).
Some features were used by the rt scale and not the good scale.
Two additional "good" levels, 7 and 8, were added to accomidate
these features and not reduce test coverage.
Change-Id: I3a6a78ddb664511762c197bc41f3a9909665b565
This option increases runtime by 20% and is only marginally
better than good cpu-used=0:
PSNR | PSNR Cb | PSNR Cr | PSNR HVS | SSIM | MS SSIM | CIEDE 2000
-0.3382 | -0.3911 | -0.4875 | -0.2982 | -0.2992 | -0.3164 | -0.3686
It is also not well integrated with speed_features.c, which is
the main reason for the removal.
Change-Id: If88c50367f63b860ad57f650869b978ec7734aad
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
This commit implements a new rate control system which was ported from
Daala's rate control system (which was based off of Theora's rate
control system) to the encoder. Its aim is to address the weaknesses of
the current rate control system and eventually serve as its replacement.
This is still work in progress. So far this commit only implements
support for single pass encoding for constant quality and bitrate
targeting.
Additional commits which implement two-pass support and the rest to
match the feature set of the current rate control system are coming
soon.
The rate control system hasn't been fully tuned (and will likely need
additional tuning as the encoder's development progresses) and does
contain some "hacks", to convert the quality to a quantizer value
(empirical) and to tweak the quantizer in between golden frames (which
uses some code from the current rate control system as well as code
which attempts to model what that code does), the latter of which is
only in the constant quality codepath.
Bitrate targeting works much better than the current rate control
system's targeting and will actually closely match the rate specified by
the user without the current rate control system's bursty behaviour.
Change-Id: I588fbfd2e80a3d21ce7176903115d6a96ef1700a
This commit renames deblocking_across_tiles to loopfilter_across_tiles,
to get ready for dering and clpf integration.
Change-Id: Id25b051da9b1e5cb92f35a9619662597462d9537
This commit adds a new experiment to allow disabling of loop filtering
on tile boundaries. It is implemented by adding a syntax field
"loopfilter_across_tiles_enabled" into the uncompressed frame header.
If it is set to 0, decoder and encoder will disables loop filtering for
block edges that are also tile boundaries.
Change-Id: Ib80bfd82d49c74f1ba46ae18ceedb30704ac8aa5
Default MTU size is 0, which implies a fixed number
of tile groups. MTU matching overrides fixed tile
group. MTU matching will succeed unless a single
tile is bigger than the MTU.
--mtu-size is in bytes, and includes headers but
not transport/wrapper overheads
Change-Id: I2b70bd41b175b54273b02d836f2a84011f617a7c
Also:
- For unsigned ints, don't check value >= 0 as that is always true.
- Add "-Wlogical-op" warning flag which would have warned that "logical
'or' of collectively exhaustive tests is always true" before this
patch.
Change-Id: Idf3bd312464397f2df19256fc69b22f345dc7753
Given the largest transform size is 32x32, this commmit changes size
estiiation based on the size rounding up to 32 multiples to avoid
insufficient buffer allocations.
BUG=https://bugs.chromium.org/p/aomedia/issues/detail?id=36
Change-Id: I6eab09dc6acdc0f5a6bcadb918d62c4852aae21f
This commit increases the minimum size for allocated buffer for
compressed data. The old size underestimated the size needed for
small images with width or height less than 64 pixels.
BUG=https://bugs.chromium.org/p/aomedia/issues/detail?id=31
Change-Id: Ia12507edc2be1e737ec49c32f64fd2ebf1eab41f
Cherry-Picked the following commits:
0defd8f Changed "WebM" to "AOMedia" & "webm" to "aomedia"
54e6676 Replace "VPx" by "AVx"
5082a36 Change "Vpx" to "Avx"
7df44f1 Replace "Vp9" w/ "Av1"
967f722 Remove kVp9CodecId
828f30c Change "Vp8" to "AOM"
030b5ff AUTHORS regenerated
2524cae Add ref-mv experimental flag
016762b Change copyright notice to AOMedia form
81e5526 Replace vp9 w/ av1
9b94565 Add missing files
fa8ca9f Change "vp9" to "av1"
ec838b7 Convert "vp8" to "aom"
80edfa0 Change "VP9" to "AV1"
d1a11fb Change "vp8" to "aom"
7b58251 Point to WebM test data
dd1a5c8 Replace "VP8" with "AOM"
ff00fc0 Change "VPX" to "AOM"
01dee0b Change "vp10" to "av1" in source code
cebe6f0 Convert "vpx" to "aom"
17b0567 rename vp10*.mk to av1_*.mk
fe5f8a8 rename files vp10_* to av1_*
Change-Id: I6fc3d18eb11fc171e46140c836ad5339cf6c9419