paulwilkins [Fri, 23 Jun 2017 12:37:38 +0000 (13:37 +0100)]
Respond more rapidly to excessive local overshoot.
This patch attempts to address a bug reported for 4K video.
https://b.corp.google.com/issues/
62215394
In this instance a perfect storm of a moderate complexity section
followed by a much easier section where a CGI overlay helped to
suppress film grain noise, followed by a much harder and very grainy
section at the end, cause a massive local rate spike that pushed a chunk
over the upper allowed rate limit.
This patch detects cases where the rate for a frame is much higher than
expected and allows, in this special case, for rapid adjustment of the active
Q range.
For the example chunk in the bug report the target rate was 18Mb/s and the
observed rate was over 37 Mb/s with a surge for the last few frames to over
100Mb/s. This patch brings the overall chunk rate right back down to ~18.2 Mbit/s
and almost completely eliminates the rate spike at the end. (See graphs appended
to bug report)
Also see I108da7ca42f3bc95c5825dd33c9d84583227dac1 which fixes a bug
unearthed during testing of this patch and also has a bearing on high rate
encodes such as 4K.
This patch does have a negative impact on some metrics. Most notably there are
clips in our standard test set where it hurts global psnr (though in many cases it
conversely helps SSIM, FAST SSIM and PSNR-HVS). It is also worth noting that
the clips (and data rates) where there is a big metric impact, are almost all cases
where there is currently a significant overshoot vs the target rate and overall rate
accuracy is greatly improved.
Change-Id: I692311a709ccdb6003e705103de9d05b59bf840a
James Zern [Sun, 2 Jul 2017 03:48:53 +0000 (03:48 +0000)]
Merge "buffer.h: incorrect RandRange results"
Johann [Sat, 1 Jul 2017 15:52:18 +0000 (08:52 -0700)]
buffer.h: incorrect RandRange results
'low' was promoted to unsigned, triggering a ubsan warning
Change-Id: Id49340079d39c105da93cf13e96cf852a93a94ba
James Zern [Sun, 2 Jul 2017 02:38:39 +0000 (02:38 +0000)]
Merge changes I4ed1312f,Id2673eec
* changes:
ppc: Add vpx_idct8x8_64_add_vsx
ppc: Add vpx_idct4x4_16_add_vsx
Alexandra Hájková [Mon, 12 Jun 2017 09:35:50 +0000 (09:35 +0000)]
ppc: Add vpx_idct8x8_64_add_vsx
Change-Id: I4ed1312f365509e0595dcc09890ecb050f6f2069
Alexandra Hájková [Sat, 10 Jun 2017 14:44:46 +0000 (14:44 +0000)]
ppc: Add vpx_idct4x4_16_add_vsx
Change-Id: Id2673eece32027fb245919c7a5c81994a4a19fd8
James Zern [Sat, 1 Jul 2017 18:52:20 +0000 (11:52 -0700)]
highbd_idct8x8_add_sse4: make << of neg. val a multiply
left shifting a negative value is undefined; quiets a ubsan warning.
this is applied to a constant, no change in the generated code.
Change-Id: Ia17a7672d4832463decbc4afd6cd42974d02698e
James Zern [Sat, 1 Jul 2017 01:44:46 +0000 (18:44 -0700)]
fwd_txfm_msa.c: correct vpx_fdct8x8_1_msa prototype
this makes the function compatible with high-bitdepth and fixes test
failures since:
5ac88162b partial fdct test
Change-Id: Ib630694608237f0c515948942e05dbea259ba338
James Zern [Fri, 30 Jun 2017 22:05:32 +0000 (22:05 +0000)]
Merge "gen_msvs_sln: fix solution version for 2015/17"
James Zern [Fri, 30 Jun 2017 21:57:16 +0000 (21:57 +0000)]
Merge "cosmetics,vp9/encoder: s/txm/txfm/"
Jerome Jiang [Fri, 30 Jun 2017 21:55:00 +0000 (21:55 +0000)]
Merge "vp9: Adjust condition for checking intra mode."
Marco [Thu, 29 Jun 2017 00:03:53 +0000 (17:03 -0700)]
vp9: Adjust condition for checking intra mode.
For nonrd_pickmode: add condition for checking
intra mode if the sb content state is VeryHighSad.
Reduces artifacts when sudden change in content.
Metrics on RTC/RTC_derf neutral (small gain).
No speed loss observed.
Change-Id: I07006d28fd2dc06c1d06b07630102b0fece50c40
Linfeng Zhang [Fri, 30 Jun 2017 20:49:19 +0000 (20:49 +0000)]
Merge changes I5d038b4f,I9d00d1dd,I0722841d,I1f640db7
* changes:
Add vpx_highbd_idct8x8_{12, 64}_add_sse4_1
sse2: Add transpose_32bit_4x4x2() and update transpose_32bit_4x4()
Refactor highbd idct 4x4 sse4.1 code and add highbd_inv_txfm_sse4.h
Refactor vpx_idct8x8_12_add_ssse3() and add inv_txfm_ssse3.h
James Zern [Fri, 30 Jun 2017 19:36:46 +0000 (12:36 -0700)]
gen_msvs_sln: fix solution version for 2015/17
these are rewritten to 12; 15 causes the open to fail under vs2017
Change-Id: I9c3fd38b632180fa10f1713d4a5d9d15aefd8569
James Zern [Fri, 30 Jun 2017 19:02:05 +0000 (19:02 +0000)]
Merge changes from topic 'rm-dec-frame-parallel'
* changes:
vp9_dx,vpx_codec_alg_priv: rm *worker_id*
vp9_dx,vpx_codec_alg_priv: rm *cache*
vp9_dx,vpx_codec_alg_priv: rm frame_parallel_decode
Johann [Fri, 30 Jun 2017 14:37:20 +0000 (07:37 -0700)]
buffer.h: use stride_ instead of stride()
Change-Id: Ib51231349bf0ff3e23672762dc7bfa49b5fe4083
Johann [Wed, 28 Jun 2017 21:33:38 +0000 (14:33 -0700)]
testing: ranges for random values
Add a method to acm_random.h to generate ranges of values
Add a way to call that method to buffer.h
Adjust dct_[partial_]test.cc to use it.
Change-Id: I8c23ae9d27612c28f050b0e44c41cb4ad2494086
Johann Koenig [Fri, 30 Jun 2017 01:00:07 +0000 (01:00 +0000)]
Merge changes Id5beb35d,I2945fe54,Ib0f3cfd6,I78a2eba8
* changes:
partial fdct neon: add 32x32_1
partial fdct neon: add 16x16_1
partial fdct neon: add 4x4_1
partial fdct neon: move 8x8_1 and enable hbd tests
Linfeng Zhang [Thu, 29 Jun 2017 23:30:32 +0000 (16:30 -0700)]
Add vpx_highbd_idct8x8_{12, 64}_add_sse4_1
BUG=webm:1412
Change-Id: I5d038b4fa842ce2f6b9bd5c8c44c70647bda9591
Linfeng Zhang [Wed, 28 Jun 2017 23:29:40 +0000 (16:29 -0700)]
sse2: Add transpose_32bit_4x4x2() and update transpose_32bit_4x4()
BUG=webm:1412
Change-Id: I9d00d1ddbd724fd5f825fd974c4cf46a9bca6cb3
Linfeng Zhang [Wed, 28 Jun 2017 23:17:39 +0000 (16:17 -0700)]
Refactor highbd idct 4x4 sse4.1 code and add highbd_inv_txfm_sse4.h
Also clean highbd_inv_txfm_sse2.h
BUG=webm:1412
Change-Id: I0722841d824ce602874019bd9779b10d49d10c0b
Linfeng Zhang [Wed, 28 Jun 2017 21:36:23 +0000 (14:36 -0700)]
Refactor vpx_idct8x8_12_add_ssse3() and add inv_txfm_ssse3.h
BUG=webm:1412
Change-Id: I1f640db71ad4c644b7521305a781f2218eb1ba9d
James Zern [Tue, 27 Jun 2017 05:12:57 +0000 (22:12 -0700)]
vp9_dx,vpx_codec_alg_priv: rm *worker_id*
+ available_threads
these are unused with the removal of frame_parallel_decode
BUG=webm:1395
Change-Id: I59c5075542a5a74d4a539c213682f566b005f5a6
James Zern [Tue, 27 Jun 2017 04:59:12 +0000 (21:59 -0700)]
vp9_dx,vpx_codec_alg_priv: rm *cache*
these fields are unused with the removal of frame_parallel_decode
BUG=webm:1395
Change-Id: Ia3821f7fb81d17b20033b094e5265b1030ee4030
James Zern [Tue, 27 Jun 2017 04:47:18 +0000 (21:47 -0700)]
vp9_dx,vpx_codec_alg_priv: rm frame_parallel_decode
this field has been 0 since:
01d23109a vp9: make VPX_CODEC_USE_FRAME_THREADING a no-op
BUG=webm:1395
Change-Id: I15448e9401e15329b54c6878dda033b17be5ec6b
James Zern [Thu, 29 Jun 2017 23:21:18 +0000 (23:21 +0000)]
Merge changes from topic 'rm-dec-frame-parallel'
* changes:
rm vp9_frame_parallel_test.cc
test_vector_test: rm ref to VPX_CODEC_USE_FRAME_THREADING
James Zern [Tue, 27 Jun 2017 02:26:22 +0000 (19:26 -0700)]
rm vp9_frame_parallel_test.cc
VPX_CODEC_USE_FRAME_THREADING was made a no-op in:
01d23109a vp9: make VPX_CODEC_USE_FRAME_THREADING a no-op
and the tests in this file have been disabled since:
6ab0870d4 disable VP9MultiThreadedFrameParallel tests
BUG=webm:1395
Change-Id: I2c7a250acb65cf9522cf8a7bb724bb92070e41c6
James Zern [Tue, 27 Jun 2017 02:18:14 +0000 (19:18 -0700)]
test_vector_test: rm ref to VPX_CODEC_USE_FRAME_THREADING
this was made a no-op in:
01d23109a vp9: make VPX_CODEC_USE_FRAME_THREADING a no-op
and the test hitting this branch has been disabled since:
6ab0870d4 disable VP9MultiThreadedFrameParallel tests
rename the test to VP9MultiThreaded to exercise the tile-based threading
BUG=webm:1395
Change-Id: I35564a75eb5a7d7f7ccb923133b1b07295201f4c
James Zern [Thu, 29 Jun 2017 22:07:55 +0000 (15:07 -0700)]
cosmetics,vp9/encoder: s/txm/txfm/
txfm is more commonly used as an abbreviation through the codebase
Change-Id: I86fd90ef132468f9da270091c05daa1f5a49ece2
James Zern [Thu, 29 Jun 2017 21:42:03 +0000 (14:42 -0700)]
dct_partial_test,fwd_txfm: change << to *
left shift of a negative number is undefined in C; quiets a ubsan
warning
Change-Id: Ib1624ad5326ac8e0eead9348468ef7fe5d4df9a4
Jerome Jiang [Tue, 27 Jun 2017 20:20:02 +0000 (13:20 -0700)]
vp9: Remove avg2x2 in skin detection and clean up.
Change-Id: I6510e36866138f8ac4cb82c207e58e0b9522e499
Johann [Fri, 23 Jun 2017 01:36:08 +0000 (18:36 -0700)]
partial fdct neon: add 32x32_1
Always return an int32_t. Since it needs to be moved to a register for
shifting, this doesn't really penalize the smaller transforms.
The values could potentially be summed and shifted in place.
BUG=webm:1424
Change-Id: Id5beb35d79c7574ebd99285fc4182788cf2bb972
Johann [Fri, 23 Jun 2017 01:22:27 +0000 (18:22 -0700)]
partial fdct neon: add 16x16_1
For the 8x8_1, the highbd output fit nicely in the existing function. 12
bit input will overflow this implementation of 16x16_1.
BUG=webm:1424
Change-Id: I2945fe5478b18f996f1a5de80110fa30f3f4e7ec
Johann [Fri, 23 Jun 2017 01:12:28 +0000 (18:12 -0700)]
partial fdct neon: add 4x4_1
BUG=webm:1424
Change-Id: Ib0f3cfd6116fc1f5a99acb8bfd76e25b90177ffc
Johann [Fri, 23 Jun 2017 01:01:23 +0000 (18:01 -0700)]
partial fdct neon: move 8x8_1 and enable hbd tests
The function was originally written with HBD in mind. Enable it and
configure the tests.
BUG=webm:1424
Change-Id: I78a2eba8d4d9d59db98a344ba0840d4a60ebe9a1
Johann Koenig [Wed, 28 Jun 2017 22:37:00 +0000 (22:37 +0000)]
Merge changes Ib454762d,I966650df,Ie126553e,I068f06c6,Icb72a94e
* changes:
sad neon: rewrite 64x64 and add 64x32
sad neon: rewrite 32x32, add 32x16 and 32x64
sad neon: rewrite 16x8, 16x16, add 16x32
sad neon: rewrite 8x8 and 8x16
sad neon: rewrite 4x4 and add 4x8
Johann Koenig [Wed, 28 Jun 2017 22:36:05 +0000 (22:36 +0000)]
Merge "buffer.h: Only allow Init() to be called once."
Johann Koenig [Wed, 28 Jun 2017 22:34:53 +0000 (22:34 +0000)]
Merge "partial fdct test"
Johann [Fri, 23 Jun 2017 00:12:27 +0000 (17:12 -0700)]
partial fdct test
Test the _1 variant of the fdct, which simply sums the block and applies
a modifying shift based on the block size.
BUG=webm:1424
Change-Id: Ic80d6008abba0c596b575fa0484d5b5855321468
Johann [Tue, 27 Jun 2017 22:17:31 +0000 (15:17 -0700)]
sad neon: rewrite 64x64 and add 64x32
BUG=webm:1425
Change-Id: Ib454762d1c61b05a98324fe81ad58c9e09784717
Johann [Tue, 27 Jun 2017 21:33:28 +0000 (14:33 -0700)]
sad neon: rewrite 32x32, add 32x16 and 32x64
BUG=webm:1425
Change-Id: I966650df7e3face93e1e771634d1cc5458a35f85
Johann [Tue, 27 Jun 2017 21:15:58 +0000 (14:15 -0700)]
sad neon: rewrite 16x8, 16x16, add 16x32
BUG=webm:1425
Change-Id: Ie126553e5fffcdfaf3d82a85b368ac10ce9ab082
Johann [Tue, 27 Jun 2017 20:02:28 +0000 (13:02 -0700)]
sad neon: rewrite 8x8 and 8x16
BUG=webm:1425
Change-Id: I068f06c67b841f09ea07c04ada0c2f1706102138
Johann [Tue, 27 Jun 2017 19:44:54 +0000 (12:44 -0700)]
sad neon: rewrite 4x4 and add 4x8
The previous implementation loaded 8 values (discarding half)
BUG=webm:1425
Change-Id: Icb72a94e2557a4ee2db7091266ab58fd92f72158
Jerome Jiang [Wed, 28 Jun 2017 18:01:46 +0000 (18:01 +0000)]
Merge "vp9: compute skinmap only once before encoding."
Johann [Wed, 7 Jun 2017 19:25:05 +0000 (12:25 -0700)]
buffer.h: Only allow Init() to be called once.
Change-Id: I041c8b6f314802833c5287a176dbfeec9461b08e
Marco [Wed, 28 Jun 2017 03:14:26 +0000 (20:14 -0700)]
vp9: Speed >= 8: Remove logic on reducing subpel.
Existing logic was only affecting resolutions above 720p.
Needs more testing for reducing subpel for speed >= 8.
No change on RTC metrics.
Change-Id: I2f4bf9f25891614aafa9a86aa5a5063a3ccfce4d
James Zern [Tue, 27 Jun 2017 23:30:16 +0000 (23:30 +0000)]
Merge "highbd_quantize_fp_32x32: normalize abs_qcoeff type"
Jerome Jiang [Tue, 27 Jun 2017 20:17:59 +0000 (13:17 -0700)]
vp9: compute skinmap only once before encoding.
This could save some cycles since skin detection is used in multiple
places in vp9.
1~2% speed up on ARM.
Change-Id: I86b731945f85215bbb0976021cd0f2040ff2687c
Linfeng Zhang [Mon, 26 Jun 2017 21:57:41 +0000 (14:57 -0700)]
Update vpx_idct8x8_12_add_ssse3()
Change-Id: I0f38801c391db87ddae168602a786a062cd34b1d
Linfeng Zhang [Mon, 26 Jun 2017 21:48:49 +0000 (21:48 +0000)]
Merge "Update load_input_data() in x86"
Jerome Jiang [Mon, 26 Jun 2017 21:32:51 +0000 (21:32 +0000)]
Merge "vp8: Clean up skinmap debugging codes."
Linfeng Zhang [Fri, 23 Jun 2017 23:04:27 +0000 (16:04 -0700)]
Update load_input_data() in x86
Split to load_input_data4() and load_input_data8().
Use pack with signed saturation instruction for high bitdepth.
Change-Id: Icda3e0129a6fdb4a51d1cafbdc652ae3a65f4e06
James Zern [Thu, 22 Jun 2017 03:16:26 +0000 (20:16 -0700)]
roll libwebm snapshot
git log --no-merges --oneline 9732ae9..a97c484
9096786 mkvparser: fix float conversion warning
84e8257 disable -Wdeprecated-declarations in legacy code
a98f495 AddGenericFrame: fix memory leak on failure
da131dd AddCuePoint: fix memory leak on failure
b0cea9c Add(Audio|Video)Track: fix memory leak on failure
5261a67 webm_info: check vp9 ParseUncompressedHeader return
85f7e2e webm_info,PrintVP9Info: validate alt ref sizes
9b97ca1 vp9_header_parser_tests: check parser return
300d6d8 CuePoint::Find: check Track pointer
50c44bb webm_info,OutputCues: fix indexing of tracks
a0d27f0 mkvparser,Block::Parse: remove incorrect assert
784fc1b vttdemux,CloseFiles: check file pointer before closing
b4522c1 .gitattributes: force mkv/webm to be treated as binary
a118f3d Add test for projection parse failures.
d398479 Add test for primary chromaticity parse failures.
9bbec4c Fix permissions on test file.
2cef4d5 mkvparser:Parse: s/FLT_MIN/-FLT_MAX/
35a3c88 mkvmuxer: Turn off estimate_file_duration_ by default
5a41830 mkvparser: Avoid double free when Chromaticity parse fails.
67e3ffa mkvparser: Avoid casts of values too large for float in
Projection elements.
87bcddf vttdemux::ChapterAtomParser: check for NULL display string
a534a24 Update .gitignore
a0d67d0 mkvmuxer: Fix hard-coded data size in EbmlElementSize
c36112c mkvparser: #include sys/type.h
686664e Fix cmake generation warnings on Windows.
2b2c196 cmake: Fix required flag check.
166e40f Cmake refactor.
9fb774a Add missing include in webm2pes.cc.
4956b2d mkvmuxer: Force new clusters when audio queue gets too long.
54f1559 cmake: Cache results of CXX flag tests.
81c73fc mkvparser: Avoid alloc failures in SeekHead::Parse.
Change-Id: Ib81b1772ec81e7af3852dcfef2d312416f6db53d
Linfeng Zhang [Sat, 24 Jun 2017 01:15:13 +0000 (01:15 +0000)]
Merge "Add vpx_highbd_idct4x4_16_add_sse4_1()"
Urvang Joshi [Sat, 24 Jun 2017 00:58:24 +0000 (00:58 +0000)]
Merge "Enable greedy version of optimize_b() in VP9 by default."
Linfeng Zhang [Sat, 24 Jun 2017 00:51:07 +0000 (00:51 +0000)]
Merge "Cosmetics, 8x8 idct SSE2 optimization"
Urvang Joshi [Sat, 24 Jun 2017 00:04:58 +0000 (17:04 -0700)]
Enable greedy version of optimize_b() in VP9 by default.
Improvements were already mentioned in the previous patch:
https://chromium-review.googlesource.com/#/c/531675/
Change-Id: I4906ab1c61c25a815bdeb986016fad6dcb69eb71
James Zern [Fri, 23 Jun 2017 22:48:40 +0000 (22:48 +0000)]
Merge "variance_test: move Subpel* from tuples to TestParams"
Marco Paniconi [Fri, 23 Jun 2017 21:59:31 +0000 (21:59 +0000)]
Merge "vp9: Use scene detection for CBR mode."
Linfeng Zhang [Fri, 23 Jun 2017 21:27:18 +0000 (14:27 -0700)]
Add vpx_highbd_idct4x4_16_add_sse4_1()
BUG=webm:1412
Change-Id: Ie33482409351a01be4e89466b0441834eb1e905a
Linfeng Zhang [Wed, 21 Jun 2017 22:18:17 +0000 (15:18 -0700)]
Cosmetics, 8x8 idct SSE2 optimization
Change-Id: Id21fa94fd323e36cd19a2d890bf4a0cafb7d964d
Jerome Jiang [Fri, 23 Jun 2017 20:59:54 +0000 (13:59 -0700)]
vp8: Clean up skinmap debugging codes.
Use the computed skinmap.
Change-Id: I8aabb5922ef5190ec85b9e01807cb79b4803b925
James Zern [Fri, 23 Jun 2017 20:00:50 +0000 (20:00 +0000)]
Merge "datarate_test: rename thread -> Thread in test name"
James Zern [Fri, 23 Jun 2017 07:26:00 +0000 (00:26 -0700)]
variance_test: move Subpel* from tuples to TestParams
this normalizes these tests with the regular variance ones both in
implementation and test list output
Change-Id: I387aea81456f94b8223b8fb2a28cab94bc1aa9d5
Marco [Thu, 22 Jun 2017 21:59:27 +0000 (14:59 -0700)]
vp9: Use scene detection for CBR mode.
Use the scene detection for CBR mode, and use it to reset the
rate control if large source sad is detected and rate
correctioni fact/QP is at minimum state.
Avoids large frame sizes after big content change following
low content period.
Only affects CBR mode for 1 pass at speeds 5, 6, 7.
Change-Id: I56dd853478cd5849b32db776e9221e258998d874
Jerome Jiang [Fri, 23 Jun 2017 17:17:01 +0000 (17:17 +0000)]
Merge "vp8: Compute skinmap only once before encoding."
James Zern [Fri, 23 Jun 2017 05:44:24 +0000 (05:44 +0000)]
Merge changes from topic 'missing-proto'
* changes:
onyxd_int.h: add missing prototypes
onyxd.h: add vp8dx_references_buffer prototype
vp[89],vpx_dsp: add missing includes
vp8,encodeframe.h: correct prototypes
vp8: add temporal_filter.h
add picklpf.h
add ethreading.h
vp8,bitstream.h: add missing prototypes
vp8: remove vp8_fast_quantize_b_mmx
vp8,loopfilter_filters: make some functions static
vp9_ratectrl: make adjust_gf_boost_lag_one_pass_vbr static
vp9_encodeframe: make scale_part_thresh_sumdiff static
vp9_alt_ref_aq: correct vp9_alt_ref_aq_create proto
tiny_ssim: make some functions static
James Zern [Fri, 16 Jun 2017 23:16:05 +0000 (16:16 -0700)]
onyxd_int.h: add missing prototypes
vp8cx_init_de_quantizer, vp8_mb_init_dequantizer
quiets -Wmissing-prototypes
Change-Id: Ib63d14caf0144eff31a75b7cdb667b7e1f9d83ae
Johann Koenig [Fri, 23 Jun 2017 01:57:59 +0000 (01:57 +0000)]
Merge "fdct32x32 neon implementation"
Jerome Jiang [Wed, 21 Jun 2017 22:02:31 +0000 (15:02 -0700)]
vp8: Compute skinmap only once before encoding.
Get ready for other uses (i.e. cyclic refresh).
Then use it when needed.
Change-Id: Id0519a9921045e5fb7f3badb54e9f04e903f28f9
Marco Paniconi [Thu, 22 Jun 2017 22:18:47 +0000 (22:18 +0000)]
Merge "vp9: Add high source sad to content state."
Linfeng Zhang [Thu, 22 Jun 2017 21:42:23 +0000 (21:42 +0000)]
Merge changes I783c5f4f,I365f8e53,I5dac0e98
* changes:
Clean vpx_idct16x16_256_add_sse2()
Update vpx_idct{8x8,16x16,32x32}_1_add_sse2()
Clean 32x32 full idct sse2 and ssse3 code
Paul Wilkins [Thu, 22 Jun 2017 16:30:39 +0000 (16:30 +0000)]
Merge "Fix int overflow in rate control for high bit rates."
Johann [Fri, 16 Jun 2017 20:14:01 +0000 (13:14 -0700)]
fdct32x32 neon implementation
Almost 3x faster in constrained loop testing. Over 10x faster in HBD
builds.
BUG=webm:1424
Change-Id: I2b7f8453e1d4ada63cde729d8115d684c4a71ff9
paulwilkins [Wed, 21 Jun 2017 16:26:20 +0000 (17:26 +0100)]
Fix int overflow in rate control for high bit rates.
Fix misplaced cast that caused an overflow and incorrect rate adaptation
behavior for high data rates. This in particular will have affected 4k encodes
but could also have come into play for some higher rate 1080p cases.
In our standard test sets the quality impact is small though several high rate
clips show improved rate accuracy. This can also impact the number of recode
loop hits and on one problem 4k clip the encode time for speeds 0 and 1 was
reduced by >25%
Change-Id: I108da7ca42f3bc95c5825dd33c9d84583227dac1
Marco [Thu, 22 Jun 2017 03:39:59 +0000 (20:39 -0700)]
vp9: Add high source sad to content state.
Use it to limit NEWMV early exit in nonrd pickmode
Small change in RTC metrics, has some improvement
for high motion clips.
Change-Id: I1d89fd955e1b3486d5fb07f4472eeeecd553f67f
Marco Paniconi [Thu, 22 Jun 2017 03:27:46 +0000 (03:27 +0000)]
Merge "vp9: Adjustments for aq-mode and pickmode for speed >= 8."
James Zern [Thu, 22 Jun 2017 03:05:31 +0000 (20:05 -0700)]
datarate_test: rename thread -> Thread in test name
this is consistent with other threaded tests and ensures gtest_filters
meant to operate on these pick them up
Change-Id: I99ce53720553a22c4b9905a2882273c2be2c031b
James Zern [Thu, 22 Jun 2017 02:01:10 +0000 (02:01 +0000)]
Merge "vp8_dx_iface: clear -Wclobbered warnings"
James Zern [Fri, 16 Jun 2017 23:15:28 +0000 (16:15 -0700)]
onyxd.h: add vp8dx_references_buffer prototype
quiets -Wmissing-prototypes
Change-Id: I6bee535f3fb67e54a390266d787a5a92127aeadc
James Zern [Fri, 16 Jun 2017 23:12:20 +0000 (16:12 -0700)]
vp[89],vpx_dsp: add missing includes
quiets -Wmissing-prototypes
Change-Id: I841cfc019d592f2bc6b3fec5818051a31f4c53b5
James Zern [Fri, 16 Jun 2017 09:12:18 +0000 (02:12 -0700)]
vp8,encodeframe.h: correct prototypes
+ add missing include
quiets -Wmissing-prototypes
Change-Id: I64af0368ba3d7f1d4de22a5887b631bb2cf15b8a
James Zern [Fri, 16 Jun 2017 09:09:47 +0000 (02:09 -0700)]
vp8: add temporal_filter.h
quiets -Wmissing-prototypes
Change-Id: Iffa77467720affe030de5335e9335232b9e70af1
James Zern [Fri, 16 Jun 2017 08:51:19 +0000 (01:51 -0700)]
add picklpf.h
quiets -Wmissing-prototypes
Change-Id: Ic24164aa1f86fe99a493a633d64606e6f44ecdc1
James Zern [Fri, 16 Jun 2017 08:48:55 +0000 (01:48 -0700)]
add ethreading.h
quiets -Wmissing-prototypes in encodeframe.c
Change-Id: Ic216d0bdd6130eac44f2183639a715b2f1088ebe
James Zern [Fri, 16 Jun 2017 08:45:11 +0000 (01:45 -0700)]
vp8,bitstream.h: add missing prototypes
quiets -Wmissing:prototypes
Change-Id: I835a80eddca2b16280780e18558c321df3272c43
James Zern [Fri, 16 Jun 2017 08:33:57 +0000 (01:33 -0700)]
vp8: remove vp8_fast_quantize_b_mmx
and vp8_fast_quantize_b_impl_mmx; this was never enabled in rtcd
an sse2 version exists so there isn't much reason to keep a mmx
implementation around.
Change-Id: I8b3ee7f46ba194ffa0d0a6225a0f299f2a4dea90
James Zern [Fri, 16 Jun 2017 07:58:49 +0000 (00:58 -0700)]
vp8,loopfilter_filters: make some functions static
quiets -Wmissing-prototypes
Change-Id: Ie5b00537f64a05e68a38dc558463691523988994
James Zern [Fri, 16 Jun 2017 07:53:05 +0000 (00:53 -0700)]
vp9_ratectrl: make adjust_gf_boost_lag_one_pass_vbr static
quiets -Wmissing-prototypes
Change-Id: I72d899c2d8de1ddc52d90ac081f2629374b3a6e9
James Zern [Fri, 16 Jun 2017 07:51:42 +0000 (00:51 -0700)]
vp9_encodeframe: make scale_part_thresh_sumdiff static
quiets -Wmissing-prototypes
Change-Id: I696223d75860edba13c6b6f38c1f8db353a6f812
James Zern [Fri, 16 Jun 2017 07:49:53 +0000 (00:49 -0700)]
vp9_alt_ref_aq: correct vp9_alt_ref_aq_create proto
quiets -Wmissing-prototypes
Change-Id: Ib2d4f294f1982739bb2ac98155e789e040d309a1
James Zern [Thu, 22 Jun 2017 01:56:10 +0000 (18:56 -0700)]
highbd_quantize_fp_32x32: normalize abs_qcoeff type
use an int to quiet an unsigned rollover warning similar to:
25110f283 Fix an ubsan warning: vp9_quantizer.c
Change-Id: Iedecb79a17249bc18f10c0920f88cf704920f12b
Marco [Thu, 22 Jun 2017 00:30:53 +0000 (17:30 -0700)]
vp9: Put skin detection usage around cpi flag.
Skin detection usage in choose_partitioning should be
around the cpi->use_skin_detection.
Change-Id: I6986179af9ce94c60c0974d66c311fc07cc04cfe
Marco [Wed, 21 Jun 2017 22:24:56 +0000 (15:24 -0700)]
vp9: Adjustments for aq-mode and pickmode for speed >= 8.
Adjust the threshold for turning off cyclic refresh for high motion,
and avoid testing golden in nonrd pickmode for speed >= 8 if
golden refresh was long ago.
No change/neutral on RTC metrics.
Change-Id: I40959b8d9637f3553e7458bbabd8c6024c2c09c0
James Zern [Wed, 21 Jun 2017 01:34:13 +0000 (18:34 -0700)]
vp8_dx_iface: clear -Wclobbered warnings
with gcc 6.x
Change-Id: Ib2070421603a6777892d4ea01f4b0921696f38b3
Johann Koenig [Wed, 21 Jun 2017 21:16:23 +0000 (21:16 +0000)]
Merge "dct tests: align InvAccuracyCheck buffers"
Linfeng Zhang [Tue, 20 Jun 2017 01:10:38 +0000 (18:10 -0700)]
Clean vpx_idct16x16_256_add_sse2()
Remove macro IDCT16 which is redundant with idct16_8col().
Change-Id: I783c5f4fda038a22d5ee5c2b22e8c2cdfb38432c
Linfeng Zhang [Thu, 15 Jun 2017 23:48:40 +0000 (16:48 -0700)]
Update vpx_idct{8x8,16x16,32x32}_1_add_sse2()
Change-Id: I365f8e53d9ccd028cef0f561d4de9e5916278609
Linfeng Zhang [Thu, 15 Jun 2017 23:06:53 +0000 (16:06 -0700)]
Clean 32x32 full idct sse2 and ssse3 code
vpx_idct32x32_1024_add_ssse3() is actually a sse2 function and faster
than vpx_idct32x32_1024_add_sse2(). Replace the slow one. All are
code relocations, no new code.
Change-Id: I5dac0e98cc411a4ce05660406921118986638d19