1. 14 Apr, 2017 23 commits
    • Debargha Mukherjee's avatar
      Reduce array sizes for Wiener update steps · 6ae588f6
      Debargha Mukherjee authored
      Change-Id: Iff0cb1d492c7a8c2035b9bd752b1d00260135672
      6ae588f6
    • Timothy B. Terriberry's avatar
      pvq: Remove non-dyadic CDF initialization. · 5b4a7264
      Timothy B. Terriberry authored
      This was still being used for CDFs whose size might not match the
      declared array size. We replace it with an intialization macro
      intended explicitly for this purpose.
      
      Change-Id: I65d9a3c871e1d1bdd906f20ff3a264f58d8e5620
      5b4a7264
    • Timothy B. Terriberry's avatar
      ec_smallmul: Simplify binary read/write. · d5b89d0d
      Timothy B. Terriberry authored
      This should be the same number of operations as the non-ec_smallmul
      version (though ideally we'd use the real 15-bit probability
      natively).
      
      Encoder output should not change, and all streams should remain
      decodable without decoder changes.
      
      Change-Id: I2998a77a02f566cd0c82c415395637acf49b5a97
      d5b89d0d
    • Timothy B. Terriberry's avatar
      daala_ec: Convert the decoder to use iCDFs · ead52876
      Timothy B. Terriberry authored
      This only changes the internal coding engine. We convert CDFs into
      iCDFs at the "bool" reader <-> daala_ec boundary.
      
      Decoder output should not change.
      
      Change-Id: I483dfe3e5588d2038c3c7ec4cd5ba62d6699b920
      ead52876
    • Timothy B. Terriberry's avatar
      daala_ec: Invert the internal state of the decoder · 881f109b
      Timothy B. Terriberry authored
      This removes one subtraction from the CDF search loop (reducing the
      dependency chain for reading from the CDF) at the cost of one
      increment and decrement during renormalization (easily absorbed by
      the reorder buffer).
      
      There should be no change in decoded output.
      
      Change-Id: Ia7905bb8ca7c5d4ab73f23ccc61bcd3432349aa2
      881f109b
    • Timothy B. Terriberry's avatar
      daala_ec: Convert the encoder to use iCDFs · 41b4f75b
      Timothy B. Terriberry authored
      This only changes the internal coding engine. We convert CDFs into
      iCDFs at the "bool" writer <-> daala_ec boundary.
      
      Encoder output should not change, and all streams should remain
      decodable without decoder changes.
      
      Change-Id: Id3ac7352926497bf6f7bc371ab9bc76e9a3569d5
      41b4f75b
    • Timothy B. Terriberry's avatar
      daala_ec: Remove non-dyadic functions. · 033e5368
      Timothy B. Terriberry authored
      Encoder output should not change, and all streams should remain
      decodable without decoder changes.
      
      Change-Id: Id1f1b0f2f02c3b46f150a93c451bf48abd0782ca
      033e5368
    • Ryan Lei's avatar
      update parallel_deblocking experiment with more filter tap options · dd6fa06a
      Ryan Lei authored
      this change adds the following filter tap options:
      1. add options to replace 15 tap filter with 9 or 11 tap filter
      2. force chroma plane to only use maximum 7 tap filter
      
      above options are disabled by default
      
      Change-Id: Iab90a613210c1adaf4475976e9ed7e78ac30803b
      dd6fa06a
    • Zoe Liu's avatar
      Adjust encoder rate allocations for ext-refs · c3571bc8
      Zoe Liu authored
      This CL is targeted to improve the objective/subjective quality of the
      "ext-refs" coding tool.
      
      Tuned the frame rate factors as follows:
      
      (1) BRF_UPDATE:
          Decreased from INTER_HIGH (1.5) to GF_ARF_LOW (1.25);
      (2) Both LAST_BIPRED_UPDATE and BIPRED_UPDATE:
          Increased from INTER_LOW (0.80) to INTER_NORMAL (1.00)
      , which is to reduce the bits allocated to the BWEDREF frame whereas
      to increase the bits allocated to the bi-directionally predicted
      frames.
      
      Obtained a coding gain in overall PSNR as follows, compared against
      the original ext-refs:
      
      lowres: BDRate -0.181%
      midres: BDRate -0.090%
      hdres:  BDRate -0.701%
      
      Change-Id: Id001f3b124d833da9f80eba4cdec2ca3f6ba9d82
      c3571bc8
    • Sarah Parker's avatar
      Refactor gm/wm/obmc for cleaner warping interactions · 4c10a3c2
      Sarah Parker authored
      This creates a central function which defines when a
      block should be warped. It also refactors the
      WARPED_MOTION code so that all calls to av1_warp_plane
      happen in the same location.
      
      No change in performance.
      
      Change-Id: Icaf9ec7700d34523809258594bb9843bb2975f46
      4c10a3c2
    • Dake He's avatar
      [optimize-b] Use a greedy search method · 97f56645
      Dake He authored
      The greedy search method improves the BD-rate over the baseline by
      more than 0.2% for lowres test set. Larger gain 0.55% is observed for hdres test set.
      
      [2017.04.06] Cleanup to remove redundant computation. On a local linux
      machine, the greedy method is now faster than the trellis method in
      encoding the first 100 frames of foreman_cif. However, the BD-rate seems
      to become smaller due to the recent changes to the codebase.
      [2017.04.06-2] Style changes to meet the requirements.
      remove "greedy-optimize-b" in configure
      [2017.04.10] Move the changes under the macro USE_GREEDY_OPTIMIZE_B
      [2017.04.11] Adjust rdmult to accommodate CpuSpeedTest
      [2017.04.12] Set USE_GREEDY_OPTIMIZE_B to 0 at the request of debargha@.
      [2017.04.13] Move greedy implementation of optimize_b into a separate
      function with the same name (selected by USE_GREEDY_OPTIMIZE_B, default
      is 0)
      
      Change-Id: Ic15534f8d696d5f02e8f2e3e9f08b52e41e9efd2
      97f56645
    • Sebastien Alaiwan's avatar
      Simplify coefficient range checking · e5728a95
      Sebastien Alaiwan authored
      Deduplicate implementations of check_range, and deduplicate the call
      to aom_read_bit.
      
      Change-Id: I63b023758248717125e4df6d1c382d4c517bae84
      e5728a95
    • Angie Chiang's avatar
      Modify av1_read_tx_type for lv_map exp · a9f9a31c
      Angie Chiang authored
      Change-Id: I422dfd9d7afe9f7baa04a962e19c8a92d5c12eeb
      a9f9a31c
    • Angie Chiang's avatar
      Write/update tx_type per txb in lv_map exp · 1628fccb
      Angie Chiang authored
      Change-Id: I052721017cddd57ff9995e8dd442e4b3436a0b48
      1628fccb
    • Angie Chiang's avatar
      Add av1_update_tx_type_count() · b14b73f9
      Angie Chiang authored
      This will make the code cleaner and lv_map experiment will be able
      to reuse this function.
      
      Change-Id: I885336117daa0090e16f1bb7a0c3e7bb54105410
      b14b73f9
    • Angie Chiang's avatar
      Modify av1_write_tx_type for lv_map experiment · c31ea682
      Angie Chiang authored
      Change-Id: If129748d918995efcc58169d153a0950eeec5efb
      c31ea682
    • Frederic Barbier's avatar
      Fix loop-filter in ALT_INTRA · 550a1175
      Frederic Barbier authored
      Avoid future issues by adding related sanity check on mode_lf_lut size.
      
      Change-Id: I689a90c07ee2b79debf838304cfca0e34783e5bf
      550a1175
    • Jean-Marc Valin's avatar
      Only filter the blocks we need to filter (rather than use threshold=0) · 70f0e5eb
      Jean-Marc Valin authored
      Change-Id: Iddb2103452817e9624a28794cab923f00c3e9924
      70f0e5eb
    • Yaowu Xu's avatar
      Use int16_t for warp parameters · 29f1568e
      Yaowu Xu authored
      This is to fix compiling issues with aom-highbitdepth.
      
      Change-Id: I66ee73e014a028536747e55209f20be81e906267
      29f1568e
    • Tom Finegan's avatar
      Fix cmake build. · de45e15c
      Tom Finegan authored
      Missing a ')' in test.cmake.
      
      Change-Id: I9559692e6643f3c07f68ff67c6cf766d8f15c95c
      de45e15c
    • Tom Finegan's avatar
      Fix CONFIG_HIGHBITDEPTH in cmake. · 6c86ace0
      Tom Finegan authored
      Broken since 9d247355 when aom_dsp/x86/highbd_convolve_avx2.c was
      added to aom_dsp.mk.
      
      Change-Id: Ide6779209a546e1bf84a4997c0cdcf3b2bc2b92b
      6c86ace0
    • Tom Finegan's avatar
      Fix CONFIG_FILTER_INTRA in the cmake build. · 18c66343
      Tom Finegan authored
      Properly guard usage of av1_filter_intra_taps_4 in
      av1/common/x86/filterintra_sse4.c.
      
      Change-Id: I74d589342e4669765d0d4700c329c5f3eced9530
      18c66343
    • Tom Finegan's avatar
      Add mips64 support to the cmake build. · 8b370b6e
      Tom Finegan authored
      Requires use of new cmake toolchain file:
      $ cmake path/to/aom -DCMAKE_TOOLCHAIN_FILE=path/to/aom/build/cmake/toolchains/mips64-linux-gcc.cmake
      
      MSA is supported via addition of -DENABLE_MSA=1. Support for i6400
      and p6600 targets can be enabled by passing -DMIPS_CPU=i6400 and
      -DMIPS_CPU=p6600 respectively.
      
      BUG=https://bugs.chromium.org/p/aomedia/issues/detail?id=76
      
      Change-Id: I7b8949a07e9be63cd6177e4ff4dbc02180f12a60
      8b370b6e
  2. 13 Apr, 2017 13 commits
    • Angie Chiang's avatar
      Add breaking rule in the while loop of read_golomb · f1880e1c
      Angie Chiang authored
      The while loop may become infinite loop due to bitstream error.
      Therefore, we add a breaking rule to avoid that.
      
      Change-Id: I5bcda7dea846e280b59abc97c42baf334bca2603
      f1880e1c
    • Angie Chiang's avatar
      Use max_block_wide/high in av1_write_coeffs_mb · 8d6bc80b
      Angie Chiang authored
      This fix the invalid tx_type error happened when mb_to_right_edge
      is negative
      
      The invalid tx_type error will cause bitstream error and then
      let the decoder hang in the while loop of read_golomb()
      
      Change-Id: Ide6c3497cdd5b69b20b4b093241ed89ccc1b0f00
      8d6bc80b
    • Yue Chen's avatar
      Reduce the bandwidth requirement of sub8x8 chroma obmc · 85c7e906
      Yue Chen authored
      HW does not support < 4x4 prediction. To limit the bandwidth
      requirement, for small blocks, only blend with neighbors from one
      side. If block-size of current plane is 4x4 or 8x4, the above
      neighbor will be skipped. If it is 4x8, the left neighbor (dir = 1)
      will be skipped.
      This change will keep the bandwidth requirement of OBMC not more
      than what is required by normal compound inter modes.
      
      Loss of gain (PSNR-Y/PSNR-Cb/PSNR-Cr/CIEDE2000)
      AWCY HL: 0.05/0.09/0.14/0.04
      AWCY LL: 0.06/0.07/0.10/0.12
      
      Change-Id: I3854afc69c3014da99bde4b19bb726e4c077d59e
      85c7e906
    • Zoe Liu's avatar
      Add compound-singleref (compound mode using single ref) · 5b55c882
      Zoe Liu authored
      This new coding tool is targeted to add new inter compound modes using
      single reference frame - initially NEAREST_NEARMV for single reference
      prediction.
      
      Change-Id: I415d40dc285a46a79680b4da0c3f2e2f3784b688
      5b55c882
    • Tom Finegan's avatar
      Add mips32 support to the cmake build. · d148c963
      Tom Finegan authored
      Requires use of new cmake toolchain file:
      $ cmake path/to/aom -DCMAKE_TOOLCHAIN_FILE=path/to/aom/build/cmake/toolchains/mips32-linux-gcc.cmake
      
      DSPR2 and MSA are supported via addition of -DENABLE_DSPR2=1 and
      -DENABLE_MSA=1 respectively. Note that the latter requires the addition
      of -DMIPS_CPU=p5600.
      
      BUG=https://bugs.chromium.org/p/aomedia/issues/detail?id=76
      
      Change-Id: Idf7d7f2daecf18cc45b834166eaf34ee9f414d49
      d148c963
    • Debargha Mukherjee's avatar
      Adds option to use 1/32 subpel precision for gm/wm · 16056f5b
      Debargha Mukherjee authored
      Adds filters for 1/32 subpel precision for warping.
      To use 1/32 subpel precision make WARPEDPIXEL_PREC_BITS 5.
      By default, WARPEDPIXEL_PREC_BITS is set as 6 in common/mv.h,
      which uses 1/64 subpel precision.
      
      If 1/32 precision is used, BDRATE drops:
      on lowres:
      -1.101 (vs. -1.186% with 1/64) w/warped-motion
      -1.587 (vs. -1.650% with 1/64) w/global-motion
      
      on cam_lowres:
      -2.638 (vs. -2.707% with 1/64) w/warped-motion
      -3.396 (vs. -3.453% with 1/64) w/global-motion
      
      Change-Id: I82fbfddaad9bd9be658fe382401d212833c7ceef
      16056f5b
    • Yi Luo's avatar
      Add EOB threshold calculation for ADAPT_SCAN · cfe0fede
      Yi Luo authored
      Change-Id: I0c58fb5ee2a77ae15f6243b1c645dbe601171e67
      cfe0fede
    • Jingning Han's avatar
      Align frame_context to 16 bytes in TileData · 9f07be16
      Jingning Han authored
      BUG=aomedia:432
      
      Change-Id: Ide94ffbf5ed0f25ac64892f02364b67cefa5fd15
      9f07be16
    • Steinar Midtskogen's avatar
      Avoid invalid parameter combinations in CLPF test · 43edb7b1
      Steinar Midtskogen authored
      Change-Id: I1aaa06846ad409dd83ab50a0fb34c8a7e77e45e7
      43edb7b1
    • Steinar Midtskogen's avatar
      CDEF: Optionally filter 8x8 skip blocks · 7b069a57
      Steinar Midtskogen authored
      Optionaly filter 8x8 skip blocks, but still leave superblocks that are
      completely skipped unchanged.  Use one bit in the dering level to
      signal replacing the signal for dering damping.
      
      This works better with cb4x4 that now is enabled by default.
      
      Low latency, used-cpu=4 change:
         PSNR|PSNR Cb|PSNR Cr|PSNR HVS|   SSIM|MS SSIM|CIEDE 2000
      -0.6260|-0.3263|-0.3797| -0.3574|-0.7072|-0.4828|   -0.6584
      
      Change-Id: I42c4290b52a50779770884fbabb020fdb1034ff7
      7b069a57
    • Steinar Midtskogen's avatar
      Add s8 -> s16 unpack instrinsics · 1b2b739b
      Steinar Midtskogen authored
      Change-Id: Iec22c6442c55a5908d858766ff6dfb8bff69835d
      1b2b739b
    • Jean-Marc Valin's avatar
      Can't skip deringing on threshold=0 because chroma needs direction · 87c24a1d
      Jean-Marc Valin authored
      Change-Id: I7481fe139e1c9454c73948de3d8b8fefaf37e79a
      87c24a1d
    • Sarah Parker's avatar
      Disable neighbor warping for gm + obmc · a036d86f
      Sarah Parker authored
      Adds an option to disable warp when obmc is used with a
      global motion neighbor.
      
      Change in BDRATE on cam_lowres
      gm + obmc enabled: 0.035%
      gm + obmc + wm enabled: -0.005%
      
      Change-Id: I1d6de75c7ead325cec31ed3748b5532f3658d8a7
      a036d86f
  3. 12 Apr, 2017 4 commits
    • Zoe Liu's avatar
      A temporary fix on the RAM issue for upsampled referencing · c670e82f
      Zoe Liu authored
      When ext-refs is on, the encoding of HD videos, e.g. 1080p sequences
      will cause the failure to allocate up-sampled frame buffers. This CL
      temporarily turn off the use of upsampled references when ext-refs is
      on for any video resolution larger than 720 in either dimension. A
      more effective scheme for up-sampled referencing should be later
      considered.
      
      With the fix, the AWCY performance gains of ext-refs, vs baseline are:
      
      PSNR Y
      Average -2.55%
      1080p   -2.81%
      360p    -2.38%
      720p    -3.10%
      
      Change-Id: Ica5e75d82190cd68e64c536503e3559f1cfdbdd1
      c670e82f
    • Sebastien Alaiwan's avatar
      Homogenize configuration option name. · 71e87847
      Sebastien Alaiwan authored
      Rename '--enable-aom-highbitdepth' to '--enable-highbitdepth'
      
      Change-Id: I1de13c3508c30c552532993419d8ace326142ab6
      71e87847
    • Jingning Han's avatar
      Properly release the memory space in encode_frame_to_data_rate() · f6214b96
      Jingning Han authored
      Explicitly release the locally allocated memory space in
      encode_frame_to_data_rate(). This resolves an memory space leak
      issue.
      
      BUG=aomedia:431
      
      Change-Id: I46f4b38b46ed951d42c622e88ce00afc566e7eae
      f6214b96
    • hui su's avatar
      rdopt.c,cosmetics: fix comments for av1_dist_block() · d2f12ba5
      hui su authored
      Change-Id: I7a75947cdc4fcfe5b84ea702fa44ee51d7e406de
      d2f12ba5