1. 15 Feb, 2012 - 3 commits
    • Ronald S. Bultje's avatar
      Fix overflows in dual prediction mode selection. · 0930dde2
      Ronald S. Bultje authored
      Change-Id: I265ad46e01a307bca21e6223725e4055f5e08648
      0930dde2
    • Paul Wilkins's avatar
      Experimental code base simplification. · 46f9ad2c
      Paul Wilkins authored
      Remove error concealment code.
      
      Change-Id: I882705174fbfea212e96f7f684e47a671dbe5c67
      46f9ad2c
    • Yaowu Xu's avatar
      moved segment based LPF level selection under CONFIG_FEATUREUPDATES · d327dcf3
      Yaowu Xu authored
      This commit moved segment based loop filter level selection into
      the experiment of CONFIG_FEATUREUPDATES. As previous commit noted,
      the segment based loop filter selection helps the compression by
      ~0.1% on cif set, the ongoing experiment CONFIG_FEATUREUPDATES
      made encoding updates of the segment based LPF level more efficient,
      hence, another .04% gain on cif set. The commit also fixed an issue
      previously where encoder/decoder may use different loop filter level
      for one of the segments.
      
      Change-Id: Ia978b14aae95bb107d561ba53a7a2bb6ff01faf3
      d327dcf3
  2. 14 Feb, 2012 - 2 commits
    • Yaowu Xu's avatar
      added 8x8 based Rate estimation for dualpred case · 9b68ad0f
      Yaowu Xu authored
      This commmit added logic for MB using dual-pred to compute rate
      estimation based on correct transform size. The section of code
      was previously located under #if CONFIG_DUALPRED, that was made
      to be working with T8x8 experiment at the same time.
      
      Change-Id: Iebc2518c03f11378b9c2e72905520f088b54d5c0
      9b68ad0f
    • Paul Wilkins's avatar
      Simplification of experimental code base. · 9a8204d6
      Paul Wilkins authored
      Removed ~CONFIG_REALTIME_ONLY code.
      
      Change-Id: I5fafff29a08acd8928699f9ddce8744787024d8c
      9a8204d6
  3. 13 Feb, 2012 - 3 commits
    • Jim Bankoski's avatar
      vp8 - config_featureupdates · af8f1928
      Jim Bankoski authored
      Added a bit to signify that the feature changed since
      the last time we sent it, or not so that we don't need
      to send all the databits for every feature change.
      
      added config
      
      Change-Id: I8d3064ce90d4500bf0d5c6b87c664e46138dfcac
      af8f1928
    • Yaowu Xu's avatar
      Changed how coefficient probability table is updated · 2d1ead34
      Yaowu Xu authored
      Added a frame level flag to indicate if coef probabilities are updated
      at all for the frame.
      
      During the experimental work with 8x8 transform, it is discovered that
      even in the case of no probability is ever update, cost of transmitting
      "no update" for each of probabilities can run up to become a significant
      overhead cost. A single bit to indicate no-update for all coef probs
      is therefore helpful, which is also demonstrated by the test results:
      
      1. On Cif set:
      http://www.corp.google.com/~yaowu/no_crawl/t8x8/cif_t8x8_updprob.html
      (avg psnr: .14%, glb psnr: .14% SSIM: .13%)
      
      2. On HD set:
      http://www.corp.google.com/~yaowu/no_crawl/t8x8/HD_t8x8_updprob.html
      (avg psnr: .02%  glb psnr: .01% SSIM: .02%)
      It should be noted that the gain on HD is smaller because the average bit
      rate is much higher in contrast to the overhead bit cost.
      
      Change-Id: I46db270e693ee8799fef34a14d8260868ce4cd16
      2d1ead34
    • Paul Wilkins's avatar
      Fixed typo on #define name · 21108d80
      Paul Wilkins authored
      SE_LVL_EOB => SEG_LVL_EOB
      
      Change-Id: I6d10169878a709bc9b82f03e5d5903c629fa7679
      21108d80
  4. 10 Feb, 2012 - 5 commits
    • Yaowu Xu's avatar
      fixed an issue related to 2nd order size due to merge artifacts. · 9ded6e37
      Yaowu Xu authored
      For 8x8 transformed macroblock, the 2nd order transform is a 2x2 haar
      transform, here there is only 4 coefficients total. A previous merge
      changed these to 64, causing crashes when encoding with 8x8 transform
      enabled. (i.e. when input video image size > 640x360 ) This commit
      reverts them back to 4 and fixes the crashes.
      
      Change-Id: I3290b81f8c0d32c7efec03093a61ea57736c0550
      9ded6e37
    • Paul Wilkins's avatar
      Removal of threading code. · 2615ca5d
      Paul Wilkins authored
      For the experimental branch we are trying to slim the codebase
      down removing features such as threading for now which complicate
      the process of development and testing.
      
      Change-Id: I657c0246aef4d1fa8c8ffc6a1adfeee45bce8e24
      2615ca5d
    • Ronald S. Bultje's avatar
      Improved coding using 8x8 transform · f64725a0
      Ronald S. Bultje authored
      In summary, this commit encompasses a series of changes in attempt to
      improve the 8x8 transform based coding to help overall compression
      quality, please refer to the detailed commit history below for what
      are the rationale underly the series of changes:
      
      a. A frame level flag to indicate if 8x8 transform is used at all.
      b. 8x8 transform is not used for key frames and small image size.
      c. On inter coded frame, macroblocks using modes B_PRED, SPLIT_MV
      and I8X8_PRED are forced to using 4x4 transform based coding, the
      rest uses 8x8 transform based coding.
      d. Encoder and decoder has the same assumption on the relationship
      between prediction modes and transform size, therefore no signaling
      is encoded in bitstream.
      e. Mode decision process now calculate the rate and distortion scores
      using their respective transforms.
      
      Overall test results:
      1. HD set
      http://www.corp.google.com/~yaowu/no_crawl/t8x8/HD_t8x8_20120206.html
      (avg psnr: 3.09% glb psnr: 3.22%, ssim: 3.90%)
      2. Cif set:
      http://www.corp.google.com/~yaowu/no_crawl/t8x8/cif_t8x8_20120206.html
      (avg psnr: -0.03%, glb psnr: -0.02%, ssim: -0.04%)
      It should be noted here, as 8x8 transform coding itself is disabled
      for cif size clips, the 0.03% loss is purely from the 1 bit/frame
      flag overhead on if 8x8 transform is used or not for the frame.
      
      ---patch history for future reference---
      Patch 1:
      this commit tries to select transform size based on macroblock
      prediction mode. If the size of a prediction mode is 16x16, then
      the macroblock is forced to use 8x8 transform. If the prediction
      mode is B_PRED, SPLITMV or I8X8_PRED, then the macroblock is forced
      to use 4x4 transform. Tests on the following HD clips showed mixed
      results: (all hd clips only used first 100 frames in the test)
      
      http://www.corp.google.com/~yaowu/no_crawl/t8x8/hdmodebased8x8.html
      http://www.corp.google.com/~yaowu/no_crawl/t8x8/hdmodebased8x8_log.html
      
      while the results are mixed and overall negative, it is interesting to
      see 8x8 helped a few of the clips.
      
      Patch 2:
      this patch tries to hard-wire selection of transform size based on
      prediction modes without using segmentation to signal the transform size.
      encoder and decoder both takes the same assumption that all macroblocks
      use 8x8 transform except when prediciton mode is B_PRED, I8X8_PRED or
      SPLITMV. Test results are as follows:
      
      http://www.corp.google.com/~yaowu/no_crawl/t8x8/cifmodebase8x8_0125.html
      http://www.corp.google.com/~yaowu/no_crawl/t8x8/hdmodebased8x8_0125log.html
      
      Interestingly, by removing the overhead or coding the segmentation, the
      results on this limited HD set have turn positive on average.
      
      Patch 3:
      this patch disabled the usage of 8x8 transform on key frames, and kept the
      logic from patch 2 for inter frames only. test results on HD set turned
      decidedly positive with 8x8 transform enabled on inter frame with 16x16
      prediction modes: (avg psnr: .81% glb psnr: .82 ssim: .55%)
      
      http://www.corp.google.com/~yaowu/no_crawl/t8x8/hdintermode8x8_0125.html
      results on cif set still negative overall
      
      Patch 4:
      continued from last patch, but now in mode decision process, the rate and
      distortion estimates are computed based on 8x8 transform results for MBs
      with modes associated with 8x8 transform. This patch also fixed a problem
      related to segment based eob coding when 8x8 transform is used. The patch
      significantly improved the results on HD clips:
      
      http://www.corp.google.com/~yaowu/no_crawl/t8x8/hd8x8RDintermode.html
      (avg psnr: 2.70% glb psnr: 2.76% ssim: 3.34%)
      results on cif also improved, though they are still negative compared to
      baseline that uses 4x4 transform only:
      http://www.corp.google.com/~yaowu/no_crawl/t8x8/cif8x8RDintermode.html
      (avg psnr: -.78% glb psnr: -.86% ssim: -.19%)
      
      Patch 5:
      This patch does 3 things:
      a. a bunch of decoder bug fixes, encodings and decodings were verified
      to have matched recon buffer on a number of encodes on cif size mobile and
      hd version of _pedestrian.
      b. the patch further improved the rate distortion calculation of MBS that
      use 8x8 transform. This provided some further gain on compression.
      c. the patch also got the experimental work SEG_LVL_EOB to work with 8x8
      transformed macroblock, test results indicates it improves the cif set
      but hurt the HD set slightly.
      
      Tests results on HD clips:
      http://www.corp.google.com/~yaowu/no_crawl/t8x8/HD_t8x8_20120201.html
      (avg psnr: 3.19% glb psnr: 3.30% ssim: 3.93%)
      
      Test results on cif clips:
      http://www.corp.google.com/~yaowu/no_crawl/t8x8/cif_t8x8_20120201.html
      (avg psnr: -.47% glb psnr: -.51% ssim: +.28%)
      
      Patch 6:
      Added a frame level flag to indicate if 8x8 transform is allowed at all.
      temporarily the decision is based on frame size, can be optimized later
      one. This get the cif results to basically unchanged, with one bit per
      frame overhead on both cif and hd clips.
      
      Patch 8:
      Rebase and Merge to head by PGW.
      Fixed some suspect 4s that look like hey should be 64s in regard
      to segmented EOB. Perhaps #defines would be bette.
      Bulit and tested without T8x8 enabled and produces unchanged
      output.
      
      Patch 9:
      Corrected misalligned code/decode of "txfm_mode" bit.
      Limited testing for correct encode and decode with
      T8x8 configured on derf clips.
      
      Change-Id: I156e1405d25f81579d579dff8ab9af53944ec49c
      f64725a0
    • Ronald S. Bultje's avatar
      Reindent some code after merging the dualpred experiment. · e3ca23a3
      Ronald S. Bultje authored
      Change-Id: Idb328dd29ebcd360e39886abe48694f90f2e1140
      e3ca23a3
    • Ronald S. Bultje's avatar
      Merge dualpred (compound prediction) experiment. · 29e4d7e8
      Ronald S. Bultje authored
      Change-Id: Ieaaa07c50eae41118596197f6a4d848135946e41
      29e4d7e8
  5. 09 Feb, 2012 - 5 commits
    • Paul Wilkins's avatar
      Removal of SEGFEATURES placeholder comments · d90f0eb4
      Paul Wilkins authored
      This commit only involves the removal of placeholder comments
      //#if CONFIG_SEGFEATURES.
      
      Change-Id: I94b350daaf998ee0cfdde5aa25b1d3b0522ab816
      d90f0eb4
    • Paul Wilkins's avatar
      Merge Extended Q experiment. · 3e9890a3
      Paul Wilkins authored
      Merge the extended Q experiment as indicated by the
      
      Change-Id: I02d9e654fff9998cc7e9e2f1f5cd838dad8fb431
      3e9890a3
    • Paul Wilkins's avatar
      Merge COMPRED · cf8af867
      Paul Wilkins authored
      Merged in most of the current common prediction changes
      that were under the #if CONFIG_COMPRED option.
      
      Change-Id: If4e6f61dbe7b86dd449f6effbe93b5eb7e893885
      cf8af867
    • Paul Wilkins's avatar
      Dual pred flag · 8266abfe
      Paul Wilkins authored
      Further changes to make experiments with the context
      used for coding the dual pred flag easier.
      
      Current best performing method tested on derf is a two
      element context based on reference frame. I also tried
      various combinations of mode and reference frame as
      shown in commented out case using up to 6 contexts.
      
      Derf +0.26 overall psnr +0.15% ssim vs original method.
      
      Change-Id: I64c21ddec0abbb27feaaeaa1da2e9f164ebaca03
      8266abfe
    • Paul Wilkins's avatar
      Changes to coding of dual_pred flag. · 59a200f1
      Paul Wilkins authored
      Further use of common prediction functions and experiments
      with alternate contexts based on mode and reference frame.
      
      For the Derf set using reference frame as basis of context
      gives +0.18% Overall Psnr and +0.08 SSIM
      
      Change-Id: Ie7eb76f329f74c9c698614f01ece31de0b6bfc9e
      59a200f1
  6. 08 Feb, 2012 - 3 commits
    • Ronald S. Bultje's avatar
      Fix dual prediction recode loop. · 915f13bd
      Ronald S. Bultje authored
      We should only change the dual prediction mode if we actually entered
      the recode branch. Else, it may potentially undo beneficial changes
      to the dual prediction mode in the first encode iteration.
      
      Change-Id: I79fc53e5fd0bb551092ed422c797619f1566f002
      915f13bd
    • Ronald S. Bultje's avatar
      Remove write-only variable "mbs_dual_count". · 3adcbe2f
      Ronald S. Bultje authored
      Change-Id: Icf7a6749ca2f8ad6a032f86c34540d1c5880cf68
      3adcbe2f
    • Ronald S. Bultje's avatar
      Fix dual prediction recode loop. · c8ec59d8
      Ronald S. Bultje authored
      Some conditions were conditional under a threshold, whereas they should
      always execute. Also, some conditions were testing an array instead of
      the values within it.
      
      Change-Id: Ia6892945cfbbe07322e6af6be42cd864bf9479c1
      c8ec59d8
  7. 06 Feb, 2012 - 5 commits
    • Paul Wilkins's avatar
      Move update of ref frame probabilities in encode loop. · e1050bd3
      Paul Wilkins authored
      The existing code updated the reference frame probabilities before
      the test to evaluate the impact of using updated probabilities
      in vp8_estimate_entropy_savings().
      
      The estimate of cost and savings is still basic and does not reflect
      the new prediction code but this would require per MB costings
      and the benefit is probably marginal, as this is really just used for
      rate estimation in the loop.
      
      Change-Id: Id6ba88ae6e11c273b3159deff70980363ccd8ea1
      e1050bd3
    • Paul Wilkins's avatar
      Merged NEWNEAR experiment · 9c9300f5
      Paul Wilkins authored
      This commit merges the NEWNEAR experiment such that it
      is effectively always on.
      
      The fact that there were changes in the threading code again
      highlights the need to strip out such features during the
      bitstream development phase as trying to maintain this code
      (especially as it is not being tested) slows the development cycle.
      
      Change-Id: I8b34950a1333231ced9928aa11cd6d6459984b65
      9c9300f5
    • Paul Wilkins's avatar
      Coding the hybrid dual prediction signal. · 82b865da
      Paul Wilkins authored
      Initial modifications to make limited use of common prediction
      functions.
      
      The only functional change thus far is that updates to the probabilities are
      no longer "damped". This was a testing convenience but in fact seems to
      help by a little over 0.1% over the derf set.
      
      Change-Id: I8b82907d9d6b6a4a075728b60b31ce93392a5f2e
      82b865da
    • Paul Wilkins's avatar
      Moved prob_dualpred to common. · c98e9d28
      Paul Wilkins authored
      Moved the prob_dualpred[] sturcture to common.
      Created common prediction entry for Dual flag.
      
      Change-Id: I9ac3d128bae6114f09e5c18216d4b95cf36453d5
      c98e9d28
    • Paul Wilkins's avatar
      Modified prediction behavior for reference frame. · 58ec6fe8
      Paul Wilkins authored
      Trial of a modified prediction function that ranks each possible
      reference frame based on a combination of local usage and
      frame level probability. The code is a bit cleaner and simpler.
      
      In direct comparison with old unpredicted method with segment level
      coding turned off for mode,ref & EOB the prediction gives a gain on derf
      of around 0.4%. There is some further gain from bug fixes over earlier code.
      
      With segment coding on the prediction method is slightly -ve on some very
      easy clips (at low rates) due to slightly higher overheads, but better on harder
      clips. Overall neutral on derf in direct comparison on latest code base, but
      compared to earlier code without bug fixes about +0.7% overall psnr
      +0.3% SSIM.
      
      Change-Id: I5b8474658b208134d352d24f6517f25795490789
      58ec6fe8
  8. 03 Feb, 2012 - 1 commit
    • Paul Wilkins's avatar
      Reference frame prediction: · f0459549
      Paul Wilkins authored
      Extended prediction and coding of reference frame where
      a subset of options are flagged as available at the segment level.
      
      Updated copyright notices.
      
      Switch to SAD in mbgraph code as SATD problematic for the
      foreground and background separation as it can ignore large DC shifts.
      
      Change-Id: I661dbbb2f94f3ec0f96bb928c1655e5e415a7de1
      f0459549
  9. 02 Feb, 2012 - 2 commits
    • Adrian Grange's avatar
      Added encoding in Superblock Order · 5d0b5a17
      Adrian Grange authored
      As a precursor to encoding 32x32 blocks this cl adds the
      ability to encode the frame superblock (=32x32 block) at
      a time. Within a SB the 4 indiviual MBs are encoded in
      raster-order (NW,NE,SW,SE).
      
      This functionality is added as an experiment which can be
      enabled by ispecifying --enable-superblocks in the
      command line specified to configure (CONFIG_SUPERBLOCKS
      macro in the code).
      
      To make this work I had to disable the two intra
      prediction modes that use data from the top-right of the
      MB.
      
      On the tests that I have run the results produce
      almost exactly the same PSNRs & SSIMs with a very
      slightly higher average data rate (and slightly higher
      data rate than just disabling the two intra modes in
      the original code).
      
      NOTE: This will also break the multi-threaded code.
      
      This replaces the abandoned change:
      Iebebe0d1a50ce8c15c79862c537b765a2f67e162
      
      Change-Id: I1bc1a00f236abc1a373c7210d756e25f970fcad8
      5d0b5a17
    • Paul Wilkins's avatar
      Comment out segref segmentation filter changes. · 92ffb17c
      Paul Wilkins authored
      Commented out changes from earlier checking:
      
      "Change Iab7f1eff: vpnext use segref segmentation filter"
      
      Which in its current state breaks the decoder.
      
      Change-Id: I9185098aeda8ce65310f338c4c9375f4a39005d3
      92ffb17c
  10. 01 Feb, 2012 - 3 commits
  11. 31 Jan, 2012 - 8 commits