Age | Commit message (Collapse) | Author |
|
The compiler cannot prove that the buffers do not alias, so it has to emit a
reload. On our internal workloads, the reloads are about 1% of the total time
spent decoding frames.
The loop before the change:
movzwl 0x8(%r15), %edx # load ref_frame
addq $0xc, %rax
movw %dx, -0x4(%rax) # store ref_frame
movq 0xc(%r15), %rdx # load mv
movq %rdx, -0xc(%rax) # store mv
cmpq %rax, %rcx
jne -0x1a
The loop after the change:
movw %r9w, 0x8(%rax) # store cached ref_frame
addq $0xc, %rax
movq %r8, -0xc(%rax) # store cached mv
cmpq %rax, %rdx
jne -0x12
Change-Id: Ia1e9634bcabb4d7e06ed60f470bc4cd67f5ab27e
|
|
vp9 does not support error correction
Change-Id: I89517ae97abfa60833c9150495556d49c9656778
|
|
|
|
The mutex lf_mutex will now be allocated and destroyed, making it easier
to verify if it has been inited before destruction.
BUG=webm:1662
Change-Id: I8169bea9e117bd615d68b8d02da98aeab570b53f
|
|
This avoids unneeded initializations.
extend_and_predict is called from multiple nested loops, allocate
large buffer on stack and use just a portion of it.
-ftrivial-auto-var-init= inserts initializations which performed on
multiple iterations of loops causing 258.5% regression on
webrtc_perf_tests decode_time/pc_vp9svc_3sl_low_alice-video.
Bug: 1020220, 977230
Change-Id: I7e5bb3c3780adab74dd8b5c8bd2a96bf45e0c231
|
|
From unit test: VP9MultiThreaded/InvalidFileTest
implicit conversion from type 'int' of value 83144 (32-bit, signed) to
type 'tran_low_t' (aka 'short') changed the value to 17608 (16-bit,
signed)
BUG=webm:1615
BUG=webm:1648
Change-Id: I4170494c328596ace66432c8563c55f31745cf76
|
|
Spends 25% less time in dec_find_mv_refs for
grass_1_1280X768_fr30_bd8_sub8X8_l31.webm saving 0.7% overall.
Change-Id: I658bb5d6dd8ac82a568c7823dea3f4947ad7ed73
|
|
Change-Id: I045b4cf625d428109688303ced5433d824df2790
|
|
Change-Id: I339899cff65c7ef563f9411f2d7af9a32a08a705
|
|
For row_mt=1, when mi->skip is set to 1 after parse based on
eobtotal for that partition, dqcoeff and eob need to be restored
as recon_partition doesn't increment these pointers for skip cases
Change-Id: I79711b0c175937aa6da3bba3b3bc053f91a8ce35
|
|
This fixes CFI error flagged for this function when row-mt=1
Change-Id: Ic5b427a6b621228280ebe829d00b540b18e2c087
|
|
This reverts commit 14208ab41e114f5779d106ae54a7cc8fd9d43820.
This causes test vectors failures with --row-mt=1.
BUG=webm:1617
Change-Id: Icb14bbbb6f38608a73dde0370ad874c0b1b0af8a
|
|
With switching to clang-7.0.1 we got new warnings. With this change the
warnings are back to 0 for all configurations (excluding warnings in
third_party)
BUG=webm:1616
Change-Id: I25ceb592c425394e8f14d333fb5680144f892213
|
|
Explicitly compare the block location against tile coordinate to
decide if intra prediction boundary is available. No coding stats
will be changed by this refactoring.
Change-Id: I80b3a131366bb2c5f8ea53a139ed6e9b0b7ddb68
|
|
ClangTidy reported 16 issues. All are around typecasting and
straightforward
Change-Id: Ie8f9fc2ba7992dd44fef65b121fe65966a1a1297
|
|
Change-Id: Ifc165d76a71fcdb7c19c158c940a8d273be0d95f
|
|
Adds conditional wait/signal instead of sched_yield.
Change-Id: I49a760eacdd6b6ac690e797ea5f10febf6a1a084
|
|
This reverts commit 06983668cf41f66765528db044419f954e5a5d64.
Fixes Visual Studio build errors introduced by earlier row mt commit
BUG=webm:1587
Change-Id: I792df86e8254cd6b2a511955b691af619a569cd0
|
|
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
|
|
BUG=webm:1584
Change-Id: Ie0d26b745ab1f5907a6a2dc10fbc5083f3fb0b8d
|
|
|
|
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
|
|
|
|
There was no setjmp on vpx_internal_error when there is no available
frame buffer, ready_for_new_data is not reset to 1.
BUG=webm:1571
Change-Id: I4f8efffb7d6fed3085b1f0229d0d1071a056b6c6
|
|
Add functions that will do only parse or only recon. These are
duplicated and modified from decode_partition and decode_block.
Change-Id: I2201e235bf491e823ae63d27b2586bbb43b48929
|
|
BUG=webm:1444
Change-Id: I9c7c0a4161aaf52436bd5c01d30b035b2ff5508c
|
|
Row based multi-thread needs extra memory to store the parsed
co-efficients, partitions and eob. This commit adds memory for the same.
Change-Id: I13fa4a6ada2ec3048bc973e465055b832429388f
|
|
Take the original loopfilter multi-thread optimization
(dafe064289a917977439ab6f4f002b9946496084) along with the fixes for bugs
1558 and 1562.
BUG=webm:1558
BUG=webm:1562
Change-Id: Ibbf6bd13f4ffff0e79184ccfd6b85a49e067a6d8
|
|
This reverts commit bf6299010e815e111d7326530c249e9d99611f34.
segfaults, causes an assertion failure with corrupt input:
get_uv_tx_size: Assertion `mi->sb_type < BLOCK_8X8 ||
ss_size_lookup[mi->sb_type][pd->subsampling_x][pd->subsampling_y] !=
BLOCK_INVALID
BUG=webm:1562
Change-Id: I05a711cad3d8e7f1a8e64422b4356bdf4edb3d12
|
|
Allow the encoder to fully utilize the decoder's capability to
handle both 1 fwd + 2 bwd case and 2 fwd + 1 bw case.
Change-Id: I3f984d52552ddb701b80b042d979f8fe09dd3a80
|
|
Generalize the encoder comp_fixed_ref and comp_var_ref assignments.
Make it fully support 2 fwd + 1 bwd and 1 fwd + 2 bwd settings
that VP9 decoder allows.
Change-Id: Id74da9a66327189a3fdf382d447243003c431131
|
|
|
|
use the recommended format [1] of:
<PROJECT>_<PATH>_<FILE>_H_
[1] https://google.github.io/styleguide/cppguide.html#The__define_Guard
"All header files should have #define guards to prevent multiple
inclusion. The format of the symbol name should be
<PROJECT>_<PATH>_<FILE>_H_."
Change-Id: I2e8ab0b32fb23c30fa43cff5fec12d043c0d2037
|
|
Always allocate cpi->common.postproc_state.limits using unscaled width.
With ./configure --enable-pic --enable-decode-perf-tests
--enable-encode-perf-tests --enable-encode-perf-tests
--enable-vp9-highbitdepth --enable-better-hw-compatibility
--enable-internal-stats --enable-postproc --enable-vp9-postproc
--enable-error-concealment --enable-coefficient-range-checking
--enable-postproc-visualizer --enable-multi-res-encodin
--enable-vp9-temporal-denoising --enable-webm-io --enable-libyuv
segfaults tend to occur in VP9/DatarateOnePassCbrSvcSingleBR.* tests.
This is an analogue to issue
https://bugs.chromium.org/p/webm/issues/detail?id=1374
where a buffer allocated using a scaled width is reused after scaling
back to the original size. Unfortunately, in this case the unscaled
width doesn't appear to be known in the immediated context of the
allocation, so the the signature of vp9_post_proc_frame needs to be
changed to provide that information in order to provide a similar fix
as in #1374.
Signed-off-by: Matthias Räncker <theonetruecamper@gmx.de>
Change-Id: I6f943aafbb3484ee94c5b38d7fcdd9d53fce3e5f
|
|
This reverts commit 753fd86e86ac727dccac88376260b8f54502f2a3.
This also has the fix for the DoS reported in bug 1558.
BUG=webm:1558
Change-Id: I65ea84e0c11d6bd40d8cb0587dfe934b3ac11dce
|
|
This reverts commit dafe064289a917977439ab6f4f002b9946496084.
Corrupted files may cause the decoder to hang as row progress in the
loopfilter is used to progress each thread.
BUG=webm:1558
Change-Id: I0674ce9af14d3fb7b2da8124e7b600616c8e734a
|
|
The previous enc/dec mismatch detection assumes the previously
reconstructed frame would always stay at frame buffer pool index
at 0. It could hence cause certain delay in enc/dec mismatch
detection when the immediate reconstruction frame is not yet
propagated to index 0 in the buffer map pool.
This change always keeps the latest decoded show frame buffer
index and directly gets the reconstructed frame from encoder and
decoder buffer pools to check for mismatch.
Change-Id: If53092cbc42ab78d55af5b83f12a489fc362f3ae
|
|
|
|
Adding LPF within the tileworker hook. This means that LPF will be done
immediately after decode, without waiting for all threads to sync.
Performance Improvement -
Platform Resolution 2 Threads 4 Threads
X86 720p 7.24% 22.04%
1080p 5.29% 17.02%
ARM 720p 4.61% 8.75%
1080p 5.55% 12.03%
x86 Improvement measured on Intel Core i7-6700 CPU @ 2.10GHz set
in performance with turbo mode off
ARM Improvement measured on Nexus 6 Snapdragon 805 Quad-core @ 2.65 GHz
Change-Id: Ifa73c71b40db3fa7fa16f54f4e3aa06d1258caae
|
|
|
|
when resync is needed, we flush all frame buffers on key frame.
BUG=b/112406540
BUG=oss-fuzz:9722
Change-Id: Ie53feb12126f25877436eba40317400bf69c6207
|
|
Comparing the size values with subtraction requires casting. Sort in
descending order.
(a < b) - (a > b)
If a is greater, this is 0 - 1 = -1
If the values are equal, this is 0 - 0 = 0
If b is greater, this is 1 - 0 = 1
Change-Id: I5c20fd10fbc97c391c6858235c44d25d7db57f0e
|
|
|
|
Add tests with corrupted frames and periodic key frames.
BUG=webm:1545
Change-Id: Ic0684bdafd01507036f56465387b9d2187b1458e
|
|
This commit adds a command line argument "--row-mt". Passing "--row-mt=1" will
set the row_mt flag in the decoder context. This flag will be used to
determine whether row-wise multi-threading path is to be taken when the
row-wise multi-threading functions are added.
Change-Id: I35a5393a2720254437daa5e796630709049e0bc2
|
|
libaom commit 80a5b09337a80093e1e7ae5eb540020a22949805:
dec_free_mi: Reset cm->mi_alloc_size.
libaom commit fb0dd0bb80fc95ef016f1421b105a52fffa32816:
Clear cm->width and cm->height on alloc failure.
libaom commit ccb27264089a8cfa1334391ebbcb6a11b8dff442:
Misc. resize fixes along with the resize test
Note: only the change to enc_free_mi in av1/encoder/encoder.c
is merged.
Change-Id: I602813230d40125e59608fa013085dca3e160c33
|
|
The difference of two size_t variables.
Change-Id: I73f35cdafc2ba64a9ddaf855cc6a410cfb63b8da
|
|
Control Flow Integrity [1] indirect call checking verifies that function
pointers only call valid functions with a matching type signature. This
change eliminates function pointer casts to make libvpx CFI-safe.
[1] https://www.chromium.org/developers/testing/control-flow-integrity
Change-Id: I7e08522d195a43c88cda06fa20414426c8c4372c
|
|
Release frame buffers for non-ref when the decoder is destroyed.
Enable the non ref test.
BUG=b/68819248
Change-Id: Id87ef3b0a62318f9812e927cd957c05c859047fa
|
|
the file was empty after the struct removal. the only remaining use was
within vp9_dx_iface, but the wrapper became unnecessary after the
removal of frame_parallel_decode.
BUG=webm:1395
Change-Id: I515ab585d701e77d388d12b2802d844c424f9bcd
|