1. 18 Feb, 2017 6 commits
    • Steinar Midtskogen's avatar
      Remove ATTRIBUTE_PACKED from InterpFilter which broke something · a0671722
      Steinar Midtskogen authored
      The ATTRIBUTE_PACKED caused something to break in MB_MODE_INFO.
      boundary_info got corrupted and moving InterpFilter around in
      MB_MODE_INFO could cause a segfault or the problems to go away (for
      instance by moving InterpFilter to the end of the struct).  Perhaps
      something in MB_MODE_INFO is sensitive to alignment.  This should be
      investigated further and get fixed or documented, but for now remove
      the attribute.
      
      Change-Id: Ic4326ab98fe784d9b7d2b47d8f086b8429cedee9
      a0671722
    • Jingning Han's avatar
      Remove av1_foreach_transformed_block() function · 475d4198
      Jingning Han authored
      Change-Id: I3fa9d24f2a61dd1b4a234fb1cfea679af06ebdb5
      475d4198
    • Jingning Han's avatar
      Refactor build_inter_predictors_for_planes() · f828d40b
      Jingning Han authored
      Remove redundant table access.
      
      Change-Id: Ib45f9b0bafe2a0c57449e787d60e70d35f19f6c7
      f828d40b
    • Tom Finegan's avatar
      Require explicit request for generic CPU at cmake generation time. · 2e9773f0
      Tom Finegan authored
      x86 and x86_64 support is now working for most platforms. Remove the
      automatic fallback to a generic unoptimized build, and require users
      to explicitly request generic to build a generic library and tools.
      
      BUG=https://bugs.chromium.org/p/aomedia/issues/detail?id=76
      
      Change-Id: I7b36394dc28aa9b729d2b2504146d02f017c9a0b
      2e9773f0
    • Nathan E. Egge's avatar
      Remove tx_size_prob from compressed header with EC_ADAPT. · b353a8ed
      Nathan E. Egge authored
      When run with --enable-ec_adapt, forward updates to the tx_size_prob
       array will not be made.
      
      objective-1-fast:
      
      master-ec_adapt-e568e6f0@2017-02-17T15:30:27.109Z ->
       tx_size-ec_adapt@2017-02-17T15:31:49.504Z
      
         PSNR | PSNR Cb | PSNR Cr | PSNR HVS |    SSIM | MS SSIM | CIEDE 2000
      -0.0113 | -0.0112 | -0.0113 |  -0.0114 | -0.0114 | -0.0114 |    -0.0112
      
      master-ec_adapt-robust-e568e6f0@2017-02-17T20:29:45.315Z ->
       tx_size-ec_adapt-robust@2017-02-17T20:33:06.405Z
      
         PSNR | PSNR Cb | PSNR Cr | PSNR HVS |    SSIM | MS SSIM | CIEDE 2000
      -0.0244 | -0.0243 | -0.0243 |  -0.0245 | -0.0245 | -0.0245 |    -0.0243
      
      Change-Id: I5873c5d14e3f3868997775f85fa743d2d55d81b7
      b353a8ed
    • hui su's avatar
      ext-intra and filter-intra: use switchable transform type · 5e76162d
      hui su authored
      When ext-intra or filter-intra is enabled, the transform type was inferred from
      prediction mode as in VP9. Should use mbmi->tx_type instead.
      
      Change-Id: I6a8e356285a8461d67e69d38df40541d34bade04
      5e76162d
  2. 17 Feb, 2017 11 commits
    • Urvang Joshi's avatar
      InterpFilter type: Create an enum. · a9b174bd
      Urvang Joshi authored
      We use a single enum instead of multiple #defines.
      - Ensures better type checking
      - Enum values are generated implicitly, and hard-coded #defines are not
      required.
      - We use ATTRIBUTE_PACKED to indicate that the enum should still use the
      smallest integral type.
      
      Change-Id: I7532428da31744d3441b363bd932a7f233ee7ab5
      a9b174bd
    • Yaowu Xu's avatar
      Change to use correct size · 0a79a1b1
      Yaowu Xu authored
      Replace obselete size "4" with correct one "tile_size_bytes". This
      fixes a decoder crash.
      
      BUG=aomedia:352
      
      Change-Id: I5b1c606a4d5be946acc68b3cfe0d0603a5591c44
      0a79a1b1
    • Debargha Mukherjee's avatar
      Replace division in self-guided filter · 4be12628
      Debargha Mukherjee authored
      Replaces division with multiplication in self-guided
      filter.
      
      The guided filter requires computation of:
      n^2.s^2/(n^2.s^2 + n^2.e).
      This is now implemented by computation of n^2.s^2/n^2.e followed
      by using a lookup table for the function f(x) = x/(x+1).
      To compute n^2.s^2/n^2.e, we use an integer multiplication based
      implementation which becomes feasible since n^2.e can only
      take a few values and their corresponding multipliers can be
      pre-computed.
      There is also another divison by n, that is also integerized.
      
      Change-Id: Id7b81bbafead0b8f04a1853ec69b9dec423bb66a
      4be12628
    • Debargha Mukherjee's avatar
      Support trapezoidal models for global motion · 5dfa9300
      Debargha Mukherjee authored
      Adds functinoality for least-squares, RANSAC as well as encoding and
      decoding with new constrained homographies that warp blocks to horizontal
      and/or vertical trapezoids. This is for future experimentation. None
      of the models are actually enabled in the code.
      
      Change-Id: I1936018c6b11587d6fd83c3a2c63548cb641b33f
      5dfa9300
    • Thomas Daede's avatar
      Avoid unused variable warnings when CLPF and dering are enabled. · 15dbc1a1
      Thomas Daede authored
      Change-Id: I7909756e6a7d2da817b3354d6a8cb341cdc5bf98
      15dbc1a1
    • Nathan E. Egge's avatar
      Use tx_size_cdf with CONFIG_EC_MULTISYMBOL. · 2ea519e5
      Nathan E. Egge authored
      This commit produces a bit-exact bitstream because prior calls to code
       the tx_size using aom_write_tree() would automatically convert the
       aom_tree_index on the fly to a CDF.
      The tx_size_cdf[]'s are now computed once per frame.
      Based on recent tests, this patch reduces decode time by 4%.
      
      Change-Id: I920dbf036b8a9574ea6e65ae5f9c43eef1c3f864
      2ea519e5
    • Yushin Cho's avatar
      Remove PVQ_CHROMA_RD codes · 5c207296
      Yushin Cho authored
      Which was a workaround to balance the quality between
      luma and chroma when PVQ is enabled, by
      1) skipping PVQ DC RDO for chroma and
      2) using smaller lambda value (x0.5) for intra prediction of chroma,
      intended to spend more bits and thus improve quality for chroma.
      
      The change in metric for 5 frames of objective-1-fast is:
      PSNR  PSNR-HVS  SSIM  CIEDE-2000  PSNR Cb PSNR Cr  MS-SSIM
      -1.45 -1.54     -1.46 4.62        13.71   14.87     -1.47
      
      For still images (subset1)
      PSNR  PSNR-HVS  SSIM  CIEDE-2000  PSNR Cb PSNR Cr  MS-SSIM VMAF
      -1.52 -1.54     -1.60 2.56        11.92   12.17     -1.52  -1.66
      
      Change-Id: I31c4d7a7de2939f6004c112649f7303f0e944156
      5c207296
    • Jean-Marc Valin's avatar
      Disabling second dering filter when CLPF is enabled. · d9ad054e
      Jean-Marc Valin authored
      Low-latency:
      masterfix-ll-dering+clpf@2017-02-14T02:31:30.023Z -> masterfix-ll-dering-nosecond@2017-02-16T21:30:38.937Z
         PSNR | PSNR Cb | PSNR Cr | PSNR HVS |    SSIM | MS SSIM | CIEDE 2000
      -0.1151 | -0.2440 | -0.1287 |  -0.0454 | -0.1130 | -0.0632 |    -0.1206
      
      High-latency:
      masterfix-dering-clpf@2017-02-16T21:28:58.511Z -> dering-nosecond+clpf@2017-02-15T23:46:08.501Z
         PSNR | PSNR Cb | PSNR Cr | PSNR HVS |    SSIM | MS SSIM | CIEDE 2000
      -0.0340 | -0.0883 | -0.0130 |  -0.0104 | -0.0026 |  0.0245 |     0.0215
      
      Change-Id: I3e8f34b1971d3ec280c5695a6fcfb7d7b270b2d9
      d9ad054e
    • Angie Chiang's avatar
      Use 8tap sharp filter for UV plane · 4d4cbc9b
      Angie Chiang authored
      So far the overall performance drop by
      lowres: 0.027%
      midres: 0.049%
      hdres: roughly 0.07%
      
      Change-Id: If3dc7619d91cb97b6d494b33f36112af45efcd8f
      4d4cbc9b
    • Urvang Joshi's avatar
      aomenc: Don't print warning in quiet mode. · 51c048eb
      Urvang Joshi authored
      Change-Id: I8a23fcf0839c2c2b1d638c3e0fc9d4e5a09f1269
      51c048eb
    • Rostislav Pehlivanov's avatar
      Implement a new rate control system · 002e7b7a
      Rostislav Pehlivanov authored
      This commit implements a new rate control system which was ported from
      Daala's rate control system (which was based off of Theora's rate
      control system) to the encoder. Its aim is to address the weaknesses of
      the current rate control system and eventually serve as its replacement.
      
      This is still work in progress. So far this commit only implements
      support for single pass encoding for constant quality and bitrate
      targeting.
      Additional commits which implement two-pass support and the rest to
      match the feature set of the current rate control system are coming
      soon.
      
      The rate control system hasn't been fully tuned (and will likely need
      additional tuning as the encoder's development progresses) and does
      contain some "hacks", to convert the quality to a quantizer value
      (empirical) and to tweak the quantizer in between golden frames (which
      uses some code from the current rate control system as well as code
      which attempts to model what that code does), the latter of which is
      only in the constant quality codepath.
      
      Bitrate targeting works much better than the current rate control
      system's targeting and will actually closely match the rate specified by
      the user without the current rate control system's bursty behaviour.
      
      Change-Id: I588fbfd2e80a3d21ce7176903115d6a96ef1700a
      002e7b7a
  3. 16 Feb, 2017 10 commits
    • Thomas Davies's avatar
      NEW_TOKENSET: modify trellis and coeff costs. · ed8e2d2a
      Thomas Davies authored
      Since token coding has changed the relationship
      between EOB values and non-zero values, coeff costs
      and trellis quant need to change to be more accurate.
      
      Change-Id: I27ef400e8290db4c5faa9c21a253575eea7955c4
      ed8e2d2a
    • Joe Young's avatar
      [ext-intra] fix bug in sample interpolation when dy < 0 · e568e6f0
      Joe Young authored
      When the "dy" variable is between -1 and 0 (base2 == -1)
      we should interpolate between the upper-left(-1,-1) and left(-1,0)
      samples, instead of just taking the left sample.
      
      Coding gain improves a bit with this change.
      
      BUG=aomedia:357
      
      Change-Id: If520f71b22115e79120499c21f8d6925c1fa24be
      e568e6f0
    • Yaowu Xu's avatar
      unify the way to count tx_size in encode&decode · 7a08fe59
      Yaowu Xu authored
      This fixes a enc/dec mismatch.
      BUG=aomedia:354
      
      Change-Id: I727c27a412c21695eb3c084f8dd688163615efe3
      7a08fe59
    • Tom Finegan's avatar
      Make 32 bit builds via cmake possible on macos. · f769c4e1
      Tom Finegan authored
      Working with ninja, make, and xcode generators using the
      following args at cmake generation time:
      -DAOM_TARGET_CPU=x86 -DCMAKE_OSX_ARCHITECTURES=i386 -DCONFIG_PIC=1
      
      BUG=https://bugs.chromium.org/p/aomedia/issues/detail?id=76
      
      Change-Id: I830db21f7458417cb8048818e5681a78698a6068
      f769c4e1
    • Nathan E. Egge's avatar
      Rename aom_read_tree_bits() to aom_read_tree_as_bits(). · c4e9e473
      Nathan E. Egge authored
      Rename the aom_read_tree_bits() function to match aom_read_tree_as_cdf().
      
      Change-Id: I779f544615b1c19bb1f781c1f7a0f59dda7bd466
      c4e9e473
    • Nathan E. Egge's avatar
      Allow EC_MULTISYMBOL to be disabled with DAALA_EC. · 912672b6
      Nathan E. Egge authored
      It is now possible to use daala_ec without ec_multisymbol by running:
       ./configure --enable-experimental --disable-ec_mulitsymbol.
      
      Change-Id: I55a0473b887846f01ef832059cdbe31aebebce05
      912672b6
    • Thomas Davies's avatar
      EC_ADAPT: do faster adaptation initially. · 27713d93
      Thomas Davies authored
      Symbol count is maintained in the position after the
      last CDF value.
      
      Change-Id: I1882e48bfb1404ea7b83ef410298484939601796
      27713d93
    • Nathan E. Egge's avatar
      Fix DAALA_EC when EC_MULTISYMBOL disabled. · 0f11c78d
      Nathan E. Egge authored
      When DAALA_EC is enabled, calls to aom_read_tree() and aom_write_tree()
       would automatically convert the aom_tree_index and aom_prob into a CDF
       and call the aom_read_cdf() or aom_write_cdf(), which causes an
       error if DAALA_EC is enabled without EC_MULTISYMBOL.
      This patch moves the conversion functions from daalaboolreader.h and
       daalaboolwriter.h into bitreader.h and bitwriter.h respectively, and
       only calls the conversion functions if EC_MULTISYMBOL is enabled.
      This allows DAALA_EC to be enabled without EC_MULTISYMBOL and is a
       bitstream change when both ANS and EC_MULTISYMBOL are enabled as calls
       to read and write trees will automatically be converted into calls that
       read and write cdfs.
      
      Change-Id: Id2f9aa9b5113292998cadfe69e4ba547324643ac
      0f11c78d
    • clang-format's avatar
      apply clang-format · 55ce9e0f
      clang-format authored
      Change-Id: Ib1b5dde5d4c6479c968cd7d7a4a1d01abae1fcf6
      55ce9e0f
    • James Zern's avatar
      .clang-format: update to 3.9.1 · c107183d
      James Zern authored
      Change-Id: Ia3b00907f98330ecaf28832b2c0a68e42cf93d6e
      c107183d
  4. 15 Feb, 2017 5 commits
    • Zoe Liu's avatar
      Make convolve_round compiled without dual_filter · 1b672d3f
      Zoe Liu authored
      Change-Id: I532e46b3947ca3f5898a2da61fb6b82c2f4bd5c6
      1b672d3f
    • Tom Finegan's avatar
      Add MSVC win32 support to the cmake build. · 1ba9bd89
      Tom Finegan authored
      BUG=https://bugs.chromium.org/p/aomedia/issues/detail?id=76
      
      Change-Id: I3179fe9ec45ff1aab06cc8828d2bb34c141cca55
      1ba9bd89
    • Tom Finegan's avatar
      Correct cmake intrinsic flag translation. · 0b3c9052
      Tom Finegan authored
      MSVC only. Use the AVX/AVX2 flags only for AVX and AVX2. Ignore
      the SSE flags since they're not needed with MSVC.
      
      BUG=https://bugs.chromium.org/p/aomedia/issues/detail?id=76
      
      Change-Id: I0f3ac40ffb1f9c53a16272f0781df176317732f6
      0b3c9052
    • David Barker's avatar
      Speed up global motion determination · 15338d5f
      David Barker authored
      When global-motion is enabled, a considerable amount
      of encoder time is spent in the functions in corner_match.c.
      This patch optimizes those functions to be 3.5-4x as fast,
      leading to an end-to-end encoder speed improvement
      (on 20 frames of tempete_cif.y4m) of:
      
       200kbps: ~26% faster
       800kbps: ~19% faster
      2800kbps: ~12% faster
      
      Change-Id: I04d3f87484c36c41eb5a1e86e814f2accbe86297
      15338d5f
    • Nathan E. Egge's avatar
      Add flag for RAWBITS to use raw bits with DAALA_EC. · 24f1a904
      Nathan E. Egge authored
      The use of raw bits is now disabled by default and can be turned on with:
       ./configure --enable-experimental --enable-rawbits
      This commit has a negligible impact on rate.
      
      subset1:
      
      master@2017-02-14T18:57:22.282Z -> no_rawbits@2017-02-14T18:57:41.977Z
      
         PSNR | PSNR Cb | PSNR Cr | PSNR HVS |    SSIM | MS SSIM | CIEDE 2000
      -0.0000 | -0.0000 | -0.0000 |  -0.0000 | -0.0000 | -0.0000 |    -0.0000
      
      objective-1-fast:
      
      master@2017-02-14T18:52:48.425Z -> no_rawbits@2017-02-14T18:52:04.489Z
      
         PSNR | PSNR Cb | PSNR Cr | PSNR HVS |    SSIM | MS SSIM | CIEDE 2000
      -0.0001 | -0.0001 | -0.0001 |  -0.0001 | -0.0001 | -0.0001 |    -0.0001
      
      Change-Id: I01e79e9f314565a64b224ca41047f7bd7fe33f70
      24f1a904
  5. 14 Feb, 2017 8 commits