- 31 Jan, 2012 - 5 commits
-
-
Paul Wilkins authored
This does not change any functionality just modifies the code to use the common prediction module interface for coding the segment data. Change-Id: Ifd43e9153573365619774a4f5572215e44fb5aa3
-
Paul Wilkins authored
This function adds the common prediction modules, some data structures and a config option but does not use them. It also corrects a bug in clearing down the MODE_INFO border and introduces a new element that indicates if an entry corresponds to an "in image" macro block or is part of the border. Change-Id: Ib69eec0876173ebe9d1de9df9537d0b2447702e0
-
Paul Wilkins authored
Encoder side changes Change-Id: I8921800e4fccec5e5a9e4755b80cbd472623107b
-
Paul Wilkins authored
In this commit only the decoder side was updated. Change-Id: Ia9bd58da07d1a943f028e330f0489344e62b0d02
-
Paul Wilkins authored
Moved some segmentation data structures into VP8_COMMON Change-Id: I59c6e2edf7a0176e35319936eea450027aeb3b39
-
- 27 Jan, 2012 - 3 commits
-
-
Jim Bankoski authored
Goes through set of ref frames used by each macroblock and sets seg_lvl_ref_frame flags accordingly.. http://www.corp.google.com/~jimbankoski/no_crawl/segref.html Change-Id: Iab7f1effd75a839b34eb310d7168692c8f105411
-
Jim Bankoski authored
Picks a per segment loopfilter. Adapts the algorithm to search for a loopfilter value for each separate segment. Further todo fix the bias Improvements .06 % ov psnr, .11% ssim http://www.corp.google.com/~jimbankoski/no_crawl/segmentedpicklpf.html Change-Id: Ic6a571c16fcd6ec0139f4de1f8061f87c6515a10
-
Yaowu Xu authored
-
- 26 Jan, 2012 - 2 commits
-
-
Yaowu Xu authored
changed the token cost for 8x8 transformed macroblock used in trellisquant from those derived from 4x4 transform coefficient distribution to those derived from 8x8 transform coefficient distribution. Test results show this fix help 8x8 transform based compression consistently on cif and hd sets: http://www.corp.google.com/~yaowu/no_crawl/t8x8/cif_cost8x8only.html (avg psnr:.14% glb psnr: .17% ssim: .20%) http://www.corp.google.com/~yaowu/no_crawl/t8x8/hd_cost8x8only.html (avg psnr:.17% glb psnr: .18% ssim: .58%) Note: To test the effect of this change, 8x8 transform was forced to be used only on 16x16 predicted macroblocks on inter frames, the effect would be bigger had all macroblocks been forcd to use 8x8 transform. Change-Id: If9b7868b75357c66541f511e5ee78e4d2d4929a4
-
Deb Mukherjee authored
using an 8-tap filter. The results with 3 different 8-tap filters on the derf set are in: http://www.corp.google.com/~debargha/vp8_results/enhinterp.html The one that gives the most gain achieves an overall gain of about 0.6%. The results for a set of 12 hd (720p) videos are in: http://www.corp.google.com/~debargha/vp8_results/enhinterp_hd.html with max gain of 0.55% with the same filter. The best filter apparently achieves the best trade-off between pass band ripple and stop band attenuation. Change-Id: I919e28ae245c0493147fa0864f8c9d048a9dd530
-
- 24 Jan, 2012 - 2 commits
-
-
Yaowu Xu authored
-
Jim Bankoski authored
This introduces base functions for introducing implicit segmentation. The code that actually stores the results to the segment map isn't here yet. This just prints out the segmentation map results if you call it. Uses connected component labeling technique on mbmi info so that only if 2 mbs are horizontally or vertically touching do they get the same segment. vp8next - plumbing for rotation code to produce taps for rotation ( tapify. py ), code for predicting using rotation ( predict_rotated.c ) , code for finding the best rotation find_rotation.c. didn't checkin code that uses this in the codec. still work in progress. Fixed copyright notice Change-Id: I450c13cfa41ab2fcb699f3897760370b4935fdf8
-
- 20 Jan, 2012 - 3 commits
-
-
Yaowu Xu authored
This commit added a set of loop filter functions for macroblocks using 8x8 transform. First we turned off the regular loop filtering on 4x4 block boundaries that do not exist in macroblocks using 8x8 transform. Second, we change to use the same loop filter(mask and 7 tap filter) that used for macroblock edge filtering. Change-Id: I3a00460b7674ced116917d86812ffc32578c1d3a
-
Yaowu Xu authored
This fixed a conflict introduced by the change of adding 8x8 intra prediction modes. The 8x8 intra prediction mode code assumed the use of 4x4 transform, and causes encoder crashes when the codec is configured with --enable-t8x8. Change-Id: I00cc94df63e9725377ffba9eb51be6b77fe3fcf9
-
- 18 Jan, 2012 - 3 commits
-
-
Yaowu Xu authored
-
Yaowu Xu authored
The commit adds a new set of loop filter for macroblock edge filtering. The new loop filter has a mask to detect so-called "flat" regions. The detection checks 5 pixels of each side of an edge. If the all pixels have value with +/-1 from the edge pixel on the same side, the region is treated as a "flat" region. For such case, a 7 tap filter is used to change 3 pixel values on each side. The 7 taps are: [1, 1, 1, 2, 1, 1, 1]/8 The furthest away pixels used as input are +/-5 away from edge. For non-flat region, we fall back to old filtering. It should be noted here that the thresholds and filter taps may require more optimization for best possible results. Tests on a set of hd clips showed consistent gains: http://www.corp.google.com/~yaowu/no_crawl/mblpf_hd.html (avg psnr: .83% glb psnr: .77% ssim: .82%) Tests on derf set also showed consistent gains: http://www.corp.google.com/~yaowu/no_crawl/mblpf_derf.html (avg psnr: .24% glb psnr: .22% ssim: .48%) Change-Id: I0855b1ff48e79e1175c20b81967137e18b2af352
-
Paul Wilkins authored
Put traps to prevent two possible divide by 0 errors. Change-Id: Ia415b945244253dcdd12f54f1f157f9ca8c94d6b
-
- 17 Jan, 2012 - 1 commit
-
-
Paul Wilkins authored
A problem can arise on static clips with force key frames where attempts to avoid popping lead to a progressive reduction in key frame Q that ultimately may lead to unexpected overspend against the rate target. The changes in this patch help to insure that in such clips the quality of the key frames across the clip is more uniform (rather than starting bad and getting better - especially at low target rates). This patch also includes a fix that removes a delta on the Y2DC when the baseline q index < 4 as this is no longer needed. There is also a fix to try and prevent repeat single step Q adjustment in the recode loop leading to lots of recodes, especially where the use of forced skips as part of segmentation has made the impact of Q on the number of bits generated much smaller. Patch 2: Amend "last_boosted_qindex" calculation for arf overlay frames. Change-Id: Ia1feeb79ed8ed014e4239994fcf5e58e68fd9459
-
- 11 Jan, 2012 - 1 commit
-
-
Yaowu Xu authored
-
- 05 Jan, 2012 - 1 commit
-
-
Yaowu Xu authored
In certain hardware configuration, where mmx code is enabled and other simd (sse2/sse3) disabled, lacking of this emms caused invalid internal stats outputs. Change-Id: I77c61cf6e0448d3f3b8c11781aa9e42f31d231c9
-
- 23 Dec, 2011 - 2 commits
-
-
Christian Duvivier authored
Change-Id: Ifadf65026a11bdb5d39840748613880bcfb364bb
-
Christian Duvivier authored
Change-Id: I6bbed8bcb2dfa3458ffc59179dfba66c92e18125
-
- 21 Dec, 2011 - 2 commits
-
-
Christian Duvivier authored
-
Yaowu Xu authored
Previously, the mode context is always udpated based on stats of current frame, when there is no count, 50% is used for both left and right branch. However, it is observed that with such strategy, a small count or no count at all can skew the probability distribution significantly. This commmit changed the mode_context update strategy to prevent small counts from skewing the probability distributions. Tests on derf set showed a small gain: .06% in psnr and .09% in ssim Change-Id: Ic812e64ae5f70251c170b0717f7b7fa587055488
-
- 20 Dec, 2011 - 4 commits
-
-
Paul Wilkins authored
-
Paul Wilkins authored
-
Paul Wilkins authored
-
Paul Wilkins authored
-
- 19 Dec, 2011 - 4 commits
-
-
Paul Wilkins authored
Cleanup and switch to Q extended at low end too. Change-Id: Ie22676bb9e961097d75dbd1d81745208b63e5f4b
-
Paul Wilkins authored
This commit extends the number of Q steps to 256 from 128. The q_trans[] array has been altered to distribute available Q index values (using the current 64 steps available as input parameters) evenly across the available range. This is coupled with the fact that each Q step where possible now equates to a fixed % change in the quantizer. This may want refinement later especially in terms of the granularity at the high quality end but is a reasonable starting point. Change-Id: I2aaa6874fa10ce05c958dd182947ce39f6f1eecb
-
Paul Wilkins authored
High Q end extended a little. Some clean up. Slightly better on SSIM, Slightly worse on PSNR over derf set. Change-Id: I3dceea8a39e11c26e1a389a40e40b86efc76d28c
-
Paul Wilkins authored
Added code to support 256 index steps instead of 128 but disabled for now. Replace hard wired table vp8cx_base_skip_false_prob[128] Observed Qindex problem with setting minimum loop filter value. (Experiment code using real Q in place but for now just returning 0. This has a big beneficial effect on some clips, particularly waterfall which shows 5% ssim gain) Change-Id: I2f7117de8adc1797164c106aa13effc900a1467e
-
- 16 Dec, 2011 - 1 commit
-
-
Adrian Grange authored
Whilst the encoder explicitly set the segment_id to 0 when segmentation is diabled, the decoder would allow the segment_id to persist from the previous frame. This fix attempts to make the decoder behave the same as the encoder by explicitly setting the segment_id to 0 in this case. Change-Id: I65c3a05247550edb10706eb5d54d306dfb792309
-
- 15 Dec, 2011 - 2 commits
-
-
Adrian Grange authored
mode_info_context is padded with an additional column of data, so mode_info_stride should be used to move between rows rather than mb_cols. Change-Id: I598559a2cd9df1c486d64aaeccf76b76a7ecf21c
-
Adrian Grange authored
Both encoder & decoder were using mb_cols to offset from one row of MODE_INFO structures to the next when they should have been using mode_info_stride. Fixing this in both encoder and decoder gives around a 3KB size saving and 0.025dB PSNR improvement on the one 720P clip I tried. (Also removed "index" which was being updated but not used) Change-Id: I413bea802b142886bfcf8d8aa7f5a2f0c524fd4b
-
- 12 Dec, 2011 - 1 commit
-
-
Paul Wilkins authored
Removed a couple more fixed tables for the extended quantizer experiment that depend on QINDEX_RANGE. Change-Id: I2c15ffc7488c2a2b8d6504e2c4b6b2339799d117
-
- 09 Dec, 2011 - 3 commits
-
-
Yaowu Xu authored
Previously, Y-adaptive UV intra coding only enabled on key frames in UVINTRA experiment. This commit enabled the same coding for inter frames, so the encoding of UV intra modes are consistent cross all frame types. Tests on derf set showed a very small overall gain around .04%: http://www.corp.google.com/~yaowu/no_crawl/interUVintra.html The gain looks to be reasonable given inta coded MBs is only a small portion of MBs in inter frames. Change-Id: Ic6fc261923f2c253f4a0c9f8bccf4797557b9e16
-
Adrian Grange authored
-
Adrian Grange authored
update_mbgraph_frame_stats used xd->mode_info_context before it had been setup, resulting in potentially random accesses of uninitialized memory. This fix allocates a local MODE_INFO structure to hold the data generated in the function. Change-Id: Ic9e75610008ce0e2d690e8e583c21582fee6fc45
-