1. 08 Mar, 2017 11 commits
    • Yaowu Xu's avatar
      localize the use of CONFIG_DEPENDENT_HORZTILES · 531d6afd
      Yaowu Xu authored
      This commit changes is_inside() function to reduce the code polution
      of CONFIG_DEPENDENT_HORZTILES.
      
      Change-Id: Ic065cc337e0246379d87966a49ddeb48b975c5be
      531d6afd
    • Yaowu Xu's avatar
      Fix an asan failure · 27d158b2
      Yaowu Xu authored
      SIMD convovle functions, such as filter_horiz_v4p_ssse3(), assume that
      10-tap filters are defined using 12 taps with both end taps being 0.
      
      BUG=aomedia:380
      
      Change-Id: Id8a87ae8a1330bed0452441ab8345276857220af
      27d158b2
    • Jingning Han's avatar
      Fix high bd quantization for cb4x4 mode · daf03ee8
      Jingning Han authored
      Use c functions for 2x2 transform block quantization. This fixes
      the enc/dec mismatch issue in cb4x4 mode when high bit-depth is
      turned on.
      
      BUG=aomedia:364
      
      Change-Id: I532db14de9795f04bf296cd9a12c80350350c112
      daf03ee8
    • David Barker's avatar
      Make encoder use vectorized self-guided filter · 506eb723
      David Barker authored
      By rearranging the code in restoration.c, we can allow the
      encoder to use the SSE4.1 version of the self-guided filter
      while picking the loop-restoration filter.
      
      This also helps us prepare for adding a highbitdepth SSE4.1
      version of the self-guided filter.
      
      No effect on encoder output, but gives an end-to-end speedup
      of 1-2%.
      
      Change-Id: Id17ba4a0963ddce9f70a7cae666e212e138d5f2c
      506eb723
    • David Barker's avatar
      Fix a bug in the C selfguided filter · cff43bb2
      David Barker authored
      Patch https://aomedia-review.googlesource.com/c/8321/ introduced
      a bug in the C version of the self-guided filter in the case where
      w = 384 and h > 368 or w > 368 and h = 384. This was due to forgetting
      to adjust the offset between A and B in the C code.
      
      This patch sets the offset correctly, resolving this bug.
      
      Change-Id: I6bdf11aa76c37d0ecae02788b262e7a2e0a11a6e
      cff43bb2
    • David Barker's avatar
      Handle non-multiple-of-4 widths in SSE4.1 self-guided filter · 5765fad5
      David Barker authored
      Adjust the vectorized filter so that it can handle tile widths
      which are not a multiple of 4, so we do not have to fall back
      to the C version of the filter.
      
      Negligible speed impact for tiles with widths which are multiples
      of 4, and greatly improves speed on tiles with non-multiple-of-4
      widths.
      
      Change-Id: Iae9d14f812c52c6f66910d27da1d8e98930df7ba
      5765fad5
    • Sarah Parker's avatar
      Fix compile warnings for ext-tx + ec-adapt · e2e591c7
      Sarah Parker authored
      Change-Id: If45e46d6459cddecca3d11b64fc73ff26c291a13
      e2e591c7
    • Alex Converse's avatar
      loop_restoration: Prevent some wild memory access · 1511ea10
      Alex Converse authored
      On recode frames the encoder will attempt to serialize the bitstream
      before choosing loop filter parameters to get a rough size estimate.
      This can result in wild reads in encode restoration if leftover values
      from the previous frame aren't available.
      
      Even with a realloc instead of free-ing and reallocing all the data,
      wild reads are possible on frame size changes.
      
      Change-Id: I9956d9e11c6ed61999563436051c2fe469718538
      1511ea10
    • Fergus Simpson's avatar
      rdopt: fix wrong #endif · 0b96b479
      Fergus Simpson authored
      The comment after the affected #endif was incorrect. This patch updates
      it so that it reflects the condition that it ends.
      
      Change-Id: Ib5c39a9444e72b2582301d9e4b03d3c56f9cf304
      0b96b479
    • Thomas Daede's avatar
      Fix accounting when PVQ is enabled. · e1227d5f
      Thomas Daede authored
      Change-Id: I87474e058563d737bbad47d14e398c6090b4486c
      e1227d5f
    • Fergus Simpson's avatar
      handle_inter_mode: add handle_newmv() · 4550963b
      Fergus Simpson authored
      Refactors newmv handling code in handle_inter_mode into its own
      function. This makes handle_inter_mode shorter and easier to
      understand.
      
      Change-Id: I152a61ee8a7f323936b4a772f14f8e286724443d
      4550963b
  2. 07 Mar, 2017 8 commits
    • Thomas Davies's avatar
      Add a CDF for coding delta_q. · d6ee8a8c
      Thomas Davies authored
      Also remove forward updates for delta_q when EC_ADAPT
      is enabled.
      
      Change-Id: Idf71b57bfe7763bc60595bc45768e624dd7b67bd
      d6ee8a8c
    • Fangwen Fu's avatar
      dependent tiles togeter with tile groups · 73126c08
      Fangwen Fu authored
      Change-Id: I378eb5b2c03a4c30d261128bcf9ef00ea987ed40
      73126c08
    • Jingning Han's avatar
      Fix tile size offset in cb4x4 mode · eafbd5fb
      Jingning Han authored
      Fix the encoding failure in cb4x4 mode when multiple tiles are
      enabled.
      
      BUG=aomedia:364
      
      Change-Id: I7ee6b60a08445a916c72cf080b7bf2f44bfeed08
      eafbd5fb
    • Yushin Cho's avatar
      Refactor PVQ tokens packing code as a function · 258a0248
      Yushin Cho authored
      Change-Id: I2a3918247a7c5372391bca498dbcc5c433a37378
      258a0248
    • Yushin Cho's avatar
      Call tokenize_pvq() inside tokenize_b() · 639c48f9
      Yushin Cho authored
      Since tokenize_b() is called by var-tx and several other experiments
      during tokenization, in order for PVQ to run with those experiemnts
      at the same time, it is required to call tokenize_pvq() from tokenize_b()
      instead of av1_tokenize_sb().
      
      Change-Id: I0450aa220b696efa3294952e47739acab707d483
      639c48f9
    • hui su's avatar
      Fork the entropy experiment · 0d103578
      hui su authored
      Split it into two experiments:
      q_adapt_probs: multiple initial coeff prob tables based on q-index
      subframe_prob_update: multiple backward prob updates within frame
      
      Change-Id: I78041ebd4ba34afc9152f6861225f63c2e8eb686
      0d103578
    • Fergus Simpson's avatar
      handle_inter_mode: loop mv rate calculation · efbbe700
      Fergus Simpson authored
      In two cases the bit cost of a movement vector was calculated twice
      and summed when there were mutliple refs. The first result was
      assigned and the second was added. Now they are both added in a loop
      to reduce duplication.
      
      Change-Id: Iadcaec1dc4c2583fbb5cfd07bea6480756692a01
      efbbe700
    • Jingning Han's avatar
      Properly force the transform size in aq-mode · 4470af19
      Jingning Han authored
      Make the transform size conform to the segment and frame level
      constraints. This fixes encoder and decoder mismatch issue in
      aq-mode 1 and 2.
      
      BUG=aomedia:131
      
      Change-Id: I0784aa12aa49541085ce17ca82e77dcff151fd24
      4470af19
  3. 06 Mar, 2017 9 commits
  4. 05 Mar, 2017 1 commit
    • Jingning Han's avatar
      Decouples rect-tx from var-tx · 8b77d04e
      Jingning Han authored
      With this patch, --enable-var-tx only enables recursive transform
      partitioning without using rectangular transforms.
      To enable use of rectangular transforms in addition, use:
      --enable-var-tx --enable-rect-tx
      
      The RD selection process is not fully tested under the var-tx flag
      only. We might expect certain performance loss there.
      
      Change-Id: Ie6aa17f1bbc3e8563b9990bc9ff79cc860d9a361
      8b77d04e
  5. 04 Mar, 2017 1 commit
  6. 03 Mar, 2017 10 commits
    • Yushin Cho's avatar
      Delete unused function, has_high_freq_coeff() · 5dcc48ba
      Yushin Cho authored
      Change-Id: I4bbe63a4e54dd14a05fca26a11abb5a0d12480d5
      5dcc48ba
    • Tom Finegan's avatar
      Support CONFIG_PVQ in the cmake build. · 27f65d94
      Tom Finegan authored
      BUG=https://bugs.chromium.org/p/aomedia/issues/detail?id=76
      
      Change-Id: Ia857648599f176834307191af6a380b3e411850d
      27f65d94
    • Tom Finegan's avatar
      Group optional configurations in av1/av1.cmake. · 7bb58b1a
      Tom Finegan authored
      Change-Id: I0dd17ec7ea59cecf8298831d0e46e971f744c2c7
      7bb58b1a
    • Tom Finegan's avatar
      Support CONFIG_CDEF in the cmake build. · b4875826
      Tom Finegan authored
      BUG=https://bugs.chromium.org/p/aomedia/issues/detail?id=76
      
      Change-Id: I3e19eb302eb2f0f5a12243bf093c8f9807d97e91
      b4875826
    • Tom Finegan's avatar
      Add support for CONFIG_FILTER_INTRA to the cmake build. · 677d24bf
      Tom Finegan authored
      Note: CONFIG_FILTER_INTRA is broken in both build systems due
      to link errors. This is a parity patch.
      
      BUG=https://bugs.chromium.org/p/aomedia/issues/detail?id=76
      
      Change-Id: I713bc7b6f5f13387bbf6b9e3df22731c22d558cc
      677d24bf
    • Luc Trudeau's avatar
      Merging robust and nodesync in PVQ · 9e6a9607
      Luc Trudeau authored
      The variables robust and nodesync appear to represent the same concept.
      In order to simplify, they are merged into nodesync. This change does
      not alter the bitstream as this value is hard coded to 1.
      
      Change-Id: If9b2eb52f628e3f615b6270e26569815d5e79ae0
      9e6a9607
    • Luc Trudeau's avatar
      Remove frame type dependency in od_pvq_rate · 9a834c03
      Luc Trudeau authored
      In Daala, od_pvq_rate depended on the frame type because of H/V pred.
      However, H/V pred is not in AV1, as such this code can be removed.
      
      This changes do not impact the bitstream as currently is_keyframe is
      hard coded to zero.
      
      Change-Id: Ic4b7c91c004133bc4520870ce39e47cd6a63f298
      9a834c03
    • Thomas Davies's avatar
      TILE_GROUPS: omit tile length from last tile in the frame. · a0de6d59
      Thomas Davies authored
      This change improves efficiency and means that tile groups
      cause negligible loss (+0.03% BDR) in the current default
      encoding configurations (1 tile group no matter how many tiles)
      with frame-based wrapping.
      
      In future, when wrapper formats support tile groups, lengths
      can be omitted from the last tile in every tile group.
      
      Change-Id: Ia701e6720208fbfa727f9aef0b692a6aafbcc93f
      a0de6d59
    • Luc Trudeau's avatar
      Remove H/V considerations in pvq_theta · 96382283
      Luc Trudeau authored
      As H/V Prediction is not implemented in AV1, pvq_theta does not need to
      consider it when adjusting its parameters.
      
      It is important to understand that the results shown here are not the outcome
      of this patch but the outcome of leaving the condition in and enabling
      is_keyframe. Currently, this change does not impact the bitstream as
      is_keyframe is hard coded to 0 for PVQ.
      
      The following result show that enabled for spatial intra, the H/V pred
      tweaks do not yeild benefits.
      
      Enabling the condition for all planes in a keyframe:
      Subset1:
      pvq@2017-02-28T20:31:50.969Z -> pvq-unreliable-intra@2017-02-28T20:30:32.049Z
      PSNR | PSNR Cb | PSNR Cr | PSNR HVS |   SSIM | MS SSIM | CIEDE 2000
      0.0896 |  0.0860 | -0.0759 |   0.1608 | 0.1442 |  0.1599 |     0.0147
      
      Enabling the condition for Luma plane in a keyframe:
      Subset1:
      pvq@2017-02-28T20:31:50.969Z
       -> pvq-unreliable-intra-luma@2017-02-28T20:34:18.029Z
      PSNR | PSNR Cb | PSNR Cr | PSNR HVS |   SSIM | MS SSIM | CIEDE 2000
      0.0713 |  0.1317 |  0.0717 |   0.1253 | 0.1365 |  0.1406 |     0.0312
      
      Enabling the condition for Chroma planes in a keyframe:
      Subset1:
      pvq@2017-02-28T20:31:50.969Z -> pvq-unreliable-intra-chroma@2017-02-28T21:09:38.992Z
      PSNR | PSNR Cb | PSNR Cr | PSNR HVS |   SSIM | MS SSIM | CIEDE 2000
      0.0232 | -0.1240 | -0.1379 |   0.0029 | 0.0187 |  0.0191 |    -0.0916
      
      Based on these results, the condition in the if statement is removed.
      
      Change-Id: Icd2f1313952548939069b4570cf7db04632f35f3
      96382283
    • Yue Chen's avatar
      Restrict the number of neighbors in obmc mode · 5329a2bf
      Yue Chen authored
      Enable obmc mode only when there are <= 2 left neighbors and <=2
      above neighbors. Also disable it when there is no overlappable
      neighbors.
      
      Gain in AWCY test: 1.60%, was 1.64% when there is no restriction
      
      Change-Id: I2d82ef4fb4daa9b0843ac8844f99b9f412c4f379
      5329a2bf