1. 26 Nov, 2014 1 commit
  2. 25 Nov, 2014 1 commit
    • Yunqing Wang's avatar
      vp9_ethread: modify VP9_COMP structure · edbd61e1
      Yunqing Wang authored
      This patch modified struct VP9_COMP. Created a struct ThreadData
      to include data that need to be copied for each thread. In
      multiple thread case, one thread processes one tile. all threads
      share one copy of VP9_COMP,
      (refer to VP9_COMP *cpi in the code)
      but each thread has its own copy of ThreadData,
      (refer to ThreadData *td in the code).
      Therefore, within the scope of encode_tiles(), both cpi and td
      need to be passed as function parameters.
      In single thread case, the FRAME_COUNTS pointer in ThreadData
      points to "counts" in VP9_COMMON.
      Change-Id: Ib37908b2d8e2c0f4f9c18f38017df5ce60e8b13e
  3. 24 Nov, 2014 1 commit
    • Jingning Han's avatar
      Key frame non-RD mode decision process · 2fbdfd2c
      Jingning Han authored
      This commit makes a non-RD coding mode decision process for key
      frame coding. It can be optionally turned on in speed -6 and above.
      Change-Id: I0847258b392877a0210b4768bef88ebc9ad009b5
  4. 21 Nov, 2014 2 commits
    • Paul Wilkins's avatar
      Remove rate component adjustment for AQ1 · f5209d7e
      Paul Wilkins authored
      In AQ1 a rate adjustment was applied for blocks coded with a
      deltaq. This tends to skew the partition selection and cause
      rate overshoot.
      For example, consider a 64x64 super block where some but not all
      sub blocks are in a low q segment and some are in a high q segment.
      The choice of Q when considering large partition and transform sizes
      is defined by the lowest sub block segment id (currently this implies the
      lowest Q). If some parts of the larger partition are very hard this will
      cause a high rate component.
      The correct behavior here is for the rd code to discard the large partition
      choice and break down to sub blocks where some have low and some
      have high Q.  However the rate correction factor above mask the high
      cost of coding at a larger partition size.
      Change-Id: Ie077edd0b1b43c094898f481df772ea280b35960
    • Paul Wilkins's avatar
      Add variance restriction to AQ2. · d0312379
      Paul Wilkins authored
      Add an additional restriction to bit/complexity based
      segmentation based on spatial variance.
      Only lower Q when both the number of bits spent
      in the initial encoding pass and the spatial complexity are
      below a threshold. This will prevent the low Q segments
      being used just because there is a surfeit of bits.
      Small metrics gains especially opsnr.
      derf ~0.2% std-hd ~0.3%
      Change-Id: I6a8496d466d673f9b0e2b2ca6304ea7b6d8e1cce
  5. 20 Nov, 2014 3 commits
  6. 15 Nov, 2014 1 commit
    • Yunqing Wang's avatar
      vp9_ethread: combine encoder counts in separate struct · d0b547c6
      Yunqing Wang authored
      Several frame counters in encoder are updated at SB level. Combine
      those counters and put them in a separate struct, which allows us
      to allocate one copy for each thread.
      Change-Id: I00366296a13c0ada4d8fa12f5e07728388b6cab7
  7. 14 Nov, 2014 1 commit
  8. 13 Nov, 2014 1 commit
    • Yunqing Wang's avatar
      vp9_ethread: modify the cyclic refresh struct · 8ee605f1
      Yunqing Wang authored
      Two members in struct CYCLIC_REFRESH
        int64_t projected_rate_sb;
        int64_t projected_dist_sb;
      are updated at the superblock level, which makes them shared data
      in the multi-thread situation, and requires extra work to handle
      them. However, those values are updated and used immediately, and
      therefore can be removed. This patch cleaned up the code and
      removed the two members.
      Change-Id: I2c6ee4552bf49fb63ce590cdb47f9723974fffb1
  9. 07 Nov, 2014 1 commit
  10. 06 Nov, 2014 2 commits
    • Jingning Han's avatar
      Remove unused is_background function · 10da059b
      Jingning Han authored
      Change-Id: Ia540eac5f066ae95280c2f898370eddf0110c279
    • Jingning Han's avatar
      Rework cut-off decisions in cyclic refresh aq mode · caaf63b2
      Jingning Han authored
      This commit removes the cyclic aq mode dependency on
      in_static_area and reworks the corresponding cut-off thresholds.
      It improves the compression performance of speed -5 by 1.47% in
      PSNR and 2.07% in SSIM, and the compression performance of speed
      -6 by 3.10% in PSNR and 5.25% in SSIM. Speed wise, about 1% faster
      in both settings at high bit-rates.
      Change-Id: I1ffc775afdc047964448d9dff5751491ba4ff4a9
  11. 01 Nov, 2014 1 commit
    • hkuang's avatar
      Bind motion vectors with frame buffer structure. · 55577431
      hkuang authored
      This will save a lot of memory for decoder due to removing of prev_mi,
      but prev_mi is still needed in encoder. So this will increase a little bit
      memory for encoder.
      Change-Id: I24b2f1a423ebffa55a9bd2fcee1077dac995b2ed
  12. 30 Oct, 2014 1 commit
    • Jingning Han's avatar
      Rework pred pixel buffer system in non-RD coding mode · 7bea8c59
      Jingning Han authored
      This commit makes the inter prediction buffer system to support
      hybrid partition search. It reduces the runtime of speed -5 by
      about 3%. No compression performance change.
      vidyo1 720p 1000 kbps
      11831 ms -> 11497 ms
      nik 720p 1000 kbps
      10919 ms -> 10645 ms
      Change-Id: I5b2da747c6395c253cd074d3907f5402e1840c36
  13. 28 Oct, 2014 2 commits
    • Jingning Han's avatar
      Use zero motion vector in choose_partitioning · 07436abb
      Jingning Han authored
      The zero motion vector was effectively used in the subsampled pixel
      based variance calculation. This commit makes it directly use zero
      mv to generate prediction.
      Change-Id: Ica83dc843e9f8da2f89c3ef451e50f16214c0def
    • Jingning Han's avatar
      Refactor encoder tile data structure · d56b3eb0
      Jingning Han authored
      Make the common tile info as one element in the encoder tile data
      Change-Id: I8c474b4ba67ee3e2c86ab164f353ff71ea9992be
  14. 27 Oct, 2014 1 commit
  15. 24 Oct, 2014 1 commit
    • Jingning Han's avatar
      Tile based adaptive mode search in RD loop · eee201c2
      Jingning Han authored
      Make the spatially adaptive mode search in rate-distortion
      optimization loop inter tile independent. Experiments suggest that
      this does not significantly change the coding staticstics.
      Single tile, speed 3:
      pedestrian_area 1080p 1500 kbps
      59192 b/f, 40.611 dB, 101689 ms
      blue_sky 1080p 1500 kbps
      58505 b/f, 36.347 dB, 62458 ms
      mobile_cal 720p 1000 kbps
      13335 b/f, 35.646 dB, 45655 ms
      as compared to 4 column tiles, speed 3:
      pedestrian_area 1080p 1500 kbps
      59329 b/f, 40.597 dB, 101917 ms
      blue_sky 1080p 1500 kbps
      58712 b/f, 36.320 dB, 62693 ms
      mobile_cal 720p 1000 kbps
      13191 b/f, 35.485 dB, 45319 ms
      Change-Id: I35c6e1e0a859fece8f4145dec28623cbc6a12325
  16. 22 Oct, 2014 1 commit
  17. 21 Oct, 2014 4 commits
  18. 20 Oct, 2014 2 commits
    • Jingning Han's avatar
      Hybrid partition search for rtc coding mode · 9f128b3e
      Jingning Han authored
      This commit re-designs the recursive partition search scheme in
      rtc speed -5. It first checks if the current block is under cyclic
      refresh mode. If so, apply recursive partition search. Otherwise,
      perform sub-sampled pixel based partition selection. When the
      pre-selection finds the partition size should be 32x32 or above,
      use the partition size directly. Otherwise, apply partition search
      at nearby levels around the preset partition size.
      It is enabled in speed -5. The compression performance of rtc
      speed -5 is improved by 9.4%. Speed wise, the run-time goes slower
      from 1% to 10%.
      nik_720p, 1000 kbps
      33220 b/f, 38.977 dB, 10109 ms -> 33200 b/f, 39.119 dB, 10210 ms
      vidyo1_720p, 1000 kbps
      16536 b/f, 40.495 dB, 10119 ms -> 16536 b/f, 40.827 dB, 11287 ms
      Change-Id: I65adba352e3adc03bae50854ddaea1b421653c6c
    • Paul Wilkins's avatar
      Resolve compiler warning. · 9626a0cb
      Paul Wilkins authored
      conversion from 'const int64_t' to 'int', possible loss of data.
      Change-Id: I471a73bba5d448d9be0ef9cbf1590fa73aa74be1
  19. 18 Oct, 2014 1 commit
  20. 17 Oct, 2014 2 commits
    • Yunqing Wang's avatar
      Remove the dependency in token storing locations · 7c4992c4
      Yunqing Wang authored
      Currently, the tokens for a tile are stored immediately after its
      preceding tile, which causes a dependency. This is unnecessary
      since we always allocate enough memory for tokens. Removing
      the dependency allows token writing done in parallel. This patch
      doesn't change encoding result.
      Change-Id: I7365a6e5e2c2833eb14377c37e1503c9d0f26543
    • Jingning Han's avatar
      Remove unused VAR_BASED_FIXED_PARTITION flag · e1111fba
      Jingning Han authored
      Change-Id: I4ce19b7cb1c45fed86e81ee785e787630020fb4f
  21. 15 Oct, 2014 4 commits
    • Jingning Han's avatar
      Add init and reset functions for RD_COST struct · e2612fbd
      Jingning Han authored
      Change-Id: I2902de7051a883fd22e27a655209233733969cfd
    • Jingning Han's avatar
      Use rate/distortion thresholds to control non-RD partition search · 5e766cce
      Jingning Han authored
      Compare the estimated rate and distortion to the thresholds scaled
      according to the operating block size and determine if further
      split partition search will be run. The compression performance of
      speed -5 is changed by -0.074%. The encoding speed is 10% - 15%
      vidyo1 720p
      16545 b/f, 40.492 dB, 11475 ms -> 16535 b/f, 40.486 dB, 10100 ms
      16624 b/f, 36.310 dB, 10071 ms -> 16617 b/f, 36.313 dB, 8346 ms
      Change-Id: Ic9197ab5761279ae55d2fb7813b2af0e0db497b8
    • Marco's avatar
      Some updates for Speed 6/VAR_BASED_PARTITION. · 09ea74f1
      Marco authored
      Reduce the intra_cost_penalty for non-rd mode,
      and some updates to VAR_BASED_PARTITION.
      Visual tests show some improvement at Speed 6, for RTC clips.
      Change-Id: If9090daf7aed14906a32d931a538ab544bbca606
    • Jingning Han's avatar
      Replace copy_partitioning use case with choose_partitioning · 89b8c7a5
      Jingning Han authored
      This commit replaces the use of copy_partitioning with
      choose_partitioning based on the sse of subsamped pixels, which
      provides significantly better coding performance and runs at
      similar speed, as compared to copy_partitioning. It improves rtc
      speed 5 coding performance by 3%.
      Change-Id: I52d3682a12dce0147f5e52383a594fc242ca3228
  22. 13 Oct, 2014 1 commit
    • Jingning Han's avatar
      Refactor rate distortion cost structure · 811cef97
      Jingning Han authored
      This commit makes a struct that contains rate value, distortion
      value, and the rate-distortion cost. The goal is to provide a
      better interface for rate-distortion related operation. It is
      first used in rd_pick_partition and saves a few RDCOST calculations.
      Change-Id: I1a6ab7b35282d3c80195af59b6810e577544691f
  23. 10 Oct, 2014 1 commit
  24. 09 Oct, 2014 3 commits
  25. 07 Oct, 2014 1 commit
    • Jim Bankoski's avatar
      experimental : partition using 1/8 x 1/8 image · 0ce51d82
      Jim Bankoski authored
      The concept:
      There's too much noise in source pixels for variance and at low bitrate
      the reconstructed looks nothing like the source so we have problems
      getting good partitionings with either.   This skirts the issue by using
      a box blur scaled down version for variance calculations.  To compare
      against source_var_ moved keyframe to be rd based like source_var.
      Change-Id: Ie3babdbfadae324b7b5a76bea192893af27f0624