1. 06 Jan, 2014 1 commit
    • Jingning Han's avatar
      Remove avoid_frame_with_high_error from RD loop · 393a8cce
      Jingning Han authored
      The feature undergoes prior assumption that the recursive partition
      size search from 4x4 to 64x64, hence utilizing information from small
      blocks to determine early termination in large block rate-distortion
      optimization search. The current codebase is now going from top down.
      The previous function might go with not properly initialized values,
      hence removed.
      
      Tested on pedestrian_area_1080p at 4000 kbps running under speed 2.
      No visible difference in runtime observed.
      
      Change-Id: I553df415c6191413762db7ae34e8790c71d8118e
      393a8cce
  2. 20 Dec, 2013 2 commits
    • Yaowu Xu's avatar
      Fix a bug · 2472f125
      Yaowu Xu authored
      The line was accidently removed in 4dbad63a.
      
      Change-Id: Ic1e18f209cead95cecc684f952ae667271b58a97
      2472f125
    • Dmitry Kovalev's avatar
      Using single struct to represent scale factors. · a3fbcc88
      Dmitry Kovalev authored
      Moving back to scale_factors struct. We don't need anymore x_offset_q4 and
      y_offset_q4 because both values are calculated locally inside vp9_scale_mv
      function.
      
      Change-Id: I78a2122ba253c428a14558bda0e78ece738d2b5b
      a3fbcc88
  3. 19 Dec, 2013 4 commits
  4. 18 Dec, 2013 2 commits
  5. 17 Dec, 2013 4 commits
    • Yaowu Xu's avatar
      Remove redundant function and calls · ed90a176
      Yaowu Xu authored
      lf deltas are later setup in function vp9_setup_past_independence(),
      so this commit removed the redundant copy. Also renamed a function
      to better align the behavior of the funciton.
      
      Change-Id: I5d28c2f5b12b3d31817e14296ed4605c1fd5c98c
      ed90a176
    • Dmitry Kovalev's avatar
      Reusing FRAME_COUNTS in the encoder. · 1d23a659
      Dmitry Kovalev authored
      Change-Id: I6ab9fe2326ebbadf0dd10cca9f66cf8277e3f43b
      Replacing: comp_inter_count, single_ref_count, comp_ref_count.
      1d23a659
    • Yaowu Xu's avatar
      Move two functions to encoder · 50ec6311
      Yaowu Xu authored
      As they are used by encoder only.
      
      Change-Id: I7b1e6955b218aba66fe156523521a8121c9a84a4
      50ec6311
    • Deb Mukherjee's avatar
      Rate control changes on active_worst_quality · 1e59cbf2
      Deb Mukherjee authored
      Various cleanups and refactoring.
      Removes feedback of active worst qaulity and uses last_q
      instead to make the interface cleaner. Active worst quality
      is now decided only once for a frame being coded in the
      beginning based on last_q and other stats. Also, adds other
      cleaups on last_q to store also the last_q for altref frames,
      and reduces the altref interval a little.
      
      The output does change a little.
      derfraw300: +0.224% (global psnr)
      stdhdraw250: +0.442% (global psnr)
      
      Change-Id: Ie634cdc032697044c472dd0fe79c109b3e7f9767
      1e59cbf2
  6. 16 Dec, 2013 1 commit
  7. 13 Dec, 2013 2 commits
    • Yunqing Wang's avatar
      Increase disable_filter_search_var_thresh threshold · da9f55c3
      Yunqing Wang authored
      Increased threshold(t) for interp filter search. This sped up the
      encoder with some PSNR loss.
      
      Borg tests were ran at speed 2.
      t = 100, PSNR loss:
      -0.710%(derf); -0.561%(stdhd); -0.647%(youtube)
      speedup:
      9%(derf); 3%(stdhd); 5.7%(youtube)
      
      t = 500, PSNR loss:
      -1.687%(derf); -1.665%(stdhd); -1.664%(youtube)
      speedup:
      18%(derf); 10%(stdhd); 8%(youtube)
      
      Change-Id: I180e3657c1e156aaa88dc7c437f8bcbd19f5caba
      da9f55c3
    • Jingning Han's avatar
      Enable adaptive pred filter type for sub8x8 · 3b5a90bd
      Jingning Han authored
      This commit enables an adaptive prediction filter type selection
      for sub8x8 block sizes. In speed 1, it re-uses the filter type of
      collocated 8x8 block if it is tested in the rate-distortion optimization
      loop, for the sub8x8 blocks. Otherwise, it runs the normal test
      over all the three filter types. In speed 2, it re-uses the 8x8
      block's prediction filter type, if available. Otherwise, force it
      to be EIGHTTAP.
      
      Compression and speed performance wise:
      speed 1
      derf -0.266%
      yt   -0.138%
      
      bus at 2000 kbps: 33766ms -> 30451ms (10% speed-up)
      football at 600 kbps: 48173ms -> 43786ms (9% speed-up)
      
      speed 2
      derf -0.026%
      yt   +0.134%
      
      bus at 2000 kbps: 18973ms -> 17698ms (6% speed-up)
      football at 600 kbps: 26748ms -> 25096ms (6% speed-up)
      
      Change-Id: I77e097533b969fd3472147225fa79fc98095d342
      3b5a90bd
  8. 11 Dec, 2013 2 commits
  9. 06 Dec, 2013 6 commits
    • Jingning Han's avatar
      Full range motion search for regular block sizes · b295092b
      Jingning Han authored
      Add a full range motion search for regular block sizes. This runs
      exhaustive search within the given reference area. This commit further
      optimizes the search process by combining 4 points test into one
      pipeline, which gives 30% speed-up as compared to run each individual
      point at a time.
      
      This full range search serves as a best possible motion search reference.
      When replacing the diamond search with full range search, the speed 0
      runtime of bus CIF at 2000 kbps goes from 153872ms to 623051ms. The
      compression performance compared to speed 0 setting gains 0.585% for
      derf set.
      
      Change-Id: Ieef1225216b0b86b4ac4872fa7fb9e18bf2eabb3
      b295092b
    • Dmitry Kovalev's avatar
      Removing BLOCK_TYPES and adding PLANE_TYPES constant instead. · d6b159d4
      Dmitry Kovalev authored
      Change-Id: Ic3bb862e93aedf6a489a33ea6f7e5097d96855ee
      d6b159d4
    • Paul Wilkins's avatar
      Remove rate correction factor. · 570b6d25
      Paul Wilkins authored
      Removed an adaptive rate correction factor that was having
      a negative impact on quality in many clips. This factor
      was influencing the Q range available to each frame
      independently of the bits allocated to each.
      
      Average results with DISABLE_RC_LONG_TERM_MEM.
      
      derf +0.199, -0.059.
      yt +3.957, +3.798
      std hd +1.577, +2.140
      yt hd +4.127, +4.513
      
      Average results without  DISABLE_RC_LONG_TERM_MEM
      
      derf -0.628, -0.665
      yt +3.432, +3.015
      std hd -0.105, +0.153
      yt hd +3.432, +3.015
      
      Change-Id: I45bab6b606f49a442e7b27a6d631f3ffd843bbce
      570b6d25
    • Dmitry Kovalev's avatar
      Renaming PREV_COEF_CONTEXTS to COEFF_CONTEXTS. · 377fa8af
      Dmitry Kovalev authored
      Also adding BAND_COEFF_CONTEXTS macro to simplify for loop logic.
      
      Change-Id: I12a78a49cf1addf81e6b3fe2a3736ec2b79bd79e
      377fa8af
    • Deb Mukherjee's avatar
      Further rate control cleanups · 52d27367
      Deb Mukherjee authored
      Includes various cleanups.
      Streamlines the interfaces so that all rate control state
      updates happen in the vp9_rc_postencode_update() function.
      This will hopefully make it easier to support multiple
      rate control schemes.
      Removes some unnecessary code, which in rare cases can casue
      a difference in the constrained quality mode output, but
      other than that there is no bitstream change yet.
      
      Change-Id: I3198cc37249932feea1e3691c0b2650e7b0c22fc
      52d27367
    • Dmitry Kovalev's avatar
      Renaming constants. · 0d4b8d7e
      Dmitry Kovalev authored
      NUM_YV12_BUFFERS        => FRAME_BUFFERS
      ALLOWED_REFS_PER_FRAME  => REFS_PER_FRAME
      NUM_REF_FRAMES_LOG2     => REF_FRAMES_LOG2
      NUM_REF_FRAMES          => REF_FRAMES
      NUM_FRAME_CONTEXTS_LOG2 => FRAME_CONTEXTS_LOG2
      NUM_FRAME_CONTEXTS      => FRAME_CONTEXTS
      
      Change-Id: I4e1ada08f25d8fa30fdf03aebe1b1c9df0f87e63
      0d4b8d7e
  10. 04 Dec, 2013 1 commit
    • Dmitry Kovalev's avatar
      Cleaning up vp9_entropy.h file. · 8e89e2f2
      Dmitry Kovalev authored
      Renaming constants for consistency:
        DCT_VAL_CATEGORY1 => CATEGORY1_TOKEN
        DCT_VAL_CATEGORY2 => CATEGORY2_TOKEN
        DCT_VAL_CATEGORY3 => CATEGORY3_TOKEN
        DCT_VAL_CATEGORY4 => CATEGORY4_TOKEN
        DCT_VAL_CATEGORY5 => CATEGORY5_TOKEN
        DCT_VAL_CATEGORY6 => CATEGORY6_TOKEN
        DCT_EOB_TOKEN     => EOB_TOKEN
        DCT_EOB_MODEL_TOKEN => EOB_MODEL_TOKEN
        MAX_ENTROPY_TOKENS => ENTROPY_TOKENS
      
      Moving constants:
        INTER_MODE_CONTEXTS from vp9_entropy.h to vp9_blockd.h.
        EOSB_TOKEN from vp9_entropy.h to vp9_tokenize.h
      
      Change-Id: I5fcbf081318e1d365792b6d290a930c6cb0f3fc2
      8e89e2f2
  11. 03 Dec, 2013 3 commits
    • Jingning Han's avatar
      Fix initialization order for the encoder · 3c346191
      Jingning Han authored
      This commit makes the coefficient tree initialized prior to token
      initialization, where the coefficient costs are filled out according
      to the probabilities associated with coefficient value categories.
      
      Change-Id: If4e89c3923058376f8382c683fe4a225a4a38af3
      3c346191
    • Jingning Han's avatar
      Fix intra prediction ref selection in skip_encode · f01ad926
      Jingning Han authored
      This commit fixes the intra prediction reference source selection
      in the settings of skip_encode. Use original boundary pixels as
      prediction reference, when the inverse transform and reconstruction
      are skipped in the per block size rate-distortion optimization loop.
      
      Change-Id: I36081aa30aa46e203e0e6f4e8a420fd08269469a
      f01ad926
    • Jingning Han's avatar
      Fix use_uv_intra_estimate in rd loop · 9f81a50c
      Jingning Han authored
      This commit fixes the use of uv_intra_estimate by properly restoring
      the mode_info struct required by rd_pick_intra_sbuv_mode.
      
      Change-Id: I6a156d79533c4e2e60dfd3b8c5bb0a42a8eca280
      9f81a50c
  12. 27 Nov, 2013 2 commits
  13. 26 Nov, 2013 3 commits
  14. 25 Nov, 2013 2 commits
    • Paul Wilkins's avatar
      In frame Q adjustment experiment. · 644bd87e
      Paul Wilkins authored
      The idea here is to allow "in frame" adjustment of the final Q
      value used to encode each SB64, using segmentation.
      
      There is also adjustment of the rd mult in regions of overspend.
      
      Activated using aq_mode=2
      
      Change-Id: I2f140cd898c9f877c32cd6d2e667f5e11ada4b1c
      644bd87e
    • Adrian Grange's avatar
      Change default behavior to assume sampled chroma · 3173c219
      Adrian Grange authored
      When calling check_initial_width through vp9_set_size_literal
      the function was defaulting to using non-subsampled chroma.
      
      This patch changes the default to assume sampled chroma as
      an interim solution until complete support for other
      color formats is added.
      
      Change-Id: Id8e7e919b350e3473dfdf7551af6fd0716478b04
      3173c219
  15. 22 Nov, 2013 3 commits
    • Dmitry Kovalev's avatar
      Using partition counts from FRAME_COUNTS struct in the encoder. · 75e4377d
      Dmitry Kovalev authored
      Change-Id: I6c3d47b00acabe7ffba22ffc73741173aa9a0bff
      75e4377d
    • Jingning Han's avatar
      Separate setup_scale_factor/extend_frame_borders · 86d2a9b9
      Jingning Han authored
      This commit takes out vp9_extend_frame_borders from
      vp9_setup_scale_factors.
      
      The refactoring is for the preparation of the use of lazy border
      extension at decoder. This makes it necessary to handle border
      extension separately at encoder/decoder. The use of
      vp9_extend_frame_borders will be removed, when lazy border extension
      is ready.
      
      Change-Id: Ia3baba3d179d5f11eee1634f19b3b319d2a59186
      86d2a9b9
    • Deb Mukherjee's avatar
      Refactoring of rate control - part 1 · f1781e86
      Deb Mukherjee authored
      Moves all rate control variables to a separate structure,
      removes some currently unused variables,
      moves some rate control functions to vp9_ratectrl.c,
      and splits the encode_frame_to_data_rate function.
      
      Change-Id: I4ed54c24764b3b6de2dd676484f01473724ab52b
      f1781e86
  16. 21 Nov, 2013 1 commit
  17. 20 Nov, 2013 1 commit