1. 30 Jul, 2012 1 commit
    • Deb Mukherjee's avatar
      Adds support for switchable interpolation filters. · 52597441
      Deb Mukherjee authored
      Allows for swtiching/setting interpolation filters at the MB
      level. A frame level flag indicates whether to use a specifc
      filter for the entire frame or to signal the interpolation
      filter for each MB. When switchable filters are used, the
      encoder chooses between 8-tap and 8-tap sharp filters. The
      code currently has options to explore other variations as well,
      which will be cleaned up subsequently.
      
      One issue with the framework is that encoding is slow. I
      tried to do some tricks to speed things up but it is still slow.
      Decoding speed should not be affected since the number of
      filter taps remain unchanged.
      
      With the current version, we are up 0.5% on derf on average but
      some videos city/mobile improve by close to 4 and 2% respectively.
      If we did a full-search by turning the SEARCH_BEST_FILTER flag
      on, the results are somewhat better.
      
      The framework can be combined with filtered prediction, and I
      seek feedback regarding that.
      
      Rebased.
      
      Change-Id: I8f632cb2c111e76284140a2bd480945d6d42b77a
      52597441
  2. 27 Jul, 2012 1 commit
    • Deb Mukherjee's avatar
      Merges several experiments · 9984a155
      Deb Mukherjee authored
      The following five experiments are merged:
      
      newentropy
      newupdate
      adaptive_entropy (also includes a couple of parameter changes
                        that improves results a little
                        in common/entropymode.c and encoder/modecosts.c
                        that were not merged from the internal branch)
      newintramodes
      expanded_coef_context
      
      Change-Id: I8a142a831786ee9dc936f22be1d42a8bced7d270
      9984a155
  3. 24 Jul, 2012 2 commits
    • Adrian Grange's avatar
      Use macro for filter extension length · b278a935
      Adrian Grange authored
      Replaced local definitions of the extension required
      by the filters with the globally defined value.
      
      Change-Id: If9e590a1f2e5b0bdc2d3e3c3f04aacbd3b09bfee
      b278a935
    • Jim Bankoski's avatar
      remove extra end of line · e4c52b5e
      Jim Bankoski authored
      This commit fixes up shared lib builds on linux.
      
      Change-Id: Ib109dc5a226dc5d7874d2e5b333466cbfd4f4661
      e4c52b5e
  4. 23 Jul, 2012 2 commits
  5. 19 Jul, 2012 2 commits
    • Yaowu Xu's avatar
      fixed a compiling issue · 6f685683
      Yaowu Xu authored
      Change-Id: I9ccbea76eaeb81ce7b833dd92216734725796e84
      6f685683
    • Jingning Han's avatar
      Adds hybrid transform · 9824230f
      Jingning Han authored
      Adds ADST/DCT hybrid transform coding for Intra4x4 mode.
      The ADST is applied to directions in which the boundary
      pixels are used for prediction, while DCT applied to
      directions without corresponding boundary prediction.
      
      Adds enum TX_TYPE in b_mode_infor to indicate the transform
      type used.
      
      Make coding style consistent with google style.
      Fixed the commented issues.
      
      Experimental results in terms of bit-rate reduction:
      derf:   0.731%
      yt:     0.982%
      std-hd: 0.459%
      hd:     0.725%
      
      Will be looking at 8x8 transforms next.
      
      Change-Id: I46dbd7b80dbb3e8856e9c34fbc58cb3764a12fcf
      9824230f
  6. 18 Jul, 2012 3 commits
    • Ronald S. Bultje's avatar
      Don't auto-default to comp-pred unless content is static. · 84d22988
      Ronald S. Bultje authored
      Although it can be useful, in some cases it causes artifacts in motion-
      based content.
      
      Change-Id: I27bb80901020c40636e2018a8217759175a23f5b
      84d22988
    • Yaowu Xu's avatar
      removed floating point version 8x8 fdct · d632bf8c
      Yaowu Xu authored
      the integer version has very good precision, the float version is no
      longer useful. this commit also removes the experiment option from
      configure script.
      
      Change-Id: Ibb92e63c9f5083357cdf89c559d584a7deb3353f
      d632bf8c
    • Yaowu Xu's avatar
      cleanup experiments in configure · 11e23e67
      Yaowu Xu authored
      this commit removes a number of experiment options from configure
      script. the associated experiments are already fully merged, the
      options in configure script have no effect at all.
      
      Change-Id: I8054ccaee0a04610162ed76ac9e59c4538217113
      11e23e67
  7. 17 Jul, 2012 2 commits
  8. 16 Jul, 2012 5 commits
  9. 09 Jul, 2012 1 commit
    • Yaowu Xu's avatar
      change to enable encoder to clamp UV motion vector · a81baae7
      Yaowu Xu authored
      This is to avoid a rare encoder/decoder mismatch for MB using SPLITMV
      mode. In decoder, the UV mv can be determined to need clamp, but the
      flag is never set in encoder motion vector selection process, and the
      clamp is not done in encoding in encoder.
      
      Change-Id: I60520d3f790354c7855dadf03f0978ea9b77e2c0
      a81baae7
  10. 29 Jun, 2012 3 commits
    • Christian Duvivier's avatar
      Get rid of some cast. · 5a5ced3e
      Christian Duvivier authored
      Change-Id: Iff5ccf2400bcb7b78c7b70f289ea65c982efddd5
      5a5ced3e
    • Christian Duvivier's avatar
      Fix warnings. · c5b70370
      Christian Duvivier authored
      Change-Id: I6dd27a0ea661e6f10a55d7841021b66ae4fc72ae
      c5b70370
    • Hui Su's avatar
      Add lossless compression mode. · e44ee38a
      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
      e44ee38a
  11. 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
  12. 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
  13. 25 Jun, 2012 1 commit
  14. 19 Jun, 2012 1 commit
  15. 18 Jun, 2012 2 commits
  16. 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
  17. 12 Jun, 2012 4 commits
    • Daniel Kang's avatar
      Adds x86inc.asm and update idct/dequant mmx · 7a000715
      Daniel Kang authored
      Updates idct/dequant mmx assembly to work with vpnext instead of vp8.
      
      Also adds x86inc.asm
      
      Change-Id: I6e147d5e89177ae449271e97e50d082eb11b078e
      7a000715
    • 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
  18. 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
  19. 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
  20. 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
  21. 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
  22. 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
  23. 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
  24. 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