1. 17 May, 2016 1 commit
    • James Zern's avatar
      vp10/rdopt,rd_pick_intra4x4block: port tsan fix from vp9 · 8eba4ac4
      James Zern authored
      minus the non-existent nonrd portion. original change:
      
      commit d642294b
      Author: Jingning Han <jingning@google.com>
      Date:   Thu Feb 11 12:36:49 2016 -0800
      
          Fix tsan error in VP9 sub8x8 intra mode search
      
          This commit fixes issue 1141. The issue was triggered in multi-tile
          encoding. The change properly saves and restores the block context
          information in the real-time mode selection process. It removes
          several redundant memcpy operations in sub8x8 intra block mode
          search.
      
          Change-Id: I35c9ad197f4bd500ec39b5fc833f052f19eee010
      
      Change-Id: Idfa38c54c9e645479f6870d46f71fb1e91c071da
      8eba4ac4
  2. 16 May, 2016 3 commits
    • Jingning Han's avatar
      Unify the per directional filter type system for compound modes · 4677e1a7
      Jingning Han authored
      For the current stage, we assume a single prediction filter type
      per direction in the settings of compound inter prediction modes.
      
      Change-Id: I12a1afdd364b93fcee870bd11ad01fc40ab48cff
      4677e1a7
    • Jingning Han's avatar
      Enable per motion component filter type selection · d567e14e
      Jingning Han authored
      Change-Id: I73823fc94f296d225dece7156de71b30bae3fcb7
      d567e14e
    • Debargha Mukherjee's avatar
      Various wedge enhancements · fb8ea173
      Debargha Mukherjee authored
      Increases number of wedges for smaller block and removes
      wedge coding mode for blocks larger than 32x32.
      
      Also adds various other enhancements for subsequent experimentation,
      including adding provision for multiple smoothing functions
      (though one is used currently), adds a speed feature that decides
      the sign for interinter wedges using a fast mechanism, and refactors
      wedge representations.
      
      lowres: -2.651% BDRATE
      
      Most of the gain is due to increase in codebook size for 8x8 - 16x16.
      
      Change-Id: I50669f558c8d0d45e5a6f70aca4385a185b58b5b
      fb8ea173
  3. 11 May, 2016 2 commits
    • Geza Lore's avatar
      Cost wedge sign/index properly in rdopt. · c1b73901
      Geza Lore authored
      Lowres improves by about 0.1%
      
      lowres: -2.164 BDRATE
      
      Change-Id: I393bbb92700bfbb8763ace424f4edc2d672a74b4
      c1b73901
    • Yue Chen's avatar
      Add single motion search for OBMC predictor · 370f203a
      Yue Chen authored
      Weighted single motion search is implemented for obmc predictor.
      When NEWMV mode is used, to determine the MV for the current block,
      we run weighted motion search to compare the weighted prediction
      with (source - weighted prediction using neighbors' MVs), in which
      the distortion is the actual prediction error of obmc prediction.
      
      Coding gain: 0.404/0.425/0.366 for lowres/midres/hdres
      Speed impact: +14% encoding time
                    (obmc w/o mv search 13%-> obmc w/ mv search 27%)
      
      Change-Id: Id7ad3fc6ba295b23d9c53c8a16a4ac1677ad835c
      370f203a
  4. 10 May, 2016 2 commits
    • Debargha Mukherjee's avatar
      Wedge rd improvements · 447032eb
      Debargha Mukherjee authored
      Improves speed by about 10-15% by combining y-only rd with
      modeling function in a better way.
      Also, coding efficiency improves by about 0.1%
      
      lowres: -1.805% BDRATE with ext-inter
      
      Change-Id: I6ef1f8942ec6806252f3fcf749ae4f30dffe42b1
      447032eb
    • Geza Lore's avatar
      Break tile row dependencies. · 9ab9438f
      Geza Lore authored
      When not using ext-tile, there were still dependencies between tile
      rows due to various tools (eg intra predictors) relying on the above
      row or above mode info, which can be in the above tile. This is now
      broken (the same way as it was when ext-tile is enabled) by fixing
      the appropriate predicates.
      
      Change-Id: I107dd0d8481775a792f14e05cfbbd761f16cdc1e
      9ab9438f
  5. 09 May, 2016 1 commit
    • Sarah Parker's avatar
      Edit ext-tx so it isn't doing redundant prunes · f546383b
      Sarah Parker authored
      The original pruning function was not taking into account
      that certain tx sizes/block sizes use a reduced tx set.
      
      Prune 1: -0.3% performance drop, 20% speedup on foreman video
      Prune 2: -0.48% perfomance drop, 30% speedup on foreman video
      
      Change-Id: I557e919d97a89f787b47b3c8579a080db57f91d0
      f546383b
  6. 07 May, 2016 1 commit
  7. 06 May, 2016 2 commits
    • Yaowu Xu's avatar
      Change initializations of variables with type "int_mv" · 824a8b22
      Yaowu Xu authored
      This is to make MSVC happy and eliminate build errors.
      
      Change-Id: Ic81e7c7516923913e6e7a652b691953e4a1af8aa
      824a8b22
    • Alex Converse's avatar
      Rename pick_filter_intra. · 130cccba
      Alex Converse authored
      The word 'pick' is usually used in functions that make decisions where
      the bitstream allows multiple legal choices, and not to limit the
      bitstream format itself.
      
      Change-Id: Ia60709c29e004475e1aa8861aefded27ebaf4712
      130cccba
  8. 05 May, 2016 1 commit
  9. 04 May, 2016 1 commit
  10. 03 May, 2016 1 commit
  11. 29 Apr, 2016 1 commit
  12. 28 Apr, 2016 1 commit
  13. 27 Apr, 2016 3 commits
  14. 26 Apr, 2016 1 commit
    • Yue Chen's avatar
      Remove double counting for mv costs · 34177e67
      Yue Chen authored
      The bug is introduced by commit 1a0352d1, in which mv costs are
      counted twice in joint_motion_search() in ext_inter experiment.
      
      Change-Id: Ibace453df999d3c2e781d73f1f0912038fee2d4e
      34177e67
  15. 25 Apr, 2016 2 commits
  16. 23 Apr, 2016 1 commit
  17. 22 Apr, 2016 2 commits
  18. 19 Apr, 2016 6 commits
    • hui su's avatar
      Keep track of zcoeff_blk in tx size/type search · 7dffb432
      hui su authored
      Prevent potential problems when per transform block
      zero forcing is re-enabled (a To-Do).
      
      Change-Id: I03b0ab2a86d88058441f2ca18994cfd2e6329898
      7dffb432
    • hui su's avatar
      Enable optimize_b for intra blocks · e43c2111
      hui su authored
      Coding gain:
      lowres  0.05%
      midres  0.10%
      hdres   0.18%
      
      Change-Id: I508b150c02588f911a8ddddfe73c770f0819fe10
      e43c2111
    • Geza Lore's avatar
      Fix uninitialized blk_skip for VAR TX. · 7aa95be9
      Geza Lore authored
      x->blk_skip used to be uninitialized (leftover from encoding the
      previous block), if cm->tx_mode != TX_MODE_SELECT (which is used with
      higher --cpu-used or --rt options). This resulted in degraded coding
      performance when using cm->tx_mode != TX_MODE_SELECT.
      
      This fixes the VP10/EndToEndTestLarge.EndtoEndPSNRTest/40 unit test.
      
      Also fixed an edge effect where encode_block in encodemb.c used the
      formal width of the block (without cropping at the right edge), to
      look up blk_skip, while select_tx_block in rdopt.c used the cropped
      width to set blk_skip.
      
      Change-Id: I76d0f49ac5ab3ab54203573e0d7fcfcc1c6aa10d
      7aa95be9
    • Geza Lore's avatar
      Revert "Fix uninitialized blk_skip for VAR TX." · 8d64b53d
      Geza Lore authored
      This reverts commit e7b89d88.
      8d64b53d
    • Geza Lore's avatar
      Fix uninitialized blk_skip for VAR TX. · e7b89d88
      Geza Lore authored
      x->blk_skip used to be uninitialzied (leftover from encoding the
      previous block), if cm->tx_mode != TX_MODE_SELECT (which is used with
      higher --cpu-used or --rt options). This resulted in degraded coding
      performance when uning cm->tx_mode != TX_MODE_SELECT.
      
      This fixes the VP10/EndToEndTestLarge.EndtoEndPSNRTest/40 unit test.
      
      Change-Id: If39062927446798c626fc93694b4e6a4f35fa5da
      e7b89d88
    • Jingning Han's avatar
      Handle zero motion vector residual · ec2ffda5
      Jingning Han authored
      This commit handles the zero motion vector residuals for single
      and compound reference modes, respectively. It improves the coding
      performance by 0.13% with no additional encoding complexity.
      
      Change-Id: I16075a836025bd2746da2ff4698fb9261e4b08c1
      ec2ffda5
  19. 18 Apr, 2016 3 commits
    • Jingning Han's avatar
      Refactor transform selection process · 2aa6117b
      Jingning Han authored
      This commit re-arranges the transform type and size selectio
      process. It removes an unnecessary rate-distortion cost computation
      step. Local experiments show that this speeds up the encoding
      process by 6% for both the baseline and the ext-intra experiment.
      
      Change-Id: Iab3b86a63a1e9e55548466791ed5d29a0575c1e7
      2aa6117b
    • Angie Chiang's avatar
      Remove double operation from tx_size selection · 6de4a77d
      Angie Chiang authored
      This CL fix the bug
      rdopt.c:1687: choose_tx_size_from_rd: Assertion
      `mbmi->tx_type == DCT_DCT' failed
      
      It is caused by
      1) mms register access before double operation
      2) different compiler behaviors
      code:
        int64_t a = INT64_MAX;
        double b = 1. * INT64_MAX;
        printf("a < b: %d\n", a < b);
      result:
        a < b: 0
      
      code:
        --target=x86-linux-gcc
        int64_t a = INT64_MAX;
        double b = 1. * INT64_MAX;
        printf("a < b: %d\n", a < b);
      result:
        a < b: 1
      
      I remove the double operation and test it with EXT_TX experiment.
      The psnr change is around 0.05%, which is considered as noise level.
      
      Change-Id: If8935c70c8603617fcfa8571accd30ccdda786a0
      6de4a77d
    • Jingning Han's avatar
      Refactor rd_variance_adjustment function · c8312daa
      Jingning Han authored
      Compute the reconstruction variance in the prediction mode search.
      
      Change-Id: Id9c7635a9c9f5383e61c0e427e95234211834301
      c8312daa
  20. 16 Apr, 2016 1 commit
    • Yue Chen's avatar
      Optimization for EXT_INTER + OBMC combination · 321794c4
      Yue Chen authored
      In the rd loop, check the perf of obmc, whose mv is copied from regular
      inter predictor, when wedge interinter is better than regular inter
      (previously it will force allow_obmc = 0). The condition of the early
      termination before this step is relaxed to avoid skipping too many obmc
      predictions. The rates of the overhead are properly calculated for these tools.
      
      The logic of the bitstream syntax:
      (a single ref) the interintra flag is sent first, only if it is 0, we
      send the obmc flag;
      (compound refs) the obmc flag is sent first, only if it is 0, we send
      the wedge interinter flag
      
      Coding gain
      lowres: 0.428% (2.287%->2.715%)
      
      Change-Id: I5f3a34640b398e313cbf84235c9fe2073eb2173f
      321794c4
  21. 15 Apr, 2016 1 commit
    • Geza Lore's avatar
      Fix segfault with --cpu-used >= 3 and ext-refs. · 77d197e6
      Geza Lore authored
      With ext-ref enabled, it is possible that when trying to encode the
      first true ALTREF frame after a keyframe, the previous ALTREF frame
      (alias for the keyframe) is the same as one of the new LAST{2,3,4}
      reference frames, and hence cpi->ref_frame_flags will have the ALTREF
      bit clear, as computed by get_ref_frame_flags in encoder.c.
      
      sf->alt_ref_search_fp forces the previous ALTREF frame to
      be used as the only possible  reference when encoding a new ALTREF
      frame, but due to cpi->ref_frame_flags, some buffers will not be
      initialized (see rdopt.c:7689 yv12_mb), leading to a segfault.
      
      get_ref_frame_flags in encoder.c has been changed to prefer to keep
      the  LAST frame, then the ALTREF frame, then any of the LAST{2,3,4}
      frames and then the GOLDEN frame in that order of preference in case
      any of them are the same. This avoids the segfault and behaves the
      same for the baseline.
      
      Change-Id: I4da1991667614009da5d3061a6316c0d5dbc6c0c
      77d197e6
  22. 14 Apr, 2016 1 commit
  23. 13 Apr, 2016 2 commits
    • Jingning Han's avatar
      Speed up dynamic motion vector referencing system · 9a1a8f1d
      Jingning Han authored
      Skip transform type search in modes with ref_mv_idx > 0. This
      brings down the additional encoding time cost due to the DMR system
      from 32% to 17%, at minimal coding performance regression.
      
      Change-Id: Ie82e1d2831a313c6f1e47f7da221b51345023eb3
      9a1a8f1d
    • Jingning Han's avatar
      Fix a few mis-use cases of MAX_MV_REF_CANDIDATES · f33a0a82
      Jingning Han authored
      Fix several use cases where MAX_MV_REF_CANDIDATES is mixed up with
      is_compound flag to avoid potential coding interruption.
      
      Change-Id: Ifdee1ef8a81ef6d1c155315c6c6a3074aa7a8b5e
      f33a0a82