1. 02 Aug, 2017 1 commit
  2. 01 Aug, 2017 4 commits
    • Thomas Daede's avatar
      Frame context signaling: Remove reset symbols from the bitstream. · a6a854b1
      Thomas Daede authored
      Because frame contexts now follow reference frames, explicit resets
      are no longer necessary, but can simply happen at the same time
      as reference frame resets.
      
      Change-Id: Idbed3794e3ed52fa298346943a3014fa1ca23897
      a6a854b1
    • Thomas Daede's avatar
      Add new experiment: frame_context_signaling. · da4d8b9c
      Thomas Daede authored
      This stores frame contexts alongside a reference frame, and always
      uses the frame in reference slot 0 (LAST_FRAME) as the source of
      the frame context.
      
      The encoder could then reorder reference frames as to control
      which frame context is used, however currently it does not.
      
      Low Latency AWCY result:
      
         PSNR | PSNR Cb | PSNR Cr | PSNR HVS |    SSIM | MS SSIM | CIEDE 2000
      -0.1438 |  0.4161 |     N/A |   0.0386 | -0.0281 |  0.0453 |     0.2514
      
      https://arewecompressedyet.com/?job=before-frame-context-signaling%402017-06-07T23%3A20%3A49.473Z&job=after-frame-context-signaling%402017-06-07T23%3A21%3A36.117Z
      
      Change-Id: I4f6f9b12cb403573efbf9e5c3077d62f5dedc467
      da4d8b9c
    • Rupert Swarbrick's avatar
      tempv_signaling: Simplify test for whether prev_frame works for mvs · 1f990a64
      Rupert Swarbrick authored
      For some background, see this previous change in Gerrit[0]. What's
      going on here is that we only want to use a previous frame for motion
      vector prediction if the encoded sizes match. When scaling with
      superres, this means the size before upscaling.
      
      To check this correctly, we need to check prev_frame's width/height
      and compare it with the current frame. Without superres, prev_frame's
      width/height is stored in y_crop_width/y_crop_height so we can check
      that way. With superres, those numbers are after the scaling, so can't
      be compared with cm->width and cm->height.
      
      The previous code worked around this by comparing with cm->last_width
      and cm->last_height. That works because these are the width/height for
      the last encoded and shown frame and that frame *is* prev_frame if
      last_show_frame is true. Since this is the only case when we want to
      use prev_frame, they are the numbers we need.
      
      This patch simplifies the logic by storing the width/height in
      RefCntBuffer before any scaling and then checking that they match.
      
      The check for whether we can use motion vectors from a previous frame
      is factored out into a pair of inline functions in the
      header. frame_might_use_prev_frame_mvs() is true if it's possible that
      this frame could use motion vectors from a previous frame. This
      doesn't use knowledge of what prev_frame is: it just checks we're not
      in error resilient mode and aren't a keyframe. When this is true, a
      flag is signaled in the bitstream to say whether we actually want to
      use motion vectors from the previous frame.
      
      The second function, frame_can_use_prev_frame_mvs, is true if the
      current frame / previous frame pair is suitable for sharing motion
      vectors. This is a stricter test: the previous frame needs to be
      have been shown and not to have been intra_only, and it needs to have
      the same width/height as the current frame.
      
      If the re-assignment of prev_frame (just before the calls to
      frame_can_use_prev_frame_mvs()) were removed in some way, we could
      probably combine the two functions and often save a bit per frame
      header.
      
      The other slight tidy-up in the patch is to move re-allocation of the
      mvs buffer into onyxc_int.h: the code that did the allocation was
      duplicated between the encoder and decoder.
      
      [0] https://aomedia-review.googlesource.com/c/13806
      
      BUG=aomedia:78
      
      Change-Id: If25227fa24222fc05c56529c2ac9ddf1e1c36a84
      1f990a64
    • Rupert Swarbrick's avatar
      ext_partition_types: Pass the correct CDF length for partitions · b95cf12e
      Rupert Swarbrick authored
      Each CDF for partitioning square blocks is initialised from
      an entry of default_partition_cdf in entropymode.c. These CDFs are of
      different lengths, depending on which partition types are supported by
      the block size.
      
      For example, 8x8 blocks have a CDF with only 4 entries (PARTITION_NONE
      through PARTITION_SPLIT). Blocks of a size that supports 1:4 and 4:1
      partitions have 10 entries. Currently, that's only 32x32 blocks. All
      other blocks have 8 entries.
      
      Change-Id: Ie2126b6d41afc0efedcc5b5b37fc1d0427b9a9fa
      b95cf12e
  3. 31 Jul, 2017 1 commit
    • Yushin Cho's avatar
      Another fix of dangling braces for search · 127c5838
      Yushin Cho authored
      These are caused when both #if and #else has if (...) '{' but
      there is only one matching '}'.
      
      Fixed for some of decoding side files. More to come soon.
      
      Change-Id: I9e63b90ba6e739b5c7e37498458c7808e2e16d33
      127c5838
  4. 27 Jul, 2017 2 commits
    • Cheng Chen's avatar
      Make CDEF work with EXT_PARTITION · f5bdeac2
      Cheng Chen authored
      Make CDEF select filter strength every 64x64 block when block size
      could be larger than 64x64.
      
      With/without this patch, coding performances on AWCY and Google
      test of lowres and midres are neutral.
      
      BUG=aomedia:662
      
      Change-Id: Ief82cc51be91fc08a7c6d7e87f6d13bcc4336476
      f5bdeac2
    • Cheng Chen's avatar
      Select filter level for U, V planes · e94df5cf
      Cheng Chen authored
      Previously, U, V planes share the same filter level with Y.
      Here, we search and pick the best filter level for U, V planes.
      Selected filter levels are transmitted per frame.
      This works with parallel_deblocking.
      
      Coding gain on Google test set:
      		Avg_psnr	ovr_psnr	ssim
      lowres: 	-0.116		-0.120		-0.339
      midres:		-0.218		-0.228		-0.338
      hdres:		-0.260		-0.264		-0.365
      
      Change-Id: I03d2ac47539f3eea9f3c4b08007bd6d3f4b73572
      e94df5cf
  5. 26 Jul, 2017 1 commit
  6. 25 Jul, 2017 1 commit
    • Luc Trudeau's avatar
      [CFL] Fix warnings when chroma_sub8x8 is disabled · 96b31516
      Luc Trudeau authored
      This change does not alter the bitstream
      
      Resuls on Subset1 (compared to 70a80a81 with cfl)
        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
      
      Change-Id: I7672eb4cde3c649ebba32610f7e56500e378c062
      96b31516
  7. 24 Jul, 2017 1 commit
  8. 21 Jul, 2017 2 commits
  9. 20 Jul, 2017 6 commits
    • Zoe Liu's avatar
      Add decoder support to ALTREF2 · 043c227b
      Zoe Liu authored
      Change-Id: I11abc5448622265183abd0a58268c190b5891576
      043c227b
    • Jingning Han's avatar
      Clear unused parameters in decode_partition · ea10ad45
      Jingning Han authored
      Change-Id: Idbe1f71c49d0240e10d82081feeec9029898eecd
      ea10ad45
    • Yi Luo's avatar
      Refactor av1_update_boundary_info function · f190a165
      Yi Luo authored
      - Split av1_update_boundary_info() into two functions to avoid
        unnecessarily checking which goes through each mi block.
      - av1_setup_frame_boundary_info() sets up frame level boundary,
        i.e. non-tile case, which is called in frame level only.
      - av1_setup_across_tile_boundary_info sets up tiles boundary,
        which is called per tile, in multiple tile case.
      - Decoder running time reduction: 8.72% (1080p, 25 frames, 4Mbps).
      
      Change-Id: I2fc42d4281c77bce4a7dab5d208347308cfbe579
      f190a165
    • Yunqing Wang's avatar
      Make ext_tile compatible with reference_buffer · c2502b55
      Yunqing Wang authored
      In ext_tile experiment, when cm->large_scale_tile is 1, prev_frame_id can be
      the same as current_frame_id, which is prohibited in reference_buffer
      experiment and causes "CORRUPT_FRAME" error to be reported.
      
      In this patch, enable/disable reference_buffer according to large_scale_tile
      value, and thus make these 2 experiments compatible.
      
      Change-Id: If64943acb91e7a7b859db4e2ac62581e9b53ef85
      c2502b55
    • Jingning Han's avatar
      Make intra coding processed in 64x64 unit · 5b70174f
      Jingning Han authored
      Process the intra block coding in maximum of 64x64 block unit.
      This allows to simpilify the hardware design for 128x128 level
      block coding.
      
      Change-Id: I6ef1dd8549bdb53b2d2394c6aa7d61cea93686bf
      5b70174f
    • Jingning Han's avatar
      Make maximum transform coding unit 64x64 for inter blocks · c2b797fa
      Jingning Han authored
      This commit makes the maximum transform coefficient coding unit
      64x64 for inter coded blocks. It allows the hardware design to
      reuse the existing 64x64 coding pipeline for 128x128 level blocks.
      
      Change-Id: Ibadd59cf7e652984456cac621ec2294d48cf4507
      c2b797fa
  10. 19 Jul, 2017 1 commit
    • Jingning Han's avatar
      Rework txk_type indexing system for chroma component · 19b5c8fa
      Jingning Han authored
      Use the row and column indexes to fetch txk_type, which allows the
      chroma components to derive the tx type from the corresponding luma
      components. It improves the coding performance of txk-sel by 0.18%.
      
      Change-Id: I3f4bca5839e13ae95e51053e76cd86fe58202ac9
      19b5c8fa
  11. 18 Jul, 2017 1 commit
    • Cheng Chen's avatar
      Clean CLPF local function · a5378e73
      Cheng Chen authored
      Rename local functions and make them static.
      Remove unnecessary header file and corresponding includes.
      
      Change-Id: I4b09e3949e7207754753997ff359992bd348d488
      a5378e73
  12. 17 Jul, 2017 2 commits
    • Lester Lu's avatar
      Unify FWD_TXFM_PARAM and INV_TXFM_PARAM · 27319b6e
      Lester Lu authored
      Change two similar structs, FWD_TXFM_PARAM and INV_TXFM_PARAM,
      into a common struct: TxfmParam. Its definition is moved to
      aom_dsp/txfm_common.h to simplify dependency.
      
      This change is made so that, in later changes of the LGT
      experiment, functions requiring FWD_TXFM_PARAM and
      INV_TXFM_PARAM, such as get_fwd_lgt4 and get_inv_lgt4, can
      also be unified.
      
      Change-Id: I756b0176a02314005060adbf8e62386f10eeb344
      27319b6e
    • hui su's avatar
      refactor get_tx_size() and get_uv_tx_size() · 0c6244b6
      hui su authored
      Change-Id: I802c9e41ebfed090b5ad8300917aad5e16ad026a
      0c6244b6
  13. 15 Jul, 2017 1 commit
    • Lester Lu's avatar
      lgt: delete unnecessary code · 5ee2808a
      Lester Lu authored
      Currently, lgt cannot work with pvq, so those lines are not
      necessary.
      
      Change-Id: Ida7b2de599b55d94cac57365c09ac2330abe3c66
      5ee2808a
  14. 14 Jul, 2017 3 commits
  15. 13 Jul, 2017 2 commits
  16. 12 Jul, 2017 1 commit
    • Rupert Swarbrick's avatar
      ext-partition-types: Add 4:1 partitions · 93c39e91
      Rupert Swarbrick authored
      This patch adds support for 4:1 rectangular blocks to various common
      data arrays, and adds new partition types to the EXT_PARTITION_TYPES
      experiment which will use them.
      
      This patch has the following restrictions, which can be lifted in
      future patches:
      
        * ext-partition-types is incompatible with fp_mb_stats and supertx
          for the moment
      
        * Currently only 32x32 superblocks can use the new partition types
      
      There's a slightly odd restriction about when we allow
      PARTITION_HORZ_4 or PARTITION_VERT_4. Since these both live in the
      EXT_PARTITION_TYPES CDF, read_partition() can only return them if both
      has_rows and has_cols is true. This means that at least half of the
      width and height of the block must be visible. It might be nice to
      relax that restriction but that would imply a change to how we encode
      partition types, which seems already to be in a state of flux, so
      maybe it's better to wait until that has settled down.
      
      Change-Id: Id7fc3fd0f762f35f63b3d3e3bf4e07c245c7b4fa
      93c39e91
  17. 11 Jul, 2017 3 commits
    • Lester Lu's avatar
      Fix a bug when LGT and PVQ are both on. · 9c52192b
      Lester Lu authored
      Fixed a bug in my previous patch that causes a compile error (variable 
      block undefined) when pvq is on. 
      
      However, with or without LGT, --enable-pvq still has a run time error 
      during encoding. This run time error is independent of the LGT 
      experiment.
      
      Change-Id: I98ca5f69a916ea8556e45b820c2eb741c9656277
      9c52192b
    • Nathan E. Egge's avatar
      Remove the EC_ADAPT experimental flags. · 6bdc40f1
      Nathan E. Egge authored
      Removing these flags make the EC_ADAPT experiment an integral part of
       the draft AV1 bitstream definition
      This commit has no effect on metrics.
      
      Change-Id: Ice78520935e8bfa9d25cf4b8384a1b872069d09c
      6bdc40f1
    • Thomas Davies's avatar
      Adapt motion mode syntax. · 04e5aa7f
      Thomas Davies authored
      Remove deprecated tree coding when EC_ADAPT is on.
      
      AWCY, objective-1-fast, High Latency:
      
      PSNR (Y, Cb, Cr) : -0.10%, -0.40%, -0.37%
      SSIM: -0.11%
      PSNR-HVS: -0.07%
      MS-SSIM: -0.06%
      
      Change-Id: Ic2d436e037312e1af238a8586983f1288a9a95a8
      04e5aa7f
  18. 10 Jul, 2017 2 commits
    • Thomas Davies's avatar
      NEW_MULTISYMBOL: adapt transform partition split. · 985bfc38
      Thomas Davies authored
      Change-Id: I9c8201c7053dba11e9ac0f02c1bffbb4a322e654
      985bfc38
    • Lester Lu's avatar
      Inter and intra LGTs · 708c1ec5
      Lester Lu authored
      Here we have an LGT to replace ADST for intra residual blocks, and
      another LGT to replace ADST for inter residual blocks. The changes
      are only applied to transform length 4 and 8, and only for the
      lowbitdepth path.
      
      lowres: -0.18%
      
      Change-Id: Iadc1e02b53e3756b44f74ca648cfa8b0e8ca7af4
      708c1ec5
  19. 07 Jul, 2017 4 commits
    • Nathan E. Egge's avatar
      Add VAR_TX_NO_TX_MODE experiment. · a33304f0
      Nathan E. Egge authored
      This experiment removes the tx_mode flag from the uncompressed frame
       header and instead always uses a constant value.
      
      objective-1-fast:
      
      master@2017-06-29T00:51:22.142Z -> no_tx_mode@2017-06-29T01:09:32.392Z
         PSNR | PSNR Cb | PSNR Cr | PSNR HVS |    SSIM | MS SSIM | CIEDE 2000
      -0.0103 |  0.0183 | -0.0076 |  -0.0103 | -0.0052 | -0.0208 |     0.0004
      
      Change-Id: I9d49c4d99ed102e52c86e339f20623063886f49d
      a33304f0
    • Thomas Davies's avatar
      NEW_MULTISYMBOL: adapt remaining INTERINTRA syntax elements. · cff9171e
      Thomas Davies authored
      AWCY, objective-1-fast, High Latency :
      -0.14% all metrics with NEW_MULTISYMBOL on (reference
          with NEW_MULTISYMBOL off).
      
      Change-Id: I7cb3d05977d5e424fd38a40ab558c87c5d811f14
      cff9171e
    • Thomas Davies's avatar
      INTERINTRA : adapt interintra_mode as cdf. · 299ff04f
      Thomas Davies authored
      Use CDFs to code intrainter_mode instead of deprecated
      tree coding.
      
      AWCY, objective-1-fast, High Latency :
      -0.02% all metrics, standard configuration
      
      Change-Id: I839eec7cae9783e28d2018511989b7b56dc948a5
      299ff04f
    • Thomas Davies's avatar
      Adapt the compound_type syntax element. · d8dac22f
      Thomas Davies authored
      This syntax element was encoded using legacy tree encoding, and is
      used in the compound_segment and wedge experiments.
      
      AWCY: -0.01% all metrics (objective-1-fast, High Latency)
      
      Change-Id: I3771ed27e13dd74841c615bec4c2918d39b76093
      d8dac22f
  20. 06 Jul, 2017 1 commit