1. 20 Sep, 2013 - 1 commit
    • Jingning Han's avatar
      Calculate rd cost per transformed block · 78fbb106
      Jingning Han authored
      This commit makes the rate-distortion optimization loop evaluate
      the rd costs of regular quantization and all zero coeffs, per
      transformed block. It improves speed 1 compression performance:
      
      derf: 0.245%
      yt:   0.515%
      
      For a large partition that consists multiple transformed blocks,
      this allows more flexibility to selectively force a portion of
      them coded as all zero coeffs, as well be continued in the next
      patches.
      
      Change-Id: I211518be4179747b57375696f017d1160cc91851
      78fbb106
  2. 19 Sep, 2013 - 3 commits
    • Yaowu Xu's avatar
      change to avoid invalid memory read. · 79af5913
      Yaowu Xu authored
      The fake token EOSB may cause invaild memory read in pack token, this
      commit reworked the loop to avoid such invalid read.
      
      Change-Id: I37fdfce869b44a7f90003f82a02f84c45472a457
      79af5913
    • Yaowu Xu's avatar
      fix integer overflow errors · 014acfa2
      Yaowu Xu authored
      Change-Id: I76f440a917832c02d7a727697b225bac66b99f56
      014acfa2
    • Dmitry Kovalev's avatar
      Adding get_scan_and_band function. · a23c2a9e
      Dmitry Kovalev authored
      Extracting get_scan_and_band function from get_entropy_context to
      remove duplicated code.
      
      Change-Id: I5da1f5a60263017e887da68bc834317b5f084cb2
      a23c2a9e
  3. 18 Sep, 2013 - 3 commits
  4. 17 Sep, 2013 - 2 commits
  5. 16 Sep, 2013 - 3 commits
    • Yaowu Xu's avatar
      fix a problem where an invalid mv used in search · eeae6f94
      Yaowu Xu authored
      The commit added reset of pred_mv at the beginning of each SB64x64
      partition mv search, also limited the usage of pred_mv only when
      search on the largest partition is already done. This is to fix
      a crash at speed 1/2 encoder where an invalid mv is used in mv
      search.
      
      Change-Id: I39010177da76d054e3c90b7899a44feb2e3a5b1b
      eeae6f94
    • Paul Wilkins's avatar
      Minor clean up. · cb50dc7f
      Paul Wilkins authored
      Removed some unused code and minor cleanup
      / reordering.
      
      Change-Id: I4083ae56aeb8edfe9b85aa2f42a16aa28d19da94
      cb50dc7f
    • Paul Wilkins's avatar
      Adjustment to mode_skip_start. · 3b017784
      Paul Wilkins authored
      Corrected values relating to modified mode order.
      
      Change-Id: I24fccba3af4bc16721d5e7e51888a66305bfa7fe
      3b017784
  6. 13 Sep, 2013 - 2 commits
    • Jingning Han's avatar
      Adaptive motion search control · c4826c59
      Jingning Han authored
      This commit enables adaptive constraint on motion search range for
      smaller partitions, given the motion vectors of collocated larger
      partition as a candidate initial search point.
      
      It makes speed 0 runtime of bus at CIF and 2000 kbps goes from
      167s down to 162s (3% speed-up), at 0.01dB performance gains. In
      the settings of speed 1, this makes the runtime goes from 33687 ms
      to 32142 ms (4.5% speed-up), at 0.03dB performance gains.
      
      Compression performance wise, it gains at speed 1:
      derf  0.118%
      yt    0.237%
      hd    0.203%
      stdhd 0.438%
      
      Change-Id: Ic8b34c67810d9504a9579bef2825d3fa54b69454
      c4826c59
    • Paul Wilkins's avatar
      Fix VP9_mode_order[] · 1407cf85
      Paul Wilkins authored
      Mis-merge of the following change managed to break mode order
      and delete two mode options (new alt ref and near alt ref)
      It also created a situation where we could test two undefined
      modes off the end of the VP9_mode_order[] data structure.
        "clang warnings : remove split and i4x4_pred fake modes"
        "Change Id: I8ef3c*"
      
      Initial testing on Akiyo at speed 2.
      101.35	 44.567	 44.447 improves to
      96.82	 44.915	 44.815
      
      Approx 0.3-0.4db gain and 2.5% size reduction
      
      Change-Id: Icff813e7c0778d140ad4f0eea18cf1ed203c4e34
      1407cf85
  7. 12 Sep, 2013 - 1 commit
  8. 11 Sep, 2013 - 4 commits
    • Jim Bankoski's avatar
      clang warnings : remove split and i4x4_pred fake modes · 7fb42d90
      Jim Bankoski authored
      Change-Id: I8ef3c7c0f08f0f1f4ccb8ea4deca4cd8143526ee
      7fb42d90
    • Deb Mukherjee's avatar
      Clean up of the search best filter speed feature · b9646467
      Deb Mukherjee authored
      Removes this speed feature since it is very slow and unlikely
      to be used in practice. This cleanup removes a bunch of unnecessary
      complications in the outer encode loop.
      
      Change-Id: I3c66ef1ca924fbfad7dadff297c9e7f652d308a1
      b9646467
    • Deb Mukherjee's avatar
      Changes in speed 2 settings · 69fe840e
      Deb Mukherjee authored
      Propose some changes to the speed 2 settings to improve quality.
      In particular, turns off the adjust_thresholds_by_speed feature
      which improves results by 6%. Also removes the code for
      adjust_thresholds_by_speed since it conflicts with the adaptive
      rd thresh feature.
      
      Overall, with this change speed 2 is -15.2% from speed 0 settings,
      on derf, which is significantly better than -21.6% down before.
      
      Change-Id: I6e90a563470979eb0c258ec32d6183ed7ce9a505
      69fe840e
    • Scott LaVarnway's avatar
      New mode_info_context storage -- undo revert · ac6093d1
      Scott LaVarnway authored
      mode_info_context was stored as a grid of MODE_INFO structs.
      The grid now constists of pointers to MODE_INFO structs.  The
      MODE_INFO structs are now stored as a stream (decoder only),
      eliminating unnecessary copies and is a little more cache
      friendly.
      
      Change-Id: I031d376284c6eb98a38ad5595b797f048a6cfc0d
      ac6093d1
  9. 10 Sep, 2013 - 6 commits
    • Jingning Han's avatar
      Remove redundant condition check in 32x32 quant · 5d93feb6
      Jingning Han authored
      The c code implementation of 32x32 quantization does the zbin check
      of all coefficients prior to the quant/dequant loop, hence removing
      the redundant zbin check inside the loop. This only affects the
      c code version. SSSE3 version does not separate the zbin check out.
      
      Change-Id: Ic197a7d61d0b25fcac3cc092987651378cb56e4e
      5d93feb6
    • Deb Mukherjee's avatar
      Small tweaks on the constant quality mode · 09830aa0
      Deb Mukherjee authored
      Improves results a little.
      derf is now +1.078% over bitrate control.
      
      Change-Id: I4812136f3e67be21d14ec089419976a32a841785
      09830aa0
    • Yunqing Wang's avatar
      Stop partition checking when distortion is small · 0607abc3
      Yunqing Wang authored
      If the current obtained distortion is very small, which happens
      for static image case, we pick the current partition type without
      further split checking.
      
      This won't affect regular videos. For static videos, we got 10%~12%
      encoding speed gain. PSNR was better for some clips, and worse for
      others. Overall it was even.
      
      Change-Id: If787a57bedf46fc595ca4f5ded2b0c0a69e9fdef
      0607abc3
    • Yunqing Wang's avatar
      Modify encode breakout for static frames · 939791a1
      Yunqing Wang authored
      Thank Paul for the suggestions. While turning on static-thresh
      for static-image videos, a big jump on bitrate was seen. In this
      patch, we detected static frames in the video using first-pass
      stats. For different cases, disable encode breakout or reduce
      encode breakout threshold to limit the skipping.
      
      More modification need be done to break incorrect partition
      picking pattern for static frames while skipping happens.
      
      Change-Id: Ia25f47041af0f04e229c70a0185e12b0ffa6047f
      939791a1
    • Paul Wilkins's avatar
      Modified mode skip functionality. · 4f660cc0
      Paul Wilkins authored
      A previous speed feature skipped modes not used in earlier
      partitions but this not longer worked as intended following
      changes to the partition coding order and in conjunction
      with some other speed features (Especially speed 2 and above).
      
      This modified mode skip feature sets a mask after the first X
      modes have been tested in each partition depending on the
      reference frame of the current best case.
      
      This patch also makes some changes to the order modes are
      tested to fit better with this skip functionality.
      
      Initial testing suggests speed and rd hit count improvements
      of up to 20% at speed 1. Quality results. (derf -1.9%, std hd  +0.23%).
      
      Change-Id: Idd8efa656cbc0c28f06d09690984c1f18b1115e1
      4f660cc0
    • Paul Wilkins's avatar
      Added extra check to rd_auto_partition_range() · 901c4954
      Paul Wilkins authored
      Added check that the returned max and minimum are
      valid in bottom and right border cases.
      
      Change-Id: I2d6cdc9b5f04c7d0ff512ddcf3228331e028bf9b
      901c4954
  10. 09 Sep, 2013 - 3 commits
    • Ivan Maltz's avatar
      API extensions and sample app for spacial scalable encoder · 01b35c3c
      Ivan Maltz authored
      Sample app: vp9_spatial_scalable_encoder
      vpx_codec_control extensions:
        VP9E_SET_SVC
        VP9E_SET_WIDTH, VP9E_SET_HEIGHT, VP9E_SET_LAYER
        VP9E_SET_MIN_Q, VP9E_SET_MAX_Q
      expanded buffer size for vp9_convolve
      
      modified setting of initial width in vp9_onyx_if.c so that layer size
      can be set prior to initial encode
      
      Default number of layers set to 3 (VPX_SS_DEFAULT_LAYERS)
      Number of layers set explicitly in vpx_codec_enc_cfg.ss_number_layers
      
      Change-Id: I2c7a6fe6d665113671337032f7ad032430ac4197
      01b35c3c
    • Jingning Han's avatar
      Remove the use of uninitialized_safe in encode_sb_ · 18c780a0
      Jingning Han authored
      Initialize the probability model context with default value in
      encode_sb.
      
      Change-Id: Id826114024dfc21c7ef41aea9f4a0316d4a5cb95
      18c780a0
    • James Zern's avatar
      Revert "New mode_info_context storage" · 54a03e20
      James Zern authored
      This reverts commit dae17734
      
      Encode crashes, leaks and increases integer overflow errors.
      
      Change-Id: I595aa2649bb8d0b6552ff91652837a74c103fda2
      54a03e20
  11. 08 Sep, 2013 - 1 commit
  12. 07 Sep, 2013 - 1 commit
    • Jingning Han's avatar
      Fix overflow issue in 16x16 quantization SSSE3 · 09bc942b
      Jingning Han authored
      The 16x16 transform unit test suggested that the peak coefficient
      value can reach 32639. This could cause potential overflow issue
      in the SSSE3 implmentation of 16x16 block quantization. This commit
      fixes this issue by replacing addition with saturated addition.
      
      Change-Id: I6d5bb7c5faad4a927be53292324bd2728690717e
      09bc942b
  13. 06 Sep, 2013 - 3 commits
    • Paul Wilkins's avatar
      Enable kf restrictions at speed 4 · f15cdc74
      Paul Wilkins authored
      Change-Id: I453409d3be3f5fe118b15affde45cb52184aef20
      f15cdc74
    • Deb Mukherjee's avatar
      Support a constant quality mode in VP9 · e378a89b
      Deb Mukherjee authored
      Adds a new end-usage option for constant quality encoding in vpx. This
      first version implemented for VP9, encodes all regular inter frames
      using the quality specified in the --cq-level= option, while encoding
      all key frames and golden/altref frames at a quality better than that.
      
      The current performance on derfraw300 is +0.910% up from bitrate control,
      but achieved without multiple recode loops per frame.
      
      The decision for qp for each altref/golden/key frame will be improved
      in subsequent patches based on better use of stats from the first pass.
      Further, the qp for regular inter frames may also be varied around the
      provided cq-level.
      
      Change-Id: I6c4a2a68563679d60e0616ebcb11698578615fb3
      e378a89b
    • Scott LaVarnway's avatar
      New mode_info_context storage · dae17734
      Scott LaVarnway authored
      mode_info_context was stored as a grid of MODE_INFO structs.
      The grid now constists of a pointer to a MODE_INFO struct and
      a "in the image" flag.  The MODE_INFO structs are now stored
      as a stream, eliminating unnecessary copies and is a little
      more cache friendly.
      
      For the test clips used, the decoder performance improved
      by ~4.3% (1080p) and ~9.7% (720p).
      
      Patch Set 2: Re-encoded clips with latest. Now ~1.7% (1080p)
      and 5.9% (720p).
      
      Change-Id: I846f29e88610fce2523ca697a9a9ef2a182e9256
      dae17734
  14. 05 Sep, 2013 - 1 commit
    • Jingning Han's avatar
      Use saturated addition in SSSE3 of 32x32 quant · 458c2833
      Jingning Han authored
      The 32x32 forward transform can potentially reach peak coefficient
      value close to 32700, while the rounding factor can go upto 610.
      This could cause overflow issue in the SSSE3 implementation of 32x32
      quantization process.
      
      This commit resolves this issue by replacing the addition operations
      with saturated addition operations in 32x32 block quantization.
      
      Change-Id: Id6b98996458e16c5b6241338ca113c332bef6e70
      458c2833
  15. 04 Sep, 2013 - 2 commits
    • Jim Bankoski's avatar
      make vp9 postproc a config option · 79401542
      Jim Bankoski authored
      Vp9 postproc is disabled for now as its not been shown to help and
      may be merged with vp8.
      
      Change-Id: I25620d6cd34c6e10331b18c7b5ef7482e39c6057
      79401542
    • Jim Bankoski's avatar
      faster accounting of inc_mv · 532179e8
      Jim Bankoski authored
      Moves counting of mv branches to where we have a new mv, instead of after
      the whole frame is summed.
      
      Change-Id: I945d9f6d9199ba2443fe816c92d5849340d17bbd
      532179e8
  16. 03 Sep, 2013 - 1 commit
    • Paul Wilkins's avatar
      Attempt to fix speed 4 · 49317cdd
      Paul Wilkins authored
      Speed 4 fixed partition size. Use fixed size unless it does not
      fit inside image, in which case use the largest size that does.
      
      Change-Id: I250f7a80506750dd82ab355721624a1344247223
      49317cdd
  17. 01 Sep, 2013 - 1 commit
    • Jingning Han's avatar
      Fix 32x32 forward transform SSE2 version · 3cf46fa5
      Jingning Han authored
      This commit fixed the potential overflow issue in the SSE2
      implementation of 32x32 forward DCT. It resolved the corrupted
      coded frames in the border of scenes.
      
      Change-Id: If87eef2d46209269f74ef27e7295b6707fbf56f9
      3cf46fa5
  18. 30 Aug, 2013 - 1 commit
  19. 29 Aug, 2013 - 1 commit
    • Paul Wilkins's avatar
      Added per pixel inter rd hit count stats · 1f4bf79d
      Paul Wilkins authored
      Added some code to output normalized rd hit count stats.
      In effect this approximates to the average number of rd
      operations/tests per pixel for the sequence.
      
      The results are not quite accurate and I have not bothered
      to account for partial SB64s at frame edges and for key frames
      However they do give some idea of the number of modes /
      prediction methods being tested for each pixel across the
      different partition sizes. This indicates how much scope their
      is for further gains either by reducing the number of partitions
      examined or the modes per partition through heuristics.
      
      Patch 3 moved place where count incremented so partial rd
      tests that are aborted with INT_MAX return are also counted.
      
      Example numbers for first 50 frames of Akiyo.
      Speed 0 ~84.4 rd operations / pixel
      Speed 1 ~28.8
      Speed 2 ~11.9
      
      Change-Id: Ib956e787e12f7fa8b12d3a1a2f6cda19a65a6cb8
      1f4bf79d