Граф коммитов

36 Коммитов

Автор SHA1 Сообщение Дата
Sebastien Alaiwan 0ba49a588b Use AOMMAX instead of ternary
Change-Id: Icfe43e3eda3dcdf5a6d5209e60b842e950655678
2017-06-20 04:47:21 +00:00
Sebastien Alaiwan 918c3c113d Rename 'size' to 'frame_size'
Change-Id: Ie720d1befcfe3c77db56bd3313b6e920fd69945c
2017-06-20 04:39:46 +00:00
Sebastien Alaiwan 62fc41adc8 Reduce scope of local variables
Change-Id: I702240cde0bd3befa196d722311003758b507c04
2017-06-20 04:39:13 +00:00
Fergus Simpson 87cf61b11e scaling: Add kf numerator for resize and superres
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
2017-06-16 22:14:57 +00:00
Fergus Simpson bfbf6a5983 Unify resize and superres denominator constants
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
2017-06-16 19:21:12 +00:00
Debargha Mukherjee 29e40a6529 Unify and clean up resize arguments
Unifies the command line arguments for resize and superes.
Removes resize arguments that are currently unused.

Change-Id: I1362dffceb8257cee539f92679d1e8d79df08e66
2017-06-15 01:58:14 -07:00
Fergus Simpson c4e789426a frame_superres: Add aomenc argument
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
2017-06-15 08:51:23 +00:00
anorkin 76fb126526 Experiment: adding the source video information signaling (Netflix)
Change-Id: If93f9e41c25a5885b5927e66a298c129bb844e18
2017-06-14 23:00:14 +00:00
Fergus Simpson 3502d08b71 frame-superres: Pre-encode downscaling
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
2017-05-15 17:28:40 +00:00
Yunqing Wang ff4fa0687f Add the motion vector unit test
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
2017-04-26 03:49:46 +00:00
Fangwen Fu 6160df2936 Extend delta q with segments
This is the first patch for ext_delta_q experiment.
* Allow delta q to work with segment features

Change-Id: I9455ebb3b5b23b41daa4afa1149672a20d3a3f2c
2017-04-24 23:29:36 +00:00
Yunqing Wang d8cd55f4dd ext_tile: add 2 tile encoding modes
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
2017-04-20 00:10:33 +00:00
Ralph Giles 19944291af Don't export kMinCompressedSize.
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
2017-04-18 23:01:40 +00:00
Thomas Daede 8082614e81 Remove rt deadline.
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
2017-04-17 23:17:34 +00:00
Sebastien Alaiwan 71e87847eb Homogenize configuration option name.
Rename '--enable-aom-highbitdepth' to '--enable-highbitdepth'

Change-Id: I1de13c3508c30c552532993419d8ace326142ab6
2017-04-12 22:29:11 +00:00
Alex Converse 561d0af0e3 Drop the CPUUSED symmetry around zero.
Change-Id: Ifda6ddec1e0c9aff29d531c5bf6411c0072c7b0e
2017-03-23 20:59:58 +00:00
Thomas Daede 6eca835fff Remove "best" deadline parameter from aomenc.
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
2017-03-21 20:15:38 +00:00
Rostislav Pehlivanov 74021a5a64 Implement twopass support for the xiphrc system
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
2017-03-16 21:40:48 +00:00
Rostislav Pehlivanov 002e7b7a03 Implement a new rate control system
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
2017-02-17 00:18:53 +00:00
Fangwen Fu 7b9f2b3b0d add horizontal tile dependence support
Change-Id: I1050b69045407381d4626b65a0bf6f35957a66f4
2017-02-04 00:45:16 +00:00
Ryan Lei ad67d795a9 set loop_filter_across_tiles_enabled flag to 1 in default case
Change-Id: I907976619a433a92d671c5cce25f3e8806638e80
2017-02-03 21:09:15 +00:00
Ryan Lei 9b02b0e6cd deblocking_across_tiles->loopfilter_across_tiles
This commit renames deblocking_across_tiles to loopfilter_across_tiles, 
to get ready for dering and clpf integration.

Change-Id: Id25b051da9b1e5cb92f35a9619662597462d9537
2017-02-03 01:25:52 +00:00
Fangwen Fu 8d164de25c enable explicit temp mv prediction signaling
Change-Id: Ieb2922c3df4ef4f8514b8a6df6f9a8fc45ef3cf4
2017-01-23 14:22:45 -08:00
Alex Converse eb780e7167 Add a control to set the ANS window size
Change-Id: I3d64ec4bbc72143b30a094ece7a6c711d6b479cd
2017-01-19 17:22:44 +00:00
Ryan Lei 7386eda0e0 Add an experiment to disable lpf on tile boundaries
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
2017-01-04 04:59:42 +00:00
Alex Converse fab6224318 Remove obsolete control AOME_SET_ARNR_TYPE and command line flag
The control is deprecated and is a noop.

Change-Id: I66f248485a906c26205a1b26e61e15d976207fd8
2016-12-13 23:23:38 +00:00
Thomas Davies af6df17516 Add options setting number of tile groups or MTU.
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
2016-11-10 17:31:07 +00:00
Arild Fuldseth (arilfuld) 5114b7bf71 Frame buffer marking enabling non-intra-based loss recovery
Change-Id: Iaaf9244678cde74cf3e216f3b8c9d293f206f27e
2016-11-09 13:26:32 +00:00
Urvang Joshi cd8ab904e1 RANGE_CHECK: "==" || ">" is simply ">=".
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
2016-10-28 14:40:29 -07:00
Brennan Shacklett d4add7aca9 Remove encode_breakout and related speed features
Seems to be dead code

Change-Id: I17b3edc9e82d6a1da172a686522358a6b1a630e9
2016-10-25 08:56:55 -07:00
Yaowu Xu abc7d81b40 Correct data size estimation for odd size video
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
2016-10-24 10:46:32 -07:00
Yaowu Xu 416b0d94de Increase min size of compressed data
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
2016-10-24 09:56:09 -07:00
Urvang Joshi 368fbc955d Fix warnings reported by -Wshadow: Part2b: more from av1 directory
From code only part of nextgenv2 (and not aomedia)

Change-Id: I21f7478a59d525dff23747efe5238ded16b743d2
2016-10-18 17:22:44 -07:00
Thomas Daede ac0a380ea2 Make deadline mode not depend on frame duration.
Backwards compatible with old API.

cherry-picked #02ae3dd3 from aom/master.

Change-Id: I65aa43f84bb9491e8cca73fe444094c2622b0187
2016-09-09 11:50:33 -07:00
Yaowu Xu 9c01aa1b0c Change to use aom copyright notice
This minimize code differences between AOM master and nextgenv2

Change-Id: If144865bdf3ef0818e7aac11018b9e786444c550
2016-09-02 08:22:07 -07:00
Yaowu Xu f883b42cab Port renaming changes from AOMedia
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
2016-08-31 18:19:03 -07:00