1. 19 Apr, 2016 1 commit
  2. 12 Apr, 2016 1 commit
  3. 07 Apr, 2016 1 commit
    • Geza Lore's avatar
      Make superblock size variable at the frame level. · 454989ff
      Geza Lore authored
      The uncompressed frame header contains a bit to signal whether the
      frame is encoded using 64x64 or 128x128 superblocks. This can vary
      between any 2 frames.
      
      vpxenc gained the --sb-size={64,128,dynamic} option, which allows the
      configuration of the superblock size used (default is dynamic). 64/128
      will force the encoder to always use the specified superblock size.
      Dynamic would enable the encoder to choose the sb size for each
      frame, but this is not implemented yet (dynamic does the same as 128
      for now).
      
      Constraints on tile sizes depend on the superblock size, the following
      is a summary of the current bitstream syntax and semantics:
      
      If both --enable-ext-tile is OFF and --enable-ext-partition is OFF:
           The tile coding in this case is the same as VP9. In particular,
           tiles have a minimum width of 256 pixels and a maximum width of
           4096 pixels. The tile width must be multiples of 64 pixels
           (except for the rightmost tile column). There can be a maximum
           of 64 tile columns and 4 tile rows.
      
      If --enable-ext-tile is OFF and --enable-ext-partition is ON:
           Same constraints as above, except that tile width must be
           multiples of 128 pixels (except for the rightmost tile column).
      
      There is no change in the bitstream syntax used for coding the tile
      configuration if --enable-ext-tile is OFF.
      
      If --enable-ext-tile is ON and --enable-ext-partition is ON:
           This is the new large scale tile coding configuration. The
           minimum/maximum tile width and height are 64/4096 pixels. Tile
           width and height must be multiples of 64 pixels. The uncompressed
           header contains two 6 bit fields that hold the tile width/heigh
           in units of 64 pixels. The maximum number of tile rows/columns
           is only limited by the maximum frame size of 65536x65536 pixels
           that can be coded in the bitstream. This yields a maximum of
           1024x1024 tile rows and columns (of 64x64 tiles in a 65536x65536
           frame).
      
      If both --enable-ext-tile is ON and --enable-ext-partition is ON:
           Same applies as above, except that in the bitstream the 2 fields
           containing the tile width/height are in units of the superblock
           size, and the superblock size itself is also coded in the bitstream.
           If the uncompressed header signals the use of 64x64 superblocks,
           then the tile width/height fields are 6 bits wide and are in units
           of 64 pixels. If the uncompressed header signals the use of 128x128
           superblocks, then the tile width/height fields are 5 bits wide and
           are in units of 128 pixels.
      
      The above is a summary of the bitstream. The user interface to vpxenc
      (and the equivalent encoder API) behaves a follows:
      
      If --enable-ext-tile is OFF:
           No change in the user interface. --tile-columns and --tile-rows
           specify the base 2 logarithm of the desired number of tile columns
           and tile rows. The actual number of tile rows and tile columns,
           and the particular tile width and tile height are computed by the
           codec ensuring all of the above constraints are respected.
      
      If --enable-ext-tile is ON, but --enable-ext-partition is OFF:
           No change in the user interface. --tile-columns and --tile-rows
           specify the WIDTH and HEIGHT of the tiles in unit of 64 pixels.
           The valid values are in the range [1, 64] (which corresponds to
           [64, 4096] pixels in increments of 64.
      
      If both --enable-ext-tile is ON and --enable-ext-partition is ON:
           If --sb-size=64 (default):
               The user interface is the same as in the previous point.
               --tile-columns and --tile-rows specify tile WIDTH and HEIGHT,
               in units of 64 pixels, in the range [1, 64] (which corresponds
               to [64, 4096] pixels in increments of 64).
           If --sb-size=128 or --sb-size=dynamic:
               --tile-columns and --tile-rows specify tile WIDTH and HEIGHT,
               in units of 128 pixels in the range [1, 32] (which corresponds
               to [128, 4096] pixels in increments of 128).
      
      Change-Id: Idc9beee1ad12ff1634e83671985d14c680f9179a
      454989ff
  4. 31 Mar, 2016 1 commit
    • Geza Lore's avatar
      Rename MI_BLOCK_SIZE and MI_MASK macros. · 511da8cb
      Geza Lore authored
      Rename MI_BLOCK_SIZE.* -> MAX_MIB_SIZE.* (MIB is for MI Block).
      Rename MI_MASK.* -> MAX_MIB_MASK.*
      
      There are no functional changes.
      
      This is in preparation for coding the superblock size at the frame
      level, which will require some of these constants to become variables.
      The new names better reflect future semantics, and hence make the code
      clearer.
      
      Change-Id: Iee08d97554cf4cc16a5dc166a3ffd1ab91529992
      511da8cb
  5. 30 Mar, 2016 1 commit
    • Geza Lore's avatar
      Extend superblock size fo 128x128 pixels. · 552d5cd7
      Geza Lore authored
      If --enable-ext-partition is used at build time, the superblock size
      (sometimes also referred to as coding unit (CU) size) is extended to
      128x128 pixels.
      
      Change-Id: Ie09cec6b7e8d765b7555ff5d80974aab60803f3a
      552d5cd7
  6. 16 Mar, 2016 1 commit
    • hui su's avatar
      Add "entropy" experiment · 83b47af1
      hui su authored
      This patch added two features to improve entropy coding efficiency
      for coefficient tokens.
      
      1. Choose 1 of 4 default probability tables based on q-index for
      key-frames.
      It is ported from nextgen branch:
      https://chromium-review.googlesource.com/#/c/280586/
      
      2. Do backward update after each superblock (64X64) row using
      subframe token counts.
      
      Coding gain: 0.1% on lowres; 0.42% on midres; 0.36% on hdres.
      Much larger gain for key-frames: 2.6%, 2.3%, 1.7%.
      
      Design doc: go/huisu-entropy
      
      Change-Id: Ia3b6a615636be09247d70e4c520405637561532b
      83b47af1
  7. 15 Mar, 2016 1 commit
    • Angie Chiang's avatar
      remove filter_cache · b6fef124
      Angie Chiang authored
      PSNR test
              lowres  hdres
      lowbd   -0.013  0.067
      highbd  -0.044  0.039
      
      Change-Id: Iefdb1e966bd004b2027456778185b675e8fb9b81
      b6fef124
  8. 26 Feb, 2016 1 commit
    • Geza Lore's avatar
      Port interintra experiment from nextgen. · 7ded038a
      Geza Lore authored
      The interintra experiment, which combines an inter prediction and an
      inter prediction have been ported from the nextgen branch. The
      experiment is merged into ext_inter, so there is no separate configure
      option to enable it.
      
      Change-Id: I0cc20cefd29e9b77ab7bbbb709abc11512320325
      7ded038a
  9. 20 Feb, 2016 1 commit
  10. 11 Feb, 2016 1 commit
    • Alex Converse's avatar
      Port switch to 9-bit rate cost to vp10. · b3ad8128
      Alex Converse authored
      Brings the following commits to vp10:
      269428e3 Tie the bit cost scale to a define.
      d13385ce Switch to 9-bit rate cost constants built on a 256 probability denominator.
      ad43a738 Fix a signed overflow in vp9 motion cost.
      1c9b0918 Fix some interger overflow errors
      fac947df Restore previous motion search bit-error scale.
      
      Change-Id: I598ba7ee7efcde18439c31dfa96b86cbf297a580
      b3ad8128
  11. 22 Jan, 2016 1 commit
    • Yue Chen's avatar
      Adding new compound modes to EXT_INTER experiment · 968bbc7b
      Yue Chen authored
      Combinations of different mv modes for two reference frames
      are allowed in compound inter modes. 9 options are enabled,
      including NEAREST_NEARESTMV, NEAREST_NEARMV, NEAR_NEARESTMV,
      NEAREST_NEWMV, NEW_NEARESTMV, NEAR_NEWMV, NEW_NEARMV, ZERO_ZEROMV,
      and NEW_NEWMV.
      This experiment is mostly deported from the nextgen branch.
      It is made compatible with other experiments
      
      Coding gain of EXT_INTER(derflr/hevcmr/hevchd): 0.533%/0.728%/0.639%
      
      Change-Id: Id47e97284e6481b186870afbad33204b7a33dbb0
      968bbc7b
  12. 21 Jan, 2016 1 commit
    • Debargha Mukherjee's avatar
      Loop restoration filter · 84ca7a9f
      Debargha Mukherjee authored
      Current implementation is a bilateral filter whose
      parameters are transmitted in the bitstream.
      
      derflr: -0.647% BDRATE
      hevcmr: -0.794% BDRATE
      
      This is a prelimary patch. Various other variations are to
      be investigated next, that will hopefully be less expensive
      on the decoder side.
      
      Change-Id: I50634ae8f5014ad0bf7432306348908a349d81e1
      84ca7a9f
  13. 15 Jan, 2016 1 commit
    • Yue Chen's avatar
      EXT_INTER experiment · 1ac85879
      Yue Chen authored
      NEW2MV is enabled, representing a new motion vector predicted from
      NEARMV. It is mostly ported from nextgen, where it was named
      NEW_INTER.
      A few fixes are done for sub8x8 RDO to correct some misused
      mv references in the original patch.
      A 'bug-fix' for encoding complexity is done, reducing the additional
      encoding time from 50% to 20%. In sub8x8 case, the old patch
      did motion search for every interpolation filter (vp9 only
      searches once). This fix also slightly improves the coding gain.
      This experiment has been made compatible with REF_MV and EXT_REFS.
      
      Coding gain (derflr/hevcmr/hevchd): 0.267%/0.542%/0.257%
      
      Change-Id: I9a94c5f292e7454492a877f65072e8aedba087d4
      1ac85879
  14. 21 Nov, 2015 1 commit
    • Zoe Liu's avatar
      Added 3 more reference frames for inter prediction. · 3ec1601e
      Zoe Liu authored
      Under the experiment of EXT_REFS: LAST2_FRAME, LAST3_FRAME, and
      LAST4_FRAME.
      
      Coding efficiency: derflr +1.601%; hevchr +1.895%
      Speed: Encoder slowed down by ~75%
      
      Change-Id: Ifeee5f049c2c1f7cb29bc897622ef88897082ecf
      3ec1601e
  15. 09 Nov, 2015 1 commit
    • Johann's avatar
      Release v1.5.0 · cbecf57f
      Johann authored
      Javan Whistling Duck release.
      
      Change-Id: If44c9ca16a8188b68759325fbacc771365cb4af8
      cbecf57f
  16. 13 Aug, 2015 2 commits
  17. 12 Aug, 2015 2 commits
  18. 27 Jul, 2015 1 commit
    • Yunqing Wang's avatar
      Remove tx_select_threshes · b2446fb6
      Yunqing Wang authored
      Removed unused tx_select_threshes and tx_select_diff.
      
      Change-Id: I5e9e7ad170056efe14b5f071e94d0c5a36e4a34c
      b2446fb6
  19. 15 May, 2015 1 commit
  20. 07 Mar, 2015 1 commit
  21. 04 Mar, 2015 1 commit
    • Adrian Grange's avatar
      Make encoder buffer allocation dynamic · 3807dd82
      Adrian Grange authored
      Frame buffers are now allocated dynamically on-demand.
      
      Entries in the reference frame map, cm->ref_frame_map,
      may now be set to -1 (INVALID_IDX) to indicate that
      there is not a valid reference buffer in that "slot".
      
      All slots in the reference frame map are now initialized
      to the empty state (-1) and each buffer is initialized
      to have a reference count of 0.
      
      Change-Id: Id1afe98de98db4ae8b2dfefed7889c3b28c68582
      3807dd82
  22. 25 Dec, 2014 1 commit
    • Jingning Han's avatar
      Enable sub8x8 inter block search for RTC coding mode · dad89d5c
      Jingning Han authored
      This commit enables sub8x8 inter block coding for RTC mode. The
      use of sub8x8 blocks can be turned on by allowing
      choose_partitioning function to select 4x4/4x8/8x4 block sizes.
      
      Change-Id: Ifbf1fb3888fe4c094fc85158ac3aa89867d8494a
      dad89d5c
  23. 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
      edbd61e1
  24. 20 Nov, 2014 2 commits
    • Yunqing Wang's avatar
      vp9_ethread: move filter_cache out of RD_OPT struct · 379334c2
      Yunqing Wang authored
      Similar to mask_filter, the filter_cache in RD_OPT struct can be
      moved out, and declared as a local variable since it is only
      used in pick_inter_mode functions.
      
      Change-Id: I412b99cca82bade07ac912064ec03dd1de6b2c17
      379334c2
    • Yunqing Wang's avatar
      vp9_ethread: change mask_filter to a local variable · b0efddd8
      Yunqing Wang authored
      The mask_filter in RD_OPT struct is used to record rd result in
      filter decision. It is only used in pick_inter_mode functions,
      and is removed from the struct and declared as a local variable.
      
      Change-Id: I3c95c8632ba7241591ce00ef2ef5677b5e297d7b
      b0efddd8
  25. 15 Nov, 2014 2 commits
  26. 30 Oct, 2014 1 commit
  27. 29 Oct, 2014 1 commit
    • Jingning Han's avatar
      Enable mode search threshold update in non-RD coding mode · 9349a28e
      Jingning Han authored
      Adaptively adjust the mode thresholds after each mode search round
      to skip checking less likely selected modes. Local tests indicate
      5% - 10% speed-up in speed -5 and -6. Average coding performance
      loss is -1.055%.
      
      speed -5
      vidyo1 720p 1000 kbps
      16533 b/f, 40.851 dB, 12607 ms -> 16556 b/f, 40.796 dB, 11831 ms
      
      nik 720p 1000 kbps
      33229 b/f, 39.127 dB, 11468 ms -> 33235 b/f, 39.131 dB, 10919 ms
      
      speed -6
      vidyo1 720p 1000 kbps
      16549 b/f, 40.268 dB, 10138 ms -> 16538 b/f, 40.212 dB, 8456 ms
      
      nik 720p 1000 kbps
      33271 b/f, 38.433 dB,  7886 ms -> 33279 b/f, 38.416 dB, 7843 ms
      
      Change-Id: I2c2963f1ce4ed9c1cf233b5b2c880b682e1c1e8b
      9349a28e
  28. 15 Oct, 2014 1 commit
  29. 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
      811cef97
  30. 25 Sep, 2014 1 commit
  31. 22 Sep, 2014 1 commit
    • Jingning Han's avatar
      Adaptive mode search scheduling · eee904c9
      Jingning Han authored
      This commit enables an adaptive mode search order scheduling scheme
      in the rate-distortion optimization. It changes the compression
      performance by -0.433% and -0.420% for derf and stdhd respectively.
      It provides speed improvement for speed 3:
      
      bus CIF 1000 kbps
      24590 b/f, 35.513 dB, 7864 ms ->
      24696 b/f, 35.491 dB, 7408 ms (6% speed-up)
      
      stockholm 720p 1000 kbps
      8983 b/f, 35.078 dB, 65698 ms ->
      8962 b/f, 35.054 dB, 60298 ms (8%)
      
      old_town_cross 720p 1000 kbps
      11804 b/f, 35.666 dB, 62492 ms ->
      11778 b/f, 35.609 dB, 56040 ms (10%)
      
      blue_sky 1080p 1500 kbps
      57173 b/f, 36.179 dB, 77879 ms ->
      57199 b/f, 36.131 dB, 69821 ms (10%)
      
      pedestrian_area 1080p 2000 kbps
      74241 b/f, 41.105 dB, 144031 ms ->
      74271 b/f, 41.091 dB, 133614 ms (8%)
      
      Change-Id: Iaad28cbc99399030fc5f9951eb5aa7fa633f320e
      eee904c9
  32. 02 Jul, 2014 2 commits
    • Alex Converse's avatar
      Cleanup vp9_rd. · 15123db7
      Alex Converse authored
      Change-Id: I39a37335ba5b3a969d328afb1f425ddb2cf7ddda
      15123db7
    • Alex Converse's avatar
      Split vp9_rdopt into vp9_rdopt and vp9_rd. · 03c276ea
      Alex Converse authored
      vp9_rdopt is for making rd optimal mode decisions. vp9_rd is for all
      other rd related routines. Anything used outside of making an rd optimal
      decision belongs in rd.
      
      Change-Id: I772a3073f7588bdf139f551fb9810b6864d8e64b
      03c276ea
  33. 29 Jun, 2014 1 commit
  34. 24 Jun, 2014 1 commit
  35. 20 Jun, 2014 1 commit