summaryrefslogtreecommitdiff
path: root/vp9/common/vp9_reconinter.c
AgeCommit message (Collapse)Author
2014-07-11Remove an unused parameterYaowu Xu
Change-Id: I6ad6fd75dc3c9e6218d88148cf49e205398e2af5
2014-07-10Fix a bug in boundary checking.hkuang
Change-Id: Ifc741da9da6f61c8d3c1f675ec6b8a96570f877d
2014-06-18BITSTREAM: Handle transform size and motion vectors more logically for non-420.Alex Converse
This breaks the profile 1 bitstream. Don't force non420 uv transform size to 1/4 y size. In the 4:2:0 case the chroma corresponding to a luma block is 1/4 its size. In the 4:4:4 case chroma and luma planes are the same size. Disallowing larger transforms can result in a loss of compression efficiency and is inconsistent. For sub-8x8 blocks only average corresponding motion vectors. 4:2:0 and profile 0 behavior remains unchanged. Change-Id: I560ae07183012c6734dd1860ea54ed6f62f3cae8
2014-05-16Removing MACROBLOCKD dependency from loop filter.Dmitry Kovalev
Change-Id: I9ef40f3d95ab8f94f69e92ea25678a40956bc1ce
2014-04-03Removing interp_kernel from MACROBLOCKD.Dmitry Kovalev
Now interp_kernel is obtained when it is really required (based on mbmi->interp_filter value). Change-Id: I4c7a93c179d1045eba16e7526c293d02c9b8b47e
2014-04-01Renaming two members in MACROBLOCKD struct.Dmitry Kovalev
Renames: mi_8x8 -> mi mode_info_stride -> mi_stride Change-Id: I66f3e5fd1e7b7f46f108af5bb711c5fd9493c1be
2014-03-24Change back the scaling calculation.hkuang
Let the calculation to be compatible with Google's HW implementation. Change-Id: I22e179888cdb0419e230351c0a47661b37051fef
2014-03-17Fix the md5 mismatch for some scale cases.hkuang
Fixes issue #731 Change-Id: Id313e84b8fb4ff20f6a4e1ed11cb601927888318
2014-03-12Revert "With on demand border extension, clamping the MV"Yaowu Xu
This reverts commit b0fec6ab4a61ded1ab2ade188987631f53c4e9c1. Change-Id: I9acd8ee0423f22d92138f11579611ff959331013
2014-03-12Revert "Remove dec_build_inter_predictors() parameters"Yaowu Xu
This reverts commit 9650b9d72aa236e76c54b4f0acebd6bf1d6bbe48. Change-Id: I841c4a4734170fda63469e32adc10703aa4bf0fa
2014-03-03vp9_reconinter.h static functions in header converted to globalJim Bankoski
Change-Id: I916944950deb22f4c2301d83a803b732bf3ecd77
2014-03-01Remove dec_build_inter_predictors() parametersYaowu Xu
There were two parameters not in use, this commit removed them. Change-Id: Ia03a73b9a2521400bed539df45574e34214ed93a
2014-02-14Cleanup some comments.Adrian Grange
Change-Id: I568861ba1d43620865ad9a98a97eef37a51fd856
2014-02-04Merge "Moving x1 & y1 calculation under if condition."Dmitry Kovalev
2014-02-04With on demand border extension, clamping the MVhkuang
is not longer needed. Change-Id: I40c37ef18c67ab27fc336694dfca3c43a87c47ca
2014-02-03Moving x1 & y1 calculation under if condition.Dmitry Kovalev
Change-Id: Iae787d491f7cfe24855ef8f2d04e2c6c19350378
2014-02-03vp9_filter.h: rename interp_kernel typeJames Zern
-> InterpKernel avoids conflicts in variable names, fixing the build with various toolchains. broken since: 8691565 Removing subpix_fn_table struct. Change-Id: Ib5f6fdbcb494a97b62c75b99d4d826ff25d4c981
2014-01-24Removing subpix_fn_table struct.Dmitry Kovalev
We don't use different filter kernels for x and y, it is always one kernel for both directions. Change-Id: Iefcbb02ec74bf46ea20d9dca672a3efd5d631517
2014-01-17Use a temp buffer for reconstruction whenhkuang
reference buffer is out of boarder. Change-Id: Ic7ad136e54a4d68abe0fd4345146a86b0ba824e1
2014-01-03Adding RefBuffer struct.Dmitry Kovalev
Adding RefBuffer to simplify reference buffer management. The struct has a pointer to image data and scale factors relative to the current frame. Change-Id: If38eb1491ff687cc11428aee339f3e052e2c5d9e
2013-12-19Using single struct to represent scale factors.Dmitry Kovalev
Moving back to scale_factors struct. We don't need anymore x_offset_q4 and y_offset_q4 because both values are calculated locally inside vp9_scale_mv function. Change-Id: I78a2122ba253c428a14558bda0e78ece738d2b5b
2013-12-19Call set_scaled_offsets() just before scale_mv() call.Dmitry Kovalev
Before mv scaling it is required to calculate x_offset_q4/y_offset_q4 by calling set_scaled_offsets(). Now offset configuration can not be missed because it happens just before scale_mv(). Change-Id: I7dd1a85b85811a6cc67c46c9b01e6ccbbb06ce3a
2013-12-15Merge "Add support to pass in external frame buffers."Frank Galligan
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-12-11Merge "Fix valgrind error."hkuang
2013-12-11Fix valgrind error.hkuang
Temporarily change memcpy to memmove. Change-Id: I700a197bc1ce496be1ddad7118429c5da465b0ca
2013-12-10Refactor inter_predictor function.hkuang
Change-Id: Ic429b2f16462e926f30efb3af4da3080026359d8
2013-12-09Implenment on demand border extension. In place extendhkuang
the border now. Next commit will totally remove the border. Change-Id: Ic1e1ca9cc34f81c688715b3948689b47df63a151
2013-12-05Renaming constants.Dmitry Kovalev
NUM_YV12_BUFFERS => FRAME_BUFFERS ALLOWED_REFS_PER_FRAME => REFS_PER_FRAME NUM_REF_FRAMES_LOG2 => REF_FRAMES_LOG2 NUM_REF_FRAMES => REF_FRAMES NUM_FRAME_CONTEXTS_LOG2 => FRAME_CONTEXTS_LOG2 NUM_FRAME_CONTEXTS => FRAME_CONTEXTS Change-Id: I4e1ada08f25d8fa30fdf03aebe1b1c9df0f87e63
2013-12-04Cleaning up vp9_dec_build_inter_predictors_sb function.Dmitry Kovalev
Using get_plane_block_size() instead of manipulation with subsampling values, calculating all required values only once without redundant calls to b_width_log2(). Change-Id: I00303f2a0926f9c4cb17f34591adda60615f8919
2013-11-25Use separate inter predictors for enc/decJingning Han
The decoder will construct inter predictor using lazy border extension, while the encoder, going with multiple runs of motion search in the rate- distortion optimization loop for each block, does border extension at frame level. This commit makes separate the inter predictors for encoder and decoder, respectively. Change-Id: Ieca2fecba3a7201a6d64ef9f219e5d91e50559c3
2013-11-25Merge "Separate setup_scale_factor/extend_frame_borders"Jingning Han
2013-11-22Separate setup_scale_factor/extend_frame_bordersJingning Han
This commit takes out vp9_extend_frame_borders from vp9_setup_scale_factors. The refactoring is for the preparation of the use of lazy border extension at decoder. This makes it necessary to handle border extension separately at encoder/decoder. The use of vp9_extend_frame_borders will be removed, when lazy border extension is ready. Change-Id: Ia3baba3d179d5f11eee1634f19b3b319d2a59186
2013-11-20Removing plane_block_{width, height} functions.Dmitry Kovalev
Change-Id: I29c0dfcf41a1253d5e2a0d2ff740c0c38ebaa5a2
2013-11-19Move vp9_setup_interp_filter() to encoderYaowu Xu
As it is used in encoder only. Change-Id: I5f2a8abbe72bb18cbf6ce36a3dc7e132aeae8ec2
2013-11-11Removing function pointers from inter prediction.Dmitry Kovalev
Removing foreach_predicted_block_visitor and calling build_inter_predictors directly. Change-Id: I11bb3c872b99b47c2680b01b0dbcc01c558c4a2b
2013-10-29Fix x_offset_q4/y_offset_q4 calculationYunqing Wang
"<< SUBPEL_BITS" needs to be added in the calculation. Call set_scaled_offsets() to calculate x_offset_q4 and y_offset_q4. Change-Id: Ied130ea771510e918f51cd1dc3abe57f4c0962b5
2013-10-24Merge changes I1868fb75,I9ff504c6Dmitry Kovalev
* changes: Renaming INTERPOLATIONFILTERTYPE to INTERPOLATION_TYPE. Adding VP9_FRAME_MARKER constant.
2013-10-23Renaming INTERPOLATIONFILTERTYPE to INTERPOLATION_TYPE.Dmitry Kovalev
Change-Id: I1868fb75ed88bfa65c1c2ca24677d65f2894d713
2013-10-22Improve scale_factors structYunqing Wang
The ref's scale_factors are set at frame level, and then copied for each partition block. Since the struct members are mostly constant, this patch separated the constant and non-constant members, and reduced struct copying. This gave 0.5% ~ 1.4% decoder speed gain. Change-Id: I94043bf5a6995c8042da52e5c661818dfa6f6d4c
2013-10-16Get rid of "this_mi", use "mi_8x8[0]" everywhere insteadGuillaume Martres
The only case where they were intentionally pointing to different structures was in mbgraph, and this didn't have the expected behavior because both of these pointers are used interchangeably through the code Change-Id: I979251782f90885fe962305bcc845bc05907f80c
2013-10-04Cleaning up foreach_predicted_block_in_plane() function.Dmitry Kovalev
Change-Id: Ibb3d9667eba56621667412f62097aa7a392659c2
2013-10-03Adding vp9_get_filter_kernel() function.Dmitry Kovalev
Moving INTERPOLATIONFILTERTYPE enum and subpix_fn_table struct to vp9_filter.h. Adding convenient typedef for subpel kernels. Function vp9_setup_interp_filters() besides setting xd->subpix.filter_x & xd->subpix.filter_y has a side effect of also setting scale factors. This is not required inside decode_modes_b() because scale factors have been already set by set_ref() calls. That's why replacing vp9_setup_interp_filters() call with newly created vp9_get_filter_kernel() call. The behavior of vp9_setup_interp_filters() is unchanged (it is used from the encoder). Change-Id: I3f36d3f7cd8d15195a6e2fafd1777cdaf9ecb847
2013-09-25Using is_inter_block and has_second_ref functions.Dmitry Kovalev
Change-Id: I60dee58a4fd24d3c4f3c101a49d30e217309f43a
2013-09-19fix integer overflow errorsYaowu Xu
Change-Id: I76f440a917832c02d7a727697b225bac66b99f56
2013-09-11New mode_info_context storage -- undo revertScott LaVarnway
mode_info_context was stored as a grid of MODE_INFO structs. The grid now constists of pointers to MODE_INFO structs. The MODE_INFO structs are now stored as a stream (decoder only), eliminating unnecessary copies and is a little more cache friendly. Change-Id: I031d376284c6eb98a38ad5595b797f048a6cfc0d
2013-09-09Revert "New mode_info_context storage"James Zern
This reverts commit dae17734ece414091ba1184f7becd0aa6c0004f1 Encode crashes, leaks and increases integer overflow errors. Change-Id: I595aa2649bb8d0b6552ff91652837a74c103fda2
2013-09-06New mode_info_context storageScott LaVarnway
mode_info_context was stored as a grid of MODE_INFO structs. The grid now constists of a pointer to a MODE_INFO struct and a "in the image" flag. The MODE_INFO structs are now stored as a stream, eliminating unnecessary copies and is a little more cache friendly. For the test clips used, the decoder performance improved by ~4.3% (1080p) and ~9.7% (720p). Patch Set 2: Re-encoded clips with latest. Now ~1.7% (1080p) and 5.9% (720p). Change-Id: I846f29e88610fce2523ca697a9a9ef2a182e9256
2013-08-26Renaming BLOCK_SIZE_TYPE to BLOCK_SIZE in the common/decoder.Dmitry Kovalev
Adding temporary "typedef BLOCK_SIZE BLOCK_SIZE_TYPE" which will go away after encoder's patch. Change-Id: I06ec6a6f079401439843ec981d1496234fd7775c
2013-08-22Checking scale factors on access.Dmitry Kovalev
It is possible to have invalid scale factors and not access them during decoding. Error is reported if we really try to use invalid scale factors. Change-Id: Ie532d3ea7325ee0c7a6ada08269f804350c80fdf