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
      Change-Id: Ic065cc337e0246379d87966a49ddeb48b975c5be
    • 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.
      Change-Id: Id8a87ae8a1330bed0452441ab8345276857220af
    • 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.
      Change-Id: I532db14de9795f04bf296cd9a12c80350350c112
    • 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
    • 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
    • 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
      Change-Id: Iae9d14f812c52c6f66910d27da1d8e98930df7ba
    • Sarah Parker's avatar
      Fix compile warnings for ext-tx + ec-adapt · e2e591c7
      Sarah Parker authored
      Change-Id: If45e46d6459cddecca3d11b64fc73ff26c291a13
    • 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
    • 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
    • Thomas Daede's avatar
      Fix accounting when PVQ is enabled. · e1227d5f
      Thomas Daede authored
      Change-Id: I87474e058563d737bbad47d14e398c6090b4486c
    • 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
      Change-Id: I152a61ee8a7f323936b4a772f14f8e286724443d
  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
    • Fangwen Fu's avatar
      dependent tiles togeter with tile groups · 73126c08
      Fangwen Fu authored
      Change-Id: I378eb5b2c03a4c30d261128bcf9ef00ea987ed40
    • 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
      Change-Id: I7ee6b60a08445a916c72cf080b7bf2f44bfeed08
    • Yushin Cho's avatar
      Refactor PVQ tokens packing code as a function · 258a0248
      Yushin Cho authored
      Change-Id: I2a3918247a7c5372391bca498dbcc5c433a37378
    • 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
    • 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
    • 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
    • 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.
      Change-Id: I0784aa12aa49541085ce17ca82e77dcff151fd24
  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
  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
    • Tom Finegan's avatar
      Support CONFIG_PVQ in the cmake build. · 27f65d94
      Tom Finegan authored
      Change-Id: Ia857648599f176834307191af6a380b3e411850d
    • Tom Finegan's avatar
      Group optional configurations in av1/av1.cmake. · 7bb58b1a
      Tom Finegan authored
      Change-Id: I0dd17ec7ea59cecf8298831d0e46e971f744c2c7
    • Tom Finegan's avatar
      Support CONFIG_CDEF in the cmake build. · b4875826
      Tom Finegan authored
      Change-Id: I3e19eb302eb2f0f5a12243bf093c8f9807d97e91
    • 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.
      Change-Id: I713bc7b6f5f13387bbf6b9e3df22731c22d558cc
    • 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
    • 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
    • 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
    • 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:
      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:
       -> 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:
      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
    • 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
      Gain in AWCY test: 1.60%, was 1.64% when there is no restriction
      Change-Id: I2d82ef4fb4daa9b0843ac8844f99b9f412c4f379