platform/upstream/libvpx.git
2 years agovp8,get_sub_mv_ref_prob: change arguments to uint32_t
James Zern [Sat, 16 Apr 2022 05:29:31 +0000 (22:29 -0700)]
vp8,get_sub_mv_ref_prob: change arguments to uint32_t

this matches the call with int_mv::as_int and fixes a warning with
clang-13 -fsanitize=integer:
vp8/decoder/decodemv.c:240:32: runtime error: implicit conversion from
type 'uint32_t' (aka 'unsigned int') of value 4282515456 (32-bit,
unsigned) to type 'int' changed the value to -12451840 (32-bit, signed)

Bug: webm:1759
Change-Id: I7c0aa72baa45421929afac26566e149adc6669d7

2 years agovp8: fix some implicit unsigned -> int conversions
James Zern [Sat, 16 Apr 2022 05:23:05 +0000 (22:23 -0700)]
vp8: fix some implicit unsigned -> int conversions

fixes some warnings with clang-13 -fsanitize=integer:
vp8/decoder/threading.c:77:27: runtime error: implicit conversion
from type 'unsigned int' of value 4294967295 (32-bit, unsigned) to type
'int' changed the value to -1 (32-bit, signed)

these bitmask constants were missed in:
1676cddaa vp8: fix some implicit signed -> unsigned conv warnings

Bug: webm:1759
Change-Id: I5d894d08fd41e32b91b56a4d91276837b3415ee4

2 years agoMerge changes I9c24f75e,I83bce11c into main
James Zern [Sat, 16 Apr 2022 04:51:13 +0000 (04:51 +0000)]
Merge changes I9c24f75e,I83bce11c into main

* changes:
  vp9[loongarch]: Optimize idct32x32_1024/1/34_add
  vp9[loongarch]: Optimize vpx_fdct32x32/32x32_rd

2 years agoMerge "Fix int overflow in intermediate calculation" into main
Jerome Jiang [Fri, 15 Apr 2022 14:51:37 +0000 (14:51 +0000)]
Merge "Fix int overflow in intermediate calculation" into main

2 years agovp9[loongarch]: Optimize idct32x32_1024/1/34_add
yuanhecai [Thu, 14 Apr 2022 03:30:55 +0000 (11:30 +0800)]
vp9[loongarch]: Optimize idct32x32_1024/1/34_add

1. vpx_idct32x32_1024_add_lsx
2. vpx_idct32x32_34_add_lsx
3. vpx_idct32x32_1_add_lsx

Bug: webm:1755

Change-Id: I9c24f75e0d93613754d8e30da7e007b8d1374e60

2 years agovp9[loongarch]: Optimize vpx_fdct32x32/32x32_rd
yuanhecai [Wed, 16 Mar 2022 06:16:33 +0000 (14:16 +0800)]
vp9[loongarch]: Optimize vpx_fdct32x32/32x32_rd

1. vpx_fdct32x32_lsx
2. vpx_fdct32x32_rd_lsx

Bug: webm:1755

Change-Id: I83bce11c0d905cf137545a46cd756aef9cedce47

2 years agoFix int overflow in intermediate calculation
Jerome Jiang [Wed, 6 Apr 2022 16:46:57 +0000 (09:46 -0700)]
Fix int overflow in intermediate calculation

This is not a complete fix to webm:1751.

Bug: webm:1751
Change-Id: Ieed6c823744f5f0625d529db3746cfe4f549c8c0

2 years agoMerge "vp9,update_mbgraph_frame_stats: rm unused variables" into main
James Zern [Thu, 14 Apr 2022 17:28:52 +0000 (17:28 +0000)]
Merge "vp9,update_mbgraph_frame_stats: rm unused variables" into main

2 years agovp9,update_mbgraph_frame_stats: rm unused variables
James Zern [Thu, 14 Apr 2022 05:16:30 +0000 (22:16 -0700)]
vp9,update_mbgraph_frame_stats: rm unused variables

this quiets warnings under clang-13 of the form:
../vp9/encoder/vp9_mbgraph.c:222:42: warning: variable 'gld_y_offset'
set but not used [-Wunused-but-set-variable]

Change-Id: I32170b90c07058f780b4e8100ee5217232149db8

2 years agovp8,define_gf_group: remove unused variable
James Zern [Thu, 14 Apr 2022 05:14:33 +0000 (22:14 -0700)]
vp8,define_gf_group: remove unused variable

this clears a warning under clang-13:
vp8/encoder/firstpass.c:1634:10: warning: variable
'mod_err_per_mb_accumulator' set but not used
[-Wunused-but-set-variable]

Change-Id: I694a99d56724be89090e01c45559237c0fda147a

2 years agoUpdate loongson_intrinsics.h from v1.0.5 to v1.2.1
yuanhecai [Thu, 31 Mar 2022 07:01:30 +0000 (15:01 +0800)]
Update loongson_intrinsics.h from v1.0.5 to v1.2.1

Bug: webm:1755

Change-Id: Ib636d2aa521332b76b6aa1b0aa0a9005aafbf32b

2 years agovp9[loongarch]: Optimize vpx_variance64x64/32x32
yuanhecai [Sat, 19 Mar 2022 02:44:27 +0000 (10:44 +0800)]
vp9[loongarch]: Optimize vpx_variance64x64/32x32

1. vpx_variance64x64_lsx
2. vpx_variance32x32_lsx

Bug: webm:1755

Change-Id: I45c5aa94cbbf7128473894a990d931acaa40e102

2 years agovp9[loongarch]: Optimize sad64x64/32x32/16x16
yuanhecai [Tue, 15 Mar 2022 08:15:36 +0000 (16:15 +0800)]
vp9[loongarch]: Optimize sad64x64/32x32/16x16

1. vpx_sad64x64x4d_lsx
2. vpx_sad32x32x4d_lsx
3. vpx_sad16x16x4d_lsx
4. vpx_sad64x64_lsx
5. vpx_sad32x32_lsx

Bug: webm:1755

Change-Id: Ief71c2216f697b261d7c1fc481c89c9f1a6098e6

2 years agoMerge "vpxdec: add some allocation checks" into main
James Zern [Mon, 11 Apr 2022 20:28:44 +0000 (20:28 +0000)]
Merge "vpxdec: add some allocation checks" into main

2 years agovpxdec: add some allocation checks
James Zern [Mon, 11 Apr 2022 18:41:19 +0000 (11:41 -0700)]
vpxdec: add some allocation checks

see also: https://crbug.com/aomedia/3244

Change-Id: I7d151e63a91b8c1a5ee4e861f0b8461eeece6a2f

2 years agorate_hist,show_histogram: fix crash w/0 buckets
James Zern [Mon, 11 Apr 2022 18:08:12 +0000 (11:08 -0700)]
rate_hist,show_histogram: fix crash w/0 buckets

this can occur if 0 frames are encoded, e.g., due to --skip

see also: https://crbug.com/aomedia/3243

Change-Id: I791d5ad6611dbcb60d790e6b705298328ec48126

2 years agoMerge "L2E: Make SimpleEncode take vp9 level as an input" into main
Cheng Chen [Tue, 5 Apr 2022 18:25:23 +0000 (18:25 +0000)]
Merge "L2E: Make SimpleEncode take vp9 level as an input" into main

2 years agoMerge changes I0b6520be,I1f006daa,I7ee8e367 into main
James Zern [Tue, 5 Apr 2022 02:52:06 +0000 (02:52 +0000)]
Merge changes I0b6520be,I1f006daa,I7ee8e367 into main

* changes:
  vp9[loongarch]: Optimize vpx_convolve8_avg_horiz_c
  vp8[loongarch]: Optimize dequant_idct_add_y/uv_block
  loongarch: Fix bugs

2 years agoMerge "remove unused vp8_encode_intra parameter" into main
Johann Koenig [Mon, 4 Apr 2022 00:59:23 +0000 (00:59 +0000)]
Merge "remove unused vp8_encode_intra parameter" into main

2 years agoMerge changes I4c63beeb,I28f3b98f into main
James Zern [Thu, 31 Mar 2022 21:54:24 +0000 (21:54 +0000)]
Merge changes I4c63beeb,I28f3b98f into main

* changes:
  Revert "quantize: replace highbd versions"
  Revert "quantize: remove highbd version"

2 years agoMerge "subpel variance: add speed test" into main
Johann Koenig [Thu, 31 Mar 2022 21:43:47 +0000 (21:43 +0000)]
Merge "subpel variance: add speed test" into main

2 years agoRevert "quantize: replace highbd versions"
James Zern [Thu, 31 Mar 2022 19:11:01 +0000 (12:11 -0700)]
Revert "quantize: replace highbd versions"

This reverts commit 2200039d33c49a9f7a5c438656df143755b022c4.

This causes failures with VP9/EndToEndTestLarge.EndtoEndPSNRTest/*; it
seems the assembly does not match the C code.

Bug: webm:1586
Change-Id: I4c63beebf88d4c12789d681b0d38014510b147fe

2 years agoRevert "quantize: remove highbd version"
James Zern [Thu, 31 Mar 2022 19:10:03 +0000 (12:10 -0700)]
Revert "quantize: remove highbd version"

This reverts commit 89cfe3835c47dabf77d38edb3af190155984fa9a.

This is a prerequisite for reverting
2200039d33c49a9f7a5c438656df143755b022c4 which causes high bitdepth test
failures

Bug: webm:1586
Change-Id: I28f3b98f3339f3573b1492b88bf733dade133fc0

2 years agovp9[loongarch]: Optimize vpx_convolve8_avg_horiz_c
yuanhecai [Wed, 30 Mar 2022 06:04:10 +0000 (14:04 +0800)]
vp9[loongarch]: Optimize vpx_convolve8_avg_horiz_c

1. vpx_convolve8_avg_horiz_lsx

Bug: webm:1755

Change-Id: I0b6520be0afa1689da329f56ec6cd95c1730250c

2 years agovp8[loongarch]: Optimize dequant_idct_add_y/uv_block
yuanhecai [Mon, 28 Mar 2022 09:12:57 +0000 (17:12 +0800)]
vp8[loongarch]: Optimize dequant_idct_add_y/uv_block

1. vp8_dequant_idct_add_uv_block_lsx
2. vp8_dequant_idct_add_y_block_lsx

Bug: webm:1755

Change-Id: I1f006daaefb2075b422bc72a3f69c5abee776e2e

2 years agoloongarch: Fix bugs
yuanhecai [Tue, 22 Mar 2022 05:58:50 +0000 (13:58 +0800)]
loongarch: Fix bugs

Fix bugs from loopfilter_filters_lsx.c, vpx_convolve8_avg_lsx.c

Bug: webm:1755

Change-Id: I7ee8e367d66a49f3be10d7e417837d3b6ef50bdb

2 years agoMerge "quantize: remove highbd version" into main
Johann Koenig [Thu, 31 Mar 2022 05:45:23 +0000 (05:45 +0000)]
Merge "quantize: remove highbd version" into main

2 years agoquantize: remove highbd version
Johann [Wed, 30 Mar 2022 06:33:40 +0000 (15:33 +0900)]
quantize: remove highbd version

The only difference between the code is the clamp. For
8 bit it is purely an optimization. The values outside
this range will still saturate.

Change-Id: I2a770b140690d99e151b00957789bd72f7a11e13

2 years agoremove unused vp8_encode_intra parameter
Johann [Mon, 4 Nov 2019 21:58:07 +0000 (15:58 -0600)]
remove unused vp8_encode_intra parameter

Follow it up and also remove it from other functions.

BUG=webm:1612

Change-Id: I9d3cb785ab0d68c6fcae185043c896d8a135e284

2 years agoMerge "Optimize FHT functions for NEON" into main
James Zern [Thu, 31 Mar 2022 01:53:51 +0000 (01:53 +0000)]
Merge "Optimize FHT functions for NEON" into main

2 years agosubpel variance: add speed test
Johann [Thu, 31 Mar 2022 01:43:29 +0000 (10:43 +0900)]
subpel variance: add speed test

Was used to verify assembly speed versus an attempt to rewrite
in intrinsics.

Change-Id: I011fe5494334b8fcda04b9d54c6093dbcfc55710

2 years agoMerge "remove sad x3,x8 specializations" into main
Johann Koenig [Thu, 31 Mar 2022 00:45:31 +0000 (00:45 +0000)]
Merge "remove sad x3,x8 specializations" into main

2 years agoquantize: replace highbd versions
Johann [Wed, 30 Mar 2022 05:57:46 +0000 (14:57 +0900)]
quantize: replace highbd versions

The optimized quantize functions were already built to handle
highbd values. The only difference is the clamping. All highbd
functions expand to 32bits when running in highbd mode.

Removes vpx_highbd_quantize_32x32_sse2 as it is slower than the
C version in the worst case.

Bug: webm:1586
Change-Id: I49bf8a6a2041f78450bf43a4f655c67656b0f8d9

2 years agoL2E: Make SimpleEncode take vp9 level as an input
Cheng Chen [Wed, 30 Mar 2022 22:47:17 +0000 (15:47 -0700)]
L2E: Make SimpleEncode take vp9 level as an input

Level conformance is standadized in vp9.
If a specific target level is set, the vp9 encoder is required to
produce conformant bitstream with limit on frame size, rate,
min alt-ref distance, etc.

This change makes the SimpleEncode environment take the target level
as an input.

To make existing tests pass, we set the level to 0.

Change-Id: Ia35224f75c2fe50338b5b86a50c84355f5daf6fd

2 years agoOptimize FHT functions for NEON
Konstantinos Margaritis [Wed, 16 Mar 2022 14:27:27 +0000 (16:27 +0200)]
Optimize FHT functions for NEON

[NEON]
Optimize vp9_fht4x4, vp9_fht8x8, vp9_fht16x16 for NEON

Following change #3516278, the improvement for these functions is:

Before:
     4.10%     0.75%  vpxenc   vpxenc              [.] vp9_fht16x16_c
     2.93%     0.65%  vpxenc   vpxenc              [.] vp9_fht8x8_c
     0.93%     0.77%  vpxenc   vpxenc              [.] vp9_fht4x4_c

And after the patch:

     0.69%     0.16%  vpxenc   vpxenc              [.] vp9_fht16x16_neon
     0.28%     0.28%  vpxenc   vpxenc              [.] vp9_fht8x8_neon
     0.54%     0.53%  vpxenc   vpxenc              [.] vp9_fht4x4_neon

Bug: webm:1634
Change-Id: I6748a0c4e0cfaafa3eefdd4848d0ac3aab6900e4

2 years agosad4d_avx2: fix VS 2014 build error
James Zern [Wed, 30 Mar 2022 03:00:00 +0000 (20:00 -0700)]
sad4d_avx2: fix VS 2014 build error

after:
d60b671a7 gcc 11 warning: mismatched bound

error C2719: 'sums': formal parameter with requested alignment of 32
won't be aligned

Change-Id: Iaba46d00ef2334a5e2d9ee69b5d03478fdc73a60

2 years agoremove skip_block from quantize
Johann [Tue, 29 Mar 2022 03:40:12 +0000 (12:40 +0900)]
remove skip_block from quantize

Whether a block is skipped is handled by mi->skip. x->skip_block
is kept exclusively to verify that the quantize functions are not
called for skip blocks.

Finishes the cleanup in 13eed991f

Bug: libvpx:1612
Change-Id: I1598c3b682d3c5e6c57a15fa4cb5df2c65b3a58a

2 years agoremove sad x3,x8 specializations
Johann [Mon, 28 Mar 2022 06:27:46 +0000 (15:27 +0900)]
remove sad x3,x8 specializations

These would compute the sum of absolute differences (sad) for a
group of 3 or 8 references. This was used as part of an exhaustive
search.

vp8 only uses these functions in speed 0 and best quality.

For vp9 this is only used with the --enable-non-greedy-mv
experiment.

This removes the 3- and 8-at-a-time optimized functions and uses
the fall back code which will process 1 or 4 (vpx_sadMxNx4d) at
a time.

For configure --target=x86_64-linux-gcc --enable-realtime-only:
libvpx.a
before: 3002424 after: 2937622 delta: 64802
after 'strip libvpx.a'
before: 2116998 after: 2073090 delta: 43908

Change-Id: I566d06e027c327b3bede68649dd551bba81a848e

2 years agoMerge "gcc 11 warning: mismatched bound" into main
Johann Koenig [Tue, 29 Mar 2022 03:18:02 +0000 (03:18 +0000)]
Merge "gcc 11 warning: mismatched bound" into main

2 years agogcc 11 warning: mismatched bound
Johann [Wed, 23 Mar 2022 05:28:29 +0000 (14:28 +0900)]
gcc 11 warning: mismatched bound

Clean up a new build warning with gcc11:
argument 3 of type ‘const uint8_t * const[]’ with
mismatched bound [-Warray-parameter=]

Standardize sad functions with array sizes.

Change-Id: Iea4144e61368f6a8279e2f3ae96c78aff06c8b41

2 years agoads2armasm_ms.pl: fix thumb::FixThumbInstructions call
James Zern [Sat, 26 Mar 2022 17:25:18 +0000 (10:25 -0700)]
ads2armasm_ms.pl: fix thumb::FixThumbInstructions call

broken since:
642529248 ads2gas[_apple].pl: remove unused stanzas

Change-Id: I1eac77e2fe23cc3f162251e9e0102a4909f7b997

2 years agoMerge "Make sure only NEON FDCT functions are called." into main
James Zern [Thu, 24 Mar 2022 19:39:10 +0000 (19:39 +0000)]
Merge "Make sure only NEON FDCT functions are called." into main

2 years agoads2gas: maintain whitespace
Johann [Wed, 23 Mar 2022 05:18:58 +0000 (14:18 +0900)]
ads2gas: maintain whitespace

Don't use tabs during conversion. Save and restore
existing spacing.

Change-Id: Ib8f443db542c091d36e9ab9836e3e3e292d711f7

2 years agoads2gas: fix .size measurement
Johann [Wed, 23 Mar 2022 04:58:46 +0000 (13:58 +0900)]
ads2gas: fix .size measurement

The distance between PROC and END is used to generate .size
information for debugging. When the leading underscore was
removed the pattern used to match the function name broke.

Change-Id: I90bf67d95ecdc2d214606e663773f88d2a2d6b9c

2 years agoMerge "ads2gas*.pl: strip trailing whitespace after transforms" into main
Johann Koenig [Wed, 23 Mar 2022 04:24:28 +0000 (04:24 +0000)]
Merge "ads2gas*.pl: strip trailing whitespace after transforms" into main

2 years agoads2gas*.pl: strip trailing whitespace after transforms
James Zern [Tue, 22 Mar 2022 20:51:27 +0000 (13:51 -0700)]
ads2gas*.pl: strip trailing whitespace after transforms

Change-Id: I0bea977b256e464231706c72cc14a5c8b6e90775

2 years agoFix ClangTidy style warning
Jerome Jiang [Tue, 22 Mar 2022 20:07:31 +0000 (13:07 -0700)]
Fix ClangTidy style warning

Change-Id: I6c4711e488cda6b97af96d5e1b6b249786e709de

2 years agoMake sure only NEON FDCT functions are called.
Konstantinos Margaritis [Fri, 11 Mar 2022 18:19:25 +0000 (20:19 +0200)]
Make sure only NEON FDCT functions are called.

[NEON]
Added vpx_fdct4x4_pass1_neon(),
Added vpx_fdct8x8_pass1_notranspose_neon(),
Added vpx_fdct8x8_pass1_neon() to avoid code duplication
Refactored vpx_fdct4x4_neon() and vpx_dct8x8_neon() to use the above
Rename dct_body to vpx_fdct16x16_body to reuse later
Add transpose_s16_16x16()

I have run make test and all tests/configurations seem to pass.

Profiled using this command on an Ampere Altra VM:
sudo perf record -g ./vpxenc --codec=vp9 --height=1080 --width=1920 \
   --fps=25/1 --limit=20 -o output.mkv \
   ../original_videos_Sports_1080P_Sports_1080P-0063.mkv --debug –rt

Before this optimization:
1.32%     1.32%  vpxenc   vpxenc              [.] vpx_fdct4x4_neon
0.16%     0.16%  vpxenc   vpxenc              [.] vpx_fdct4x4_c
0.79%     0.79%  vpxenc   vpxenc              [.] vpx_fdct8x8_c
0.52%     0.52%  vpxenc   vpxenc              [.] vpx_fdct8x8_neon
1.23%     1.23%  vpxenc   vpxenc              [.] vpx_fdct16x16_c
0.54%     0.54%  vpxenc   vpxenc              [.] vpx_fdct16x16_neon

So, even though a _neon() version exists, the C version was called \
as well. After this patch:

1.42%     1.36%  vpxenc   vpxenc              [.] vpx_fdct4x4_neon
0.87%     0.82%  vpxenc   vpxenc              [.] vpx_fdct8x8_neon
0.74%     0.74%  vpxenc   vpxenc              [.] vpx_fdct16x16_neon

Change-Id: Id4e1dd315c67b4355fe4e5a1b59e181a349f16d0

2 years agovp8[loongarch]: Optimize idct_add, filter_bv/bh
yuanhecai [Fri, 11 Mar 2022 02:56:07 +0000 (10:56 +0800)]
vp8[loongarch]: Optimize idct_add, filter_bv/bh

1. vp8_dc_only_idct_add_lsx
2. vp8_loop_filter_bh_lsx
3. vp8_loop_filter_bv_lsx

Bug: webm:1755

Change-Id: I9b629767e2a4e9db8cbb3ee2369186502dc6eb00

2 years agovp9[loongarch]: Optimize convolve/convolve8_avg_c
yuanhecai [Thu, 10 Mar 2022 06:56:42 +0000 (14:56 +0800)]
vp9[loongarch]: Optimize convolve/convolve8_avg_c

1. vpx_convolve8_avg_lsx
2. vpx_convolve_avg_lsx

Bug: webm:1755

Change-Id: I4af5c362a94f11d0b5d1760e18326660bdbc0559

2 years agovp9[loongarch]: Optimize convolve8_horiz/vert/c
yuanhecai [Tue, 1 Mar 2022 08:33:47 +0000 (16:33 +0800)]
vp9[loongarch]: Optimize convolve8_horiz/vert/c

1. vpx_convolve8_lsx
2. vpx_convolve8_vert_lsx
3. vpx_convolve8_horiz_lsx

Bug: webm:1755

Change-Id: I9897e1ed6a904ac74d1078bd22b275af44db142d

2 years agoads2gas_apple.pl: remove gcc-isms
Johann [Sat, 12 Mar 2022 22:02:03 +0000 (07:02 +0900)]
ads2gas_apple.pl: remove gcc-isms

The gcc assembler was incompatible for a long
time. It is now based on clang and accepts
more modern syntax, although not enough to
remove the script entirely.

Change-Id: I667d29dca005ea02a995c1025c45eb844081f64b

2 years agoads2gas[_apple].pl: remove unused stanzas
Johann [Sat, 12 Mar 2022 21:28:16 +0000 (06:28 +0900)]
ads2gas[_apple].pl: remove unused stanzas

Many of the features in ads2gas are no longer used.
Remove all patterns which are no longer used in
libvpx.

Simplify between the two to minimize differences.

Change-Id: Ia1151eb8b694cbe51845a1374a876cc7b798899c

2 years agoMerge "vp9[loongarch]: Optimize horizontal/vertical_8_c" into main
James Zern [Thu, 3 Mar 2022 18:35:53 +0000 (18:35 +0000)]
Merge "vp9[loongarch]: Optimize horizontal/vertical_8_c" into main

2 years agovp9[loongarch]: Optimize horizontal/vertical_8_c
yuanhecai [Tue, 1 Mar 2022 01:48:13 +0000 (09:48 +0800)]
vp9[loongarch]: Optimize horizontal/vertical_8_c

1. vpx_lpf_vertical_8_lsx
2. vpx_lpf_horizontal_8_lsx

Bug: webm:1755

Change-Id: I6b05d6b1b2ac4d2a75beb9c9ca9700976fc3af55

2 years agovp9-svc: Remove VP9E_SET_TEMPORAL_LAYERING_MODE
Marco Paniconi [Wed, 2 Mar 2022 07:03:27 +0000 (23:03 -0800)]
vp9-svc: Remove VP9E_SET_TEMPORAL_LAYERING_MODE

The control was never implemented, no need to keep this.
temporal_layering_mode is set in the config.

Bug: webm:1753
Change-Id: I9a6eb50e82344605ab62775911783af82ac2d401

2 years agovp9[loongarch]: Optimize lpf_horizontal/vertical_16_dual with LSX
yuanhecai [Wed, 23 Feb 2022 03:23:52 +0000 (11:23 +0800)]
vp9[loongarch]: Optimize lpf_horizontal/vertical_16_dual with LSX

Change-Id: I82c6bc16ea57c3f7ac5f4d212a12a5f70cb55ffc

2 years agosvc_datarate_test.cc: remove stale TODO
James Zern [Fri, 11 Feb 2022 20:43:29 +0000 (12:43 -0800)]
svc_datarate_test.cc: remove stale TODO

Bug: webm:1554
Change-Id: I547223763b86c6a24fa32851f7b30ebab4b7472a

2 years agosupport visual studio 2022 (vs17)
Gregor Jasny [Thu, 10 Feb 2022 08:01:49 +0000 (09:01 +0100)]
support visual studio 2022 (vs17)

Change-Id: I8380283d09b0c90183f224399f953dcc527181c5

2 years agoMerge "rtc-vp9: Fix intra-only for bypass mode" into main
Marco Paniconi [Wed, 9 Feb 2022 02:41:23 +0000 (02:41 +0000)]
Merge "rtc-vp9: Fix intra-only for bypass mode" into main

2 years agortc-vp9: Fix intra-only for bypass mode
Marco Paniconi [Tue, 8 Feb 2022 20:36:39 +0000 (12:36 -0800)]
rtc-vp9: Fix intra-only for bypass mode

Allow intra-only frame in svc to also work
in bypass (flexible-svc) mode.

Added unittest for the flexible svc case.

And fix the gld_fb_idx for (SL0, TL1) in bypass/flexible
mode pattern in the sample encoder: force it to be 0
(same as lst_fb_idx), since the slot is unused on SL0.

Change-Id: Iada9d1b052e470a0d5d25220809ad0c87cd46268

2 years agovp8[loongarch]: Optimize vp8_loop/sixtap, vpx_dc with LSX.
Lu Wang [Wed, 10 Nov 2021 07:21:17 +0000 (15:21 +0800)]
vp8[loongarch]: Optimize vp8_loop/sixtap, vpx_dc with LSX.

1. vp8_loop_filter_mbh, vp8_loop_filter_mbv
2. vp8_sixtap_predict16x16, vp8_sixtap_predict8x8
3. vpx_dc_predictor_16x16, vpx_dc_predictor_8x8

./vpxdec --progress -o YUV_1920X1080.yuv original_1200f/VP8_1920X1080.webm

before: 37.77fps
after : 220.90fps

Bug: webm:1755

Change-Id: I1a3ce16f0c872261d813b6531cfdf25bd59bb774

2 years agovpx_util[loongarch]: Add loongson_intrinsics.h v1.0.5.
Lu Wang [Wed, 10 Nov 2021 07:05:42 +0000 (15:05 +0800)]
vpx_util[loongarch]: Add loongson_intrinsics.h v1.0.5.

Bug: webm:1755

Change-Id: Id2fa999bdb8788bd4285114c748c547fa262a95e

2 years agoMerge "Handle NV12 in vpx_img_chroma_subsampling()" into main
Wan-Teh Chang [Tue, 8 Feb 2022 02:20:35 +0000 (02:20 +0000)]
Merge "Handle NV12 in vpx_img_chroma_subsampling()" into main

2 years agoHandle NV12 in vpx_img_chroma_subsampling()
Wan-Teh Chang [Sat, 5 Feb 2022 22:32:49 +0000 (14:32 -0800)]
Handle NV12 in vpx_img_chroma_subsampling()

Change-Id: Ibac9f6f8dcdcae0d0c10ae1a118d13baf2407270

2 years agoUpdate error messages in validate_img()
Wan-Teh Chang [Sat, 5 Feb 2022 20:14:37 +0000 (12:14 -0800)]
Update error messages in validate_img()

Change-Id: I4aa6d2e16e077d29e4e9eabfc7056fcfed6786d6

2 years agoMerge "rtc-vp9: Fix to tests for intra-only frame." into main
Marco Paniconi [Thu, 3 Feb 2022 17:04:46 +0000 (17:04 +0000)]
Merge "rtc-vp9: Fix to tests for intra-only frame." into main

2 years agortc-vp9: Fix to tests for intra-only frame.
Marco Paniconi [Thu, 3 Feb 2022 00:17:58 +0000 (16:17 -0800)]
rtc-vp9: Fix to tests for intra-only frame.

Fix some issues with the test, and add new
test that verifies that we can decode base stream
startinig at middle of sequence where intra-only
frame is inserted.

Change-Id: I398d23927113eb58ef64694feca25e60ce60a5f7

2 years agovp9_roi_test: apply iwyu
James Zern [Wed, 2 Feb 2022 00:24:07 +0000 (16:24 -0800)]
vp9_roi_test: apply iwyu

Change-Id: I715c27e329495940d989f95df65ac10e021261d2

2 years agovp9_thread_test: parameterize VP9DecodeMultiThreadedTest
James Zern [Tue, 1 Feb 2022 19:57:05 +0000 (11:57 -0800)]
vp9_thread_test: parameterize VP9DecodeMultiThreadedTest

on a per-file basis; this will make sharding more effective

Change-Id: Ib797681a7cc3bd7ec835bb0c1c7a8d9f23512a0d

2 years agoMerge "Use background segmentation mask with ROI" into main
Jerome Jiang [Mon, 31 Jan 2022 15:17:22 +0000 (15:17 +0000)]
Merge "Use background segmentation mask with ROI" into main

2 years agoMerge "vpx/vp8[cd]x.h,cosmetics: normalize ctrls to enum order" into main
James Zern [Sat, 29 Jan 2022 03:20:41 +0000 (03:20 +0000)]
Merge "vpx/vp8[cd]x.h,cosmetics: normalize ctrls to enum order" into main

2 years agovpx/vp8[cd]x.h,cosmetics: normalize ctrls to enum order
James Zern [Fri, 28 Jan 2022 19:47:08 +0000 (11:47 -0800)]
vpx/vp8[cd]x.h,cosmetics: normalize ctrls to enum order

Change-Id: I49bbd956b3a64008d1abe54de87d7831bc3eede6

2 years agolibvpx[loongarch]: Add loongarch support.
Jin Bo [Tue, 6 Jul 2021 09:18:48 +0000 (17:18 +0800)]
libvpx[loongarch]: Add loongarch support.

LSX and LASX are enabled by default if compiler supports them.

Bug: webm:1754

Change-Id: Ic36b113bc4313c50e9d2bbab91199b3aa46d00dc

2 years agoMerge changes I2db20130,I4e643c83 into main
James Zern [Thu, 27 Jan 2022 21:16:55 +0000 (21:16 +0000)]
Merge changes I2db20130,I4e643c83 into main

* changes:
  vp8dx.h,cosmetics: normalize #define/type order
  vp8dx.h: add missing define for VP9_SET_BYTE_ALIGNMENT

2 years agoMerge "fix some include guards" into main
James Zern [Thu, 27 Jan 2022 21:16:08 +0000 (21:16 +0000)]
Merge "fix some include guards" into main

2 years agoUse background segmentation mask with ROI
Jerome Jiang [Tue, 28 Sep 2021 23:59:21 +0000 (16:59 -0700)]
Use background segmentation mask with ROI

RTC sample encoder vpx_temporal_svc_encoder can take mask files as input
when ROI_MAP is set to 1.

Uses ROI and segmentation of vp9 to skip background encoding when
source_sad is low and the correspond block in previous frame is also
skipped.

Change-Id: I8590e6f9a88cecfa1d7f375d4cc480f0f2af87b6

2 years agovp8dx.h,cosmetics: normalize #define/type order
James Zern [Thu, 27 Jan 2022 03:44:33 +0000 (19:44 -0800)]
vp8dx.h,cosmetics: normalize #define/type order

Change-Id: I2db20130cc366bead5e576b375479917f9aee024

2 years agovp8dx.h: add missing define for VP9_SET_BYTE_ALIGNMENT
James Zern [Thu, 27 Jan 2022 03:41:41 +0000 (19:41 -0800)]
vp8dx.h: add missing define for VP9_SET_BYTE_ALIGNMENT

Change-Id: I4e643c837bb010bd58f4fc8179045f8df18f8ae1

2 years agofix some include guards
James Zern [Wed, 26 Jan 2022 23:05:22 +0000 (15:05 -0800)]
fix some include guards

Change-Id: I0233d352c134bdda3ca160d41b4671d1c45ab01c

2 years agoMerge "libwebm: update to libwebm-1.0.0.28-28-gee0bab5" into main
James Zern [Wed, 26 Jan 2022 18:40:27 +0000 (18:40 +0000)]
Merge "libwebm: update to libwebm-1.0.0.28-28-gee0bab5" into main

2 years agolibwebm: update to libwebm-1.0.0.28-28-gee0bab5
James Zern [Wed, 26 Jan 2022 04:06:59 +0000 (20:06 -0800)]
libwebm: update to libwebm-1.0.0.28-28-gee0bab5

https://chromium.googlesource.com/webm/libwebm/+log/206d268d4d8066e5a37c49025325b80c95c771dd..ee0bab576c338c9807249b99588e352b7268cb62

only one commit affects this snapshot:
ee0bab5 Revert "mkvmuxer,Cluster::Size: make uint64 conversion explicit"

Change-Id: Ib1f21fc5589098af346d110ff88c94bb1ba0a027

2 years agoReland "Add vp9 ref frame to flag map function"
Jianhui Dai [Sat, 1 Jan 2022 00:01:48 +0000 (08:01 +0800)]
Reland "Add vp9 ref frame to flag map function"

Original change's description:
> Add vp9 ref frame to flag map function
>
> Change-Id: I371c2346b9e0153c0f8053cab399ce14cd286c56

Change-Id: I04a407ee0ef66c01a0d224b4468e043213f8791f

2 years agoRevert "Set unused reference frames to first ref"
Jerome Jiang [Tue, 11 Jan 2022 16:47:52 +0000 (08:47 -0800)]
Revert "Set unused reference frames to first ref"

This reverts commit e7f33a53cf404bbb3688af9b13375b5c090daae4.

Change-Id: I54e807220885cb78af6f3c6e48b3eb2c9f1e70b4

2 years agoRevert "Add vp9 ref frame to flag map function"
Jerome Jiang [Tue, 11 Jan 2022 16:46:59 +0000 (08:46 -0800)]
Revert "Add vp9 ref frame to flag map function"

This reverts commit 44e611482e13fdffa0acde780a20dd68ee153498.

Change-Id: Ic900cc01be4de7983fab42178a488277efab77b3

2 years agoAdd vp9 ref frame to flag map function
Jianhui Dai [Sat, 1 Jan 2022 00:01:48 +0000 (08:01 +0800)]
Add vp9 ref frame to flag map function

Change-Id: I371c2346b9e0153c0f8053cab399ce14cd286c56

2 years agoMerge "vp9_prob_diff_update_savings_search_model: quiet conv warnings" into main
James Zern [Wed, 22 Dec 2021 03:03:11 +0000 (03:03 +0000)]
Merge "vp9_prob_diff_update_savings_search_model: quiet conv warnings" into main

2 years agovp9_prob_diff_update_savings_search_model: quiet conv warnings
James Zern [Tue, 21 Dec 2021 19:53:51 +0000 (11:53 -0800)]
vp9_prob_diff_update_savings_search_model: quiet conv warnings

under Visual Studio:
Warning C4244 '=': conversion from 'int64_t' to 'vpx_prob', possible loss of
data

after:
ea042a676 vp9 encoder: fix integer overflows

'newp' has already been range checked earlier in the loop so the cast won't
have any unexpected results

Change-Id: Ic10877db2c0633d53fffdf8852d5095403c23a02

2 years agovpx_int_pro_row: normalize declaration w/aom
James Zern [Tue, 21 Dec 2021 03:56:01 +0000 (19:56 -0800)]
vpx_int_pro_row: normalize declaration w/aom

this is a followup to:
  7fbcee49d quiet -Warray-parameter warnings
and conforms to aom in:
  06e13e817 quiet -Warray-parameter warnings

the sad functions are more varied in libvpx and will require a separate
pass

Change-Id: I765fd6704df615e836ba0b184ff8266ce926c394

2 years agoMerge "vp9 encoder: fix test failure on 32 bit arch" into main
Fyodor Kyslov [Thu, 16 Dec 2021 22:29:13 +0000 (22:29 +0000)]
Merge "vp9 encoder: fix test failure on 32 bit arch" into main

2 years agovp9 encoder: fix test failure on 32 bit arch
Fyodor Kyslov [Thu, 16 Dec 2021 07:11:15 +0000 (23:11 -0800)]
vp9 encoder: fix test failure on 32 bit arch

test fails with memory error. Reducing testing resolution

bug: webm:1750
Change-Id: I75664088022aa660bdf6e69de2d11121db44716f

2 years agoMerge "Set unused reference frames to first ref" into main
Marco Paniconi [Wed, 15 Dec 2021 19:27:09 +0000 (19:27 +0000)]
Merge "Set unused reference frames to first ref" into main

2 years agoMerge "vp9 encoder: fix integer overflows" into main
Fyodor Kyslov [Wed, 15 Dec 2021 02:51:31 +0000 (02:51 +0000)]
Merge "vp9 encoder: fix integer overflows" into main

2 years agovp9 encoder: fix integer overflows
Fyodor Kyslov [Tue, 14 Dec 2021 17:59:17 +0000 (09:59 -0800)]
vp9 encoder: fix integer overflows

fixing integer overflow with 16K content and enabling the test

Bug: webm:1750
Fixed: webm:1750
Change-Id: I76eebd915bcae55bc755613251a98e1716dea4c0

2 years agoSet unused reference frames to first ref
Jianhui Dai [Thu, 9 Dec 2021 05:38:22 +0000 (13:38 +0800)]
Set unused reference frames to first ref

If a reference frame is not referenced, then set the index for that
reference to the first one used/referenced instead of unused slot.
Unused slot means key frame, as key frame resets all slots with itself.

This CL extracts `get_first_ref_frame()` from `reset_fb_idx_unused()`
with a typo fixing, and sets all unused reference frames to first ref in
vp9 uncompressed header.

Bug: webrtc:13442
Change-Id: I99523bc2ceedf27efe376d1113851ff342982181

2 years agoMerge "vp9_diamond_search_sad_avx: quiet -Wmaybe-uninitialized warning" into main
James Zern [Fri, 10 Dec 2021 19:42:06 +0000 (19:42 +0000)]
Merge "vp9_diamond_search_sad_avx: quiet -Wmaybe-uninitialized warning" into main

2 years agoMerge "vp[89]_initalize_enc(): protect against multiple invocations" into main
James Zern [Fri, 10 Dec 2021 18:32:44 +0000 (18:32 +0000)]
Merge "vp[89]_initalize_enc(): protect against multiple invocations" into main

2 years agovp[89]_initalize_enc(): protect against multiple invocations
James Zern [Fri, 10 Dec 2021 02:34:18 +0000 (18:34 -0800)]
vp[89]_initalize_enc(): protect against multiple invocations

this removes the burden from callers; the rtcd functions are left with a
mostly redundant (outside of tests) once() as top-level functions should
ensure their constraints are met

Change-Id: I5bdbcfa4671c6a1492cfe9c7d886c361c26caaa9

2 years agovp9_diamond_search_sad_avx: quiet -Wmaybe-uninitialized warning
James Zern [Fri, 10 Dec 2021 02:02:30 +0000 (18:02 -0800)]
vp9_diamond_search_sad_avx: quiet -Wmaybe-uninitialized warning

w/gcc-11

v_these_mv_w is always initialized in this block with _mm_add_epi16();
converting this to a _mm_storeu_si32(tmp) call also works, but
introduces more stack usage

|| ../vp9/encoder/x86/vp9_diamond_search_sad_avx.c: In function
‘vp9_diamond_search_sad_avx’:
vp9/encoder/x86/vp9_diamond_search_sad_avx.c|285 col 19| warning:
‘v_these_mv_w’ may be used uninitialized [-Wmaybe-uninitialized]
||   285 |           new_bmv = ((const int_mv *)&v_these_mv_w)[local_best_idx];
||       |           ~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
vp9/encoder/x86/vp9_diamond_search_sad_avx.c|149 col 21| note:
‘v_these_mv_w’ declared here
||   149 |       const __m128i v_these_mv_w = _mm_add_epi16(v_bmv_w, v_ss_mv_w);
||       |                     ^~~~~~~~~~~~

Change-Id: I1cd2fcb41030db16f51c94f3a70eb8eb2a526401

2 years agovp9_bitstream.c: quiet -Wstringop-overflow warning
James Zern [Fri, 10 Dec 2021 01:32:30 +0000 (17:32 -0800)]
vp9_bitstream.c: quiet -Wstringop-overflow warning

w/gcc-11

as noted in
the size of interp_filter_selected[][]'s first dimension varies between
VP9_COMP and VP9BitstreamWorkerData as noted in the latter's definition:
  // The size of interp_filter_selected in VP9_COMP is actually
  // MAX_REFERENCE_FRAMES x SWITCHABLE. But when encoding tiles, all we ever do
  // is increment the very first index (index 0) for the first dimension. Hence
  // this is sufficient.
  int interp_filter_selected[1][SWITCHABLE];

normalize the function signatures of write_modes*(), etc. to take this
into account.

vp9/encoder/vp9_bitstream.c|948 col 3| warning: ‘write_modes’ accessing
64 bytes in a region of size 16 [-Wstringop-overflow=]
||   948 |   write_modes(cpi, xd, &cpi->tile_data[data->tile_idx].tile_info,
||       |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
||   949 |               &data->bit_writer, tile_row, data->tile_idx,
||       |               ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
||   950 |               &data->max_mv_magnitude, data->interp_filter_selected);
||       |               ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
vp9/encoder/vp9_bitstream.c|948 col 3| note: referencing argument 8 of
type ‘int (*)[4]’
vp9/encoder/vp9_bitstream.c|488 col 13| note: in a call to function
‘write_modes’

Change-Id: I0898cd7c3431633c382a0c3a1be2f0a0bea8d0f9