summaryrefslogtreecommitdiff
path: root/vp8
AgeCommit message (Collapse)Author
2017-09-26vp8: [loongson] optimize copymen with mmiShiyou Yin
1. vp8_copy_mem16x16_mmi 2. vp8_copy_mem8x8_mmi 3. vp8_copy_mem8x4_mmi Change-Id: I3de29a11fa7402df0e48bbb944440b1e66498a65
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-14vp8: [loongson] optimize dequantize with mmiShiyou Yin
1. vp8_dequantize_b_mmi 2. vp8_dequant_idct_add_mmi Change-Id: I505f8afb7a444173392b325906e6a4f420f00709
2017-09-14vp8: [loongson] optimize idctllm with mmiShiyou Yin
1. vp8_short_idct4x4llm_mmi 2. vp8_short_inv_walsh4x4_mmi 3. vp8_dc_only_idct_add_mmi Change-Id: I616923681e79d78607a4988608fc39df77b093f4
2017-09-11vp8: [loongson] optimize loopfilter with mmiShiyou Yin
1. vp8_loop_filter_horizontal_edge_mmi 2. vp8_loop_filter_vertical_edge_mmi 3. vp8_mbloop_filter_horizontal_edge_mmi 4. vp8_mbloop_filter_vertical_edge_mmi 5. vp8_loop_filter_simple_horizontal_edge_mmi 6. vp8_loop_filter_simple_vertical_edge_mmi Change-Id: Ie34bbff3a16cff64e39a50798afd2b7dac9bcdc3
2017-09-02vp8: [loongson] optimize sixtap predict with mmiShiyou Yin
1. vp8_sixtap_predict16x16_mmi 2. vp8_sixtap_predict8x8_mmi 3. vp8_sixtap_predict8x4_mmi 4. vp8_sixtap_predict4x4_mmi Change-Id: I186669d1a1d998a0f3ba3a548e25eee8b52c251b
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-04Fix mips dspr2 6 tap filter clobber listKaustubh Raste
Change-Id: Ib7c07e6ce00a5c7e59113b16e6661a8369f9e646
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-27Merge "vp8: Remove isolated skin & non skin blocks."Jerome Jiang
2017-07-26vp8: Remove isolated skin & non skin blocks.Jerome Jiang
Neutral on RTC metrics and speed on Pixel. Change-Id: I26b907483fe133e6e4c1009d147631f0d0e0f2fb
2017-07-19Earmark extra space for VSX.Han Shen
Backend specific optimization for PPC VSX reads 16 bytes, whereas arm neon / sse2 only reads <= 8 bytes. Although the extra bytes read are actually never used, this is not a warrant for groping around. Fixed by allocating more when building for VSX. This is reported by asan. Also note - PPC does have assembly that loads 64-bit content from memory - lxsdx loads one 64-bit doubleword (whereas lxvd2x loads two 64-bit doubleword) from memory. However, we only have "vec_vsx_ld" builtins that mapped to lxvd2x, no builtins to lxsdx. The only way to access lxsdx is through inline assembly, which does not fit well in the origin paradigm. Refer: vsx: vpx_tm_predictor_4x4_vsx @ third_party/libvpx/git_root/vpx_dsp/ppc/intrapred_vsx.c neon: vpx_tm_predictor_4x4_neon @ third_party/libvpx/git_root/vpx_dsp/arm/intrapred_neon_asm.asm sse2: tm_predictor_4x4 @ third_party/libvpx/git_root/vpx_dsp/x86/intrapred_sse2.asm BUG=b/63112600 Tested: asan tests passed. Change-Id: I5f74b56e35c05b67851de8b5530aece213f2ce9d
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-23Merge changes from topic 'missing-proto'James Zern
* changes: onyxd_int.h: add missing prototypes onyxd.h: add vp8dx_references_buffer prototype vp[89],vpx_dsp: add missing includes vp8,encodeframe.h: correct prototypes vp8: add temporal_filter.h add picklpf.h add ethreading.h vp8,bitstream.h: add missing prototypes vp8: remove vp8_fast_quantize_b_mmx vp8,loopfilter_filters: make some functions static vp9_ratectrl: make adjust_gf_boost_lag_one_pass_vbr static vp9_encodeframe: make scale_part_thresh_sumdiff static vp9_alt_ref_aq: correct vp9_alt_ref_aq_create proto tiny_ssim: make some functions static
2017-06-22onyxd_int.h: add missing prototypesJames Zern
vp8cx_init_de_quantizer, vp8_mb_init_dequantizer quiets -Wmissing-prototypes Change-Id: Ib63d14caf0144eff31a75b7cdb667b7e1f9d83ae
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-21onyxd.h: add vp8dx_references_buffer prototypeJames Zern
quiets -Wmissing-prototypes Change-Id: I6bee535f3fb67e54a390266d787a5a92127aeadc
2017-06-21vp[89],vpx_dsp: add missing includesJames Zern
quiets -Wmissing-prototypes Change-Id: I841cfc019d592f2bc6b3fec5818051a31f4c53b5
2017-06-21vp8,encodeframe.h: correct prototypesJames Zern
+ add missing include quiets -Wmissing-prototypes Change-Id: I64af0368ba3d7f1d4de22a5887b631bb2cf15b8a
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-21vp8: remove vp8_fast_quantize_b_mmxJames Zern
and vp8_fast_quantize_b_impl_mmx; this was never enabled in rtcd an sse2 version exists so there isn't much reason to keep a mmx implementation around. Change-Id: I8b3ee7f46ba194ffa0d0a6225a0f299f2a4dea90
2017-06-21vp8,loopfilter_filters: make some functions staticJames Zern
quiets -Wmissing-prototypes Change-Id: Ie5b00537f64a05e68a38dc558463691523988994
2017-06-21vp8_dx_iface: clear -Wclobbered warningsJames Zern
with gcc 6.x Change-Id: Ib2070421603a6777892d4ea01f4b0921696f38b3
2017-06-19Merge "Enable 8x8 skin detection for vp8."Jerome Jiang
2017-06-15Enable 8x8 skin detection for vp8.Jerome Jiang
If 2 or more 8x8 blocks are identified as skin, the macroblock will be labeled as skin. Change-Id: I596542c81a2df9e96270cab39d920bbfeb02bc6e
2017-06-14Merge "vp8: Adjust the pred_err threhsold for drop on overshoot."Marco Paniconi
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-12vp8: Adjust the pred_err threhsold for drop on overshoot.Marco
Change-Id: Ica2a09ac87160936b6f7bd01f167f464ea3ac41c
2017-06-10Merge "Remove duplication on vp8/9_write_yuv_frame."Jerome Jiang
2017-06-09Remove duplication on vp8/9_write_yuv_frame.Jerome Jiang
Change-Id: Ib3546032a27c715bf509c0e24d26a189bc829da8
2017-06-09Merge "Remove some dead code. Coverity CID 1310058"Johann Koenig
2017-06-09Remove some dead code. Coverity CID 1310058Sylvestre Ledru
Change-Id: I1186cf1dd8cde42f5970928f43edfc852298289d
2017-06-08Merge "vp8_decode_frame: fix oob read on truncated key frame"James Zern
2017-06-08vp8_decode_frame: fix oob read on truncated key frameJames Zern
the check for error correction being disabled was overriding the data length checks. this avoids returning incorrect information (width / height) for the decoded frame which could result in inconsistent sizes returned in to an application causing it to read beyond the bounds of the frame allocation. BUG=webm:1443 BUG=b/62458770 Change-Id: I063459674e01b57c0990cb29372e0eb9a1fbf342
2017-06-07Merge skin detection code in vp8/9.Jerome Jiang
BUG=webm:1438 Change-Id: Ie3dc034c7dbb498a0b088a767b1936ddeed4df14
2017-06-01vp8 skin detection: Fix visual studio build failure.Jerome Jiang
Change-Id: I510b755550ebbfa2aaf9b974920d7f1c6454a845
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-31vp8: Clean up skin detection.Jerome Jiang
Use only the average of center 2x2 pixels in vp8. Change-Id: I2b23ff19a90827226273e0fca49e90c734eda59b
2017-05-30Write skin map of vp8 skin detection for debug.Jerome Jiang
Change-Id: Ica1b4e918aa759cd0ce65920f9d88452bbf9e3b4
2017-05-25Refactor: Move vp8 skin detection to new files.Jerome Jiang
Change-Id: If760f28cbbf22beac1cc9bd1546f13831e9dd3f0
2017-05-22Merge changes Ib8dd96f7,Ie9854b77Johann Koenig
* changes: neon variance: process 4x blocks use memcpy for unaligned neon stores