]> granicus.if.org Git - libvpx/log
libvpx
5 years agoDeclare buffer_alloc_sz and frame_size as size_t.
Wan-Teh Chang [Tue, 20 Nov 2018 17:38:21 +0000 (09:38 -0800)]
Declare buffer_alloc_sz and frame_size as size_t.

Change-Id: Id632ddcbfb0bd3a4258aebdfb98f9dc2e4d04438

5 years agoMerge "Validate the |border| parameter earlier."
Wan-Teh Chang [Tue, 20 Nov 2018 18:47:19 +0000 (18:47 +0000)]
Merge "Validate the |border| parameter earlier."

5 years agoMerge changes I9b5f8b08,Ic90b09e5,Ib2380aaf,I3ad3af49,Ib5d1a411
Angie Chiang [Tue, 20 Nov 2018 18:02:46 +0000 (18:02 +0000)]
Merge changes I9b5f8b08,Ic90b09e5,Ib2380aaf,I3ad3af49,Ib5d1a411

* changes:
  Fix scan_build_warnings in comp_avg_pred_test.cc
  Fix scan_build warnings in convolve_test.cc
  Fix scan_build warnings in idct_test.cc
  Fix scan_build warnings in tiny_ssim.c
  Fix scan_build warning in dct_partial_test.cc

5 years agoValidate the |border| parameter earlier.
Wan-Teh Chang [Tue, 20 Nov 2018 17:30:54 +0000 (09:30 -0800)]
Validate the |border| parameter earlier.

vpx_realloc_frame_buffer() should validate the |border| parameter
earlier, before it allocates the buffer and preferrably before it uses
|border|.

This backports libaom commit 2860b3ae8b764bdfa2b8c7a06df2673e907b993f:
https://aomedia-review.googlesource.com/c/aom/+/74324

Change-Id: Ib9d59d74e27430ccb1e83c6ad5424aff9672c989

5 years agoFix scan_build_warnings in comp_avg_pred_test.cc
Angie Chiang [Mon, 19 Nov 2018 19:31:25 +0000 (11:31 -0800)]
Fix scan_build_warnings in comp_avg_pred_test.cc

BUG=webm:1575

Change-Id: I9b5f8b08d23fd62ff6400605023f33e3890b0f2d

5 years agoFix scan_build warnings in convolve_test.cc
Angie Chiang [Mon, 19 Nov 2018 19:28:19 +0000 (11:28 -0800)]
Fix scan_build warnings in convolve_test.cc

BUG=webm:1575

Change-Id: Ic90b09e596fa68bc516237d31b7f4540831becfd

5 years agoFix scan_build warnings in idct_test.cc
Angie Chiang [Mon, 19 Nov 2018 18:35:41 +0000 (10:35 -0800)]
Fix scan_build warnings in idct_test.cc

BUG=webm:1575

Change-Id: Ib2380aaf8c9f9bc7db87f36701a2792781beb44b

5 years agoFix scan_build warnings in tiny_ssim.c
Angie Chiang [Mon, 19 Nov 2018 18:25:35 +0000 (10:25 -0800)]
Fix scan_build warnings in tiny_ssim.c

BUG=webm:1575

Change-Id: I3ad3af49d778f102e9152dcb1eb9d5c048756cdf

5 years agoFix scan_build warning in dct_partial_test.cc
Angie Chiang [Mon, 19 Nov 2018 18:23:02 +0000 (10:23 -0800)]
Fix scan_build warning in dct_partial_test.cc

BUG=webm:1575

Change-Id: Ib5d1a411a223a93d1795ebe1af12e67d64fadabe

5 years agoMinor simplifications
Yaowu Xu [Tue, 20 Nov 2018 00:57:02 +0000 (16:57 -0800)]
Minor simplifications

Change-Id: I231e863f838f449335236c174b74bd33dfdd8b19

5 years agoMerge "Fix oob in vpx_setup_noise"
Jerome Jiang [Tue, 20 Nov 2018 00:11:21 +0000 (00:11 +0000)]
Merge "Fix oob in vpx_setup_noise"

5 years agovp9: Fix to the svc buffer update
Marco Paniconi [Mon, 19 Nov 2018 20:24:52 +0000 (12:24 -0800)]
vp9: Fix to the svc buffer update

Condition the pre-encode buffer update based on
TS diff on temporal layers = 1 for now, as some
fix is needed for the case where #temporal_layers > 1.

Change-Id: I58163b956db415217e4687a31f8ba110545b09f5

5 years agoMerge "Optimize RDMULT values for key frames"
Yaowu Xu [Mon, 19 Nov 2018 18:47:21 +0000 (18:47 +0000)]
Merge "Optimize RDMULT values for key frames"

5 years agoFix oob in vpx_setup_noise
Jerome Jiang [Wed, 7 Nov 2018 00:12:11 +0000 (16:12 -0800)]
Fix oob in vpx_setup_noise

Array index wasn't checked on boundary.

BUG=webm:1572

Change-Id: I55a93c024af77a4fd904b0e992d5587a142d66a4

5 years agoWork around ARM64 Windows SDK arm_neon.h quirk
Jon Kunkee [Thu, 15 Nov 2018 09:27:42 +0000 (01:27 -0800)]
Work around ARM64 Windows SDK arm_neon.h quirk

Since the Windows SDK has an ARM32-only arm_neon.h, files including it
during ARM64 Windows builds need to be redirected to arm64_neon.h.

Instead of editing many files to include ARM64-Windows-specific ifdef
logic, this commit introduces an ARM64-Windows-specific version of
arm_neon.h that performs the needed redirection and lands earlier in
the header search path than the ARM32-only arm_neon.h.

Change-Id: Idc63947a238ca1bd0c479d8f4ad68950487947c6

5 years agoMerge "Add ARM64 support to VS project generation"
Jon Kunkee [Fri, 16 Nov 2018 22:26:15 +0000 (22:26 +0000)]
Merge "Add ARM64 support to VS project generation"

5 years agoOptimize RDMULT values for key frames
Yaowu Xu [Fri, 9 Nov 2018 20:46:07 +0000 (12:46 -0800)]
Optimize RDMULT values for key frames

Encoding of 5 frames of each sequence using key frames only, the new
values help the metrics by:

         PSNR     SSIM       PSNR-HVS
lowres:  -0.870%  -0.140%    -0.892%
midres:  -0.899%  -0.146%    -1.052%
hdres:   -0.944%  -0.115%    -1.028%

Tested q range:
2 6 10 14 18 22 26 30 34 38 42 46 50 54 58 62

Change-Id: I5b0dda366d589f52987c5bad11a1f95c4e6dc1a5

5 years agovp9: Reorganize the buffer level for cbr mode
Marco Paniconi [Mon, 12 Nov 2018 06:09:31 +0000 (22:09 -0800)]
vp9: Reorganize the buffer level for cbr mode

Refactor the code with some changes.

Split update into two parts: move the fillup
(with per-frame-bandwidth) before the encoding, and
keep the leaking part (with encoded_frame_size) after
the encoding (postencode).

For SVC with ref_frame_config usage: allow usage of timestamp
delta for the fillup part of buffer, instead of the (average)
framerate passed in via the duration.

Moving the buffer fillup (+per-frame-bandwidth) part to the
pre-encode causes some difference in performance
(since buffer level affects active_worst/QPand frame-dropping),
but the change is observed to be small.
Made small adjustment to active_worst_quality to compensate.

Adjust some thresholds in datarate tests.

Change-Id: I81a5562367034f318cffd451304bc4a34bf02a1d

5 years agoMerge "quantize: use aarch64 vmaxv"
Johann Koenig [Fri, 16 Nov 2018 14:57:30 +0000 (14:57 +0000)]
Merge "quantize: use aarch64 vmaxv"

5 years agoMerge "Fix arf boost factor calculation for intermediate ARFs"
Jingning Han [Fri, 16 Nov 2018 00:07:22 +0000 (00:07 +0000)]
Merge "Fix arf boost factor calculation for intermediate ARFs"

5 years agoMerge changes Ib9d16a4b,I6061f38c
Angie Chiang [Thu, 15 Nov 2018 23:40:59 +0000 (23:40 +0000)]
Merge changes Ib9d16a4b,I6061f38c

* changes:
  Refactor av1_nb_mvs_inconsistency()
  Recompute mv inconsistency after mv search is done

5 years agoAdd ARM64 support to VS project generation
Jon Kunkee [Thu, 15 Nov 2018 21:01:04 +0000 (13:01 -0800)]
Add ARM64 support to VS project generation

Windows builds can use msbuild.exe to build libvpx through a set of
generated Visual Studio project files. This commit adds awareness of
ARM64 Windows to this process by adding ARM64 configurations and
setting msbuild properties to consume the right SDK version.

Change-Id: I1bbc01cbe7be3d53c4e1af6cd96c6e4170aa4915

5 years agoAdd ARM64 Windows to configure scripts
Jon Kunkee [Mon, 12 Nov 2018 21:40:56 +0000 (13:40 -0800)]
Add ARM64 Windows to configure scripts

In order to correctly configure for Windows 10 on ARM, this change adds
a --target value arm64-win64-vs15 to ./configure and adds feature
enable/disable logic for the new platform.

This is merely sufficient for Chromium targeting ARM64 Windows.

Bug: 893460
Change-Id: I46194286f63104bdf6ac57d719fdf1e5d5fa72c8

5 years agoFix arf boost factor calculation for intermediate ARFs
Jingning Han [Thu, 15 Nov 2018 05:02:03 +0000 (21:02 -0800)]
Fix arf boost factor calculation for intermediate ARFs

Need to offset the forward range by 1 to include the stats for
the current frame itself.

Change-Id: I3b5171b7edef51ec4e97e4e0542ca58af5ce1416

5 years agoMerge "Disable tpl model in GF-only GOP structure"
Jingning Han [Thu, 15 Nov 2018 05:01:04 +0000 (05:01 +0000)]
Merge "Disable tpl model in GF-only GOP structure"

5 years agoMerge "Fix GF-only frame type allocation"
Jingning Han [Thu, 15 Nov 2018 05:00:55 +0000 (05:00 +0000)]
Merge "Fix GF-only frame type allocation"

5 years agoRefactor av1_nb_mvs_inconsistency()
Angie Chiang [Thu, 18 Oct 2018 17:40:06 +0000 (10:40 -0700)]
Refactor av1_nb_mvs_inconsistency()

Change-Id: Ib9d16a4bc3ce1d28493e34f24dc18a6b511738f0

5 years agoRecompute mv inconsistency after mv search is done
Angie Chiang [Wed, 17 Oct 2018 22:54:25 +0000 (15:54 -0700)]
Recompute mv inconsistency after mv search is done

Change-Id: I6061f38cb42eea2b4c8996ad372c829dc1051c8d

5 years agoDisable tpl model in GF-only GOP structure
Jingning Han [Wed, 14 Nov 2018 22:58:56 +0000 (14:58 -0800)]
Disable tpl model in GF-only GOP structure

The tpl model assumes a relative short stats buffer length. Hence
it is not ready to support GF-only GOP structure where the max
length can go up to 250. Disable tpl model in such setting to avoid
a rare encode failure in GF-only setting.

Change-Id: I3409dbb829a8105478876684ec21a2bd405c33c8

5 years agoMerge "vpx_dec_fuzzer: Unify single and multi-thread tests"
Harish Mahendrakar [Wed, 14 Nov 2018 21:55:16 +0000 (21:55 +0000)]
Merge "vpx_dec_fuzzer: Unify single and multi-thread tests"

5 years agovpx_dec_fuzzer: Unify single and multi-thread tests
Harish Mahendrakar [Wed, 14 Nov 2018 20:00:01 +0000 (12:00 -0800)]
vpx_dec_fuzzer: Unify single and multi-thread tests

As thread count is now randomized, serial and threaded modes can be
combined to a single binary.
With this change, threads takes values between 1 to 64 and tests both
single thread and multi-thread variants of the decoders

Change-Id: I6dd2a3aa03bff9c0e2c126843b543d46892be696

5 years agoMerge "Added libFuzzer plugin to test decoders"
Harish Mahendrakar [Wed, 14 Nov 2018 21:02:45 +0000 (21:02 +0000)]
Merge "Added libFuzzer plugin to test decoders"

5 years agoFix GF-only frame type allocation
Jingning Han [Wed, 14 Nov 2018 07:20:03 +0000 (23:20 -0800)]
Fix GF-only frame type allocation

Rework the recursive ARF allocation to avoid missing one frame's
type assignment issue in GF only GOP structure. This fixes a rare
encoder failure issue in GF only setting.

Change-Id: I3e41fe36d3cb954de25ffc058a42b2b8be0fcd7a

5 years agoAdded libFuzzer plugin to test decoders
Harish Mahendrakar [Fri, 9 Nov 2018 22:12:07 +0000 (14:12 -0800)]
Added libFuzzer plugin to test decoders

vpx_dec_fuzzer.cc can be built with clang++ to generate fuzzer binary
Build instructions are part of the file

Change-Id: I19ba0bd49b236e27b27e81a83f6de59f15bdc994

5 years agoMerge "Rescale arf bit budget calculation"
Jingning Han [Tue, 13 Nov 2018 23:13:14 +0000 (23:13 +0000)]
Merge "Rescale arf bit budget calculation"

5 years agoSkip ACL recode loop for intermediate ARF layers
Jingning Han [Fri, 2 Nov 2018 18:31:38 +0000 (11:31 -0700)]
Skip ACL recode loop for intermediate ARF layers

Speed up the encoding time by ~20% for multi-layer ARF system.

Change-Id: I16de1cfed7cd1815cf0269eb4f90ad74fdf087ee

5 years agoRescale arf bit budget calculation
Jingning Han [Tue, 13 Nov 2018 00:22:46 +0000 (16:22 -0800)]
Rescale arf bit budget calculation

To compute the total budget for a depth layer, exclude the count of
frames that have been allocated the bit budget. This improves the
avg PSNR by 0.15% and overall PSNR by 0.25% for lowres and midres
test sets.

Change-Id: I5115e33e1422dc930179142cd29aeebe97425283

5 years agoquantize: use aarch64 vmaxv
Johann [Mon, 12 Nov 2018 19:30:03 +0000 (11:30 -0800)]
quantize: use aarch64 vmaxv

Simplify max value calculation on aarch64 by using vmaxv. Much
faster for 4x4 but diminishing returns as the block size grows.

Only the vp9 quantize has a speed test hooked up. Anticipate
similar results for the other quantize versions.

Before:
[ RUN      ] NEON/VP9QuantizeTest.DISABLED_Speed/2
[    BENCH ]      Bypass calculations       4x4  31.6 ms ( ±0.0 ms )
[    BENCH ]        Full calculations       4x4  31.6 ms ( ±0.0 ms )
[    BENCH ]      Bypass calculations       8x8  17.7 ms ( ±0.0 ms )
[    BENCH ]        Full calculations       8x8  17.7 ms ( ±0.0 ms )
[    BENCH ]      Bypass calculations     16x16  14.2 ms ( ±0.0 ms )
[    BENCH ]        Full calculations     16x16  14.2 ms ( ±0.0 ms )
[       OK ] NEON/VP9QuantizeTest.DISABLED_Speed/2 (1906 ms)
[ RUN      ] NEON/VP9QuantizeTest.DISABLED_Speed/3
[    BENCH ]      Bypass calculations     32x32  18.6 ms ( ±0.0 ms )
[    BENCH ]        Full calculations     32x32  18.6 ms ( ±0.0 ms )

After:
[ RUN      ] NEON/VP9QuantizeTest.DISABLED_Speed/2
[    BENCH ]      Bypass calculations       4x4  29.1 ms ( ±0.0 ms )
[    BENCH ]        Full calculations       4x4  29.1 ms ( ±0.0 ms )
[    BENCH ]      Bypass calculations       8x8  16.9 ms ( ±0.0 ms )
[    BENCH ]        Full calculations       8x8  16.9 ms ( ±0.0 ms )
[    BENCH ]      Bypass calculations     16x16  14.1 ms ( ±0.0 ms )
[    BENCH ]        Full calculations     16x16  14.1 ms ( ±0.0 ms )
[       OK ] NEON/VP9QuantizeTest.DISABLED_Speed/2 (1803 ms)
[ RUN      ] NEON/VP9QuantizeTest.DISABLED_Speed/3
[    BENCH ]      Bypass calculations     32x32  18.6 ms ( ±0.0 ms )
[    BENCH ]        Full calculations     32x32  18.6 ms ( ±0.0 ms )

Change-Id: Ic95812b3fdbd4e47b4dcb8ed46c68a9617de38d2

5 years agoMerge "Refactor common code in RDMULT computation"
Yaowu Xu [Sun, 11 Nov 2018 14:17:35 +0000 (14:17 +0000)]
Merge "Refactor common code in RDMULT computation"

5 years agovp8: Init buffers and pred arrays for mt after allocation.
Jerome Jiang [Fri, 9 Nov 2018 21:27:39 +0000 (13:27 -0800)]
vp8: Init buffers and pred arrays for mt after allocation.

Buffers and arrays used for prediction are not initialized after
allocation.

BUG=902691

Change-Id: Ic727e5dab7456e91ec9d6c80694f60a1a3600640

5 years agoRefactor common code in RDMULT computation
Yaowu Xu [Fri, 9 Nov 2018 22:45:48 +0000 (14:45 -0800)]
Refactor common code in RDMULT computation

Change-Id: I2b59ba26fdb1f75302c457c90817398acaa28975

5 years agoMerge "Add operator<< to hadamard test."
Jerome Jiang [Thu, 8 Nov 2018 18:37:59 +0000 (18:37 +0000)]
Merge "Add operator<< to hadamard test."

5 years agoAdd operator<< to hadamard test.
Jerome Jiang [Thu, 8 Nov 2018 05:35:35 +0000 (21:35 -0800)]
Add operator<< to hadamard test.

This quiets valgrind warning.

Change-Id: I7c5e23ebb91cc67cf93678135b826b2bc8e9db2f

5 years agoMerge "Simplify rdmult computation"
Yaowu Xu [Wed, 7 Nov 2018 21:55:10 +0000 (21:55 +0000)]
Merge "Simplify rdmult computation"

5 years agoMerge "vp9-screen-content: Adjust condition for large search area"
Marco Paniconi [Wed, 7 Nov 2018 21:14:49 +0000 (21:14 +0000)]
Merge "vp9-screen-content: Adjust condition for large search area"

5 years agoSimplify rdmult computation
Yaowu Xu [Wed, 7 Nov 2018 19:20:32 +0000 (11:20 -0800)]
Simplify rdmult computation

Recognizing that max dc_quant used in rdmult computation is 21387 and
21387 * 21387 * 88 / 24 is still within the range of int32_t, this
commit simplifies the computation with minor cleanups.

Change-Id: I2ac7e8315d103c0bb39b70c312c87c0fda47b4f9

5 years agovp9-screen-content: Adjust condition for large search area
Marco Paniconi [Wed, 7 Nov 2018 19:14:42 +0000 (11:14 -0800)]
vp9-screen-content: Adjust condition for large search area

Account for dropped frame, and change resolution threshold
for limiting split below 16x16.

Change-Id: If94cfb2bc24d9103332d1c8d945daca8899db33d

5 years agoCosmetic clean up in find_arf_order
Jingning Han [Wed, 7 Nov 2018 19:26:23 +0000 (11:26 -0800)]
Cosmetic clean up in find_arf_order

Remove duplicate variable definition.

Change-Id: I476bb319078f1043116163ac7aeff28a4a3ab5e6

5 years agoMerge "Unify GOP structure layout setup"
Jingning Han [Wed, 7 Nov 2018 18:21:38 +0000 (18:21 +0000)]
Merge "Unify GOP structure layout setup"

5 years agoMerge "Modified key frame detection."
Paul Wilkins [Wed, 7 Nov 2018 17:03:44 +0000 (17:03 +0000)]
Merge "Modified key frame detection."

5 years agoUnify GOP structure layout setup
Jingning Han [Wed, 7 Nov 2018 00:35:44 +0000 (16:35 -0800)]
Unify GOP structure layout setup

Refactor define_gf_group_structure() to unify the single-layer,
multi-layer ARF, and GF only GOP structure setup.

Change-Id: Iebbe9c3742fc58ae4e77b1072ebecb3ee7bd26b2

5 years agoMerge "vp8: remove VP8_ENTROPY_STATS code"
Johann Koenig [Wed, 7 Nov 2018 15:41:22 +0000 (15:41 +0000)]
Merge "vp8: remove VP8_ENTROPY_STATS code"

6 years agoMerge "vp9: postencode drop frame for screen content in CBR."
Jerome Jiang [Wed, 7 Nov 2018 00:33:58 +0000 (00:33 +0000)]
Merge "vp9: postencode drop frame for screen content in CBR."

6 years agoMerge "vp9 screen-content: Adjustments for screen content."
Marco Paniconi [Tue, 6 Nov 2018 23:45:30 +0000 (23:45 +0000)]
Merge "vp9 screen-content: Adjustments for screen content."

6 years agovp9: postencode drop frame for screen content in CBR.
Jerome Jiang [Tue, 28 Aug 2018 21:24:53 +0000 (14:24 -0700)]
vp9: postencode drop frame for screen content in CBR.

Encode the next frame at max q.

For layers: post_encode_drop is only check on base
spatial layer, and if base is post-encoded-dropped,
then whole superframe is dropped.

Added API to guard postencode dropping. Turned off by default.

Added unittest.

BUG=b/112990050
Change-Id: I42fee279014aca616f7a4d9b582cb2bf5da2f2e7

6 years agoMerge "vp8: Increase rate correction threshold for drop-overshoot"
Marco Paniconi [Tue, 6 Nov 2018 22:43:16 +0000 (22:43 +0000)]
Merge "vp8: Increase rate correction threshold for drop-overshoot"

6 years agoMerge "Refactor Hadamard tests and add highbd tests"
Sai Deng [Tue, 6 Nov 2018 19:03:17 +0000 (19:03 +0000)]
Merge "Refactor Hadamard tests and add highbd tests"

6 years agovp9 screen-content: Adjustments for screen content.
Marco Paniconi [Tue, 6 Nov 2018 01:49:39 +0000 (17:49 -0800)]
vp9 screen-content: Adjustments for screen content.

Increase search area, use NSTEP, and in some cases avoid
bsize below 16x16. This for base spatial layer when many blocks
in the frame have motion (from scene detection analysis).

Improves quality for scrolling motion.

Change-Id: If77b43e738a6c43610d4727a95712667088db564

6 years agoMerge "vp8 dec: only compute ref frame buffer pointer for non intra"
Jerome Jiang [Tue, 6 Nov 2018 18:47:16 +0000 (18:47 +0000)]
Merge "vp8 dec: only compute ref frame buffer pointer for non intra"

6 years agoRefactor Hadamard tests and add highbd tests
sdeng [Thu, 1 Nov 2018 17:21:13 +0000 (10:21 -0700)]
Refactor Hadamard tests and add highbd tests

Change-Id: I306083f233e53884ac21fb4621066713edddc8f7

6 years agoMerge "Track maximum layer depth in a GOP"
Jingning Han [Tue, 6 Nov 2018 17:10:24 +0000 (17:10 +0000)]
Merge "Track maximum layer depth in a GOP"

6 years agoMerge "Fix gf_group->frame_end assignment"
Jingning Han [Tue, 6 Nov 2018 17:10:18 +0000 (17:10 +0000)]
Merge "Fix gf_group->frame_end assignment"

6 years agoMerge "Refactor define_gf_group_structure()"
Jingning Han [Tue, 6 Nov 2018 17:10:10 +0000 (17:10 +0000)]
Merge "Refactor define_gf_group_structure()"

6 years agoMerge "Remove redundant assignments in define_gf_group_structure()"
Jingning Han [Tue, 6 Nov 2018 17:10:03 +0000 (17:10 +0000)]
Merge "Remove redundant assignments in define_gf_group_structure()"

6 years agoMerge "Refactor find_arf_order()"
Jingning Han [Tue, 6 Nov 2018 17:09:54 +0000 (17:09 +0000)]
Merge "Refactor find_arf_order()"

6 years agoModified key frame detection.
Paul Wilkins [Fri, 26 Oct 2018 11:12:57 +0000 (12:12 +0100)]
Modified key frame detection.

Address poor key frame detection in some content.

This patch improves on poor key frame / scene cut detection observed
with some test content. The content in question was letter boxed film
style material and also had quite low contrast. For both 1080P and 4K
multiple genuine scene cuts were being missed.

The changes alter the conditions for marking a transition as a "flash" rather
than a scene change. The new code still deals well with genuine flashes as
observed in the "crew" test clip, without falsely flagging some of the
the scene cuts in the "film" test clip.

The new film test clip also had some "flash" frames caused by a lightning
effect and in one case a flash occurred right before a scene change. This
caused a misplacement of the key frame but has been addressed by a new
clause that requires the coded error for the next frame after a candidate
key frame to be lower than the current frame.

The patch also changes the way in which neutral blocks (similar inter and
inter error) are handled in the candidate key frame decision in a way which
hopefully handles the letter boxed format better.

During wider testing some film clips still had missed key frames but this
patch does improve things. In the case of the initial test clip the encoder
correctly marks all 3 scene cuts vs 0 before the patch.

Testing with our standard (mainly short single kf) derf and NF test clips
is neutral.

Change-Id: I3b7dcfe7b2fb13fd0816ea46acc3e69c8bc581b3

6 years agoMerge "vpx_codec_enc_config_default: disable 'usage'"
Johann Koenig [Tue, 6 Nov 2018 02:34:04 +0000 (02:34 +0000)]
Merge "vpx_codec_enc_config_default: disable 'usage'"

6 years agovp8 dec: only compute ref frame buffer pointer for non intra
Jerome Jiang [Tue, 6 Nov 2018 01:46:03 +0000 (17:46 -0800)]
vp8 dec: only compute ref frame buffer pointer for non intra

When ref frame is INTRA_FRAME, pre buffer shouldn't be used.

This CL copies behavior in single thread. That should apply to
multithreading case too.

BUG=webm:1496

Change-Id: Ibe9ab8ea9dc664151fa7ebac529d5fd1a481b4a3

6 years agoTrack maximum layer depth in a GOP
Jingning Han [Tue, 6 Nov 2018 00:21:49 +0000 (16:21 -0800)]
Track maximum layer depth in a GOP

Track the effective maximum layer depth in a given group of
pictures. Keep it in the GF_GROUP data structure.

Change-Id: If777c4e0f4a871c7226a91e3871f445e92f18b24

6 years agoFix gf_group->frame_end assignment
Jingning Han [Mon, 5 Nov 2018 23:42:20 +0000 (15:42 -0800)]
Fix gf_group->frame_end assignment

The previous value was set off by 1. Use the correct value.

Change-Id: I1ce53cc99063ce31e7ab1c43c6e444cb9a1972db

6 years agoRefactor define_gf_group_structure()
Jingning Han [Mon, 5 Nov 2018 23:38:10 +0000 (15:38 -0800)]
Refactor define_gf_group_structure()

Make it a standalone operation unit. Refactor to cut off unnecessary
dependency between define_gf_group_structure() and
allocate_gf_group_bits().

Change-Id: I954fd4e96152471a994f2ffd38a72061ab517ddd

6 years agoMerge changes I774a0711,I0b4fd670,Ia09935e5
Johann Koenig [Mon, 5 Nov 2018 23:32:11 +0000 (23:32 +0000)]
Merge changes I774a0711,I0b4fd670,Ia09935e5

* changes:
  Fix compilation on OS/2
  Use wcslen() instead of std::wcslen()
  Fix compilation on OS/2

6 years agoMerge "clang-tidy: fix vpx_dsp parameters"
Johann Koenig [Mon, 5 Nov 2018 23:29:06 +0000 (23:29 +0000)]
Merge "clang-tidy: fix vpx_dsp parameters"

6 years agovpx_codec_enc_config_default: disable 'usage'
Johann [Thu, 1 Nov 2018 20:02:45 +0000 (13:02 -0700)]
vpx_codec_enc_config_default: disable 'usage'

Found with clang-tidy. This value is unused in libvpx.

There is an existing test which ensures this is not used:
test/encode_api_test.cc:
    EXPECT_EQ(VPX_CODEC_INVALID_PARAM,
              vpx_codec_enc_config_default(kCodecs[i], &cfg, 1));

Change-Id: I94bd0663c6652b4267204c02c3921972c854d0b0

6 years agoRemove redundant assignments in define_gf_group_structure()
Jingning Han [Mon, 5 Nov 2018 19:15:24 +0000 (11:15 -0800)]
Remove redundant assignments in define_gf_group_structure()

The functionality has been covered in the above
set_gf_overlay_frame_type() call.

Change-Id: Id4049cd9a1a5a9bad7ea62c412fcb557afa9a572

6 years agoclang-tidy: fix vpx_img_wrap align
Johann [Thu, 1 Nov 2018 21:45:38 +0000 (14:45 -0700)]
clang-tidy: fix vpx_img_wrap align

This function specifically only aligns the stride and not the base buffer
like vpx_img_alloc does.

BUG=webm:1444

Change-Id: I3092827eeec3c9e16306a3973534d3a362a337e8

6 years agoRefactor find_arf_order()
Jingning Han [Mon, 5 Nov 2018 19:12:24 +0000 (11:12 -0800)]
Refactor find_arf_order()

Make the maximum layer depth allowed a control parameter in
GF_GROUP. No coding stats would change.

Change-Id: I9d17167da322831e7013d761980e1c16375a161b

6 years agovp8: Increase rate correction threshold for drop-overshoot
Marco Paniconi [Mon, 5 Nov 2018 17:35:47 +0000 (09:35 -0800)]
vp8: Increase rate correction threshold for drop-overshoot

For 1 pass cbr encoding mode, with frame-dropping on:
increase the rate correction threshold for drop-overshoot detection,
to better capture cases of large overshoot.

Change-Id: I1153b1b71cf106749dd985074d6bc8f37d163c7e

6 years agoMerge "vpx postproc: rewrite in intrinsics"
Johann Koenig [Fri, 2 Nov 2018 18:13:14 +0000 (18:13 +0000)]
Merge "vpx postproc: rewrite in intrinsics"

6 years agoMerge "Add highbd Hadamard transform C implementations"
Sai Deng [Fri, 2 Nov 2018 16:46:46 +0000 (16:46 +0000)]
Merge "Add highbd Hadamard transform C implementations"

6 years agoMerge "fix snprintf error on windows"
Johann Koenig [Fri, 2 Nov 2018 16:23:23 +0000 (16:23 +0000)]
Merge "fix snprintf error on windows"

6 years agoMerge "clang-tidy: normalize variance functions"
Johann Koenig [Fri, 2 Nov 2018 14:41:24 +0000 (14:41 +0000)]
Merge "clang-tidy: normalize variance functions"

6 years agofix snprintf error on windows
Johann [Fri, 2 Nov 2018 14:34:12 +0000 (07:34 -0700)]
fix snprintf error on windows

Include vpx_ports/msvc.h to handle snprintf on older
versions of Visual Studio

Change-Id: I06cd99b32bbae82b3df079d41ff20a9a07f6fe1c

6 years agovp8: remove VP8_ENTROPY_STATS code
Johann [Wed, 31 Oct 2018 21:40:44 +0000 (14:40 -0700)]
vp8: remove VP8_ENTROPY_STATS code

Does not compile. Noticed while cleaning up un-namespaced functions

Change-Id: I4a9048e66d051397f652e7b5412606a5e234f61f

6 years agoAdd highbd Hadamard transform C implementations
sdeng [Tue, 30 Oct 2018 22:35:44 +0000 (15:35 -0700)]
Add highbd Hadamard transform C implementations

Change-Id: Ibec078c80ca1dfe6fbbc4288db89d719dac453a7

6 years agoclang-tidy: fix vpx_dsp parameters
Johann [Tue, 30 Oct 2018 19:59:46 +0000 (12:59 -0700)]
clang-tidy: fix vpx_dsp parameters

BUG=webm:1444

Change-Id: Iee19be068afc6c81396c79218a89c469d2e66207

6 years agoMerge "vp8 boolcoder: normalize to "bc""
Johann Koenig [Wed, 31 Oct 2018 22:39:08 +0000 (22:39 +0000)]
Merge "vp8 boolcoder: normalize to "bc""

6 years agoMerge "vp8: fix to address overflow in decoder."
Jerome Jiang [Wed, 31 Oct 2018 22:27:44 +0000 (22:27 +0000)]
Merge "vp8: fix to address overflow in decoder."

6 years agoMerge "vp8dx_get_quantizer: normalize VP8D_COMP"
Johann Koenig [Wed, 31 Oct 2018 22:19:43 +0000 (22:19 +0000)]
Merge "vp8dx_get_quantizer: normalize VP8D_COMP"

6 years agoclang-tidy: normalize variance functions
Johann [Tue, 30 Oct 2018 21:43:36 +0000 (14:43 -0700)]
clang-tidy: normalize variance functions

Always use src/ref and _ptr/_stride suffixes.

Normalize to [xy]_offset and second_pred.

Drop some stray source/recon_strides.

BUG=webm:1444

Change-Id: I32362a50988eb84464ab78686348610ea40e5c80

6 years agoMerge "clang-tidy: fix vp9/encoder parameters"
Johann Koenig [Wed, 31 Oct 2018 21:43:05 +0000 (21:43 +0000)]
Merge "clang-tidy: fix vp9/encoder parameters"

6 years agoMerge "clang-tidy: fix vp9/decoder parameters"
Johann Koenig [Wed, 31 Oct 2018 21:42:16 +0000 (21:42 +0000)]
Merge "clang-tidy: fix vp9/decoder parameters"

6 years agoMerge "clang-tidy: fix vp9/common parameters"
Johann Koenig [Wed, 31 Oct 2018 21:42:07 +0000 (21:42 +0000)]
Merge "clang-tidy: fix vp9/common parameters"

6 years agoMerge "clang-tidy: fix vp8/encoder parameters"
Johann Koenig [Wed, 31 Oct 2018 21:41:53 +0000 (21:41 +0000)]
Merge "clang-tidy: fix vp8/encoder parameters"

6 years agovp8 boolcoder: normalize to "bc"
Johann [Wed, 31 Oct 2018 21:24:31 +0000 (14:24 -0700)]
vp8 boolcoder: normalize to "bc"

"bc" maps to BOOL_CODER better than "br"

Change-Id: Idefd03e79ccc1851a1b26f8206a159b0e5c5fb2d

6 years agoMerge "clang-tidy: fix vp8/decoder parameters"
Johann Koenig [Wed, 31 Oct 2018 21:14:46 +0000 (21:14 +0000)]
Merge "clang-tidy: fix vp8/decoder parameters"

6 years agovp8dx_get_quantizer: normalize VP8D_COMP
Johann [Wed, 31 Oct 2018 21:13:45 +0000 (14:13 -0700)]
vp8dx_get_quantizer: normalize VP8D_COMP

Use "pbi" like the rest of the functions

Change-Id: I5f3036b8f8361c30353be378d83455b83b82ac9f

6 years agoMerge "Add SSE2 support for hbd 4-tap interpolation filter."
Chi Yo Tsai [Wed, 31 Oct 2018 20:38:52 +0000 (20:38 +0000)]
Merge "Add SSE2 support for hbd 4-tap interpolation filter."

6 years agovp8: fix to address overflow in decoder.
Jerome Jiang [Tue, 7 Aug 2018 18:10:26 +0000 (11:10 -0700)]
vp8: fix to address overflow in decoder.

Can't call internal error from the decoder thread.

Add vpx_internal_error_info to MACROBLOCKD. When corrupted frame
detected, the decoder thread returns to its own context and signal
completion of decoding for current frame.

The main decoding thread will detect error too and return error code to
decoding API call.

Each thread will signal end of decoding of the frame. Main thread waits
for the signal of all other threads to start decoding next frame.

BUG=875626,webm:1496
Change-Id: Icd05fbc558893a4e7d8532c1e7177e7550283a64

6 years agoMerge "clang-tidy: fix vp8/common parameters"
Johann Koenig [Tue, 30 Oct 2018 22:11:59 +0000 (22:11 +0000)]
Merge "clang-tidy: fix vp8/common parameters"