1. 28 Sep, 2017 27 commits
    • Ryan's avatar
      fix one bug in the decoder header initization · dd8df163
      Ryan authored
      1. seg->temporal_update flag is only read when seg->update_map flag is
      set to 1 in the bit stream. in case update_map flag is different from frame
      to frame, the temporal_update flag will not be reset to 0 when
      update_map flag changed from 1 to 0. i.e, the previous temporal_update
      flag will be used in the later process. in the read_inter_segment_id
      function, temporal_update flag is used to read the segment id. it will
      cause bit stream parsing error.
      
      Change-Id: I663975bc84bbed7409d4f5dd1c1005480b2fbcf8
      dd8df163
    • Thomas Davies's avatar
      Fix a typo in default CDFs for TX_64X64 · d38d5d20
      Thomas Davies authored
      Change-Id: Ief98301e44a63faacd5f8725f89ef4e0c596a591
      d38d5d20
    • Angie Chiang's avatar
      Do interpolation when up sample scan count · fc414a37
      Angie Chiang authored
      Change-Id: I15bd90245adc85d17ef8429b9c5f3e41e26b0904
      fc414a37
    • Angie Chiang's avatar
      Allow one-sided scan count down sampling · 231cba45
      Angie Chiang authored
      Change-Id: I164add43e9d75af82312b464a176cdf0045ef9e1
      231cba45
    • Angie Chiang's avatar
      Refactor av1_down_sample_scan_count · 1a4bae1f
      Angie Chiang authored
      Change-Id: I18de826d8b8bdec6f57d108906ee5df959243f90
      1a4bae1f
    • Angie Chiang's avatar
      Add av1_up_sample_scan_count() · 1c904831
      Angie Chiang authored
      Change-Id: I25030297e0333f326d39f6c5b64cb2e4f3906852
      1c904831
    • Sebastien Alaiwan's avatar
      Remove dead function 'clamp_block' · 36967373
      Sebastien Alaiwan authored
      And reduce scope of 'get_max_bit',
      which is only used by the test code.
      
      Change-Id: I9af7be426f7bec6958419ca02957db87e7963f50
      36967373
    • Thomas Daede's avatar
      Remove unused bytes from uncompressed header. · 3e22da3d
      Thomas Daede authored
      Although they are called "sync codes", nothing is synchronized
      using them.
      
      Change-Id: I2dbd67daf9f4822438323212bb96cac489c38c5d
      3e22da3d
    • Angie Chiang's avatar
      Customize coding scheme for 1D transform · f12cc4a4
      Angie Chiang authored
      Observe 0.1% gain on lowres wo optimize_b before rebase
      
      Change-Id: I0cb5b5e4be2563093efb2f6dfbefdce9b554e910
      f12cc4a4
    • Ryan's avatar
      Fix enc/dec mismatch related delta_lf · 2d3d0cd2
      Ryan authored
      AV1 encoder's logic for handling current_delta_lf_from_base value has
      a hole, which could cause enc/dec mismatch due to deblocking filter
      level mismatch.
      
      On the encoder side, when delta_lf is used. current_delta_lf_from_base
      value is only written into the bit stream when the following condition
      is true:
      
      ((bsize != BLOCK_LARGEST || skip == 0) && super_block_upper_left)
      
      i.e., it is only written into the bit stream when current mi is the top
      left corner of a super block, and it is not skipped or block size is not
      64x64. this is applied to both INTRA and INTER blocks in write_mbmi_b().
      
      And the following code is used to handle the case when the above condition
      is not true.
      
      if (!dry_run) {
          mbmi = &xd->mi[0]->mbmi;
          if (bsize == BLOCK_64X64 && mbmi->skip == 1 && is_inter_block(mbmi) &&
              cpi->common.delta_lf_present_flag) {
            mbmi->current_delta_lf_from_base = xd->prev_delta_lf_from_base;
          }
      
      The idea is that if the above condition is not true, then the
      current_delta_lf_from_base should be reset to the previous delta lf,
      which is prev_delta_lf_frame_base.
      
      However, there is a hole in this logic. For INTRA 64x64 blocks, even it
      is skipped, the current_delta_lf_frame_base is not reset back to the
      previous delta_lf. So, in this case, decoder side won't receive any new
      delta_lf from bit stream, so it will use previous delta_lf. encoder side
      will use the new delta_lf value. this mismatch will cause final loop
      filter level calculation inconsistent in the deblocking stage and thus
      cause encoder and decoder mismatch.
      
      BUG=aomedia:826
      
      Change-Id: I90c1dcca5da106e4f3e0bcba1ed539c1cd99c370
      2d3d0cd2
    • Ola Hugosson's avatar
      Add striped_loop_restoration experiment · 1e7f2d0c
      Ola Hugosson authored
      This experiment offset the filter tile grid 8 pixels upwards.
      Deblocked pixels (rather than CDEFed pixels) are used for the
      2 lines above and below the filter processing unit. The 8 pixel
      offset is the offset produced by deblock/cdef. This way the
      loop_restoration does not need additional line buffers in a
      single pass hardware implementation.
      
      Change-Id: I89e0831dc28413a5d3e02d7a426ce2885ab629d7
      1e7f2d0c
    • Monty Montgomery's avatar
      Remove dead av1_dct8x8_quant_xxxx functions · 7f7dd08a
      Monty Montgomery authored
      They're unused, disabled in the prototype setup, but still built and
      complicating the already convoluted ifdef mess in TX experiment
      configuration.
      
      Don't leave dead code in the sourcebase.  That's what SCM is for.
      
      Change-Id: Idb2adf597ac064c7b5027df8af1cf65054984aa4
      7f7dd08a
    • Yi Luo's avatar
      Lowbd rectangle V/H intra pred sse2 optimization · 0c0fd1e5
      Yi Luo authored
      Function speedup sse2 v. C
      Predictor  V_PRED  H_PRED
      4x8        ~1.7x   ~1.8x
      8x4        ~1.8x   ~2.2x
      8x16       ~1.5x   ~1.4x
      16x8       ~1.9x   ~1.3x
      16x32      ~1.6x   ~1.4x
      32x16      ~2.0x   ~1.9x
      
      This patch disables speed tests to save Jenkins build
      time. Developer can manually enable them by using,
      --gtest_also_run_disabled_test flag in test command line.
      
      Change-Id: I81eaee5e8afc55275c7507c99774f78cc9e49f9a
      0c0fd1e5
    • Tom Finegan's avatar
      Add Debugging section to README.md. · fe809bd1
      Tom Finegan authored
      Change-Id: I6d75d3955bd8dd2218fb07b36c10361e032eb66e
      fe809bd1
    • Tom Finegan's avatar
      Fix aom.pc generation. · 40b2a979
      Tom Finegan authored
      $GIT_EXECUTABLE was being passed as the
      value of CMAKE_INSTALL_PREFIX to pkg_config.cmake. Pass
      $CMAKE_INSTALL_PREFIX as intended.
      
      BUG=aomedia:814
      
      Change-Id: I86126f472447eaa6a2196dca3a8c68fb4de9415a
      40b2a979
    • Luc Trudeau's avatar
      [CFL] Extract build_prediction from predict_block · 67914b56
      Luc Trudeau authored
      To facilitate HBD support, we extract the loop that builds the
      prediction from cfl_predict_block.
      
      This change does not alter the bitstream.
      
      Change-Id: Ie88d1c5872a90303b7fa0692fed8c2855e1d315f
      67914b56
    • Luc Trudeau's avatar
      [CFL] Move Subsampling in Store · 4e26d667
      Luc Trudeau authored
      Pixels are subsampled when they are stored in the CfL prediction
      buffer. This allows to avoid having two buffers. No impact on the
      bitstream.
      
      Results on subset1 (Compared to parent)
      
        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
      
      https://arewecompressedyet.com/?job=cfl-avg-on-fly%402017-09-23T21%3A38%3A04.440Z&job=cfl-Sub-On-Store%402017-09-24T15%3A01%3A41.161Z
      
      Change-Id: If051e34d6d7078d77609542305a2afebef5cb177
      4e26d667
    • Rupert Swarbrick's avatar
      Move tile_cols/tile_rows calculation into common function · 5a010aac
      Rupert Swarbrick authored
      This is just a code cleanup, moving the calculation of cm->tile_rows
      and cm->tile_cols into get_tile_size, which is already calculating
      cm->tile_width and cm->tile_height. The patch also gets rid of a
      spurious AOMMIN and replaces it with an assertion.
      
      Change-Id: I46666c4a197ac26d4b3746d9ea6575dc4af0d570
      5a010aac
    • Rupert Swarbrick's avatar
      Make yv12_buffer_config more uniform · 82529d22
      Rupert Swarbrick authored
      This patch slightly reorders the fields in yv12_buffer_config and then
      uses anonymous unions in order to make it possible to write code that
      iterates uniformly over planes.
      
      The patch also ports some code (mostly in yv12extend.c and
      aom_scale.c) to show how this can make things more concise.
      
      This should make no difference to the coded results. I think it's
      unlikely to have any significant performance impact (the reordered
      fields in a yv12_buffer_config only come to 17*4 = 68 bytes in total,
      so almost fit in a normal sized cache line).
      
      Change-Id: Iebb46344500b9df82915f34cfd193e189d712062
      82529d22
    • Jonathan Matthews's avatar
      Reset intra_filter in case it isn't read · 67c9ab0b
      Jonathan Matthews authored
      BUG:aomedia:824
      Change-Id: I67bfd16a9ba994055ccbaf624c58117c7939d5c8
      67c9ab0b
    • Thomas Davies's avatar
      Remove unused switchable filter probs and remove remapping. · ec92c113
      Thomas Davies authored
      CDFs are used for coding and costs, so there is no need to
      base the CDF on the obsolete tree and remap filter indices.
      
      No change to common test conditions BDR.
      
      Change-Id: I441dd21b127bc07ba33eef8ddcfd147eef21d0d4
      ec92c113
    • Ola Hugosson's avatar
      Add deblock_13tap experiment · 4ce85214
      Ola Hugosson authored
      This change enables using 13 taps for luma plane deblocking and 5 taps for
      chroma plane deblocking when pixels are in flat area.
      
      The aim for the experiment is to make sure that luma line 57 and chroma
      line 29 of the current superblock is not changed by the deblocking process
      of the superblock below. Previously this was already the case for luma
      line 56 and chroma line 28 (but not for 57 and 29).
      
      This experiment is part of an effort to reduce the overall line buffer
      size for DEBLOCK+CDEF+LR. With this change it is possible to CDEF line
      -8 to +55 direcly on the output of deblock (which require line +56 and
      +57 to be final).
      
      Change-Id: I7779a08d6ad5683bf35c3372b1526786eaac8472
      4ce85214
    • Urvang Joshi's avatar
      Remove rect_intra_pred experimental flag. · df48d293
      Urvang Joshi authored
      This has been cleared by Tapas.
      
      Change-Id: Ie62ffe84d2b285ae83939e7bcc354c2964fb5938
      df48d293
    • Sebastien Alaiwan's avatar
      Range check error message: only print input once · 227b57ad
      Sebastien Alaiwan authored
      Also, print the actual out-of-bounds values,
      instead of just printing the input buffer.
      
      Change-Id: Ia6b73d98e41c3285d8fd9f39963f9d556d2d95f7
      227b57ad
    • Sebastien Alaiwan's avatar
      Cosmetics: reformat, and remove dead initializer · 2fa0a335
      Sebastien Alaiwan authored
      Change-Id: Ic1aa7dfd4da4e9e29318665d5ecff7ea75fd41e9
      2fa0a335
    • Debargha Mukherjee's avatar
      Misc. resize fixes along with the resize test · ccb27264
      Debargha Mukherjee authored
      Re-enables most of the previously disabled tests.
      The ones that are still disabled expect resize to be triggered
      through rate control, which is no longer supported in Av1.
      
      Change-Id: Ie5e9ba3eb0843cd44ff1ac988500081470ba0fe2
      ccb27264
    • Luc Trudeau's avatar
      [CFL] Compute and Subtract Average on the Fly · 593d02c8
      Luc Trudeau authored
      Instead of storing the transform block average, it is immediately
      subtracted from the subsampled pixels. This change does not alter the
      bitstream and it reduces CfL complexity.
      
      Change-Id: Ia5038b336abf1ec01e295b235734318906d3bae6
      593d02c8
  2. 27 Sep, 2017 13 commits
    • Angie Chiang's avatar
      Only use fast optimize_b in rd loop for lv_map · 25645b74
      Angie Chiang authored
      Change-Id: Ia33e9962fce962e4f45281537d3e90b4d88543a5
      25645b74
    • Rupert Swarbrick's avatar
      Fix typo in previous patch (av1_make_masked_inter_predictor) · 9a6015d7
      Rupert Swarbrick authored
      With convolve round, tmp_buf32 should be set to tmp_buf rather than
      tmp_dst because we want the actual pointer value rather than the funky
      rescaled one when the frame is high bit depth.
      
      Change-Id: I614ca1ebb4b6db8c4957fdced9dc2009a7ac107e
      9a6015d7
    • Pavel Frolov's avatar
      Init cm->prev_frame before decoding gm params · 57c36e18
      Pavel Frolov authored
      This fixes global motion read/write mismatch.
      Minimal test case would be 3 encoded frames with:
          1) frame0: KEY frame
          2) frame1: INTER frame with refresh_frame_flags not 0x00 and
      not 0xFF, say 0x01 (refresh first slot)
          3) frame2: INTER frame with all reference indices equal to 3
      (i.e. no reference to frame1)
      
      When decoding frame2 decoder will use cm->prev_frame=frame1
      for gm params decoding, then switch to cm->prev_frame=frame0
      for the rest of the frame.
      This makes frame2 dependent on frame1 which is not used as reference.
      And also it is different from what encoder does.
      
      BUG=aomedia:750
      
      Change-Id: I42ba19c03d909286af12ba3149910693a12249e8
      57c36e18
    • Luc Trudeau's avatar
      Replace DC_PRED with UV_DC_PRED for chroma · 91357ee9
      Luc Trudeau authored
      When using uv_mode the corresponding enum is the UV_PREDICTION_MODE not
      the PREDICTION_MODE enum.
      
      Change-Id: I44b19e4db5947a2d44281430b34ed61b82f999eb
      91357ee9
    • Luc Trudeau's avatar
      [CFL] Avoid Padding Multiple times · 6a11a680
      Luc Trudeau authored
      The buffer width and height are updated after adding to padding data to
      the CfL buffer. This way, padding is not repeated. This change does not
      alter the bitstream
      
      Change-Id: I7e709fc4e18b03a516b1345099b334c9d33d71aa
      6a11a680
    • James Zern's avatar
      cosmetics,*rtcd*.pl: reindent · 1512fa97
      James Zern authored
      Change-Id: I612517c6218c561ee94888c8c14298964851484a
      1512fa97
    • Cheng Chen's avatar
      Fix a potential assertion failure · 7e21ef2c
      Cheng Chen authored
      Change-Id: I24d129aceb66e00388bedf98bc8e46524c0812eb
      7e21ef2c
    • Thomas Davies's avatar
      NEW_MULTISYMBOL: remove compressed header always. · ad667d90
      Thomas Davies authored
      Enable the RESTRICT_COMPRESSED_HDR experiment when
      NEW_MULTISYMBOL is on and apply when there is no
      backward update also.
      
      Change-Id: I5f6812df2cb3f9bc32fe533b2689fd51235aedbc
      ad667d90
    • James Zern's avatar
      configure: move bitstream_debug out of the exp list · 4ac9a60c
      James Zern authored
      and to CONFIG_LIST + CMDLINE_SELECT. the experiment list should now
      match cmake
      
      Change-Id: I724d35b3a16ed5c641207525949093bc0caf4a49
      4ac9a60c
    • Angie Chiang's avatar
      Add cmake dependency for ext_comp_refs · 6a710b6b
      Angie Chiang authored
      Change-Id: I8080a860c32d465810a960bf25f4299c40122937
      6a710b6b
    • Angie Chiang's avatar
      Prevent extreme prob when count is small · dd1bae52
      Angie Chiang authored
      Add function get_binary_prob_new in aom_entropy_optimizer.c.
      This function add "+1" to both 0 and 1 counters such that it won't
      generate extreme probability when both counters are small
      
      Change-Id: I759d6e1cfedaf1c36281b523c26e7a7d1cad147c
      dd1bae52
    • David Barker's avatar
      ext-partition: Don't read not-yet-decoded values · 761b1ac8
      David Barker authored
      When deciding whether the top-right or bottom-left blocks are
      available, we currently always act as if we're using 128x128
      superblocks. This means that, when using 64x64 superblocks,
      we sometimes conclude that blocks are available when they haven't
      been decoded yet!
      
      This typically happens at, for example, mi_row=15, mi_col=16
      (for bottom left), where we're at a 64x64 boundary but not
      a 128x128 boundary.
      
      This patch fixes the issue by checking based on the signalled
      superblock size.
      
      Note: Most of this patch is just threading 'cm' through the
      intra prediction process, so that we have access to cm->sb_size
      in has_top_right() and has_bottom_left()
      
      Change-Id: I126964c510aafffc870e7cd8b3e64a46abb14b3a
      761b1ac8
    • Dominic Symes's avatar
      MAX_TILE experiment: add explicit tiles · f58f111f
      Dominic Symes authored
      This patch is designed to complete the CONFIG_MAX_TILE experiment.
      It adds the following features:
      - Explicit tiles of same width can be signalled with command line --tile_width
      - Explicit tiles of same hieght can be signalled with command line --tile_height
      - max_tile now works with the depenedent horizontal tiles experiment
      - additional checking added to ensure maximum number of rows/columns <= 64
      - one fix to the tile group code for when the number of tiles is not a power of two
      
      Change-Id: I749a68fdb3dcdd8d1ced2b3558f3817e4b832c06
      f58f111f