1. 15 Jun, 2012 - 1 commit
    • Deb Mukherjee's avatar
      Adaptive entropy coding of coefficients, modes, mv. · 1fe85a35
      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
      1fe85a35
  2. 12 Jun, 2012 - 3 commits
    • Yaowu Xu's avatar
      changed to use a fixed number for update probabity · 074a38b1
      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
      074a38b1
    • Yaowu Xu's avatar
      Added the ability to accumulate coef stats across encodings · bb25083d
      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
      bb25083d
    • Paul Wilkins's avatar
      Merge of further two pass rc clean up and adjustments. · 7eb66d82
      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
      7eb66d82
  3. 08 Jun, 2012 - 1 commit
    • Paul Wilkins's avatar
      Key frame and GF sizing changes. · 0cb4985b
      Paul Wilkins authored
      Changes to the equations for kf and gf minQ and to
      the boost calculations for kg and gf
      
      Change-Id: I312031c910e6a575334f49075c32f49a8dfff239
      0cb4985b
  4. 31 May, 2012 - 1 commit
    • Adrian Grange's avatar
      Fixed bug where invalid pointer is dereferenced · 04fa2ecd
      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
      04fa2ecd
  5. 30 May, 2012 - 1 commit
    • Paul Wilkins's avatar
      Rate control fix. · b8c36905
      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
      b8c36905
  6. 29 May, 2012 - 1 commit
    • Paul Wilkins's avatar
      Remove "est_max_qcorrection_factor" · f66747fe
      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
      f66747fe
  7. 26 May, 2012 - 1 commit
    • Yaowu Xu's avatar
      fixed one more compiling issue with VC · 2722cfb4
      Yaowu Xu authored
      One more compiling issue, only happened in Visual C under a specific
      combination of experiments.
      
      Change-Id: Iba0775dc0ea7342b556348a9cdf60a05a59e0241
      2722cfb4
  8. 25 May, 2012 - 1 commit
    • Yaowu Xu's avatar
      fixed a number of compiling issues · ea0e4f17
      Yaowu Xu authored
      the commit fixed a number of compiling issues when some epxeriments
      are turned on at the same time.
      
      Change-Id: Idb15b215e2d2a7d25f2707f99ef55a34e7301ce7
      ea0e4f17
  9. 23 May, 2012 - 1 commit
    • Yaowu Xu's avatar
      changed the way that default probs for 8x8 is set. · e9818bb6
      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
      e9818bb6
  10. 17 May, 2012 - 1 commit
    • Paul Wilkins's avatar
      Experimental change to two pass prediction decay calculation. · f63894f6
      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
      f63894f6
  11. 15 May, 2012 - 6 commits
    • Ronald S. Bultje's avatar
      Rewrite reference frame costing in the RD loop. · 0b8a95a0
      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
      0b8a95a0
    • Paul Wilkins's avatar
      Further firstpass.c changes. · acf3c729
      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
      acf3c729
    • Deb Mukherjee's avatar
      Adds new Directional Intra prediction modes. · c5ddb7f0
      Deb Mukherjee authored
      Adds 6 directional intra predictiom modes for 16x16 and 8x8 blocks.
      
      Change-Id: I25eccc0836f28d8d74922e4e9231568a648b47d1
      c5ddb7f0
    • Yaowu Xu's avatar
      Changed to use integer 8x8 dct · b22cc559
      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
      b22cc559
    • Paul Wilkins's avatar
      Move / re-factor some of boost calculation code. · ae989ae8
      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
      ae989ae8
    • Paul Wilkins's avatar
      Firstpass.c refactoring · 0529320a
      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
      0529320a
  12. 14 May, 2012 - 2 commits
    • Paul Wilkins's avatar
      Two pass refactoring continued. · e237fd7c
      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
      e237fd7c
    • Paul Wilkins's avatar
      Two pass rc refactoring. · 59a5c7d5
      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
      59a5c7d5
  13. 12 May, 2012 - 1 commit
    • Ronald S. Bultje's avatar
      Don't use compound prediction for golden frames based on alt-ref frames. · 959b296a
      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
      959b296a
  14. 11 May, 2012 - 1 commit
    • Paul Wilkins's avatar
      First pass overhaul preparatory change. · 35358320
      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
      35358320
  15. 10 May, 2012 - 1 commit
    • Yaowu Xu's avatar
      Reversible WHT pair · 7968d29f
      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
      7968d29f
  16. 09 May, 2012 - 1 commit
  17. 08 May, 2012 - 1 commit
    • Yaowu Xu's avatar
      a number of fixes to entropy stats collection · 54cf1d9a
      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
      54cf1d9a
  18. 04 May, 2012 - 1 commit
  19. 30 Apr, 2012 - 3 commits
  20. 27 Apr, 2012 - 1 commit
    • Adrian Grange's avatar
      Removed MV costing from ARNR filtering · 393440db
      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
      393440db
  21. 26 Apr, 2012 - 1 commit
    • Deb Mukherjee's avatar
      Adds search option for best interpolation filter. · acdda50a
      Deb Mukherjee authored
      Adds a speed feature to conduct a brute force search among a set of
      available interpolation filters for the best one in an RD sense.
      
      There is a gain of 0.4% on derf, 1.0% on Std-HD.
      
      Patch 2: A macro added to determine if the encoder state is reset
      for each new filter tried.
      
      Patch 3: rebase, also fixes a bug (decodframe.c) introduced by a
      couple of missing function pointer assignements.
      
      Patch 4: rebase.
      
      Change-Id: Ic9ccca9d8c35c6af557449ae867391a2f996cc29
      acdda50a
  22. 25 Apr, 2012 - 2 commits
    • Yaowu Xu's avatar
      Merge QIMODE experiment · a16608ab
      Yaowu Xu authored
      This commit merge the QI mode experiment. As the experiment affects
      the encoding of intra coding modes on key frame only, the overall
      effect of the experiment on encoding tests is insignificant.
      
      Change-Id: I9e4e3933adface88867ad429cee3986e529c511d
      a16608ab
    • Yaowu Xu's avatar
      Merge UVINTRA experiment · c1814d26
      Yaowu Xu authored
      The commit merges the UVINTRA experiment and removed the related
      macros. The overall effect of the experiment is a small gain (.1%
      on derf)
      
      Change-Id: Ia34b3312fb9b5b34c9ba111bf0fa78c6f78ac80b
      c1814d26
  23. 24 Apr, 2012 - 1 commit
    • Deb Mukherjee's avatar
      Differential encoding of probability updates · c6f1bf43
      Deb Mukherjee authored
      Adds differential encoding of prob updates using a subexponential
      code centered around the previous probability value.
      Also searches for the most cost-effective update, and breaks
      up the coefficient updates into smaller groups.
      
      Small gain on Derf: 0.2%
      
      Change-Id: Ie0071e3dc113e3d0d7ab95b6442bb07a89970030
      c6f1bf43
  24. 20 Apr, 2012 - 3 commits
    • Ronald S. Bultje's avatar
      Hide some code behind CONFIG_COMP_INTRA_PRED. · 2210767c
      Ronald S. Bultje authored
      Change-Id: I7c0597dede20cc71145c053f76bd99aaf759d144
      2210767c
    • Yaowu Xu's avatar
      change to allow 8x8 transform always · ade43d91
      Yaowu Xu authored
      This commit changed to enable the usage 8x8 transform for all frame
      type, all resolution and all quantizer range. This has an overall
      benefit .2% to .3% in term of compression, but more importantly,
      the difficult clips benefits much more, up to 2% to 3% on clips
      like football, harbour and so on.
      
      We observed some weird humps on very high end on a couple of youtube
      clips, but have determined the underly cause was the aggressive zbin
      having an effect of lowering rate with lower quality, which have
      an impact on slide show clips around 60DB.
      
      The commit does not change the association between prediction mode
      and transform size.
      
      Change-Id: I33043bdce6207528ae00b4a4b26d8ff63cfea1f4
      ade43d91
    • Yaowu Xu's avatar
      added reset of rate estimates for each mode · ecc28cda
      Yaowu Xu authored
      This is to prevent the evaluation of a mode from using values left
      over from a mode evaluated prior in the loop.
      
      Change-Id: Ife2c6ceb76d2f7365fd262515d3ae48229033c2d
      ecc28cda
  25. 19 Apr, 2012 - 1 commit
  26. 18 Apr, 2012 - 2 commits