summaryrefslogtreecommitdiff
path: root/vpx_scale
AgeCommit message (Collapse)Author
2014-11-06Remove asm offset dependenciesJohann
The obj_int_extract code is no longer worth maintaining. It creates significant issues when adapting for different build systems and no longer offers as significant of a performance benefit due to improvements in intrinsics. Source files will remain until the various third-party builds are updated. The neon fast quantizer has been moved to intrinsics. The armv6 version has been removed because so few remaining targets require it. Compilers and processors have improved significantly since the pack_tokens code was written. The assembly is no longer faster than the C code. pack_tokens were the only optimizations for the armv5te targets so the targets will be removed after the test infrastructure has been updated. BUG=710 Change-Id: Ic785b167cd9f95eeff31c7c76b7b736c07fb30eb
2014-10-11yv12config: fix highbitdepth buildJames Zern
Change-Id: Ie8a4caae19fb514d5bd22e0ae35ca0edcd3484ae
2014-10-02Fix subsampling check for images 1 pixel wide/tallAlex Converse
Change-Id: I0e262ede7eb4a4ae0c86181922d744e542e93350
2014-09-15Remove memset of every external frame buffer.Frank Galligan
Libvpx was memseting every external frame buffer before decode. This was to work around a valgrind issue in our C loop filter. Most of the time this was not needed and we have noticed some significant performance loss on some platforms. Now we require the application to zero out the buffers if it is using external frame buffers. Change-Id: I7330d00a315e65137ed30edd5f813e8929b76242
2014-09-08BITSTREAM CLARIFICATION: Forbid referencing across color spaces.Alex Converse
Check image format of reference frames. Change-Id: I7d8d7f097ba547839ff9cec3880bd15a4948ee06
2014-09-02Adds config opt for highbitdepth + misc. vpxDeb Mukherjee
Adds config parameter vp9_highbitdepth, to support highbitdepth profiles. Also includes most vpx level high bit-depth functions. However encode/decode in the highbitdepth profiles will not work until the rest of the code is in place. Change-Id: I34c53b253c38873611057a6cbc89a1361b8985a6
2014-07-25Remove copy frame neonJohann
No performance benefit Change-Id: I7f0cfa98ac2bb5b823d0972827b45f32cd3f6b4c
2014-07-25Remove unused copy src frame functionJohann
Change-Id: I03798e387a656473b6ec004246e2b882c8c6bb84
2014-07-24Remove neon version of vp8 extend bordersJohann
The code fails the unit test. Speed comparisons to the C are invalid because the code frequently didn't correctly extend the right and bottom portions of the frame. Reduce maximum frame size on ARM devices to avoid OOM Change-Id: Ia664c86406f0bb8120fd7ad401f32d0bd44994fb
2014-07-24Set and use uv_crop_[width|height]Johann
Ensure consistent border extension by rounding uv_crop_* at image creation time. Where it was rounded problems could arise with the right and bottom extensions. When padding = 32, y_width = 64, and y_crop_width = 63: (padding + width - crop_width + 1) / 2 32 + 64 - 63 + 1 should equal 32 *but* 32 + 1 + 1 equals 34 giving a right buffer of 17 instead of 16. By calculating uv_crop_* earlier we round up at the appropriate time and for the same values: (y_crop_width + 1) / 2 63 + 1 / 2 64 (padding / 2) + uv_width - uv_crop_width 16 + 16 - 16 16 Change-Id: If866cd1b63444771440edb1432280ac83875969b
2014-07-18Fix visual studio build failureYunqing Wang
Cast frame_size to be int for now to fix build warnings. Change-Id: I411ba2b1fd429a383c8f6e832b4fa4147914c824
2014-07-17fail allocation of buffers if size_t < frame_sizeJim Bankoski
Change-Id: I25c595e8c197ab0a9955d2373f1a74d42fbd1638
2014-06-11Add non420 support to vp9_extend_frame_borders.Alex Converse
Fixes an encoder/decoder mismatch problem. Change-Id: I573b3a2b7ba2171a1a380ff201b082b084e7ade1
2014-05-12Only build neon assembly for armv7 targetsJohann
Allow selectively building just the intrinsics for armv8 Change-Id: I2f29b2e4508b8b8e5649c2906b3159ad1d4ec477
2014-04-24Remove test against NULL before freeing memoryAdrian Grange
Change-Id: I6ce6395b74019345c8b7242d874761f981ad53af
2014-03-14Remove the vp8_vpxyv12_copy_y_neon.hkuang
vp8_vpxyv12_copy_y_neon is slower than vp8_vpxyv12_copy_y_c. Change-Id: I7ba860619dc0714d700f232242ce915620461587
2014-03-07Disable the neon version vpx_yv12_copy_y.hkuang
For some dimensions, neon code ends up in a dead loop inside. This will fix the unit test failure in svc_test on ARM. Change-Id: Ie6098bfaefd86bcf3616a3d0c2c3ff0b154222b5
2014-03-03build: convert rtcd.sh to perlJames Zern
significantly speeds up file generation. the goal of this change is to convert rtcd.sh to perl as directly as possible to allow for simple comparison. future changes can make it more perl-like. --- Linux [CREATE] vpx_scale_rtcd.h real 0m0.485s -> 0m0.022s [CREATE] vp8_rtcd.h real 0m4.619s -> 0m0.060s [CREATE] vp9_rtcd.h real 0m10.102s -> 0m0.087s Windows [CREATE] vpx_scale_rtcd.h real 0m8.360s -> 0m0.080s [CREATE] vp8_rtcd.h real 1m8.083s -> 0m0.160s [CREATE] vp9_rtcd.h real 2m6.489s -> 0m0.233s Change-Id: Idfb71188206c91237d6a3c3a81dfe00d103f11ee
2014-02-28Fix unused parameters in vp9_extend_frame_bordersYaowu Xu
Change-Id: I7255b3bc47d760333f58ac4878becbcc8ad30967
2014-02-27vpx_scale_rtcd.sh: fix conditionalJames Zern
previously the scale functions would always be include regardless of the CONFIG_SPATIAL_RESAMPLING setting. Change-Id: Ifbccf47b20689b5dd61bb3ddccd5c013297b4e05
2014-02-13cosmetics: yv12config.h: remove extra indentJames Zern
+ remove commented out fields from YV12_BUFFER_CONFIG Change-Id: Ie4f25df9ccae07e7b8fd31599cb4164949cf6f8f
2014-02-13Adding explicit casts in yv12config.c.Dmitry Kovalev
This patch fixes c++ compiler errors. Change-Id: I4d4b5af3bdaada101d753f3bc19819f5252b4e44
2014-02-10Add get release decoder frame buffer functions.Frank Galligan
This CL changes libvpx to call a function when a frame buffer is needed for decode. Libvpx will call a release callback when no other frames reference the frame buffer. This CL adds a default implementation of the frame buffer callbacks. Currently only VP9 is supported. A future CL will add support for applications to supply their own frame buffer callbacks. Change-Id: I1405a320118f1cdd95f80c670d52b085a62cb10d
2014-01-24Revert external frame buffer code.Frank Galligan
A future CL will add external frame buffers differently. Squash commit of four revert commits: Revert "Increase required number of external frame buffers" This reverts commit 9e41d569d7c84dd9ca8f0047c15377a883945685. Revert "Add external constants." This reverts commit bbf53047b03106e3c2e24b28cb836cc838db5ee8. Revert "Add frame buffer lru cache." This reverts commit fbada948fa345e67acf9aa41a8f9a78f5dfe8648. Conflicts: vpxdec.c Change-Id: I76fe42419923a6ea6c75d9997cbbf941d73d3005 Revert "Add support to pass in external frame buffers." This reverts commit 10f891696bc4c972c13cc9fde2c53470501a03e2. Conflicts: test/external_frame_buffer_test.cc vp9/common/vp9_alloccommon.c vp9/common/vp9_reconinter.c vp9/decoder/vp9_decodeframe.c vp9/encoder/vp9_onyx_if.c vp9/vp9_dx_iface.c vpx/vpx_decoder.h vpx/vpx_external_frame_buffer.h vpx_scale/generic/yv12config.c vpxdec.c Change-Id: I7434cf590f1c852b38569980e4247fad0d939c2e
2014-01-21Seperate the border size for encoder and decoder.hkuang
Encoder's boarder is still 160, while decoder's boarder will be 32. With on demand and separate boarder buffer for boarder extension. The decoder's boarder does not need to to 160 anymore. Change-Id: I93d5aaff15a33a2213e9761eaa37c5f2870747db
2014-01-13mips dsp-ase r2 vp9 decoder fixed bug in extend frame module (seg fault)Parag Salasakar
Change-Id: Ic46da8897d2fb5351e22d6d74805fd9d78c81b32
2014-01-10Fix Issue #679: vp9 C loop filter produces valgrind warning.hkuang
Fix the valgrind error due to access uninitialized memory in loopfilter. Change-Id: I52fccf5ede845ee1f4c13d3bd909b8f220c0bdff
2013-12-16{,vpx_scale}: normalize include guardsJames Zern
Change-Id: Ib8aafeee30d59521ee256dc1801e0db6b4b8a371
2013-12-16Avoid mixed comparisonJohann
Silences warning C4018: '>' : signed/unsigned mismatch Change-Id: I07d34060043e8ada7d995ea6dc8276cb881c7d95
2013-12-15Add support to pass in external frame buffers.Frank Galligan
VP9 decoder can now use frame buffers passed in by the application. Change-Id: I599527ec85c577f3f5552831d79a693884fafb73
2013-11-22Fix bug in extend_frame chroma extended too farAdrian Grange
This fixes issue 667. In the case where the frame was an odd number of pixels wide or high, the border was being extended by one col or row too far. The calculation of color plane dimensions was modified to use those already computed at the time the frame buffer was allocated. Also freed the temporary scaling buffer in vpxdec to prevent a memory leak. Change-Id: Ied04bdcdfd77469731408c05da205db1a6f89bf5
2013-11-14fix scalling bug by buffer auto-reallocationAdrian Grange
Change-Id: Ib748eb287520c794631697204da6ebe19523ce95
2013-09-29mips dsp-ase r2 vp9 decoder extend module optimizationsJim Bankoski
Adopted again to shepherd through system. Change-Id: If1b742618a95a2198ae2e30eec4b53ad1f7353e5
2013-08-24cosmetics: yv12extend add some constJames Zern
Change-Id: I87f1ce2ceca80d3869dd72ba862329a98eb3e0c2
2013-08-23yv12extend: name variables consistentlyJames Zern
- s|source -> src - dest -> dst - use verbose names in extend_plane dropping the redundant comments + light cosmetics: - join a few lines / assignments - drop some unnecessary comments & includes Change-Id: I6d979a85a0223a0a79a22f79a6d9c7512fd04532
2013-08-22vpx_scale: correct pixel spellingJames Zern
Change-Id: Idcfab16da37134f943a4314674e2e2fcbff3a0f8
2013-08-16Fixed typos and formattingAdrian Grange
Change-Id: I3814984a624bc64147c57efa74fbdda8eda47262
2013-08-09renamed vp8_yv12_copy_y to vpx_yv12_copy_yYaowu Xu
Becuase the routine is used by both vp8 and vp9 Change-Id: I2d35b287b5bc2394865d931a27da61f4ce7edeeb
2013-07-30Cleanup typos, remove unnecessary lines, replace switchAdrian Grange
Removed unnecessary code lines, replaced switch with an if, fixed spelling errors and formatting. Change-Id: Ie48aa4604aa0ed48362ca359d792fb21b2ec1dc6
2013-07-16added missed replacementYaowu Xu
Change-Id: I2bce6f381fef0729b4dd5eb09ccb609f2eddd7ef
2013-07-16Merge "yv12config: remove YUV_TYPE"James Zern
2013-07-15Change to extend full border only when neededYaowu Xu
This is a short term optimization till we work out a decoder implementation requiring no frame border extension. Change-Id: I02d15bfde4d926b50a4e58b393d8c4062d1be70f
2013-07-15Increase border size from 96 to 160.Ronald S. Bultje
This is required because upon downscaling, if a motion vector points partially into the UMV (e.g. all minus 1 of 64+7 pixels, i.e. 70), then we can point up to 140 pixels into the larger-resolution (2x) reference buffer UMV, which means the UMV for reference buffers in downscaling needs to be 140 rounded up to the nearest multiple of 32, i.e. 160. Longer-term, we should probably handle the UMV differently by detecting edge coverage on-the-fly and using a temporary buffer for edge extensions instead of adding 160 pixels on all sides of the image (which means a CIF image uses 3x its own area size for borders). Change-Id: I5184443e6731cd6721fc6a5d430a53e7d91b4f7e
2013-07-12yv12config: remove YUV_TYPEJames Zern
this was never fleshed out in the context of VP8, for which it was added. for VP9 it has no meaning. Change-Id: Iba2ecc026d9e947067b96690245d337e51e26eff
2013-06-25Only do metrics on cropped (visible) area of picture.Ronald S. Bultje
The part where we align it by 8 or 16 is an implementation detail that shouldn't matter to the outside world. Change-Id: I9edd6f08b51b31c839c0ea91f767640bccb08d53
2013-06-07Align frame size to 8 instead of 16.Ronald S. Bultje
Change-Id: Ic606ef1b31e49963a779455a1e010a9ebb0f3f1f
2013-05-16Initial version of alpha channel supportJohn Koleszar
This is a mostly-working implementation of an extra channel in the bitstream. Configure with --enable-alpha to test. Notable TODOs: - Add extra channel to all mismatch tests, PSNR, SSIM, etc - Configurable subsampling - Variable number of planes (currently always uses all 4) - Loop filtering - Per-plane lossless quantizer - ARNR support This implementation just uses the same contents as the Y channel for the A channel, due to lack of content and general pain in playing back 4 channel content. A later patch will use the actual alpha channel passed in from outside the codec. Change-Id: Ibf81f023b1c570bd84b3064e9b4b8ae52e087592
2013-05-15Add vp9_extend_frame_bordersJohn Koleszar
Adds a subsampling aware border extension function. This may be reworked soon to support more than 3 planes. Change-Id: I76b81901ad10bb1e678dd4f0d22740ca6c76c43b
2013-05-15Adding alpha plane to YV12_BUFFER_CONFIG structure.Dmitry Kovalev
Change-Id: I8b2687138df636b2b78c8cc5156e3882b0009de0
2013-05-09Subsampling aware allocs and bitstreamJohn Koleszar
Make framebuffer allocations according to the chroma subsamping factors in use. A bit is placed in the raw part of the frame header for each of the two subsampling factors. This will be moved in a future commit to make them part of the TBD feature set bits, probably only set on keyframes, etc. Change-Id: I59ed38d3a3c0d4af3c7c277617de28d04a001853