1. 04 Nov, 2017 3 commits
    • Yue Chen's avatar
      Remove NCOBMC_ADAPT_WEIGHT from AV1 · 80daf0c4
      Yue Chen authored
      Development of this experiment will be deferred to AV2.
      
      Change-Id: I3c4615a21b59508500bed8aab0a5c54413b4f284
      80daf0c4
    • Jingning Han's avatar
      Separate ref frame mvs control from prev_frame_mvs · e17ebe92
      Jingning Han authored
      The control of using reference frame motion vector is a separate
      factor from the existence of previous frame motion vectors. This
      commit decouples these two, such that the encoder can control the
      use of reference motion vector. When it is used, one can further
      identify if the previous frame exists or not, then to decide if
      need to force use_prev_frame_mvs to be zero.
      
      This solves the issue where the previous frame mvs is set to be
      0 and it accidentally shuts off the access to all other existing
      referece frames mvs in the mfmv system. It brings back the coding
      performance gains to normal.
      
      Change-Id: I2531f73e55582a9bb5b3e0ff47e361a199ec8082
      e17ebe92
    • Debargha Mukherjee's avatar
      Simplify tx_mode frame level bit · 923b73d8
      Debargha Mukherjee authored
      Adds a new experiment to simplify the tx_mode symbol.
      
      The existing frame level tx_mode information is converted to a single bit
      to select between largest tx_size for a prediction unit or specified
      at the block level. The less useful modes: ALLOW_8X8, ALLOW_16X16,
      etc. are removed.
      
      Change-Id: Ib9358e17b0158a167eb4edef79f36ff113aa56e1
      923b73d8
  2. 03 Nov, 2017 4 commits
    • Yunqing Wang's avatar
      Allow to disable the probability update · 0e141b56
      Yunqing Wang authored
      Added the function of allowing to disable the probability update while
      needed. This would be needed while encoding in multiple tiles, and
      enabling/disabling probability update can be set separately for every
      individual tile.
      
      Change-Id: Ic3c64e6cebac89c483d48b874761bd2e902d81e6
      0e141b56
    • David Barker's avatar
      Fix bug introduced by commit 01563088 · b44deca9
      David Barker authored
      When fixing one bug in av1_decode_tg_tiles_and_wrapup, I seem to have
      introduced another bug. This was due to checking the wrong condition
      on whether to update the frame context at the end of the frame.
      
      BUG=aomedia:1001
      
      Change-Id: I929a710e2de31a89cc7899fb1605ca7edf968a87
      b44deca9
    • Sebastien Alaiwan's avatar
      Remove VAR_REFS experiment · 4be6cb32
      Sebastien Alaiwan authored
      This experiment has been abandonned.
      
      Change-Id: Ieabc6f365651e2d116a4505a3cc202add94d1386
      4be6cb32
    • Rupert Swarbrick's avatar
      Allow horzonly superres and striped loop restoration · 76c7800e
      Rupert Swarbrick authored
      We do this by upscaling the deblocked output as we save it into the
      RestorationStripeBoundaries line buffers. (See save_boundary_lines in
      restoration.c for the details)
      
      The upscaling is done by calling av1_convolve_horiz_rs, which reads
      off the edge of the frame and, of course, across tile boundaries. This
      means we need to extend the frame borders before saving boundary
      lines (hence the changes to decodeframe.c and encoder.c)
      
      Change-Id: Ia096846898b20afe4737433d772f7277d4f71724
      76c7800e
  3. 02 Nov, 2017 6 commits
    • Rupert Swarbrick's avatar
      Get rid of RestorationInfo::procunit_height and width · cb493d82
      Rupert Swarbrick authored
      These are just RESTORATION_PROC_UNIT_SIZE shifted right by the
      vertical or horizontal subsampling for this plane and it's easier not
      to have to pass them around.
      
      Change-Id: I86441d6cd86bb146f3e5dcdf2c89e34dd9fed0e1
      cb493d82
    • Sebastien Alaiwan's avatar
      Simplify flow of control (decoder) · 238a6d63
      Sebastien Alaiwan authored
      Avoid switch fallthrough (and associated gcc/clang warnings),
      reduce scopes and add consts.
      
      Change-Id: I28d910d9d39ee8fe2c5618364af602af5be5c186
      238a6d63
    • Sebastien Alaiwan's avatar
      Remove experimental flag of EXT_TX · 3bac9928
      Sebastien Alaiwan authored
      This experiment has been adopted, we can simplify the code
      by dropping the associated preprocessor conditionals.
      
      Change-Id: I02ed47186bbc32400ee9bfadda17659d859c0ef7
      3bac9928
    • Debargha Mukherjee's avatar
      Add an expt to remove allow high precision mv flag · b214775d
      Debargha Mukherjee authored
      Change-Id: I3873acafcd9539da96f67328cdb8faf7798be90f
      b214775d
    • David Barker's avatar
      OBU: Fix a few bugs · 01563088
      David Barker authored
      * The function av1_decode_tg_tiles_and_wrapup performs some per-frame
        initialization; some of this was mistakenly being performed
        once per tile group instead, leading to strange behaviour
        (eg, forgetting loop-restoration coefficients, forgetting
        the boundary information for all but the last tile group, etc.)
      
        Fix this by pulling all of the initialization code into its
        own function and calling it only if the initialize_flag is set.
      
      * While fixing the above, I realized that the 'context_updated'
        flag in av1_decode_tg_tile_and_wrapup was not behaving as intended:
        The idea is that, when using frame parallel mode, we save the
        frame context early so that the next frame can start decoding.
        Then we don't need to store the frame context at the end of
        the frame, since we already dealt with it at the start of the frame.
      
        However, this 'context_updated' flag was local to one tile group,
        ie. it got reset to 0 once we started decoding the second tile group.
        So we'd end up storing the frame context again at the end of the frame
        if there was >1 tile group.
      
        This didn't break anything, but it is a bit weird. So, to match
        the original intent, we ditch the 'context_updated' flag and
        directly check if we're in frame parallel mode when necessary.
      
      * Fix a bug where we read one byte too much from a tile group
        OBU when the extended OBU header was used.
      
      BUG=aomedia:892
      
      Change-Id: Ifbe561de0de35525d809e23915ac5263273e8de7
      01563088
    • Rupert Swarbrick's avatar
      Refactor border treatment in loop restoration · 5b401364
      Rupert Swarbrick authored
      Previously we were calling aom_extend_frame_borders to generate
      extended pixels for use in loop-restoration. This generates quite a
      large border, when we only need 3 pixels.
      
      In addition, we were also calling extend_frame, which does the same
      thing but with a smaller border, once (in the decoder) or multiple
      times (in the encoder) per plane.
      
      This patch tidies all of this up so that we only call extend_frame
      once per plane, with the largest border size we need (3px).
      
      It also adds two new #defines. RESTORATION_BORDER is the 3 pixel
      border needed to do filtering for a processing
      unit. RESTORATION_CTX_VERT is the number of rows saved for each stripe
      when doing striped loop restoration.
      
      Change-Id: I2c3ffcc19808f79db195f76d857e2f23da5d8a84
      5b401364
  4. 01 Nov, 2017 6 commits
    • Sarah Parker's avatar
      Rename ZEROMV to GLOBALMV · 2b9ec2ea
      Sarah Parker authored
      This name better reflects the functionality of the mode.
      
      Change-Id: Idc2372e7c7b226f70f63fa4f272a88cb4d857089
      2b9ec2ea
    • Soo-Chul Han's avatar
      remove writing/parsing superframe index with new HLS · 38427e8e
      Soo-Chul Han authored
      * add build-time option to add/read 4-byte size of every OBU
      * update to R19 by adding forbidden bit to obu header
      * add metadata OBU decoding
      
      Change-Id: I525264f53a8666b7bc29493fb29ae661841eba50
      38427e8e
    • Sarah Parker's avatar
      Use tx_size 1 level down for transform type search · 90024e44
      Sarah Parker authored
      This addresses an inconsistency between the set used
      to decode the tx_type in the bitstream and the set used
      for the tx_type search. Previously, the set used to
      read/write the tx_type was based on the smallest tx_size
      in the vartx partitioning, but the search uses a set
      based on the largest possible tx_size. This patch
      changes the tx_type search to use the transform type
      set associated with the tx_size 1 recursive level down from
      the max square tx_size to make the search more consistent
      with the bitstream syntax. If a tx_size is selected for an
      invalid tx_type, DCT_DCT is used for that partition instead.
      
      This patch also adds assertions to all exposed transform
      functions to ensure that no illegal transform type/size
      combinations occur.
      
      This currently gets a 0.1% drop in performance on lowres.
      The drop is due to the reduction of the tx_types available
      for 32x16 and 16x32 transform sizes. Before this patch,
      32x16 and 16x32 transforms were getting assigned a
      set of 12 tx_types, some of which we did not intend to
      support for these sizes.
      
      Change-Id: I44aca4876b261c345623cd04ad6235bca4532701
      90024e44
    • Yue Chen's avatar
      Remove CONFIG_INTERINTRA · 670b660d
      Yue Chen authored
      Change-Id: Icbedc16b01adf9b48f0f357ec89143462865d54e
      670b660d
    • Zoe Liu's avatar
      Add decoder support to ext_skip · f704a1c8
      Zoe Liu authored
      At the frame header level, add the checking on whether an inter-coded
      frame allows the use of 'skip_mode'. At the block level, add the
      decoding of 'skip_mode' for all the blocks if 'skip_mode' is allowed
      for the current frame. If 'skip_mode' is set, no further bit needs to
      read out, and the block is set as:
      - Inter-coded in compound mode;
      - With the nearest forward and backward reference frames;
      - In NEAREST_NEARESTMV mode;
      - In SIMPLE_TRANSLATION motion mode;
      - In COMPOUND_AVERAGE compound type; and
      - Skip set for residual.
      
      Change-Id: I50297f63a81135109332c4a51b516bffd7726777
      f704a1c8
    • Arild Fuldseth (arilfuld)'s avatar
      Implement approved version of FRAME_SIZE experiment · 7193f020
      Arild Fuldseth (arilfuld) authored
      Change-Id: I5b7bb9983e1c613321704a579d459925bd6b9b2b
      7193f020
  5. 31 Oct, 2017 2 commits
  6. 30 Oct, 2017 5 commits
    • Jingning Han's avatar
      Reset current_video_frame in key frame · d8a15a66
      Jingning Han authored
      Reset the frame index tracking to 0 when key frame is inserted in
      the frame sequence.
      
      Change-Id: Ib80313004fc000e7127a9797af5afe9029c0cb45
      d8a15a66
    • Debargha Mukherjee's avatar
      Remove compound-segment/wedge config flags · 371968cd
      Debargha Mukherjee authored
      Change-Id: I39cfbb135add0553cadf64481b13786831fbdddd
      371968cd
    • Sebastien Alaiwan's avatar
      Remove experimental flag of GLOBAL_MOTION · 48795807
      Sebastien Alaiwan authored
      This experiment has been adopted, we can simplify the code
      by dropping the associated preprocessor conditionals.
      
      Change-Id: I9c9d6ef5317798cbf237307a9754fe7e03bdda47
      48795807
    • Luc Trudeau's avatar
      [CFL] Sub8x8 Validation Code Rewrite · c7af36d4
      Luc Trudeau authored
      Sub8x8 Validation code is changed to be more robust. The scope of the
      validation is narrowed to validating that all of the required content in
      the storage buffer was stored between CfL predictions. The early
      termination used in the current mode decision code does not allow to
      validate more than that.
      
      This change does not change encoder output
      
      BUG=aomedia:925
      
      Change-Id: I7f1ed84da5037dcfaaf5da9cf33b4b8d664d2352
      c7af36d4
    • Rupert Swarbrick's avatar
      Stop backward adaptation if EXT_TILE + cm->large_scale_tile · 84b05ac1
      Rupert Swarbrick authored
      Backwards adaptation doesn't really make sense in this context,
      because ext-tile means the decoder might not decode every tile in the
      frame, in which case it can't work out how to adapt probabilities.
      
      It turns out that the tests in the tree were passing when
      SIMPLE_BWD_ADAPT was disabled because (presumably) all of them
      happened to decode every tile, so backward adaptation worked as you'd
      expect. With SIMPLE_BWD_ADAPT, there's some code in get_tile_buffers
      to figure out which is the largest tile. This wasn't mirrored in
      get_ls_tile_buffers, which caused the encoder and decoder to get out
      of sync because they ended up with different CDFs. You also can't
      easily fix things in get_ls_tile_buffers because that code is careful
      not to calculate the size of tiles it doesn't need.
      
      BUG=aomedia:917
      
      Change-Id: Ia926692f86ca1466252108e09da3de590d45f048
      84b05ac1
  7. 28 Oct, 2017 1 commit
  8. 27 Oct, 2017 3 commits
  9. 26 Oct, 2017 3 commits
  10. 25 Oct, 2017 2 commits
  11. 24 Oct, 2017 5 commits