summaryrefslogtreecommitdiff
path: root/vp8/encoder
AgeCommit message (Collapse)Author
2019-04-04vp8_rd_pick_inter_mode: clear static analysis warningJames Zern
uv_intra_rate is undefined by default, it is safe to use if uv_intra_done is true. BUG=webm:1616 Change-Id: I02e5f6c9e5cc6ed0b41619b4a59e55ea398bad41
2019-03-29Merge "update .clang-format for version clang-7.0.1 update."James Zern
2019-03-29update .clang-format for version clang-7.0.1 update.Hien Ho
added files that are affected by clang-format version 7. BUG=b/120815481 Change-Id: I40662ce962e4f4b1fcdf183b700f85cc5c0f9f82
2019-03-28Revert "Wrap macro definition in do-while(0)"Jerome Jiang
This reverts commit aa04b6f9a7475e9d9457dfc5bf441faf15efc466. It caused big regression on webrtc VP8 tests. Change-Id: I937e769d133abeca62ba063e59a58b5c461f5b5e
2019-03-19Wrap macro definition in do-while(0)Jerome Jiang
Change-Id: Id654a48d2fa40355552d7267e58461e6cc1c6998
2019-03-14Enclose macro arguments in parenthesesJerome Jiang
BUG=webm:1606 Change-Id: I661485b860243c95b6450035dbac77b0dd4d9ff4
2019-02-12vp8: Limit Q change for screen content CBR modeMarco Paniconi
Add last_q[] to layer context, and add limit on Q change from previous layer/frame. For now put hard limit of 12 for decrease. For 1 pass CBR sreen content mode. Change-Id: Ifb972c9b6831440c80b1cb07a054c577ece930ec
2019-02-11vp8: Fix condition for update of last_pred_err_mbMarco Paniconi
For 1 pass cbr screen-content mode: quantity should only be updated on delta frames. Change-Id: I16fc47b2805c7527ab4ff25bd8b5a5bd9c2b8976
2019-02-04vp8: Add extra conditon for overshoot-dropMarco Paniconi
For drop due to large overshoot feature (in 1 pass CBR): add additional condition that current prediction error is larger than that of last encoded frame. This make the drop due to sudden overshoot more robust, and improves rate convergence for steady hard content. Change-Id: If20027d26b4dcd290e4f788ae8e2760d95b536a5
2019-01-07vp8_copy32xn: resolve missing declarationJohann
BUG=webm:1584 Change-Id: I9898a6e2f977acd4e26b09222a1eb2ab4f37f0af
2019-01-07Merge "vp8 multi dimensional search: resolve missing declarations"Johann Koenig
2019-01-07arm neon: resolve missing declarationsJohann
BUG=webm:1584 Change-Id: I2dcf39f2327b72b58be72c27f952ea781a790dd3
2019-01-07vp8 multi dimensional search: resolve missing declarationsJohann
BUG=webm:1584 Change-Id: I5c3fb5ab00bff66a8e8f4b8d27cbcea4946eced0
2018-12-17Remove -Wextra suppression.Jerome Jiang
BUG=webm:1246 Change-Id: Iae78e266faa9c4989500fc919b24f2f584ac0550
2018-11-12quantize: use aarch64 vmaxvJohann
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
2018-11-07Merge "vp8: remove VP8_ENTROPY_STATS code"Johann Koenig
2018-11-05vp8: Increase rate correction threshold for drop-overshootMarco Paniconi
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
2018-11-01vp8: remove VP8_ENTROPY_STATS codeJohann
Does not compile. Noticed while cleaning up un-namespaced functions Change-Id: I4a9048e66d051397f652e7b5412606a5e234f61f
2018-10-31vp8 boolcoder: normalize to "bc"Johann
"bc" maps to BOOL_CODER better than "br" Change-Id: Idefd03e79ccc1851a1b26f8206a159b0e5c5fb2d
2018-10-30clang-tidy: fix vp8/encoder parametersJohann
BUG=webm:1444 Change-Id: I57a305cdab0d62b0745116272fbd5d9257c6e679
2018-10-11Revert "vp8: Increase rate threshold for overshoot-drop"Marco Paniconi
This reverts commit bc066684ca4deff24d02ee56071d731b431bf438. Reason for revert: <INSERT REASONING HERE> Regression in webrtc perf test Original change's description: > vp8: Increase rate threshold for overshoot-drop > > Increase the rate threshold for the dropping when > overshoot is detected during encoding. This helps > to prevent some unneccessary drops for hard content. > > Change-Id: I258bf33883d46347efd44e1e192cb25c444d05fe TBR=sprang@chromium.org,marpan@google.com,builds@webmproject.org # Not skipping CQ checks because original CL landed > 1 day ago. Change-Id: Ib0e84747430ba6d04e479f9efd86d628b80a1e67
2018-10-03vp8: Increase rate threshold for overshoot-dropMarco Paniconi
Increase the rate threshold for the dropping when overshoot is detected during encoding. This helps to prevent some unneccessary drops for hard content. Change-Id: I258bf33883d46347efd44e1e192cb25c444d05fe
2018-09-15cosmetics: normalize include guardsJames Zern
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
2018-03-22Fix implicit-fallthrough warningsLinfeng Zhang
Compiler -- gcc (Debian 7.3.0-5) 7.3.0 Change-Id: Ied91c7ef3d25c3ef44a1f667656176e2709b4f44
2018-03-17VP8: Fix out of range index for mvcost.Jerome Jiang
Clamp index between 0 and MVvals. Bit exact for speed -8, -6 and -4 on RTC set. BUG=b/72510002 Change-Id: I61bdb02a0924e157b3c1980f74fbbfe5ce51bc44
2018-03-14vp8 rdopt.c: zero rd.[rate_uv|distortion_uv]Johann
These values are not consistently set before calling update_best_mode. In vp9_rdopt.c they are individual values instead of a struct and are zero'd at declaration. Clears a static analysis warning: warning: The right operand of '-' is a garbage value RDCOST(x->rdmult, x->rddiv, (rd->rate2 - rd->rate_uv - other_cost), warning: The right operand of '-' is a garbage value (rd->distortion2 - rd->distortion_uv)); Change-Id: I19895d062e7c0ac67937126ebc5dcb0afd3a2931
2018-03-12vp8 temporal_filter: ignore return valueJohann
Clears up static clang analysis warning regarding a dead store. Change-Id: I6a90e6fd5f2775d933c46c7553811635bd2def21
2018-03-04move vp8 encodeopt to block_error_sse2Johann
The file contains sse2 implementations related to various block error functions. Update the .mk file to include it only when sse2 is requested. BUG=webm:1500 Change-Id: I67b766faed425fd7a96db8541b13c69670b65fec
2018-02-20remove deprecated 'register' keywordJohann
Will be removed in C++17: http://en.cppreference.com/w/cpp/language/storage_duration Change-Id: Iadce5e2b974c707799fa939f3ff1c420fb79a871
2018-01-22Merge changes from topic "clang-format"Johann Koenig
* changes: clang-format v5.0.0 vp9/ remove spurious comments clang-format v5.0.0 vp8/ clang-format v5.0.0 vpx_dsp/ clang-format v5.0.0 mem_ops.h clang-format v5.0.0 vpx_util/vpx_atomic.h clang-format v5.0.0 y4minput.c clang-format v5.0.0 vpxenc.c clang-format v5.0.0 examples/ clang-format v5.0.0 test/
2018-01-18remove spurious commentsJohann
These don't appear to make any sense given their context. The commit log also does not reveal anything. Discovered due to spurious clang-format indenting: https://bugs.llvm.org/show_bug.cgi?id=35930 Change-Id: I732a66056ba4c05e3e132a2f236fe10f7a282900
2018-01-18clang-format v5.0.0 vp8/Johann
Allow*OnASingleLine appears to no longer apply to typedef structs. Adjust closing parenthesis/opening brace on functions. Remove trailing commas to keep multiple elements on one line. Change-Id: I6e535a8ddb15c9b3de8216ce8ddb2a18241af46c
2018-01-18vp8: Fix to multi-res-encoder for skipping streams.Marco
For the vp8 simulcast/multi-res-encoder: Add flags to keep track of the disabling/skipping of streams for the multi-res-encoder. And if the lower spatial stream is skipped for a given stream, disable the motion vector reuse for that stream. Also remove the condition of forcing same frame type across all streams. This fix allows for the skipping/disabling of the base or middle layer streams. Change-Id: Idfa94b32b6d2256932f6602cde19579b8e50a8bd
2018-01-11adopt some clang 5.0.0 formattingJohann
At least the changes that don't conflict with 4.0.1 Change-Id: I9b6a7c14dadc0738cd0f628a10ece90fc7ee89fd
2017-12-07Fix build warnings for gcc 6.3Jerome Jiang
Clean up some alias. BUG=webm:1465 Change-Id: I99e186162db9f9e15375fef01564692434eda619
2017-12-01explicitly label .text sectionsJohann
nasm should infer .text but does not for windows: https://bugzilla.nasm.us/show_bug.cgi?id=3392451 Change-Id: Ib195465e5f33405f5ff61c4cf88aa2a72640cacb
2017-11-29vp8: [loongson] optimize regular quantize v2.Shiyou Yin
1. Optimize the memset with mmi. 2. Optimize macro REGULAR_SELECT_EOB. Change-Id: Icd9c866b0e6aef08874b2f123e9b0e09919445ff
2017-11-29vp8: [loongson] optimize vp8_short_fdct4x4_mmi v2.Shiyou Yin
Optimize the calculate process of a,b,c,d. Change-Id: I81717e47bc988ace1412d478513e7dd3cb6b0cc9
2017-10-27vp8: correct if/else '{' placementJames Zern
swap '{' and c-style comments removing a few redundant ones along the way; covers most leftovers from the clang-tidy run against an x86_64-linux config. Change-Id: I67a45596f80a12389faca49c5be440875092a7df
2017-10-17vp8: Enable use of ROI map.Jerome Jiang
Disable cyclic refresh if ROI is used and add flag to properly handle the static_thresh deltas. Remove the ROI test for cyclic refresh (it's allowed but disabled if ROI is used). Add an example in vpx_temporal_svc_encoder.c. Turned off by default. BUG=webm:1470 Change-Id: Ief9ba1d7f967bc00511b412b491c3f70943bfbda
2017-10-12vp8: [loongson] optimize dct with mmiShiyou Yin
1. vp8_short_fdct4x4_mmi 2. vp8_short_fdct8x4_mmi 3. vp8_short_walsh4x4_mmi Change-Id: I89a7df25cfd09fae309fac257ad8b6a3dc1c8acb
2017-10-11vp8: [loongson] optimize quantize with mmiShiyou Yin
1. vp8_fast_quantize_b_mmi 2. vp8_regular_quantize_b_mmi Change-Id: Ic6e21593075f92c1004acd67184602d2aa5d5646
2017-09-19temporal_filter_apply_sse2.asm: add ':' to labelJames Zern
quiets nasm warning: label alone on a line without a colon might be in error BUG=webm:1462 Change-Id: I660407ca60e8c9a810dba9d76afb65852029a29c
2017-09-01apply clang-formatclang-format
Change-Id: If4c3e8a396d0fcb304f407b44e28cac3219f038c
2017-08-31Prevent data race from low-pass filter.Peter Boström
Makes main thread wait for the filter level to be picked to avoid a race between the LPF thread and update_reference_frames(). This also re-enables the failing tests under thread_sanitizer where this data race was detected. BUG=webm:1460 Change-Id: I7f5797142ea0200394309842ce3e91a480be4fbc
2017-08-31Add atomics to vp8 synchronization primitives.Peter Boström
Fixes issue on iPad Pro 10.5 (and probably other places) where threads are not properly synchronized. On x86 this data race was benign as load and store instructions are atomic, they were being atomic in practice as the program hasn't been observed to be miscompiled. Such guarantees are not made outside x86, and real problems manifested where libvpx reliably reproduced a broken bitstream for even just the initial keyframe. This was detected in WebRTC where this device started using multithreading (as its CPU count is higher than earlier devices, where the problem did not manifest as single-threading was used in practice). This issue was not detected under thread-sanitizer bots as mutexes were conditionally used under this platform to simulate the protected read and write semantics that were in practice provided on x86 platforms. This change also removes several mutexes, so encoder/decoder state is lighter-weight after this change and we do not need to initialize so many mutexes (this was done even on non-thread-sanitizer platforms where they were unused). Change-Id: If41fcb0d99944f7bbc8ec40877cdc34d672ae72a
2017-08-15Clean up writing YUV files for debug purpose.Jerome Jiang
Change legacy vp8/9_write_yuv_frame to vpx_write_yuv_files. Delete some flags that can be enabled during build. To enable writing denoised YUV, use the following command line: CFLAGS='-DOUTPUT_YUV_DENOISED' ./configure --enable-vp9-temporal-denoising For skinmap, use CFLAGS='-DOUTPUT_YUV_SKINMAP' Change-Id: I236974ac8b3cf279d20c4dc7f6162d8b480b6528
2017-08-11Rename vp8 quantize fileJohann
BUG=webm:1457 Change-Id: Ie8fae018ad8417724fde087055b90228850d631d
2017-08-02vp8: Drop due to overshoot for non-screen content.Marco
For 1 pass CBR mode: Apply the logic for dropping (and re-adjusting rate control) due to large overshoot to the case of non-screen content when drop_frames_allowed is enabled. For the non-screen content case: add additional condition that rate correction factor is close to minimum state, and flag to constrain the frequency of the dropping. Also handle the case of temporal layers and multi-res encoding. Add some flags/counters to the layer context for temporal layers. For multi-res: drop due to overshoot is checked on lowest stream, and if overshoot is detected we force drops on all upper streams for that frame. This feature is to avoid large frame sizes on big content changes following low content period. No change in behavior for screen_content_mode = 2. Change-Id: I797ab236cbbf3b15cad439e9a227fbebced632e6
2017-07-26vp8: Remove isolated skin & non skin blocks.Jerome Jiang
Neutral on RTC metrics and speed on Pixel. Change-Id: I26b907483fe133e6e4c1009d147631f0d0e0f2fb