summaryrefslogtreecommitdiff
path: root/vp8
AgeCommit message (Collapse)Author
2017-12-11Merge "Fix build warnings for gcc 6.3"Jerome Jiang
2017-12-07Fix build warnings for gcc 6.3Jerome Jiang
Clean up some alias. BUG=webm:1465 Change-Id: I99e186162db9f9e15375fef01564692434eda619
2017-12-06Merge "Add frame width & height to frame pkt. Add test."Jerome Jiang
2017-12-06Add frame width & height to frame pkt. Add test.Jerome Jiang
Used to return correct frame width and height when dynamic resizing happens. BUG=webm:1474 Change-Id: Ia2043f7e1635b3821848a67b9b134f47f14b0f3a
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-11-08CVBR command line option.paulwilkins
Added command line control of Corpus VBR. The new corpus vbr mode is a variant of standard VBR (end-usage=0) where the complexity distribution mid point is passed in rather than calculated for a specific clip or chunk. The new variant is enabled by setting a new command line parameter --corpus-complexity to a zero value. Omitting this parameter or setting it to 0 will cause the codec to use standard vbr mode. The correct value for a given corpus needs to be derived experimentally using a training set such that the average rate for the corpus is close to the target value. For example our using our low res test set with upper and lower vbr limits of 50%-150% and a corpus complexity value of 650 gives a similar average data rate across the set to using standard vbr. However, with the corpus mode easier clips will be allocated fewer bits and harder clips more bits rather than having the same rate target for all. Change-Id: I03f0fc8c6fb0ee32dc03720fea6a3f1949118589
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-18Merge "vp8: Enable use of ROI map."Jerome Jiang
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-17vp8: [loongson] optimize idct with mmiShiyou Yin
1. vp8_dequant_idct_add_y_block_mmi 2. vp8_dequant_idct_add_uv_block_mmi Change-Id: I9987147be2685ac79d4b045d1d56f6709ee1223c
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-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