summaryrefslogtreecommitdiff
path: root/vp8
AgeCommit message (Collapse)Author
2011-10-31Segmentation Entropy and tweaks.Paul Wilkins
Some correction for entropy impact of segment signaled (EOB and ref frame) Other slight tweaks. Derf VBR average gain now over 1% (best over 7%) One YT test clip has gains of circa 30% (VBR) There is still an issue with noisy clips where making the background static and coded with 0,0 can have a negative effect, especially at low Q. This is probably because of the loss of smoothing by fractional pixel filters. Change-Id: I7a225613c98067b96f8fc7a7e36f95d465b2b834
2011-10-27Resolve build problemPaul Wilkins
Resolved experimental branch build problem when seg_features not configured. Change-Id: Ia0f9b460a26dc3eac9844ee595a7b196e9faf6a5
2011-10-25Merge "added a last stage rounding for 8x8 inverse dct" into experimentalYaowu Xu
2011-10-24added a last stage rounding for 8x8 inverse dctYaowu Xu
Prior to the added rounding, tests on randomly generated data showed that forward-inverse transform round trip errors are about 3.02/block for input range [-10,10] and 2.68/block for input range [-256, 255]. The added rounding reduced the errors to 0.031/block for input range [-10,10] and 0.037/block for input range [-256, 255]. Maximum round trip error on for any pixel position is 1. The average errors are calculated based on 100,000 blocks of randomly with the specified ranges. Paul mentioned in discussion that the change was not clear on why we need change the rounding, so Patch 2 intends to make the rationale obvious in code, it merged the two separate shifts into one, and the two separate rounding factors into one. Patch 1 and 2 have same numerical test results. Change-Id: Ic5e2f5463de17253084d8b2398c4a210194b20de
2011-10-24Segmentation Features;Paul Wilkins
Only encode sign bit for feature data that can have a sign. Tweaks to the test segmentation rules so that it now actually gives a net benefit on the derf set of about 0.4% though much higher on some clips at the low end. Change-Id: I8e61f1aebf41c9037db7e67e2f8975aa18a0c986
2011-10-24Further segment feature extensions.Paul Wilkins
This quite large check in includes the following: Merge in some code from Ronald (mbgraph.c) that scans a Gf/arf group. This is used as a basis for a simple segmentation for the normal frames in a gf/arf group. This code also uses satd functions from Yaowu. Adds functionality for coding the latest possible position of an EOB for blocks in the segment. (Currently 0-15 only, hence just for 4x4 dct). Where the EOB position is 0 this acts like "skip" and the normal coding of skip at the per mb level is disabled. Added functions (seg_common.c) for setting and reading segment feature elements. These may want to be optimized away at some point but while the mecahnism is in a state of flux they provide a single location for making changes and keep things a bit cleaner. This is still proof of concept code. Currently the tested feature set:- Quantizer, Loop Filter level, Reference frame, Prediction Mode, EOB end stop. TBD:- Add functions for setting and reading the feature data with range and validity checking. Handling of signed and unsigned feature data. At the moment all is assumed to be signed and a sign bit is coded but many cannot be negative. Correct handling of EOB feature with intra coded blocks. Testing/trapping of legal/illegal ref frame and mode combinations. Transform size switch plus merge and test with 8c8 DCT work Merge and test with Sumans Segmenation coding optimizations Change-Id: Iee12e83661c7abbd1e0ce6810915eb4ec35e2d8e
2011-10-14fixed the wrong rounding in inverse haar transformYaowu Xu
Given the current forward haar transform: f0 = I0 + I1 + I2 + I3 f1 = I0 + I1 - I2 - I3 f2 = I0 - I1 + I2 - I3 f3 = I0 - I1 - I2 + I3 the output of the inverse haar prior rounding: i0 = f0 + f1 + f2 + f3 = I0 * 4; i1 = f0 + f1 - f2 - f3 = I1 * 4; i2 = f0 - f1 + f2 - f3 = I2 * 4; i3 = f0 - f1 - f2 + f3 = I3 * 4; As all the numbers are 4 multiples, simply >>2 always produces prefect results in term of forward-inverse transform round trip error. Change-Id: Id6658b00ea819ee61cfeef8c5985d4cd3e77f44e
2011-10-08fixed a decoder bugYaowu Xu
When 8x8 transform is enabled, the decoder does an extra reconstruct on MBs that are coded using 8x8. This commit fixed the logic around the decoding of mb encoded with 8x8 transform. Change-Id: I6926557c9ef00eecb375f62946f7e140c660bf6f
2011-09-30Segment coding of mode and reference frame.Paul Wilkins
Proof of concept test code that encodes mode and reference frame data at the segment level. Decode-able bit stream but some issues not yet resolved. As it this helps a little on a couple of clips but hurts on most as the basis for segmentation is unsound. To build and test, configure with --enable-experimental --enable-segfeatures Change-Id: I22a60774f69273523fb152db8c31f4b10b07c7f4
2011-09-30Experimental: segfeature added.Paul Wilkins
New setting added to configure script
2011-09-21Merge remote branch 'internal/upstream' into HEADJohn Koleszar
2011-09-20Move neon only arm functions under arm/neon.Fritz Koenig
These files don't contain generic arm code, so should only be compiled by neon. Change-Id: Ie712823aa04d4235e7cfe7a3b725e73ee4c3e564
2011-09-20Merge "NEON FDCT updated to match current C code"Johann
2011-09-20Merge "NEON walsh transform updated to match C"Johann
2011-09-20Merge "Updated ARMv6 forward transforms to match C"Johann
2011-09-20Merge "Fixed armv5te multiplications"Johann
2011-09-20NEON FDCT updated to match current C codeTero Rintaluoma
- Removed fast_fdct4x4_neon and fast_fdct8x4_neon - Uses now short_fdct4x4 and short_fdct8x4 - Gives ~1-2% speed-up on Cortex-A8/A9 Change-Id: Ib62f2cb2080ae719f8fa1d518a3a5e71278a41ec
2011-09-20Fixed armv5te multiplicationsTero Rintaluoma
Rd and Rm registers should be different in 'mul'. This register combination results in unpredictable behaviour. GCC will give a warning and RVCT an error in this case. Restriction applies only to armv5 targets and not for armv6 and above. Change-Id: I378d17c51e1f16a6820814fbed43e115aaabb03e
2011-09-20Merge remote branch 'internal/upstream' into HEADJohn Koleszar
2011-09-19Fix necessary for input partitions iface to match the RTP profileStefan Holmer
These changes fixes a glitch between the RTP profile and the input partitions interface. Since there's no way for the user to know the actual number of partitions, the decoder have to read the multi_token_paritition bits also when input partitions mode is enabled. Included are also a couple of fixes for issues with independent partitions and uninitialized memory reads. Change-Id: I6f93b15287d291169ed681898ed3fbcc5dc81837
2011-09-19Updated ARMv6 forward transforms to match CTero Rintaluoma
- Updated walsh transform to match C (based on Change Id24f3392) - Changed fast_fdct4x4 and 8x4 to short_fdct4x4 and 8x4 correspondingly Change-Id: I704e862f40e315b0a79997633c7bd9c347166a8e
2011-09-19NEON walsh transform updated to match CTero Rintaluoma
Modified original patch If2f07220885c4c3a0cae0dace34ea0e36124f001 according to comments. Scheduled code a little bit to prevent some interlocks. Change-Id: I338f02b881098782f82af63d97f042b85e63e902
2011-09-17Merge remote branch 'internal/upstream' into HEADJohn Koleszar
2011-09-16enable selecting&transmitting to for intra mode entropyYaowu Xu
This commit added a 3 bit index to the bitstream, the index is used to look into the intra mode coding entropy context table. The commit uses the mode stats to calculate the cost of transmitting modes using 8 possible entropy distributions, and selects the distribution that provides the lowest cost to do the actual mode coding. Initial test show this provides additional .2%~.3% gain over quantizer adaptive intra mode coding. So the adaptive intra mode coding provides a total of .5%(psnr) to .6% gain(ssim) combined for all-key-encoding To build and test, configure with --enable-experimental --enable-qimode Change-Id: I7c41cd8bfb352bc1fe7c5da1848a58faea5ed74a
2011-09-16add quantizer adaptive intra mb mode encodingYaowu Xu
make intra mode coding entropy distribution adaptive to baseQindex, an encoding test on hd clips with all key frame shows universal gain on all clips in both .2%(psnr) and (ssim).3%. To build and test, configure with --enable-experimental --enable-qimode Change-Id: Iaa69241b984d4fdd8baa6d77ee78c0140f5ac00a
2011-09-16add 8x8 intra prediction modesYaowu Xu
Patch 1 to Patch 3 is an initial implementation of 8x8 intra prediction modes, here are with the following assumptions: a. 8x8 has 4 prediction modes DC, H, V and TM b. UV 4x4 block use the same mode as corresponding 8x8 area c. i8x8 modes are enabled for key frame only for now Patch 4: d. removed debug code from previous patches Patch 5: e. added stats code to collect entropy stats and further cleaned up Patch 6: f. changed mode stats code to collect finer stats of modes Patch 7: g. normalized i8x8 modes distribution to total at 256 (8bits). Patch 8: h. fixed a bug in decoder and removed debug printf output. Patch 9: i. more cleanups to address paul's comment Patch 10: j. messy rebase/merges to bring the commit up to date. Tests on HD clips encoded with all key frame showing consistent gain on all clips and all metrics:~0.5%(psnr) and 0.6%(ssim): http://www.corp.google.com/~yaowu/no_crawl/i8x8hd_allkey_fixedq.html To build and test, configure with: --enable-experimental --enable-i8x8 Change-Id: I9813fe07ae48cab5fdb5d904bca022514ad01e7f
2011-09-16Merge "Fixes the boundary checks for extrapolated and interpolated MVs."John Koleszar
2011-09-16Merge remote branch 'internal/upstream' into HEADJohn Koleszar
Conflicts: vp8/decoder/decodframe.c vp8/encoder/encodeframe.c vp8/encoder/encodemb.c Change-Id: I6e0d1669e4409a2dfd73ba2c7038d730842d3953
2011-09-16Fixes the boundary checks for extrapolated and interpolated MVs.Stefan Holmer
Change-Id: I5b47d39d1604f2650d2f2d1ca2a3f40843c8e1ea
2011-09-15Segment Feature SignalingPaul Wilkins
Plumbing for tuning new segment features on and off. Change-Id: If86cd6f103296b73030e8af7cf85c5b9bbffdbaf
2011-09-13Reverse coding order for segment features:Paul Wilkins
Code all the features for one segment (grouped together) then all for the next etc. etc. rather than grouping the data by feature. Change-Id: I2a65193b3a70aca78f92e855e35d8969d857b6dd
2011-09-13Fixed encoder crashScott LaVarnway
caused by the "Removed bmi copy to/from BLOCKD" commit. Change-Id: I9fae71bdc34c8ecc07bb81cd3ccf498b91ce3ec7
2011-09-13Change to segment_feature_data[][] structure.Paul Wilkins
This data structure is now [Segment ID][Features] rather than [Features][Segment_ID] I propose as a separate modification to make the experimental bit stream reflect this such that all the features for a segment are coded together. Change-Id: I581e4e3ca2033bdbdef3d9300977a8202f55b4fb
2011-09-13Segment Features:Paul Wilkins
Some basic plumbing added for a range of segment level features. MB_LVL_* changed to SEG_LVL_* to better reflect meaning. Change-Id: Iac96da36990aa0e40afc0d86e990df337fd0c50b
2011-09-03fixed a decoder bugYaowu Xu
the bug appears to be introduced from a merge at Commit:62400028.. Change-Id: I332d78b673f12e5ef2b0cdd6bab57dc2c8af7a72
2011-08-31Merge "Skip computation of distortion in vp8_pick_inter_mode if active_map ↵Scott LaVarnway
is used"
2011-08-31Merge "Removed bmi copy to/from BLOCKD"Scott LaVarnway
2011-08-31Skip computation of distortion in vp8_pick_inter_mode if active_map is usedAlpha Lam
If a block is marked to be inactive then set distortion to 0. Change-Id: Ib415f19642a2ff7b5cf5cfaedd60ebbd79732272
2011-08-31Merge remote branch 'internal/upstream' into HEADJohn Koleszar
2011-08-30Merge "Recalculate zbin_extra only if regular quantizer is being used"John Koleszar
2011-08-30Recalculate zbin_extra only if regular quantizer is being usedAlpha Lam
vp8_update_zbin_extra() is called all the time even though the fast quantizer doesn't use it. Skip this call if fast quantizer is used. Change-Id: Ia711c38431930cc2486cf59b8466060ef0e9d9db
2011-08-27Merge remote branch 'internal/upstream' into HEADJohn Koleszar
2011-08-26Merge remote branch 'internal/upstream' into HEADJohn Koleszar
2011-08-25Minor modification on key frame decisionYunqing Wang
This change makes sure that no key frame recoding in real-time mode even if CONFIG_REALTIME_ONLY is not configured. Change-Id: Ifc34141f3217a6bb63cc087d78b111fadb35eec2
2011-08-25Merge remote branch 'internal/upstream' into HEADJohn Koleszar
Conflicts: vp8/common/defaultcoefcounts.h vp8/common/entropy.c vp8/encoder/bitstream.c Change-Id: Idd4990c80d5b5494ac036254694015fab449bc08
2011-08-24Quiet warning by removing unused variable.Fritz Koenig
fwd_boost_score was not being computed or referenced, so remove declaration. Change-Id: Iece36cde1ec113e3c6afaff1407d24cdf12bd0a8
2011-08-24Removed bmi copy to/from BLOCKDScott LaVarnway
for SPLITMV and B_PRED modes. Modified code to use the bmi found in mode_info_context instead of BLOCKD. On the decode side, the uvmvs are calculated only when required, instead of every macroblock. This is WIP. (bmi should eventually be removed from BLOCKD) Small performance gains noticed for RT encodes and decodes.(VGA) Change-Id: I2ed7f0fd5ca733655df684aa82da575c77a973e7
2011-08-24Fix naming of sse2 idct functions.Fritz Koenig
Prepend idct function names with vp8_ so that under profiling they show up associated with libvpx. Change-Id: I4fe357b50236cb7730a4cc00164c0a3487a1d8b4
2011-08-24Merge "Faster vp8_default_coef_probs"Scott LaVarnway
2011-08-24Merge remote branch 'internal/upstream' into HEADJohn Koleszar