- 17 Jul, 2012 - 1 commit
-
-
Ronald S. Bultje authored
vp8_encode_inter_macroblock() is called in both pick_mb_modes() as well as encode_sb(), thus the number of macroblocks in the counter were twice as big as actual numbers. This doesn't affect output. Change-Id: I6de8a996ee44d2f7f2080d8d2177dd7bc6207c93
-
- 16 Jul, 2012 - 3 commits
-
-
Ronald S. Bultje authored
This allows CONFIG_SUPERBLOCKS experiment to almost compile succesfully, except for the missing pick_sb_modes() function. Change-Id: Ib2322f2aacdc371e8066f2eb4a8d761c40490b4d
-
Ronald S. Bultje authored
Also use the 8x8 transform in the RD loop. Change-Id: If1a25aa15d3f64e05c9a31875e309d8cd5bc812d
-
Ronald S. Bultje authored
Change-Id: Ibfecf1fb0fcf51fb349746fec015b1a3e44a4530
-
- 29 Jun, 2012 - 3 commits
-
-
Christian Duvivier authored
Change-Id: Iff5ccf2400bcb7b78c7b70f289ea65c982efddd5
-
Christian Duvivier authored
Change-Id: I6dd27a0ea661e6f10a55d7841021b66ae4fc72ae
-
Hui Su authored
This commit adds lossless compression capability to the experimental branch. The lossless experiment can be enabled using --enable-lossless in configure. When the experiment is enabled, the encoder will use lossless compression mode by command line option --lossless, and the decoder automatically recognizes a losslessly encoded clip and decodes accordingly. To achieve the lossless coding, this commit has changed the following: 1. To encode at lossless mode, encoder forces the use of unit quantizer, i.e, Q 0, where effective quantization is 1. Encoder also disables the usage of 8x8 transform and allows only 4x4 transform; 2. At Q 0, the first order 4x4 DCT/IDCT have been switched over to a pair of forward and inverse Walsh-Hadamard Transform (http://goo.gl/EIsfy), with proper scaling applied to match the range of the original 4x4 DCT/IDCT pair; 3. At Q 0, the second order remains to use the previous walsh-hadamard transform pair. However, to maintain the reversibility in second order transform at Q 0, scaling down is applied to first order DC coefficients prior to forward transform, and scaling up is applied to the second order output prior to quantization. Symmetric upscaling and downscaling are added around inverse second order transform; 4. At lossless mode, encoder also disables a number of minor features to ensure no loss is introduced, these features includes: a. Trellis quantization optimization b. Loop filtering c. Aggressive zero-binning, rounding and zero-bin boosting d. Mode based zero-bin boosting Lossless coding test was performed on all clips within the derf set, to verify that the commit has achieved lossless compression for all clips. The average compression ratio is around 2.57 to 1. (http://goo.gl/dEShs) Change-Id: Ia3aba7dd09df40dd590f93b9aba134defbc64e34
-
- 27 Jun, 2012 - 1 commit
-
-
Adrian Grange authored
Added the ability to optionally filter the prediction data when inter modes are selected (excludes SPLITMV, for now). The mode selection loop considers both the filtered and non-filtered prediction data when choosing mode. The filter can be turned on/off at the frame-level, or signaled for each MB. Change-Id: I1b783c71d95a361ab36c761b07e8a6b06bc36822
-
- 26 Jun, 2012 - 1 commit
-
-
Deb Mukherjee authored
Incorporates mv_ref, mbsplit and second_mv into the adaptive entropy framework. The mv_ref framework has been modified from before. Adds some clean-ups and fixes. Results with the adaptive entropy experiment are currently up by +1.93% on derf; +2.33% std-hd and +1.87% yt-hd. Fixed a nasty intermittent bug. Change-Id: I4b1ac9f9483b48432597595195bfec05f31d1e39
-
- 19 Jun, 2012 - 1 commit
-
-
Christian Duvivier authored
Change-Id: I883b4f63559c1cf66a25016e946b1b1ae98a20da
-
- 15 Jun, 2012 - 1 commit
-
-
Deb Mukherjee authored
This patch incorporates adaptive entropy coding of coefficient tokens, and mode/mv information based on distributions encountered in a frame. Specifically, there is an initial forward update to the probabilities in the bitstream as before for coding the symbols in the frame, however at the end of decoding each frame, the forward update to the probabilities is reverted and instead the probabilities are updated towards the actual distributions encountered within the frame. The amount of update is weighted by the number of hits within each context. Results on derf/hd/std-hd are all up by 1.6%. On derf, the most of the gains come from coefficients, however for the hd and std-hd sets, the most of the gains come from the mode/mv information updates. Change-Id: I708c0e11fdacafee04940fe7ae159ba6844005fd
-
- 12 Jun, 2012 - 3 commits
-
-
Yaowu Xu authored
This commit is to remove two arrays, which contain the probabilities of how likely each probability in coef_probs table is updated. The commit changed to use a fixed number "252". Surprisedly, the overall impact on quality is close to zero, which basically says the two big static arrays are not helpful at all. derf: -0.016%, -0.020% std-hd: 0.000%, -0.013% yt: -0.022%, +0.007% yt-hd: -0.038%, +0.034% Change-Id: Ifee94d28a37dcab4f1d2b994bd5b07575be42b72
-
Yaowu Xu authored
This commit added the ability to accumulate the coef stats across different encodings using an intermediate binary stats files. The accumulation happens only the binary stats file exists in current directory. The encoder needs to be built with "ENTROPY_STATS" to allow the output. The commit also fixed a few formating issues in output stats file. Change-Id: Ib1a41180aa554845cf51e4421a230b128a3a82b4
-
Paul Wilkins authored
Changes to calculation of sr_coded_error to include 0,0 case. Experimental use of sr_coded_error in calculating correction factor for estimating the allowable Q range. Reinstated some code needed for calculating section_intra_rating. Add flash detection in calculation of KF boost Increased tolerance in testing candidate key frames (needed with longer motion search as this tends to slightly increase inter %. Zbin changes for 8x8. Other minor adjustments, refactoring and bug fixes. Reinstated some motion break out clauses in boost loop as their removal hurt a few 50fps clips badly in the std set. It may be possible to remove them again later if a better way can be found of preventing overly long gf intervals. Change-Id: Iee686d0c31072828bb1ccd2bc63f5f1c7c548ea2
-
- 08 Jun, 2012 - 1 commit
-
-
Paul Wilkins authored
Changes to the equations for kf and gf minQ and to the boost calculations for kg and gf Change-Id: I312031c910e6a575334f49075c32f49a8dfff239
-
- 31 May, 2012 - 1 commit
-
-
Adrian Grange authored
Variables m & mi were being dereferenced when they might hold invalid values. The fix is simply to move these dereferences to after the point at which mb_row and mb_col are tested for validity. Change-Id: Ib16561efa9792dc469759936189ea379d374ad20
-
- 30 May, 2012 - 1 commit
-
-
Paul Wilkins authored
This fix addresses some problems with very complex clips like handling of flashes on clips like crew (which was made worse by an earlier patch (derf and std-hd)). Most clips a small effect but some between 1 & 2% Derf +0.039, +0.211% YT +0.042, +0.083% Change-Id: I65fc7c13afc31482040068544dd65b8808f5cb4a
-
- 29 May, 2012 - 1 commit
-
-
Paul Wilkins authored
Removed the local scaling factor est_max_qcorrection_factor and related code to simplify estimateq calculation (little effect anyway) Cap range of total correction factor. Slight change to break out case to turn off arf. Change-Id: I748187737ba93cfadf016f3dfdf8d2741934067f
-
- 26 May, 2012 - 1 commit
-
-
Yaowu Xu authored
One more compiling issue, only happened in Visual C under a specific combination of experiments. Change-Id: Iba0775dc0ea7342b556348a9cdf60a05a59e0241
-
- 25 May, 2012 - 1 commit
-
-
Yaowu Xu authored
the commit fixed a number of compiling issues when some epxeriments are turned on at the same time. Change-Id: Idb15b215e2d2a7d25f2707f99ef55a34e7301ce7
-
- 23 May, 2012 - 1 commit
-
-
Yaowu Xu authored
The commit changed how baseline 8x8 coefficient probabilities are initialized, to be consistent with the initialization of baseline 4x4 coefficient probabilities. The commit does not have any effect on compression. Change-Id: Ifb3902b5dc0b0c2e6dc3aa5d4a6589d528e58355
-
- 17 May, 2012 - 1 commit
-
-
Paul Wilkins authored
Remove dependency on amount and speed of motion as this may not behave well across different image sizes. Tweak impact of % inter. Add in experimental adjustment based on relative quality of an older second reference frame. Cap range of decay values allowed. Some small + effect on derf but -ve on yt & hd at this stage. Change-Id: I390d6f6ebe67a2eb0b834980d0d4650124980d3e
-
- 15 May, 2012 - 6 commits
-
-
Ronald S. Bultje authored
I now see I didn't write a very long description, so let's do it here then. We took a pretty big quality hit (0.1-0.2%) from my recent fix of the inversion of arguments to vp8_cost_bit() in the RD reference frame costing. I looked into it and basically the costing prevented us from switching reference frames. This is of course silly, since each frame codes its own prob_intra_coded, so using last frame cost indications as a limiting factor can never be right. Here, I've rewritten that code to estimate costings based partially on statistics from progress on current frame encoding. Overall, this gives us a ~0.2%-0.3% improvement over what we had previously before my argument-inversion-fix, and thus about ~0.4% over current git (on derf-set), and a little more (0.5-1.0%) on HD/STD-HD/YT. Change-Id: I79ebd4ccec4d6edbf0e152d9590d103ba2747775
-
Paul Wilkins authored
base the static image test off a measure of 0,0 motion instead of the decay accumulator value. Change "transition to still detection" to compare the decay rate from successive frames. Minor tweak to the arf extra boost given based on the number of frames affected. Removed unused variable mod_err_per_mb_accumulator. Change-Id: Idd8360083ad409e45f133ce97dd2488259003e64
-
Deb Mukherjee authored
Adds 6 directional intra predictiom modes for 16x16 and 8x8 blocks. Change-Id: I25eccc0836f28d8d74922e4e9231568a648b47d1
-
Yaowu Xu authored
The commit added an integer version of 8x8 forward DCT, based on the orginal forward DCT from VP6. The constants, roundings, and shifts were adjusted to improve the accuracy. The latest patch has a very similar accuracy in term of round trip error against the floating point version. It should be noted here that the purpose of the patch is to help encoding speed and facilitate all other experiments. There will be futher review in combination with inverse DCT before finalization. configure with "--enable--int_8x8fdct" to use the integer version Change-Id: I5a4f80507429f0e07cf02a13768ec81cbfddc5bc
-
Paul Wilkins authored
Some marginal impact due to the fact that it makes use of arf more likely / stable even in hard sections. Change-Id: Ic72fda0f63eefc9433914b5d9cd374d515810129
-
Paul Wilkins authored
Removed unused function. Added tentative code to take error score of an older frame into account when calculating Q range. However, for now it is disabled pending merging other changes and testing. Change-Id: Ie89955e70319dac31b79e3b833e3352712a061ec
-
- 14 May, 2012 - 2 commits
-
-
Paul Wilkins authored
Remove testing of whether we estimate that it will be possible to code an arf at a lower Q than the ambient Q. This adds quite a bit of extra code and complexity for marginal gain. Factored out some code relating to ARNR selection to a separate function as this is likely to be changed / simplified soon. Change-Id: Ia1cf060405637ef5bbf7018355437be21d12375f
-
Paul Wilkins authored
Removed odd *100 >> 4 factor from boost calculations. Not all the calculations exactly match what was there before so there may be some minor impact on results. Some other minor tidying up in regard to coding conventions. The specific values of factors and thresholds will likely change as part of subsequent patches. Change-Id: Id976321484ac02ba50294cf54fafbc17dda85686
-
- 12 May, 2012 - 1 commit
-
-
Ronald S. Bultje authored
These frames can force reference frame (arf), mode (zeromv) and skip, which means that if we use compound prediction (i.e. arf+last), we might use a blend of a perfect (arf) and an imperfect (last) predictor, leading to semi-garbage display and thus a huge drop in SSIM/PSNR (up to 10dB for some frames I analyzed). Gives a +0.2% gain on YT. Change-Id: If1f2b7899ad165684af3808fd379295e82558cbb
-
- 11 May, 2012 - 1 commit
-
-
Paul Wilkins authored
This is the first patch in a series of changes to the first pass code. (Broken down for ease of testing/merging/review). This patch introduces a new stats element "sr_coded_error". This is the coded error recorded vs the second reference frame (which is updated such that it lags by at least one frame). No use is made of the new structure in this change so this patch should have no material effect. Removed some ifdefs and deprecated code (#if NEW_BOOST). Removed twopass.gf_decay_rate (not used any more) Change-Id: I1be672a73017f7c13fd50fb4f99236aa2ed30916
-
- 10 May, 2012 - 1 commit
-
-
Yaowu Xu authored
This commit changed the forward and the inverse 4x4 Walsh Hadamard transform to a new pair, where the inverse transform can pefectly reconstuct the input to forward transform. It also does so without changing the input and output value range. Even more, it does not change the complexity of the transforms. While it was not expected to improve the results of our current test, it does improve std-hd set by 0.2% on all metrics. No change on derf. Change-Id: Ie4f23ddd3a0f3c5fbe97fb58399f860031f99337
-
- 09 May, 2012 - 1 commit
-
-
Deb Mukherjee authored
Also includes some clean ups and refactoring. Rebased. Change-Id: I268c97fe325b4881103fe19f41ae818569e7ccf7
-
- 08 May, 2012 - 1 commit
-
-
Yaowu Xu authored
1. block types There are only three types of blocks for 8x8 transformed MBs, i.e. Y block with DC does not exist for 8x8 transformed MBs as all MB using 8x8 transform have 2nd order haar transform. This commit introduced a new macro BLOCK_TYPES_8X8 to reflect such fact. 2. context counters This commit also fixed the mixed of context_counters between 4x4 and 8x8 transformed MBs. The mixed use of the counters leads me to think the existing the context probabilities were not properly generated from 8x8 transformed MBs. 3. redundant collecting in recoding The commit also corrected the code that accumulates entropy stats by making sure stats only collected for final packing, not during the recode loop Change-Id: I029f09f8f60bd0c3240cc392ff5c6d05435e322c
-
- 04 May, 2012 - 1 commit
-
-
Deb Mukherjee authored
This patch expands the set of prev contexts used for video coding from 3 to 4. There is a small improvement of the order of 0.08% for derf and 0.15% on the HD set. The tests were rerun after the various merges last week. There are two columns in each test - the first are the results with the mbskip change, and the second with expanded contexts added on top of that. Derf: http://www.corp.google.com/~debargha/vp8_results/explibvpx_newentropy_expcontext.html HD: http://www.corp.google.com/~debargha/vp8_results/explibvpx_hd_newentropy_expcontext.html Rebased. Broke up 80 char lines. Change-Id: I82d2e72d054e530cbf5ce9aa0e6d85c582965675
-
- 30 Apr, 2012 - 3 commits
-
-
Ronald S. Bultje authored
Change-Id: I9f1686249ac812f7b9b872eabe3970d1dfb25e56
-
Deb Mukherjee authored
Change-Id: I87291fb40c745f34c36b067f47abdf69774a812f
-
Deb Mukherjee authored
Removes a set of spurious declarations that were inadvertently checked in. Change-Id: I2f80b6b66d2ec9ea667c810eaf1a6e7d52478c67
-
- 27 Apr, 2012 - 1 commit
-
-
Adrian Grange authored
The ARNR filter uses a motion compensated temporal filter, but the motion estimation implementation accounts for the cost of the mv in its decision making process. The ARNR filter uses a dummy cost table initialized to 0 as a way to ignore the mv costs (which are irrelevant to the filter). This CL modifies the ARNR filter implementation to so that the mv costing is ignored without the requirement for dummy tables. Change-Id: I0dd9620c3b70682f938b2a70912c11d4d7c9284c
-