• fbarchard@google.com's avatar
    Box filter for YUV use rows with accumulation buffer for better memory behavior.… · 05416e2d
    fbarchard@google.com authored
    Box filter for YUV use rows with accumulation buffer for better memory behavior.  The old code would do columns accumulated into registers, and then store the result once.  This was slow from a memory point of view.  The new code does a row of source at a time, updating an accumulation buffer every row.  The accumulation buffer is small, and should fit cache.  Before each accumulation of N rows, the buffer needs to be reset to zero.  If the memset is a bottleneck, it would be faster to do the first row without an add, storing to the accumulation buffer, and then add for the remaining rows.
    BUG=425
    TESTED=out\release\libyuv_unittest --gtest_filter=*ScaleTo1x1*
    R=harryjin@google.com
    
    Review URL: https://webrtc-codereview.appspot.com/52659004
    
    git-svn-id: http://libyuv.googlecode.com/svn/trunk@1428 16f28f9a-4ce2-e073-06de-1de4eb20be90
    05416e2d
Name
Last commit
Last update
chromium Make Libyuv work with Chromium Git checkouts
include Box filter for YUV use rows with accumulation buffer for better memory behavior. The old code would do columns accumulated into registers, and then store the result once. This was slow from a memory point of view. The new code does a row of source at a time, updating an accumulation buffer every row. The accumulation buffer is small, and should fit cache. Before each accumulation of N rows, the buffer needs to be reset to zero. If the memset is a bottleneck, it would be faster to do the first row without an add, storing to the accumulation buffer, and then add for the remaining rows.
source Box filter for YUV use rows with accumulation buffer for better memory behavior. The old code would do columns accumulated into registers, and then store the result once. This was slow from a memory point of view. The new code does a row of source at a time, updating an accumulation buffer every row. The accumulation buffer is small, and should fit cache. Before each accumulation of N rows, the buffer needs to be reset to zero. If the memset is a bottleneck, it would be faster to do the first row without an add, storing to the accumulation buffer, and then add for the remaining rows.
tools/valgrind-libyuv Roll chromium_revision 271c6cc..2c3ffb2 (309333:317530) + fixes
unit_test Box filter for YUV use rows with accumulation buffer for better memory behavior. The old code would do columns accumulated into registers, and then store the result once. This was slow from a memory point of view. The new code does a row of source at a time, updating an accumulation buffer every row. The accumulation buffer is small, and should fit cache. Before each accumulation of N rows, the buffer needs to be reset to zero. If the memset is a bottleneck, it would be faster to do the first row without an add, storing to the accumulation buffer, and then add for the remaining rows.
util psnr tool, work around for ios 64 bit compiler where int passed into assembly needs to be explicitely cast to 'w' register.
.gitignore Fix standalone GN build.
AUTHORS Adding AUTHORS file to libyuv
Android.mk add new scale_any to build files.
BUILD.gn Revert "libyuv: Include foo_posix.cc in the gn build, like it's done in the gyp build."
CMakeLists.txt Add test for scaling color accuracy
DEPS bump deps to head chromium to get prebuilt clangcl
LICENSE Update Copyright notice to follow new chromium conventions.
LICENSE_THIRD_PARTY README.chromium license field for WebView and LICENSE_THIRD_PARTY to show files with special licenses.
OWNERS Remove blank lint from OWNERS. Move FixedDiv into row functions to avoid changing build files.
PATENTS LibYuv: Adding PATENT and LICENSE files
PRESUBMIT.py Roll chromium_revision 271c6cc..2c3ffb2 (309333:317530) + fixes
README.chromium make source for planar tests contiguous to test planar functions coalesce into a single low level call.
all.gyp Android support
codereview.settings Add PROJECT setting to codereview.settings
download_vs_toolchain.py Roll chromium_revision 260824:262938 + fix binutils. Since it's not possible to have platform-specific hooks executing, binutils must be downloaded for all platforms in order for the download.py hook to execute properly on non-unix platforms.
drover.properties Add drover.properties for libyuv
gyp_libyuv Make Libyuv work with Chromium Git checkouts
gyp_libyuv.py Minor fixes to gyp_libyuv.py
libyuv.gyp enable speed optimization for libyuv
libyuv.gypi Loading commit data...
libyuv_nacl.gyp Loading commit data...
libyuv_test.gyp Loading commit data...
linux.mk Loading commit data...
public.mk Loading commit data...
setup_links.py Loading commit data...
sync_chromium.py Loading commit data...
winarm.mk Loading commit data...