]> granicus.if.org Git - libvpx/log
libvpx
5 years agoChange to direction of scan for GF only group boost.
Paul Wilkins [Thu, 31 Jan 2019 17:03:55 +0000 (17:03 +0000)]
Change to direction of scan for GF only group boost.

When coding a GF only group it makes more sense to scan forward
from the GF to choose the boost level rather than backwards from
the end of the group towards the GF.

In practice we do not often code GF only groups in normal 2 pass
encodes and when we do the video is usually almost static which means
the direction does not matter much. However,  a forward scan makes
more sense and is how things used to work before we started using
arfs most of the time.

Change-Id: I64a5a731ff579c8af86d8a6718830d426b16a755

5 years agoAdjustment to noise factor in first pass.
Yunqing Wang [Fri, 21 Dec 2018 22:46:52 +0000 (14:46 -0800)]
Adjustment to noise factor in first pass.

Adjustments to the calculation and use of a noise estimate in
the first pass Q estimate and adaptation of temporal filtering.

This change was tested and gave gains for both auto-alt-ref=1
and auto-alt-ref=6 as follows:

Results are Av PSNR, Overall PSNR, SSIM  and PSNR-HVS

auto-alt-ref=1
low_res 0.007, -0.042, -0.018, 0.074
mid_res -0.142, -0.239, -0.173, -0.129
hd_res -0.322, -0.405, -0.397, -0.367
NF_2K -0.058, -0.099, -0.201, 0.028

auto-alt-ref=6
low_res  -0.058, -0.171, -0.188, -0.027
mide_res -0.149, -0.155, -0.171, -0.137
hd_res -0.252, -0.339, -0.259, -0.297
NF_2K -0.015, -0.068, -0.120, 0.092

In all sets there were some winners and losers but significantly
more winners. The biggest change was Stockholm in the
hd set with an improvement of 5-6%

Change-Id: Ieec71e1c4e3e09b76c288efa7b4d1b00015b3a11

5 years agoMerge "Add unit speed test for vp9_apply_temporal_filter"
Chi Yo Tsai [Fri, 18 Jan 2019 23:13:01 +0000 (23:13 +0000)]
Merge "Add unit speed test for vp9_apply_temporal_filter"

5 years agoMerge changes Id99ca6fc,I34cdbc6e,Iac7fee46
Angie Chiang [Fri, 18 Jan 2019 23:05:51 +0000 (23:05 +0000)]
Merge changes Id99ca6fc,I34cdbc6e,Iac7fee46

* changes:
  Correct pyramid_mv_arr's memory size
  Adjust lambda with bsize in build_motion_field()
  Free pyramid_mv_arr properly

5 years agoMerge "Use longer test clips in y4m_test"
Yunqing Wang [Fri, 18 Jan 2019 01:20:11 +0000 (01:20 +0000)]
Merge "Use longer test clips in y4m_test"

5 years agoMerge "Use longer videos in end-to-end tests"
Yunqing Wang [Fri, 18 Jan 2019 01:19:56 +0000 (01:19 +0000)]
Merge "Use longer videos in end-to-end tests"

5 years agoMerge "Add unit test for temporal filter on VP9"
Chi Yo Tsai [Fri, 18 Jan 2019 00:34:37 +0000 (00:34 +0000)]
Merge "Add unit test for temporal filter on VP9"

5 years agoAdd unit speed test for vp9_apply_temporal_filter
chiyotsai [Wed, 16 Jan 2019 23:33:06 +0000 (15:33 -0800)]
Add unit speed test for vp9_apply_temporal_filter

This patch adds unit speed test for vp9_apply_temporal_filter.

BUG=webm:1591

Change-Id: I4792dfc6ecd4a82775b9a895a90aafdc2a199f86

5 years agoAdd unit test for temporal filter on VP9
chiyotsai [Wed, 16 Jan 2019 18:53:56 +0000 (10:53 -0800)]
Add unit test for temporal filter on VP9

The current unit tests for temporal filtering only tests single
channel version of temporal filter. Since VP9 currently uses both luma
and chroma channel information for temporal filtering on low bitdepth,
there is no unit case in this scenario.

This commit adds some basic unit tests to facilitate further development
on temporal filtering.

BUG=webm:1591

Change-Id: Id38ceba5305865d7148e9b2bc636acddae54d6c2

5 years agoMerge "mips highbd: resolve missing declarations"
Johann Koenig [Wed, 16 Jan 2019 05:06:59 +0000 (05:06 +0000)]
Merge "mips highbd: resolve missing declarations"

5 years agoMerge "mips: add rtcd.h to resolve missing declarations"
Johann Koenig [Wed, 16 Jan 2019 05:06:53 +0000 (05:06 +0000)]
Merge "mips: add rtcd.h to resolve missing declarations"

5 years agoMerge "vp9: fix definition for VP9E_SET_POSTENCODE_DROP"
Jerome Jiang [Wed, 16 Jan 2019 00:16:15 +0000 (00:16 +0000)]
Merge "vp9: fix definition for VP9E_SET_POSTENCODE_DROP"

5 years agovp9: fix definition for VP9E_SET_POSTENCODE_DROP
Jerome Jiang [Tue, 15 Jan 2019 23:02:39 +0000 (15:02 -0800)]
vp9: fix definition for VP9E_SET_POSTENCODE_DROP

Change-Id: I667be78eb7c41154bf44c242992f622f12c31b80

5 years agoMerge "vp9-svc: Fix to buffer update under frame_drops"
Marco Paniconi [Tue, 15 Jan 2019 23:02:18 +0000 (23:02 +0000)]
Merge "vp9-svc: Fix to buffer update under frame_drops"

5 years agomips: add rtcd.h to resolve missing declarations
Johann [Tue, 15 Jan 2019 22:22:24 +0000 (14:22 -0800)]
mips: add rtcd.h to resolve missing declarations

BUG=webm:1584

Change-Id: Ifdebf33356abcc6869f695d129165ba17e042dcd

5 years agomips highbd: resolve missing declarations
Johann [Tue, 15 Jan 2019 22:23:59 +0000 (14:23 -0800)]
mips highbd: resolve missing declarations

BUG=webm:1584

Change-Id: I4cbfafe8ea72b3d4523aabcaed4848fa29bb19fe

5 years agovp9-svc: Fix to buffer update under frame_drops
Marco Paniconi [Tue, 15 Jan 2019 20:12:47 +0000 (12:12 -0800)]
vp9-svc: Fix to buffer update under frame_drops

For svc with frame dropping in full_superframe_drop or
constrained dropped mode: the buffer level for a given layer
may be capped from increasing too much. This is because that layer
may be dropped even though its buffer is stable (the dropped is forced
due to underflow in other layers in full/constrained svc-drop mode).
This capping is needed to prevent decrease in qp over consecutive
frame drops.

The capping already exists and has been used, but this change
introduce an error that prevented its usage:
https://chromium-review.googlesource.com/c/webm/libvpx/+/1330875

The fix here is to also cap the bits_off_target as well, since after
the change mentioned above, its the bits_off_target that is used to
update buffer on next frame (which in turn affects qp for next frame/layer).

Change-Id: Ifdab5d478e91cce20ecec51faa574eed375ee36b

5 years agoRemove unnecessary calculation in 4-tap interpolation filter
chiyotsai [Sat, 3 Nov 2018 00:08:05 +0000 (17:08 -0700)]
Remove unnecessary calculation in 4-tap interpolation filter

Reduces the number of rows calculated for 2D 4-tap interpolation filter
from h+7 rows to h+3 rows.
Also fixes a bug in the avx2 function for 4-tap filters where the last
row is computed incorrectly.

Performance:
           | Baseline |  Result  | Pct Gain |
bitdepth lo| 4.00 fps | 4.02 fps |   0.5%   |
bitdepth 10| 1.90 fps | 1.91 fps |   0.5%   |

The performance is evaluated on speed 1 on jets.y4m br 500 over 100
frames.

No BDBR loss is observed.

Change-Id: I90b0d4d697319b7bba599f03c5dc01abd85d13b1

5 years agoMerge " highbd_iadst16_neon: resolve missing declaration"
Johann Koenig [Tue, 15 Jan 2019 18:19:31 +0000 (18:19 +0000)]
Merge " highbd_iadst16_neon: resolve missing declaration"

5 years agoMerge "vp9-svc: Rate control fix for key base layer"
Marco Paniconi [Tue, 15 Jan 2019 05:05:18 +0000 (05:05 +0000)]
Merge "vp9-svc: Rate control fix for key base layer"

5 years agovp9-svc: Rate control fix for key base layer
Marco Paniconi [Tue, 15 Jan 2019 01:02:59 +0000 (17:02 -0800)]
vp9-svc: Rate control fix for key base layer

After encoding key frame on base spatial layer,
if the overshoot is significant, reset the
avg_frame_qindex[INTER] on base spatial layer for
all temporal layers.

This forces the active_worst_quality to increase
on subsequent frames/layers and reduces frame dropping.

Change-Id: I53a3cd14131d69120e59a649b7ed1bfde3e940ee

5 years agoMerge "Fix typo: exhuastive"
Jerome Jiang [Tue, 15 Jan 2019 01:42:07 +0000 (01:42 +0000)]
Merge "Fix typo: exhuastive"

5 years agoMerge "clean up debug print."
Jerome Jiang [Tue, 15 Jan 2019 01:41:55 +0000 (01:41 +0000)]
Merge "clean up debug print."

5 years agoUse longer test clips in y4m_test
Yunqing Wang [Tue, 15 Jan 2019 01:12:54 +0000 (17:12 -0800)]
Use longer test clips in y4m_test

Used 20-frame clips to replace 10-frame clips in y4m_test. Also, removed
unused 10-frame clips.

Change-Id: Ib82ad2c3718f1f5f31478957b9ee970593536940

5 years agoUse longer videos in end-to-end tests
Yunqing Wang [Tue, 15 Jan 2019 00:30:20 +0000 (16:30 -0800)]
Use longer videos in end-to-end tests

Used 20-frame clips got from Deb in end-to-end unit tests to improve
the test coverage.

TODO: remove 10-frame clips.

Change-Id: I06ec2d35f5c5c47263d3be61623c80f52fd18ffe

5 years agoclean up debug print.
Jerome Jiang [Mon, 14 Jan 2019 23:46:04 +0000 (15:46 -0800)]
clean up debug print.

printf -> assert(0 & ...)

Change-Id: I7bd6c0127ad816e8a5b555e86d54961b33da2bc4

5 years agoFix typo: exhuastive
Jerome Jiang [Mon, 14 Jan 2019 23:42:20 +0000 (15:42 -0800)]
Fix typo: exhuastive

Change-Id: Ia00570a00b871eb1f929bd7e0af221d2c0b5ed21

5 years agoMerge "Change "ximage" to "vpx_image_t" in comments."
Wan-Teh Chang [Mon, 14 Jan 2019 22:53:08 +0000 (22:53 +0000)]
Merge "Change "ximage" to "vpx_image_t" in comments."

5 years agoMerge "Reset buffer_alloc_sz after freeing buffer_alloc."
Wan-Teh Chang [Mon, 14 Jan 2019 22:03:50 +0000 (22:03 +0000)]
Merge "Reset buffer_alloc_sz after freeing buffer_alloc."

5 years agoReset buffer_alloc_sz after freeing buffer_alloc.
Wan-Teh Chang [Mon, 14 Jan 2019 19:54:59 +0000 (11:54 -0800)]
Reset buffer_alloc_sz after freeing buffer_alloc.

ybf->buffer_alloc and ybf->buffer_alloc_sz should ideally be kept in
sync. If ybf->buffer_alloc is reset to NULL after being freed, then
ybf->buffer_alloc_sz should be reset to 0.

Change-Id: I7e7566b563ddf145d0e46050c5b6bd141084f8b3

5 years agoMerge "Fix typo."
Jerome Jiang [Mon, 14 Jan 2019 19:19:08 +0000 (19:19 +0000)]
Merge "Fix typo."

5 years agoChange "ximage" to "vpx_image_t" in comments.
Wan-Teh Chang [Mon, 14 Jan 2019 19:13:43 +0000 (11:13 -0800)]
Change "ximage" to "vpx_image_t" in comments.

In test/external_frame_buffer_test.cc, rename CheckXImageFrameBuffer()
to CheckXImageFrameBuffer().

Change-Id: Ifea3910445673be465d7536a69f85f1a2e2bce6e

5 years agoFix typo.
Jerome Jiang [Fri, 11 Jan 2019 22:32:09 +0000 (14:32 -0800)]
Fix typo.

Blocking libvpx update into google3.

Change-Id: I18c29f0a68568e65ae5e0c7fcdb5097b08b586a6

5 years agoconvolve_test: Add missing init of HBD buffers
James Zern [Sat, 12 Jan 2019 00:36:45 +0000 (16:36 -0800)]
convolve_test: Add missing init of HBD buffers

this resolves some msan errors.
the same change was done in libaom:
5ab58722c Add missing initializations of HBD buffers

Change-Id: I8882af45b95c90ba43bf138c7d305a6c3b99e61c

5 years agoMerge "Fix segmentation fault in hbd path"
Yunqing Wang [Fri, 11 Jan 2019 22:53:31 +0000 (22:53 +0000)]
Merge "Fix segmentation fault in hbd path"

5 years agoMerge "highbd idct: resolve missing declarations"
Johann Koenig [Fri, 11 Jan 2019 19:39:34 +0000 (19:39 +0000)]
Merge "highbd idct: resolve missing declarations"

5 years agoFix segmentation fault in hbd path
Deepa K G [Fri, 11 Jan 2019 12:32:12 +0000 (18:02 +0530)]
Fix segmentation fault in hbd path

When CONFIG_VP9_HIGHBITDEPTH is enabled,
lowbd modules were called in the hbd path.
This patch fixes the issue.

Change-Id: I59820180fbed120697b6ef1fc1a02be0d35ac1d5

5 years agoCorrect pyramid_mv_arr's memory size
Angie Chiang [Fri, 11 Jan 2019 06:44:01 +0000 (22:44 -0800)]
Correct pyramid_mv_arr's memory size

Change-Id: Id99ca6fc846ebe11a9f5363da4e6449e976303a1

5 years agoAdjust lambda with bsize in build_motion_field()
Angie Chiang [Fri, 11 Jan 2019 03:35:10 +0000 (19:35 -0800)]
Adjust lambda with bsize in build_motion_field()

Change-Id: I34cdbc6e8625c0de8595860af02ca277c3448a19

5 years agoMerge "vp8 dec: Add flag to bring up threads."
Jerome Jiang [Thu, 10 Jan 2019 21:57:07 +0000 (21:57 +0000)]
Merge "vp8 dec: Add flag to bring up threads."

5 years agovp8 dec: Add flag to bring up threads.
Jerome Jiang [Tue, 8 Jan 2019 18:51:54 +0000 (10:51 -0800)]
vp8 dec: Add flag to bring up threads.

Instead of creating a new decoder instance when restarting all threads
after they were shut down, re-create threads on the new flag.

BUG=webm:1577

Change-Id: I6272ecaa1b586afdaa5ed8d6eab80aff8f5eb673

5 years agoFree pyramid_mv_arr properly
Angie Chiang [Thu, 10 Jan 2019 13:55:08 +0000 (05:55 -0800)]
Free pyramid_mv_arr properly

Change-Id: Iac7fee461759599a7e167f8e6716ae3c6414a7d1

5 years ago highbd_iadst16_neon: resolve missing declaration
Johann [Wed, 9 Jan 2019 23:35:30 +0000 (15:35 -0800)]
 highbd_iadst16_neon: resolve missing declaration

Only used in a local array. Similar to lowbd iadst16 naming.

BUG=webm:1584

Change-Id: Ie07c2fb9599fb54fab221e5c0ccec0e95d69b893

5 years agohighbd idct: resolve missing declarations
Johann [Wed, 9 Jan 2019 18:57:07 +0000 (10:57 -0800)]
highbd idct: resolve missing declarations

BUG=webm:1584

Change-Id: I596f5f0e1a1c152493cd8177b32d416cc79937e0

5 years agoMerge changes Icec98e6f,I63614e65,I25ea05f4
Angie Chiang [Wed, 9 Jan 2019 16:11:04 +0000 (16:11 +0000)]
Merge changes Icec98e6f,I63614e65,I25ea05f4

* changes:
  Add full_pixel_exhaustive_new
  Add sse cost in vp9_full_pixel_diamond_new
  Use motion field for mv inconsistency in mv search

5 years agoMerge "ppc: resolve missing declarations"
Johann Koenig [Wed, 9 Jan 2019 15:38:38 +0000 (15:38 +0000)]
Merge "ppc: resolve missing declarations"

5 years agoppc: resolve missing declarations
Johann [Tue, 8 Jan 2019 18:34:39 +0000 (10:34 -0800)]
ppc: resolve missing declarations

Add rtcd headers and make local functions static.

BUG=webm:1584

Change-Id: Ic19aec1dc90703b0b89d1092baee487d0fd0cb4e

5 years agovp8 arm loopfilter: resolve missing declarations
Johann [Tue, 8 Jan 2019 18:24:21 +0000 (10:24 -0800)]
vp8 arm loopfilter: resolve missing declarations

BUG=webm:1584

Change-Id: I3270e6efe79fe9728e8d11f4c352deefc3cea00b

5 years agoMerge "vp8 idct: remove return"
Johann Koenig [Tue, 8 Jan 2019 15:39:10 +0000 (15:39 +0000)]
Merge "vp8 idct: remove return"

5 years agoMerge "vp8_copy32xn: resolve missing declaration"
Johann Koenig [Tue, 8 Jan 2019 05:23:24 +0000 (05:23 +0000)]
Merge "vp8_copy32xn: resolve missing declaration"

5 years agovp8 idct: remove return
Johann [Tue, 8 Jan 2019 04:38:13 +0000 (20:38 -0800)]
vp8 idct: remove return

Change-Id: Ib1648e1f6559e65ddf11cb54266c7eeff37a6ea6

5 years agoMerge "vp8 idct dequant: resolve missing declarations"
Johann Koenig [Tue, 8 Jan 2019 04:36:45 +0000 (04:36 +0000)]
Merge "vp8 idct dequant: resolve missing declarations"

5 years agoMerge "vp8 blend: resolve missing declarations"
Johann Koenig [Tue, 8 Jan 2019 04:29:03 +0000 (04:29 +0000)]
Merge "vp8 blend: resolve missing declarations"

5 years agoMerge "vp8 overlaps: resolve missing declaration"
Johann Koenig [Tue, 8 Jan 2019 04:28:38 +0000 (04:28 +0000)]
Merge "vp8 overlaps: resolve missing declaration"

5 years agovp8 idct dequant: resolve missing declarations
Johann [Tue, 8 Jan 2019 02:01:01 +0000 (18:01 -0800)]
vp8 idct dequant: resolve missing declarations

BUG=webm:1584

Change-Id: Iecd2a0154c523fa61349c456befdf6c37d980efc

5 years agovp8_copy32xn: resolve missing declaration
Johann [Tue, 8 Jan 2019 00:29:24 +0000 (16:29 -0800)]
vp8_copy32xn: resolve missing declaration

BUG=webm:1584

Change-Id: I9898a6e2f977acd4e26b09222a1eb2ab4f37f0af

5 years agovp8 overlaps: resolve missing declaration
Johann [Tue, 8 Jan 2019 00:24:06 +0000 (16:24 -0800)]
vp8 overlaps: resolve missing declaration

BUG=webm:1584

Change-Id: I67fa7460cb90b9bbe8583b60340d7bbf615a11f2

5 years agovp9_get_blockiness: resolve missing declaration
Johann [Tue, 8 Jan 2019 00:18:31 +0000 (16:18 -0800)]
vp9_get_blockiness: resolve missing declaration

BUG=webm:1584

Change-Id: I719c64734f4eae07def2d700006834a2420891a7

5 years agovp8 blend: resolve missing declarations
Johann [Tue, 8 Jan 2019 00:10:01 +0000 (16:10 -0800)]
vp8 blend: resolve missing declarations

Remove unused functions.

BUG=webm:1584

Change-Id: If7a49e920e12f7fca0541190b87e6dae510df05c

5 years agoMerge "vp8 multi dimensional search: resolve missing declarations"
Johann Koenig [Mon, 7 Jan 2019 23:56:07 +0000 (23:56 +0000)]
Merge "vp8 multi dimensional search: resolve missing declarations"

5 years agoMerge "vp8_copy32xn: resolve missing declaration"
Johann Koenig [Mon, 7 Jan 2019 23:54:39 +0000 (23:54 +0000)]
Merge "vp8_copy32xn: resolve missing declaration"

5 years agoMerge "vpx_filter: resolve missing declarations"
Johann Koenig [Mon, 7 Jan 2019 23:26:54 +0000 (23:26 +0000)]
Merge "vpx_filter: resolve missing declarations"

5 years agoMerge "vpx_clear_system_state: resolve missing declaration"
Johann Koenig [Mon, 7 Jan 2019 23:26:43 +0000 (23:26 +0000)]
Merge "vpx_clear_system_state: resolve missing declaration"

5 years agoMerge "vp9 intra pred test: resolve -Wuninitialized warning"
Johann Koenig [Mon, 7 Jan 2019 23:26:32 +0000 (23:26 +0000)]
Merge "vp9 intra pred test: resolve -Wuninitialized warning"

5 years agoMerge "arm neon: resolve missing declarations"
Johann Koenig [Mon, 7 Jan 2019 23:26:06 +0000 (23:26 +0000)]
Merge "arm neon: resolve missing declarations"

5 years agovp8_copy32xn: resolve missing declaration
Johann [Mon, 7 Jan 2019 18:39:04 +0000 (10:39 -0800)]
vp8_copy32xn: resolve missing declaration

BUG=webm:1584

Change-Id: I8279e099fb9595edad858bf7332bf2b40fecae02

5 years agoarm neon: resolve missing declarations
Johann [Mon, 7 Jan 2019 22:05:58 +0000 (14:05 -0800)]
arm neon: resolve missing declarations

BUG=webm:1584

Change-Id: I2dcf39f2327b72b58be72c27f952ea781a790dd3

5 years agovpx_filter: resolve missing declarations
Johann [Mon, 7 Jan 2019 20:34:53 +0000 (12:34 -0800)]
vpx_filter: resolve missing declarations

BUG=webm:1584

Change-Id: I1be768446b9304123da7b1ea0aed0db056db31c5

5 years agovpx_clear_system_state: resolve missing declaration
Johann [Mon, 7 Jan 2019 19:58:28 +0000 (11:58 -0800)]
vpx_clear_system_state: resolve missing declaration

BUG=webm:1584

Change-Id: I0770fc97055b98cdf9ff7bd7a93ae3a5e19b8180

5 years agoMerge "Fix OOB memory access on fuzzed data"
Fyodor Kyslov [Mon, 7 Jan 2019 19:30:21 +0000 (19:30 +0000)]
Merge "Fix OOB memory access on fuzzed data"

5 years agovp9 intra pred test: resolve -Wuninitialized warning
Johann [Mon, 7 Jan 2019 19:27:53 +0000 (11:27 -0800)]
vp9 intra pred test: resolve -Wuninitialized warning

BUG=webm:1584

Change-Id: I58505e04bd248697047d4957cebe495dada670a0

5 years agovp8 multi dimensional search: resolve missing declarations
Johann [Mon, 7 Jan 2019 19:14:57 +0000 (11:14 -0800)]
vp8 multi dimensional search: resolve missing declarations

BUG=webm:1584

Change-Id: I5c3fb5ab00bff66a8e8f4b8d27cbcea4946eced0

5 years agoFix OOB memory access on fuzzed data
kyslov [Sat, 5 Jan 2019 01:04:09 +0000 (17:04 -0800)]
Fix OOB memory access on fuzzed data

vp8_norm table has 256 elements while index to it can be higher on
fuzzed data. Typecasting it to unsigned char will ensure valid range and
will trigger proper error later. Also declaring "shift" as unsigned char to
avoid UB sanitizer warning

BUG=b/122373286,b/122373822,b/122371119

Change-Id: I3cef1d07f107f061b1504976a405fa0865afe9f5

5 years agofix vp9 fdct_quant
Johann [Mon, 7 Jan 2019 17:53:18 +0000 (09:53 -0800)]
fix vp9 fdct_quant

Values in [q]coeff1 were not correctly stored. This caused a segfault
in the sse2 libvpx__nightly_optimization jobs.

Broken in:
commit 85032bac388917916f7a149173db8b34e93e8f6e
Author: Johann <johannkoenig@google.com>
Date:   Fri Dec 21 00:27:00 2018 +0000

    fdct_quant: resolve missing declarations

BUG=webm:1584

Change-Id: I5f5fad34ec5e32023f5b40ff3691125754c11ced

5 years agoMerge "VP9 firstpass: Bugfix when mi_col_start/end is odd"
Urvang Joshi [Fri, 4 Jan 2019 23:03:57 +0000 (23:03 +0000)]
Merge "VP9 firstpass: Bugfix when mi_col_start/end is odd"

5 years agoVP9 firstpass: Bugfix when mi_col_start/end is odd
Urvang Joshi [Thu, 3 Jan 2019 22:49:18 +0000 (14:49 -0800)]
VP9 firstpass: Bugfix when mi_col_start/end is odd

Before this patch, if mi_col_end was odd, then the for loop for 'mb_col'
was looping once LESS than it should have been.

For example, if mi_col_end = 47, then the loop was terminating when
mb_col == 23. However, the correct behavior would be to terminate  when
mb_col == 24.

The issue was introduced in:
https://chromium-review.googlesource.com/c/webm/libvpx/+/423279

This can lead to many of the stats being inaccurate, for such videos
(with mi_col_start/end having an odd value).

As an example:
Even for very static content, fp_acc_data->intercount can never reach the
same value as num_mbs. And in turn, pcnt_inter can never reach the value 1
(that is, 100%). This would lead to very static videos NOT being marked
static, and encoded like regular videos.

Note: this is just one possible effect based on observation. Other
issues are also possible based on other stats.

Improvement on some test clips:
-------------------------------
- One test clip saw a gain of -2.580% in VBR mode (and -3.153% in Q
mode). The reason for improvement: a wrongly detected scene cut was
avoided due to corrected value in 'this_frame->pcnt_inter'.
- Some very static clips correctly marked as having 100% zero motion.
This avoided addition of unncecessary alt-refs, thereby reducing the
bitrate.

BDRate (PSNR) on regular sets (VBR mode):
-----------------------------------------
lowres: 0.0
midres: -0.027 (some clips were better/worse, but I double checked that
changes were as expected, given correction in stats calculation).
hdres: 0.0

STATS_CHANGED for the types of videos described above.

Change-Id: Ifbc2c0c0815d23ec4015475680bdf8886f158dcc

5 years agoAdd full_pixel_exhaustive_new
Angie Chiang [Fri, 4 Jan 2019 04:48:12 +0000 (20:48 -0800)]
Add full_pixel_exhaustive_new

Add full_pixel_exhaustive_new() and exhuastive_mesh_search_new().
The two functions are variants from full_pixel_exhaustive() and
exhuastive_mesh_search().

In the new versions, we use mv inconsistency in place of
mv entropy cost.

Change-Id: Icec98e6fae24f2771806a3e78276734624ec0303

5 years agoAdd sse cost in vp9_full_pixel_diamond_new
Angie Chiang [Tue, 1 Jan 2019 15:28:20 +0000 (07:28 -0800)]
Add sse cost in vp9_full_pixel_diamond_new

Change-Id: I63614e652686557652985bde882889eea9ecbcad

5 years agoUse motion field for mv inconsistency in mv search
Angie Chiang [Mon, 10 Dec 2018 23:29:39 +0000 (15:29 -0800)]
Use motion field for mv inconsistency in mv search

Change-Id: I25ea05f4bfe3c6f420e967c33763909c979a0d1b

5 years agoIncrease memory size in non-greedy-mv
Angie Chiang [Tue, 1 Jan 2019 04:56:31 +0000 (20:56 -0800)]
Increase memory size in non-greedy-mv

The smallest block size of motion field is 4x4, but the mi_unit
size is 8x8, therefore the number of units of motion field is
"mi_rows * mi_cols * 4".

Change-Id: I95292904d757705d39b78af5d0cf2d25f376c642

5 years agoBuild pyramid motion field
Angie Chiang [Sun, 23 Dec 2018 00:42:28 +0000 (16:42 -0800)]
Build pyramid motion field

Change-Id: I43fd61f7946a8a96d444dab5e94a9b01483ffab7

5 years agovp9: psnr diff thres for single vs multi threading.
Jerome Jiang [Wed, 2 Jan 2019 20:55:26 +0000 (12:55 -0800)]
vp9: psnr diff thres for single vs multi threading.

Change the threshold from 0.1 to 0.2.

BUG=webm:1588

Change-Id: I1ca20b360bcae66d09dc898c3266c9f5ac346561

6 years agoAdaptively choose block sizes in temporal filtering
Yunqing Wang [Fri, 21 Dec 2018 22:46:52 +0000 (14:46 -0800)]
Adaptively choose block sizes in temporal filtering

Use variable block sizes in temporal filtering. Based on prediction
errors of 32x32 or 16x16 blocks, choose the block size adaptively.
This improves the coding performance, especially for HD resolutions.

Speed 1 borg test result:
        avg_psnr:  ovr_psnr:    ssim:
lowres:  -0.090     -0.075      -0.112
midres:  -0.120     -0.107      -0.168
hdres:   -0.506     -0.512      -0.547

Change-Id: I8f774e29ecb2e0dd372b32b60c32d8fa30c013a8

6 years agoMerge "fwd_dct32x32 avx2: resolve missing declarations"
Johann Koenig [Mon, 24 Dec 2018 02:06:17 +0000 (02:06 +0000)]
Merge "fwd_dct32x32 avx2: resolve missing declarations"

6 years agoMerge "Revert "Add Tile-SB-Row based Multi-threading in Decoder""
James Zern [Sat, 22 Dec 2018 17:46:54 +0000 (17:46 +0000)]
Merge "Revert "Add Tile-SB-Row based Multi-threading in Decoder""

6 years agotest-data: add missing test data entries
James Zern [Sat, 22 Dec 2018 14:35:35 +0000 (09:35 -0500)]
test-data: add missing test data entries

invalid-bug-1443-v2.ivf{,.res}
invalid-vp80-00-comprehensive-s17661_r01-05_b6-.v2.ivf{,.res}

missed in:
6dbf738a4 vp8: kill all threads on corrupted frame.

Change-Id: I6481f4ad7544ecc069d0e0442888e97e9638fdd3

6 years agoRevert "Add Tile-SB-Row based Multi-threading in Decoder"
James Zern [Sat, 22 Dec 2018 14:26:29 +0000 (09:26 -0500)]
Revert "Add Tile-SB-Row based Multi-threading in Decoder"

This reverts commit 02b3ef7faee5be5ee519856fbb3523d3ab49f6e7.

Reason for revert: fails to build under visual studio

Original change's description:
> Add Tile-SB-Row based Multi-threading in Decoder
>
> Add the multi-thread function that decodes a video row by row instead
> of a tile at a time. Create a job queue for queueing all parse and recon jobs.
> Each SB row of a tile is a job.
>
> Performance Improvement:
>
> Platform        Resolution      3 Threads       4 Threads
> ARM             720p            36.81%          18.37%
>                 1080p           32.27%          14.76%
>
> ARM Improvement measured on Nexus 6 Snapdragon 805 Quad-core  @ 2.65 GHz
>
> Change-Id: I3d4dd7a932fc2904c90d9546b2de99c809afd29e

BUG=webm:1587

Change-Id: Ia4c8f5128922a205cd9fd83aaef8a2e73764d4a7

6 years agoMerge "Bound the total allocated memory of frame buffer"
Fyodor Kyslov [Fri, 21 Dec 2018 23:24:29 +0000 (23:24 +0000)]
Merge "Bound the total allocated memory of frame buffer"

6 years agoMerge "fwd_dct32x32 sse2: resolve missing declarations"
Johann Koenig [Fri, 21 Dec 2018 22:02:49 +0000 (22:02 +0000)]
Merge "fwd_dct32x32 sse2: resolve missing declarations"

6 years agoBound the total allocated memory of frame buffer
kyslov [Fri, 21 Dec 2018 20:04:04 +0000 (12:04 -0800)]
Bound the total allocated memory of frame buffer

This CL allows to limit memory consumption of the frame buffer pool. As
the result if compiled with VPX_MAX_ALLOCABLE_MEMORY set codec will fail
if frame resolution requires more memory
This is backported CL aae2183cb58b60d01b8e4e15269ee9f48dd72908 from
aomedia

Tested:
configure --extra-cflags="-DVPX_MAX_ALLOCABLE_MEMORY=536870912"
make
./test_libvpx

BUG=webm:1579

Change-Id: Ic62213b600a7562917d5a339a344ad8db4b6f481

6 years agoMerge "vp9_decodeframe.c: resolve missing declarations"
Johann Koenig [Fri, 21 Dec 2018 21:46:00 +0000 (21:46 +0000)]
Merge "vp9_decodeframe.c: resolve missing declarations"

6 years agoMerge "vp9_highbd_block_error_sse2: resolve missing declarations"
Johann Koenig [Fri, 21 Dec 2018 21:40:49 +0000 (21:40 +0000)]
Merge "vp9_highbd_block_error_sse2: resolve missing declarations"

6 years agoMerge "convolve avx2: resolve missing declarations"
Johann Koenig [Fri, 21 Dec 2018 21:37:53 +0000 (21:37 +0000)]
Merge "convolve avx2: resolve missing declarations"

6 years agoMerge "Improve accuracy of benchmarking"
Elliott Karpilovsky [Fri, 21 Dec 2018 21:31:49 +0000 (21:31 +0000)]
Merge "Improve accuracy of benchmarking"

6 years agofwd_dct32x32 avx2: resolve missing declarations
Johann [Fri, 21 Dec 2018 20:44:49 +0000 (12:44 -0800)]
fwd_dct32x32 avx2: resolve missing declarations

BUG=webm:1584

Change-Id: Iaba854952534a95e710a985acfcab46e093872c2

6 years agofwd_dct32x32 sse2: resolve missing declarations
Johann [Fri, 21 Dec 2018 20:05:24 +0000 (12:05 -0800)]
fwd_dct32x32 sse2: resolve missing declarations

BUG=webm:1584

Change-Id: Ia2d9fcbccbad0c2142a3759e610670b86af0fef4

6 years agovp9_highbd_block_error_sse2: resolve missing declarations
Johann [Fri, 21 Dec 2018 19:59:07 +0000 (11:59 -0800)]
vp9_highbd_block_error_sse2: resolve missing declarations

BUG=webm:1584

Change-Id: I43d051c538bf4a6f6210eefa398dc0901ab8d157

6 years agovp9_decodeframe.c: resolve missing declarations
Johann [Fri, 21 Dec 2018 19:54:21 +0000 (11:54 -0800)]
vp9_decodeframe.c: resolve missing declarations

BUG=webm:1584

Change-Id: Ie0d26b745ab1f5907a6a2dc10fbc5083f3fb0b8d

6 years agoconvolve avx2: resolve missing declarations
Johann [Fri, 21 Dec 2018 19:50:30 +0000 (11:50 -0800)]
convolve avx2: resolve missing declarations

BUG=webm:1584

Change-Id: I5990c0100af83d13f7a4800147473bc997f5e5d1

6 years agoMerge "subpixel_8t sse2: resolve missing declarations"
Johann Koenig [Fri, 21 Dec 2018 19:30:04 +0000 (19:30 +0000)]
Merge "subpixel_8t sse2: resolve missing declarations"