1. 17 Jul, 2012 1 commit
  2. 16 Jul, 2012 1 commit
  3. 29 Jun, 2012 2 commits
  4. 27 Jun, 2012 1 commit
    • Adrian Grange's avatar
      Added Prediction Filter to Mode Selection · bbc926dc
      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
      bbc926dc
  5. 26 Jun, 2012 1 commit
    • Deb Mukherjee's avatar
      Continued adaptive entropy coding · f3dff402
      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
      f3dff402
  6. 19 Jun, 2012 1 commit
  7. 15 May, 2012 2 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
    • 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
  8. 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
  9. 04 May, 2012 1 commit
  10. 30 Apr, 2012 1 commit
  11. 25 Apr, 2012 1 commit
    • 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
  12. 20 Apr, 2012 2 commits
  13. 18 Apr, 2012 1 commit
  14. 13 Apr, 2012 1 commit
    • Adrian Grange's avatar
      Added save coding context & modified MV bounds · fa589adc
      Adrian Grange authored
      Added code to save the coding context in vp8_rd_pick_inter_mode
      when the coding mode is forced to ARF(0,0).
      
      Also, modified the MV bounds computation to comply with the
      change in MV border from 32 to 64 pixels.
      
      Change-Id: I96963a6f5f4d04ce84c807ae11e0635177c3ad6c
      fa589adc
  15. 12 Apr, 2012 2 commits
    • Yaowu Xu's avatar
      a set of minor fixes · 636b2f38
      Yaowu Xu authored
      This commit tries to address an issue related to the oddity shown on
      HD _mobcal clip, where some rather ugly blocks shown in the second
      frame at low-mid bit rates if the third frame is not made a key frame
      by he encoder. The fixes include: 1)  made calls to sad_16x16 to be
      consistent with function prototype. 2) remove the error bias to intra
      and golden in mbgraph search. 3) changed the error accumulation on
      inter_segment encoding to avoid potential out-of-range. 1) has no
      effect on encoding results.
      
      Encoding test show that the overall effect of the commit helps about
      .2%(HD) to .3%(cif)
      
      Change-Id: I930975a2d0c06252f01c39e0a02351529774e30b
      636b2f38
    • Yaowu Xu's avatar
      changed function prototype for macro_block_yrd · d56acae6
      Yaowu Xu authored
      This commit has made macro_block_yrd_8x8 and macro_block_yrd_8x8 to
      take same parameters. It also removed a few unnecessary shifts that
      has the potential to create out-of-range distortion values.
      
      Change-Id: I4ec5afb307c3685c2a67a07c2850f0927d214455
      d56acae6
  16. 11 Apr, 2012 3 commits
    • Paul Wilkins's avatar
      Changes to costing of skip. · f2ec452f
      Paul Wilkins authored
      Update the costing of skip in the recode loop and rd code.
      
      Change-Id: I2e5ebbd7ddf201212b32441321e12626cd0423e9
      f2ec452f
    • Paul Wilkins's avatar
      T8x8 zbin and rate control changes. · a3392d57
      Paul Wilkins authored
      Some adjustments to zbin for t8x8.
      Changes to rules for sizing forced key frames.
      Some extra stats output in tmp.stt.
      
      Approximate  gain on YT-hd set 0.5%
      
      There are still issues in sizing key frames and gf/arf frames
      when the image is largely static. These in part relate to
      problems with cost estimates in the recode loop.
      
      Change-Id: I6f0159dc8a8faeab4115a19c668d442491619a68
      a3392d57
    • Adrian Grange's avatar
      Superblock encoding order · 9daf3154
      Adrian Grange authored
      This is the first patch to add superblock (32x32) coding
      order capabilities. It does not yet do any mode selection
      at the SB level, that will follow in a further patch.
      
      This patch encodes rows of SBs rather than
      MBs, each SB contains 2x2 MBs.
      
      Two intra prediction modes have been disabled since they
      require reconstructed data for the above-right MB which
      may not have been encoded yet (e.g. for the bottom right
      MB in each SB).
      
      Results on the one test clip I have tried (720p GIPS clip)
      suggest that it is somewhere around 0.2dB worse than the
      baseline version, so there may be bugs.
      
      It has been tested with no experiments enabled and with
      the following 3 experiments enabled:
        --enable-enhanced_interp
        --enable-high_precision_mv
        --enable-sixteenth_subpel_uv
      in each case the decode buffer matches the recon buffer
      (using "cmp" to compare the dumped/decoded frames).
      Note: Testing these experiments individually created
      errors.
      
      Some problems were found with other experiments but it
      is unclear what state these experiments are in:
        --enable-comp_intra_pred
        --enable-newentropy
        --enable-uvintra
      
      This code has not been extensively tested yet, so there
      is every likelihood that further bugs remain. I also
      intend to do some code cleanup & refactoring in tandem
      with the next patch that adds the 32x32 modes.
      
      Change-Id: I1eba7f740a70b3510df58db53464535ef881b4d9
      9daf3154
  17. 21 Mar, 2012 1 commit
  18. 15 Mar, 2012 1 commit
    • Yaowu Xu's avatar
      WebM Experimental Codec Branch Snapshot · 6035da54
      Yaowu Xu authored
      This is a code snapshot of experimental work currently ongoing for a
      next-generation codec.
      
      The codebase has been cut down considerably from the libvpx baseline.
      For example, we are currently only supporting VBR 2-pass rate control
      and have removed most of the code relating to coding speed, threading,
      error resilience, partitions and various other features.  This is in
      part to make the codebase easier to work on and experiment with, but
      also because we want to have an open discussion about how the bitstream
      will be structured and partitioned and not have that conversation
      constrained by past work.
      
      Our basic working pattern has been to initially encapsulate experiments
      using configure options linked to #IF CONFIG_XXX statements in the
      code. Once experiments have matured and we are reasonably happy that
      they give benefit and can be merged without breaking other experiments,
      we remove the conditional compile statements and merge them in.
      
      Current changes include:
      * Temporal coding experiment for segments (though still only 4 max, it
        will likely be increased).
      * Segment feature experiment - to allow various bits of information to
        be coded at the segment level. Features tested so far include mode
        and reference frame information, limiting end of block offset and
        transform size, alongside Q and loop filter parameters, but this set
        is very fluid.
      * Support for 8x8 transform - 8x8 dct with 2nd order 2x2 haar is used
        in MBs using 16x16 prediction modes within inter frames.
      * Compound prediction (combination of signals from existing predictors
        to create a new predictor).
      * 8 tap interpolation filters and 1/8th pel motion vectors.
      * Loop filter modifications.
      * Various entropy modifications and changes to how entropy contexts and
        updates are handled.
      * Extended quantizer range matched to transform precision improvements.
      
      There are also ongoing further experiments that we hope to merge in the
      near future: For example, coding of motion and other aspects of the
      prediction signal to better support larger image formats, use of larger
      block sizes (e.g. 32x32 and up) and lossless non-transform based coding
      options (especially for key frames). It is our hope that we will be
      able to make regular updates and we will warmly welcome community
      contributions.
      
      Please be warned that, at this stage, the codebase is currently slower
      than VP8 stable branch as most new code has not been optimized, and
      even the 'C' has been deliberately written to be simple and obvious,
      not fast.
      
      The following graphs have the initial test results, numbers in the
      tables measure the compression improvement in terms of percentage. The
      build has  the following optional experiments configured:
      --enable-experimental --enable-enhanced_interp --enable-uvintra
      --enable-high_precision_mv --enable-sixteenth_subpel_uv
      
      CIF Size clips:
      http://getwebm.org/tmp/cif/
      HD size clips:
      http://getwebm.org/tmp/hd/
      (stable_20120309 represents encoding results of WebM master branch
      build as of commit#7a159071)
      
      They were encoded using the following encode parameters:
      --good --cpu-used=0 -t 0 --lag-in-frames=25 --min-q=0 --max-q=63
      --end-usage=0 --auto-alt-ref=1 -p 2 --pass=2 --kf-max-dist=9999
      --kf-min-dist=0 --drop-frame=0 --static-thresh=0 --bias-pct=50
      --minsection-pct=0 --maxsection-pct=800 --sharpness=0
      --arnr-maxframes=7 --arnr-strength=3(for HD,6 for CIF)
      --arnr-type=3
      
      Change-Id: I5c62ed09cfff5815a2bb34e7820d6a810c23183c
      6035da54
  19. 07 Mar, 2012 1 commit
    • Paul Wilkins's avatar
      Snapshot candidate · 68033ca4
      Paul Wilkins authored
      Pulled out super block code for the snapshot as this
      is not quite ready and will need an extensive re-merge.
      
      Change-Id: I436369b511257447a7b0ea064016cb63f5011849
      68033ca4
  20. 06 Mar, 2012 1 commit
  21. 05 Mar, 2012 4 commits
    • Ronald S. Bultje's avatar
      Use per-MB compound intra prediction. · c3f5b293
      Ronald S. Bultje authored
      This gives a modest gain on derf overall, although at low bitrates the
      cost is still too high, so this can be improved further.
      
      Patch 2. Re-base and fix 80 column issues
      
      Change-Id: Ida2f9fa3fe75370669f6a27b37108dc602231c63
      c3f5b293
    • Yaowu Xu's avatar
      Changed how UV r/d estimates are done for Intra Modes · 6898e8b7
      Yaowu Xu authored
      The commit changed to compute UV intra RD estimates for 4x4 and 8x8
      separately to be used in mode decision for MB modes associated with
      the appropriate transform size respectively. Now finally after many
      other changes related 8x8 quantizer zbin boost and zbin_mode_boost,
      this change overall helps the HD(with 8x8) by around ~.13%.
      (avg .13%  glb .13% ssim .17%)
      
      The commit also has a few changes for eliminating compiler warnings.
      
      Change-Id: Ibab35dad44820c87e6b44799c66f8d519cc37344
      6898e8b7
    • Yaowu Xu's avatar
      Fixed zbin_mode_boost initialization · eaa955ba
      Yaowu Xu authored
      The commit added the correct Zbin_mode_boost initialization based on
      Intra Mode before using rate distortion to pick UV intra mode.
      
      Change-Id: I8e57878ff356a06672f6fa2431be860bf9b9a5c7
      eaa955ba
    • Yaowu Xu's avatar
      refactored code that checks if a macroblock is skippable · 848bccab
      Yaowu Xu authored
      Change-Id: I4ea6d819bbbde312792c4f813ab63ea50cf0cd1d
      848bccab
  22. 01 Mar, 2012 2 commits
  23. 29 Feb, 2012 2 commits
  24. 28 Feb, 2012 1 commit
    • Deb Mukherjee's avatar
      Initial refactoring of high_precision mv code. · 3e1cad9c
      Deb Mukherjee authored
      This is the first patch for refactoring of the code related to
      high-precision mv, so that 1/4 and 1/8 pel motion vectors can
      co-exist in the same bit-stream by use of a frame level flag.
      The current patch works fine for only use of 1/4th and
      only use of 1/8th pel mv, but there are some issues with the
      mode switching in between. Subsequent patches on this change Id
      will fix the remaining issues.
      
      Patch 2: Adds fixes to make sure that multiple mv precisions can
      co-exist in the bit-stream. Frame level switching has been tested
      to work correctly.
      
      Patch 3: Fixes lines exceeding 80 char
      
      Patch 4:
      http://www.corp.google.com/~debargha/vp8_results/enhinterp.html
      
      Results on derf after ssse3 bugfix, compared to everything
      enabled but the 8-tap, 1/8-subpel and 1/16-subpel uv. Overall the
      gains are about 3% now. Hopefully there are no more bugs lingering.
      Apparently the sse3 bug affected the quartel subpel results more than
      the eighth pel ones (which is understandabale because one bad predictor
      due to the bug, matters less if there are a lot more subpel options
      available as in the 1/8 subpel case).
      The results in the 4th column correspond to the current settings.
      The first two columns correspond to two settings of adaptive switching
      of the 1/4 or 1/8 subpel mode based on initial Q estimate. These
      do not work as good as just using 1/8 all the time yet.
      
      Change-Id: I3ef392ad338329f4d68a85257a49f2b14f3af472
      3e1cad9c
  25. 24 Feb, 2012 1 commit
  26. 23 Feb, 2012 1 commit
    • Deb Mukherjee's avatar
      Supporting high precision 1/8-pel motion vectors · 18e90d74
      Deb Mukherjee authored
      This is the initial patch for supporting 1/8th pel
      motion. Currently if we configure with enable-high-precision-mv,
      all motion vectors would default to 1/8 pel. Encode and
      decode syncs fine with the current code. In the next phase
      the code will be refactored so that we can choose the 1/8
      pel mode adaptively at a frame/segment/mb level.
      
      Derf results:
      http://www.corp.google.com/~debargha/vp8_results/enhinterp_hpmv.html
      (about 0.83% better than 8-tap interpoaltion)
      
      Patch 3: Rebased. Also adding 1/16th pel interpolation for U and V
      
      Patch 4: HD results.
      http://www.corp.google.com/~debargha/vp8_results/enhinterp_hd_hpmv.html
      Seems impressive (unless I am doing something wrong).
      
      Patch 5: Added mmx/sse for bilateral filtering, as well as enforced
      use of c-versions of subpel filters with 8-taps and 1/16th pel;
      Also redesigned the 8-tap filters to reduce the cut-off in order to
      introduce a denoising effect. There is a new configure option
      sixteenth-subpel-uv which will use 1/16 th pel interpolation for
      uv, if the motion vectors have 1/8 pel accuracy.
      
      With the fixes the results are promising on the derf set. The enhanced
      interpolation option with 8-taps alone gives 3% improvement over thei
      derf set:
      http://www.corp.google.com/~debargha/vp8_results/enhinterpn.html
      
      Results on high precision mv and on the hd set are to follow.
      
      Patch 6: Adding a missing condition for CONFIG_SIXTEENTH_SUBPEL_UV in
      vp8/common/x86/x86_systemdependent.c
      
      Patch 7: Cleaning up various debug messages.
      
      Patch 8: Merge conflict
      
      Change-Id: I5b1d844457aefd7414a9e4e0e06c6ed38fd8cc04
      18e90d74
  27. 22 Feb, 2012 1 commit
    • Yaowu Xu's avatar
      Fixed skippable evaluation in mode decision · 2b4cd4cc
      Yaowu Xu authored
      Yunqing fixed an oddity in UVIntra skippable evaluation for stable
      branch, which brought up the fact that the evaluation is broken.
      The issue was that for MBs with 2nd order block, the eob for 1st
      order blocks is set at 1. The previous evaluation did not take that
      into account. This commit intend to fix the problem. The commit also
      absorbed Yunqing's fix for UVIntra skippable evalution.
      
      Test on hd showed some good gains in combination with LPF bias fix:
      http://www.corp.google.com/~yaowu/no_crawl/LPFBias_FixSkip.html
      (avg psnr: .34%, glb psnr: .32%, ssim: .22%)
      
      Change-Id: I36af11c8ef7f643e8ff46da7bf3a167b437039d4
      2b4cd4cc
  28. 16 Feb, 2012 2 commits
    • Yaowu Xu's avatar
      Reworked context conversion between 8x8 and 4x4 · b92a96d8
      Yaowu Xu authored
      The commit rationized and simplified the entropy context conversion
      betwen MB using 8x8 transform and MB using 4x4 transform. The old version
      had a number of weirdness in how 4x4 transform MB's context is used for
      8x8 blocks other than the first 8x8 within a MB.
      
      Test showed the change has a gain ~.1% for avg psnr, glb psnr and ssim on
      the limited HD set.
      
      Change-Id: I774536c416baa6845aa741f956d8a69fa40e5d47
      b92a96d8
    • Yaowu Xu's avatar
      revised the rate distortion computation for UV · f90983e1
      Yaowu Xu authored
      this commit changed the UV r/d calculation in the mode decision process to
      properly account for the rate of 8x8 transform coefficients.
      
      Change-Id: I485f8f35f2b61db0b6539beb32e83481b1cf083b
      f90983e1