summaryrefslogtreecommitdiff
path: root/vp9/encoder
AgeCommit message (Collapse)Author
2013-04-23Remove coeff from BLOCKJohn Koleszar
Lookup the data per-plane from the MACROBLOCK struct. Change-Id: I9253c4d3cf886aa9ab4aeab23a2156bfcf994ede
2013-04-23Convert coeff to per-plane MACROBLOCK dataJohn Koleszar
This commit moves the coeff storage from the MACROBLOCK struct to its per-plane part. The next commit will remove the coeff member from the BLOCK structure so that it is consistently accessed per-plane. Also refactors vp9_sb_block_error_c and vp9_sb_uv_block_error_c to be variable subsampling aware. Change-Id: I18c30f87f27c3a012119b6c1970d5fa499804455
2013-04-23Move src_diff to per-plane MACROBLOCK dataJohn Koleszar
First in a series of commits making certain MACROBLOCK members addressable per-plane. This commit also refactors the block subtraction functions vp9_subtract_b, vp9_subtract_sby_c, etc to be loops-over-planes and variable subsampling aware. Change-Id: I371d092b914ae0a495dfd852ea1a3d2467be6ec3
2013-04-22Remove vp9_recon_intra_mbuvJohn Koleszar
Use common vp9_recon_sbuv instead. Change-Id: I146f79adfdfda2b52257a52fa783727f12afa246
2013-04-22Move pre, second_pre to per-plane MACROBLOCKD dataJohn Koleszar
Continue moving framebuffers to per-plane data. Change-Id: I237e5a998b364c4ec20316e7249206c0bff8631a
2013-04-22Merge "Removes the code_nonzerocount experiment" into experimentalDeb Mukherjee
2013-04-22Removes the code_nonzerocount experimentDeb Mukherjee
This patch does not seem to give any benefits. Change-Id: I9d2b4091d6af3dfc0875f24db86c01e2de57f8db
2013-04-22Merge "End of orientation zero group experiment" into experimentalDeb Mukherjee
2013-04-22End of orientation zero group experimentDeb Mukherjee
Adds an experiment that codes an end-of-orientation symbol for every eligible zero encountered in scan order. This cleans out various other sub-experiments that were part of the origiinal patch, which will be later included if found useful. Results are slightly positive on all sets (0.1 - 0.2% range). Change-Id: I57765c605fefc7fb9d1b57f1b356843602abefaf
2013-04-22reconinter: remove unnecessary functions, paramsJohn Koleszar
Removes the redundant dst pointers from vp9_build_inter_predictors_sb{y,uv} and the remaining mb specific functions. Change-Id: I7b6bf439d9394b85ea79b4fe61a3ffc1025720da
2013-04-22Merge "Reordering frame header probs." into experimentalSami Pietilä
2013-04-20Merge "Removing get_segment_id function and using existing ↵Dmitry Kovalev
vp9_get_pred_mb_segid." into experimental
2013-04-20Merge "Renaming vp9_extra_bit_struct to vp9_extra_bit." into experimentalDmitry Kovalev
2013-04-19Merge "Move dst to per-plane MACROBLOCKD data" into experimentalJohn Koleszar
2013-04-19Merge "Remove vp9_recon_mb{,y}" into experimentalJohn Koleszar
2013-04-19Merge "Remove redundant pointers from void vp9_recon_sb{y,uv}" into experimentalJohn Koleszar
2013-04-19Move dst to per-plane MACROBLOCKD dataJohn Koleszar
First in a series of commits moving the framebuffers pointers to per-plane data, so that they can be indexed numerically rather than by name. Change-Id: I6e0d60fd4d51e6375c384eb7321776564df21775
2013-04-19Merge "Clean out some legacy code." into experimentalPaul Wilkins
2013-04-19Removing get_segment_id function and using existing vp9_get_pred_mb_segid.Dmitry Kovalev
Change-Id: Iff35d4b2f8f65511f80c594958c01fb4673fa033
2013-04-19Clean out some legacy code.Paul Wilkins
Removed some unused legacy code relating to GF activity. Change-Id: I0b0fe90a1a5208aaa81d7393ba6cf75ab412dbda
2013-04-19Merge "Remove unused parameters in handle_inter_mode" into experimentalYunqing Wang
2013-04-19Merge "Mv ref candidates cut to 2." into experimentalPaul Wilkins
2013-04-19Remove vp9_recon_mb{,y}John Koleszar
Use the common sb functions instead. Change-Id: I4fa0a8ee3c6ada56271dd09bf895b97642f55858
2013-04-19Remove redundant pointers from void vp9_recon_sb{y,uv}John Koleszar
Remove the unnecessary _s_ from their names, and add a new vp9_recon_sb() that calls the y and uv variants. Change-Id: I7ffaa5ff5605a8472cac2a53de8cf889353039a6
2013-04-19Renaming vp9_extra_bit_struct to vp9_extra_bit.Dmitry Kovalev
Change-Id: Ie4713da125e954c1d30e1d4cbeb38666fce90ccc
2013-04-19Merge "Fixing member names inside TOKENVALUE and TOKENEXTRA structs." into ↵Dmitry Kovalev
experimental
2013-04-19Merge "catch all for new block sizes" into experimentalJim Bankoski
2013-04-19catch all for new block sizesJim Bankoski
Just make sure we don't stop them from testing in speed 1. Change-Id: Iec9b3dba0a32616ff7a451207e0f54b81bb72575
2013-04-19Merge "set up a new speed 1" into experimentalJim Bankoski
2013-04-19Mv ref candidates cut to 2.Paul Wilkins
Further simplification of mvref search to return only the top two candidates. Distance weights removed as the test order reflects distance anyway. Change-Id: I0518cab7280258fec2058670add4f853fab7b855
2013-04-19set up a new speed 1Jim Bankoski
slightly worse results for faster encodes Change-Id: I25ea82a18ce20635dbcd328808c1d05ac1f58fd7
2013-04-19Removal of CONFIG_NEW_MVREF experiment.Paul Wilkins
This experiment has failed to give much benefit but does add complexity so deprecated. Change-Id: Ic7b929ba706390b9907ef0b4f965bd401ca799a4
2013-04-19Remove dummy place holder function.Paul Wilkins
void __attribute__((noinline)) hi(void) { } Causes build failure in VS2008 Change-Id: Ie2f2a09d90bd5502c492e4d9f4983532a0edbc01
2013-04-19Simplification of MVref search.Paul Wilkins
As we are no longer able to sort the candidate mvrefs in both encoder and decode and given that the cost of explicit signalling has proved prohibitive, it no longer makes sense to find more than 2 candidates. This patch: Modifies and simplifies add_candidate_mv() Removes the forced addition of a 0 vector in the MAX_MV_REF_CANDIDATES-1 position (in preparation to reducing MAX_MV_REF_CANDIDATES to 2). Re-orders the addition of candidates slightly. This actually gives small gains (circa 0.2% on std-hd) A subsequent patch will remove NEW_MVREF experiment, reduce MAX_MV_REF_CANDIDATES to 2 and remove distance weights as these are implicit now in the order. Change-Id: I3dbe1a6f8a1a18b3c108257069c22a1141a207a4
2013-04-19Merge "Adjustments to key frame sizing." into experimentalPaul Wilkins
2013-04-19Adjustments to key frame sizing.Paul Wilkins
Adjustments take heavier account of the frame near a kf in deciding boost and limit the total number that can contribute. Also adjusted the minq calculations such that in most cases we generate a smaller key frame. Modified the code that accounts for how static the sequence is and added some adjustment based on image size. This is still very crude but smaller images tend to behave better with a larger delta between KF Q and other frames than larger image formats. Changes give sizable gains in overall PSNR on all the test sets but the biggest gains (~3%) were on the std-hd set. The gains were smaller for SSIM but still significant. Average PSNR results are mixed because this metric can very easily be altered by having a very good / lossless coding of one or two frames. Some of the YT and YT-HD clips in particular have blank lead ins and allowing lossless coding of these appears to make a big difference to average PSNR but it reality does not help much at all. Change-Id: I6bfe485a1d330b47c783832f1717c95c535464ec
2013-04-18Merge changes I320e160e,Iddd99733 into experimentalJohn Koleszar
* changes: Removing rounding from UV MV calculation make buid_inter_predictors block size agnostic (luma)
2013-04-18Removing rounding from UV MV calculationJohn Koleszar
Consider the previous behavior for the MV 1 3/8 (11/8 pel). In the existing code, the fractional part of the MV is considered separately, and rounded is applied, giving a result of 6/8. Rounding is not required in this case, as we're increasing the precision from a q3 to a q4, and the correct value 11/16 can be represented exactly. Slight gain observed (+.033 average on derf) Change-Id: I320e160e8b12f1dd66aa0ce7966b5088870fe9f8
2013-04-18make buid_inter_predictors block size agnostic (luma)John Koleszar
This commit converts the luma versions of vp9_build_inter_predictors_sb to use a common function. Update the convolution functions to support block sizes larger than 16x16, and add a foreach_predicted_block walker. Next step will be to calculate the UV motion vector and implement SBUV, then fold in vp9_build_inter16x16_predictors_mb and SPLITMV. At the 16x16, 32x32, and 64x64 levels implemented in this commit, each plane is predicted with only a single call to vp9_build_inter_predictor. This is not yet called for SPLITMV. If the notion of SPLITMV/I8X8/I4X4 goes away, then the prediction block walker can go away, since we'll always predict the whole bsize in a single step. Implemented using a block walker at this stage for SPLITMV, as a 4x4 "prediction block size" within the BLOCK_SIZE_MB16X16 macroblock. It would also support other rectangular sizes too, if the blocks smaller than 16x16 remain implemented as a SPLITMV-like thing. Just using 4x4 for now. There's also a potential to combine with the foreach_transformed_block walker if the logic for calculating the size of the subsampled transform is made more straightforward, perhaps as a consequence of supporing smaller macroblocks than 16x16. Will watch what happens there. Change-Id: Iddd9973398542216601b630c628b9b7fdee33fe2
2013-04-18Fixing member names inside TOKENVALUE and TOKENEXTRA structs.Dmitry Kovalev
Change-Id: I183ec5819d4d80966c92db36db75b8c3be0d381d
2013-04-18Merge "Fixing rounding inside vp9_mv_bit_cost function." into experimentalDmitry Kovalev
2013-04-18Fixing rounding inside vp9_mv_bit_cost function.Dmitry Kovalev
Change-Id: I7209a05919162a8155520bc543658ddb69ba12ce
2013-04-18Merge "Make the use of pred buffers consistent in MB/SB" into experimentalJingning Han
2013-04-18Make the use of pred buffers consistent in MB/SBJingning Han
Use in-place buffers (dst of MACROBLOCKD) for macroblock prediction. This makes the macroblock buffer handling consistent with those of superblock. Remove predictor buffer MACROBLOCKD. Change-Id: Id1bcd898961097b1e6230c10f0130753a59fc6df
2013-04-18Merge "Adding DEFAULT_PRED_PROB_{0, 1, 2} constants." into experimentalDmitry Kovalev
2013-04-18Merge "Changing argument type of vp9_get_mv_joint from MV to MV*." into ↵Dmitry Kovalev
experimental
2013-04-18Merge "Replacing VP9_COMBINEENTROPYCONTEXTS macro with function." into ↵Dmitry Kovalev
experimental
2013-04-18Merge "Renaming y1dc_delta_q, uvdc_delta_q, uvac_delta_q fields from ↵Dmitry Kovalev
VP9Common." into experimental
2013-04-18Remove unused parameters in handle_inter_modeYunqing Wang
Removed 2 unused parameters. Change-Id: Ic2862569313c404047072b268c3d2be3f635492c
2013-04-18Reordering frame header probs.Sami Pietilä
Moving all the probability updates after frame context selection. This makes it clean and simple to store all the probs in single struct that can be sent to hardware codec. Change-Id: I2ec3de81adbd468d8ef34a914caae80a18c3ef56