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

20 Коммитов

Автор SHA1 Сообщение Дата
Debargha Mukherjee 994ccd7f15 Add tiled version of UV wiener restoration
Slight improvement in midres and hdres sets of 0.02% and 0.0.9%
respectively.

This is also a better design anyways.

Change-Id: I15b60b8836070a2132641e5b1d8e9f68df426c08
2017-01-09 22:01:46 +00:00
Debargha Mukherjee d7489148d4 Refactor UV restoration to use same tilesize as Y
Change-Id: I56e741551f74624a84250d7565520db9c5127d1b
2017-01-09 20:06:26 +00:00
David Barker 33f3bfdef7 Optimize Wiener filter selection
* Change the behaviour of search_wiener at borders to match
  the behaviour of the Wiener filter itself
* Reorder the calculation in compute_stats, saving ~5% of
  encode time at low bitrates (tested on bus_cif.y4m at 200kbps)

Change-Id: I5f649d77fd66584451aaf37697ce9c9af69524e4
2017-01-07 05:30:22 -08:00
Debargha Mukherjee 09ad6d85b1 A mismatch fix in loop restoration
Change-Id: Icfc4645ff97d4fd6849f149f4c5296a53c204cf4
2017-01-07 13:19:07 +00:00
Debargha Mukherjee a43a2d98e3 Add UV wiener loop restoration
Enables Wiener based loop restoration only for the UV
frames. The selfguided and domaintranform filters do not
work very well for UV components, hence they are disabled.
For each UV frame a single set of wiener parameters are
sent. They are applied tile-wise, but all tiles use the
same parameters.

BDRATE (Global PSNR) results:
-----------------------------
lowres: -1.266% (up from -0.666%, good improvement)
midres: -1.815% (up from -1.792%, tiny improvement)

Tiling on UV components will be explored subsequently.

Change-Id: Ib5be93121c4e88e05edf3c36c46488df3cfcd1e2
2017-01-06 00:30:06 +00:00
David Barker 3a0df186bd Simplify buffer management for self-guided restoration filter
* Remove some unused variables
* Reduce need for casts by typing intermediate buffers appropriately
* Avoid copying data which is never modified; use the original data
  instead.
* Reduce number of intermediate buffers required, saving allocations
  of 576KiB in the decoder and ~1MiB in the encoder

No effect on performance

Change-Id: I55243904dd8e818fb6d43fa431903736475d23ff
2017-01-04 22:49:22 +00:00
Debargha Mukherjee 519dbcf19b Further optimizations of loop restoration
Change-Id: I4c4300f3f565d8aecf65669b77aaa874bb73a3a0
2016-12-16 20:54:53 +00:00
Debargha Mukherjee 999d2f65e2 More cleanups / fixes on loop-restoration buffers
Also includes some minor renaming of macros.

Change-Id: I9493cc97c6ec9c8dae8020a05a02d6f322db9a02
2016-12-16 06:46:35 +00:00
Debargha Mukherjee 874d36d9c9 Misc cleanups and enhancements on loop restoration
Includes:
Some cleanups/refactoring
Better buffer management.
Some preps for future chrominance restoration.

Change-Id: Ia264b8989b5f4a53c0764ed3e8258ddc212723fc
2016-12-15 19:11:46 +00:00
Yaowu Xu bf1d62dd2f Move large buffers from stack to heap
This commit moves a number of large buffers from stack to heap to fix
crashes due to stack overflow.

Change-Id: I9d1592e4f6dbfa18a475d0fc5674f6d3632f39ed
2016-12-15 04:55:25 +00:00
David Barker 9666e75621 Remove feedback between tiles in loop-restoration
This is intended to simplify hardware and multithreaded
implementations.

Change-Id: I6aa95b67c03b794a0f3d5cf2f65c576d05f2ca7d
2016-12-14 18:58:21 +00:00
Debargha Mukherjee 0e67b25c6b Replace bilateral filter with domain transform RF
The main objective is to reduce computational complexity.
The domain transform filter has an effect of edge preserving smoothing
at a lower computational cost than the bilateral filter, and can be
readily paralelized.

A little drop in coding efficiency about 0.06% for lowres, 0.16% for
midres.

Change-Id: Id949406b7e5afe9b64588d130065c63a76e4f3f9
2016-12-12 20:28:35 +00:00
Debargha Mukherjee 3981be93bf Add domain transform recursive filter
This filter is meant to replace the bilateral filter,
but is currently added in addition to the bilateral filter
for testing.

Change-Id: Ia529701e69833d47c11b3367d5bf804eb8498079
2016-12-06 00:54:23 +00:00
Yaowu Xu bde4ac8260 change to use AOMedia copyright notice
Change-Id: I82580120a154ecd7c41f4cd9bc0f8c669fca7774
2016-11-29 00:01:36 +00:00
Debargha Mukherjee 8f209a87be Add guided projection filter to loop restoration
BDRATE:
lowres: -1.01% (up from -0.7%)
midres: -1.90% (up from -1.5%)
hdres:  -2.11% (up from ~1.7%)

Change-Id: I1fe04ec9ef90ccc4cc990e09cd45eea82c752e0c
2016-11-10 23:18:43 +00: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
Debargha Mukherjee 5d89a63a7e Misc. refactoring of loop restoration
Streamilines the functions and data structures to make it
easy to add new restore options.

Change-Id: Ib00638a5749e6c38c2455f3e3142b1025e6e0624
2016-09-20 20:46:36 -07:00
Debargha Mukherjee 5cd2ab95c9 Enable tile-adaptive restoration
Includes a major refactoring/enhancement to support
tile-adaptive switchable restoration. The framework can be
readily extended to add more restoration schemes in the
future. Also includes various cleanups and fixes.

Specifically the framework allows restoration to be conducted
on tiles such that each tile can be either left unrestored, or
use bilateral or wiener filtering.

There is a modest improvemnt in coding efficiency (0.1 - 0.2%).

Further enhancements will be added subsequently to improve coding
efficiency and complexity.

Change-Id: I5ebedb04785ce1ef6f324abe209e925c2d6cbe8a
2016-09-17 09:46:28 -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
Yaowu Xu c27fc14b02 Port folder renaming changes from AOM
Manually cherry-picked commits:
ceef058 libvpx->libaom part2
3d26d91 libvpx -> libaom
cfea7dd vp10/ -> av1/
3a8eff7 Fix a build issue for a test
bf4202e Rename vpx to aom

Change-Id: I1b0eb5a40796e3aaf41c58984b4229a439a597dc
2016-08-31 17:26:24 -07:00