summaryrefslogtreecommitdiff
path: root/vp8/encoder/onyx_if.c
AgeCommit message (Collapse)Author
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-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-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-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-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
2017-06-23vp8: Clean up skinmap debugging codes.Jerome Jiang
Use the computed skinmap. Change-Id: I8aabb5922ef5190ec85b9e01807cb79b4803b925
2017-06-23Merge "vp8: Compute skinmap only once before encoding."Jerome Jiang
2017-06-22vp8: Compute skinmap only once before encoding.Jerome Jiang
Get ready for other uses (i.e. cyclic refresh). Then use it when needed. Change-Id: Id0519a9921045e5fb7f3badb54e9f04e903f28f9
2017-06-21vp8: add temporal_filter.hJames Zern
quiets -Wmissing-prototypes Change-Id: Iffa77467720affe030de5335e9335232b9e70af1
2017-06-21add picklpf.hJames Zern
quiets -Wmissing-prototypes Change-Id: Ic24164aa1f86fe99a493a633d64606e6f44ecdc1
2017-06-21add ethreading.hJames Zern
quiets -Wmissing-prototypes in encodeframe.c Change-Id: Ic216d0bdd6130eac44f2183639a715b2f1088ebe
2017-06-21vp8,bitstream.h: add missing prototypesJames Zern
quiets -Wmissing:prototypes Change-Id: I835a80eddca2b16280780e18558c321df3272c43
2017-06-12vp8_skin_detection: add 'vp8_' prefix to public fnsJames Zern
BUG=webm:1438 Change-Id: I5feb31c254d02e116e624cfe702e73ba5a1f7aca
2017-06-12rename vp8/common/skin_detection.[hc] -> vp8_*James Zern
some build systems have trouble with duplicate basenames. vpx_dsp/skin_detection.[hc] were added in: 658e85425 Merge skin detection code in vp8/9. BUG=webm:1438 Change-Id: Ieaa70b40bda409ec23e6d179b47a930ac6243b05
2017-06-09Remove duplication on vp8/9_write_yuv_frame.Jerome Jiang
Change-Id: Ib3546032a27c715bf509c0e24d26a189bc829da8
2017-06-07Merge skin detection code in vp8/9.Jerome Jiang
BUG=webm:1438 Change-Id: Ie3dc034c7dbb498a0b088a767b1936ddeed4df14
2017-06-01Fix corruption in skin map debugging output yuv.Jerome Jiang
For both vp8 and vp9. BUG=webm:1437 Change-Id: Ifd06f68a876ade91cc2cc27c574c4641b77cce28
2017-05-30Write skin map of vp8 skin detection for debug.Jerome Jiang
Change-Id: Ica1b4e918aa759cd0ce65920f9d88452bbf9e3b4
2017-05-16Revert "Revert "vp8: Real-time mode: reduce mode_check_freq thresh for speed ↵Marco Paniconi
10."" This reverts commit 3704807805895850671261fa4470f1ce41dd2ac9. Reason for revert: <INSERT REASONING HERE> Does not look to be the cause of the test failures. Original change's description: > Revert "vp8: Real-time mode: reduce mode_check_freq thresh for speed 10." > > This reverts commit 4a7424adba7a65766a92635dc67b6e7d94646693. > > Reason for revert: <INSERT REASONING HERE> > Possibly causing test failures in roll into chromium. > > Original change's description: > > vp8: Real-time mode: reduce mode_check_freq thresh for speed 10. > > > > Reduces quality regression at speed 10 for real-time mode. > > > > Change-Id: I9f624bea9ca262dab32ce9de7d6d91175d6becc8 > > > > TBR=marpan@google.com,builds@webmproject.org,jianj@google.com > # Not skipping CQ checks because original CL landed > 1 day ago. > > Change-Id: I1defcb74e78a5a3bd29b7d1b21a96a79fa26a457 > TBR=marpan@google.com,builds@webmproject.org,jianj@google.com NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true Change-Id: I13d86a2a68b8aa8c0c7465e6e58cff0e00bc7862
2017-05-16Revert "vp8: Real-time mode: reduce mode_check_freq thresh for speed 10."Marco Paniconi
This reverts commit 4a7424adba7a65766a92635dc67b6e7d94646693. Reason for revert: <INSERT REASONING HERE> Possibly causing test failures in roll into chromium. Original change's description: > vp8: Real-time mode: reduce mode_check_freq thresh for speed 10. > > Reduces quality regression at speed 10 for real-time mode. > > Change-Id: I9f624bea9ca262dab32ce9de7d6d91175d6becc8 > TBR=marpan@google.com,builds@webmproject.org,jianj@google.com # Not skipping CQ checks because original CL landed > 1 day ago. Change-Id: I1defcb74e78a5a3bd29b7d1b21a96a79fa26a457
2017-05-14vp8: Real-time mode: reduce mode_check_freq thresh for speed 10.Marco
Reduces quality regression at speed 10 for real-time mode. Change-Id: I9f624bea9ca262dab32ce9de7d6d91175d6becc8
2017-04-06Fix compile warnings with enable-internal-stats flag.Jerome Jiang
BUG=webm:1402 Change-Id: Ibe9ecb1b559a4b989f6ccedbd097e369f6edde1e
2017-02-14apply clang-formatclang-format
Change-Id: I75e4a9e0b37bd4586f26c8d6c1fa27f3f6ff1bce
2017-02-14vp8 onyx_if: assert divide by zeroJohann
Clears up static clang analysis warning regarding divide by zero. Trying to explain to the compiler how it's impossible to avoid incrementing num_blocks at least once is difficult. Change-Id: Ibaae43be572e5cd7a689b440dcd341c17d33443b
2017-02-14Remove UNINITIALIZED_IS_SAFEJohann
Where clang static analysis or gcc -Wmaybe-uninitialized warns of uninitialized values, assign 0 to ints, MB_MODE_COUNT to MB_PREDICTION_MODE, and B_MODE_COUNT to B_PREDICTION_MODE. Assert that the modes have been changed from the invalid value by the end of the function. Change-Id: Ib11e1ffb08f0a6fe4b6c6729dc93b83b1c4b6350
2016-12-13Reapply 'Amend and improve VP8 multithreading implementation'Jim Bankoski
Reapply this patch: ff0107f Amend and improve VP8 multithreading implementation Amended the patch to add a unit test, and fix an asan error. BUG=webm:851 Change-Id: I6572c03256169c64e80248bf5a5e99f59a2fc93c
2016-10-14Drop empty frames.Jim Bankoski
Change-Id: I2d45a6eb3aaca97eb61e8e7ef9e5114221091244
2016-10-07vp8: Change default gf behavior for 1 pass cbr.Marco
In 1 pass CBR, with error_resilience off, allow for special logic to change the default gf behaviour. In this CL: boost is turned off and the gf period is set to a multiple of cyclic refresh period. Change only affect 1 pass CBR mode, i.e, when the flag gf_update_onepass_cbr is set. Including the previous change (3ec8e11: to allow cyclic refresh for error_resilience off), comparing metrics on RTC set for error_resilience off vs on: avgPSNR/SSIM up by ~6%. Change-Id: Id5b3fb62a4f04de5a805bd1b418f2b349574e0bc
2016-10-05Revert "Revert "vp8/encoder/onyx_if.c: apply clang-format""Marco Paniconi
This reverts commit a7456144ce0ab98e015548dd7cda4165ad2a800c. Change-Id: I400987fb26a09e9b9ea42c91f48ea12f7bc37356
2016-10-05Revert "vp8/encoder/onyx_if.c: apply clang-format"Marco Paniconi
This reverts commit 891a87dccddfbb9fd625f4b32aa17ae3501f30a6. Change-Id: I067b3b6a3cfb5bc760166999948b8087d4c5cb80
2016-10-04vp8/encoder/onyx_if.c: apply clang-formatclang-format
after: 955b3b6 vp8: Allow for cyclic refresh even if error_resilience it off. Change-Id: Iba189b18c84be8f5140754280c6801cfc387cfcd
2016-10-04vp8: Allow for cyclic refresh even if error_resilience it off.Marco
cyclic_refresh was tied to error_resilience mode. Allow it to be on also for 1 pass CBR mode even if error_resilience is off. Other option to use new control for this, but prefer to avoid that for now. Change-Id: I3625b292ee059a890e31338b514e211bf0ab5c3e
2016-10-04Merge "Remove rate deviation metric from vp8"Sarah Parker
2016-10-04Remove rate deviation metric from vp8Sarah Parker
BUG=b/31780679 Change-Id: I2b2a43b154eeacb4f51a11f6362cc535cfe318da
2016-09-29Remove vp8_clear_system_stateJohann
Use vpx_clear_system_state instead. Change-Id: Ia3e9122f69a2c690ddd7c7bc54f92ccb9ec18b3e
2016-09-19vp8: convert some uses of unsigned long to size_tJames Zern
similar to changes that were done in vp9 for encoded frame size reporting. has the side-effect of quieting a -Wshorten-64-to-32 warning. Change-Id: I89f74cb617fc29334ee351dc8dfaa3b8cfd4e5af
2016-09-19vp8/encoder: quiet some -Wshorten-64-to-32 warningsJames Zern
this code is similar to other existing uses and/or vp9 Change-Id: I56e646931379759d9f7332ea6d746060007c75ee
2016-09-01Merge "Fix formatting in internal stats for vp8 and vp9"Yaowu Xu
2016-08-29Merge "vp8: Move loopfilter synchronization to end of encode_frame call."Marco Paniconi
2016-08-25Fix formatting in internal stats for vp8 and vp9Sarah Parker
This corrects a formatting error introduced in: I1e9d548ce445d29002f0c59ebfd3957a6f15e702 where spaces were used as delimiters instead of tabs. The corresponding fix for vp10 is in Ica3d625d6672b3c47e0e208b45eede29b9004030. Change-Id: Ibc4eb8fd82e6b926ba259a679dc98557cadba9b1
2016-08-25vp8: Move loopfilter synchronization to end of encode_frame call.Marco
Allow loopfilter to continue until encode_frame is completed. Change-Id: I7bbccc3d409e263aab6a6ff24588d8b2a964a96e
2016-08-23Remove halfpix specializationJohann
This function only exists as a shortcut to subpixel variance with predefined offsets. xoffset = 4 for horizontal, yoffset = 4 for vertical and both for "hv" Removing this allows the existing optimizations for the variance functions to be called. Instead of having only sse2 optimizations, this gives sse2, ssse3, msa and neon. BUG=webm:1273 Change-Id: Ieb407b423b91b87d33c4263c6a1ad5e673b0efd6
2016-08-22Revert "vp8: Move loopfilter synchronization to end of encode_frame call."Marco Paniconi
This reverts commit c2fe9acceda922ca1d9f0d6185b340560b93597a. This change break linux browser test in chromium: https://build.chromium.org/p/chromium.webrtc/builders/Linux%20Tester Change-Id: I226782fad480c17a99ec6c785ad93cf4ab88f0ae
2016-08-16vp8: Move loopfilter synchronization to end of encode_frame call.Marco
Change-Id: I5bdfea7f51df1f1fa5d9c1597e96988acce6c2f2