1. 04 Aug, 2017 1 commit
    • Yushin Cho's avatar
      New experiment, CDEF-DIST · c49177e4
      Yushin Cho authored
      Distortion metric that is currently used for CDEF is also used for
      distortion of luma channel during RDO-based mode decision.
      
      This experiment works on the top of 'dist-8x8' experiment.
      
      The BD-Rate change by this experiment for three frames of
      objective-1-fast in AWCY is:
      
        PSNR | PSNR Cb | PSNR Cr | PSNR HVS |    SSIM | MS SSIM | CIEDE 2000
      1.1589 | -2.0036 | -1.9620 |  -0.0076 | -1.4145 | -1.4561 |    -0.6410
      
      Change-Id: I1142fe2f186f4ed86e4d33468e00b84e30b20233
      c49177e4
  2. 03 Aug, 2017 10 commits
  3. 02 Aug, 2017 12 commits
    • Angie Chiang's avatar
      Add txmg experiment · ad653a39
      Angie Chiang authored
      This experiment aims at merging lbd/hbd txfms
      
      So far this exp uses hbd transform on lbd path.
      The performances I observed are
      lowres -0.089%
      midres  0.065%
      (negative means performance drop)
      
      Started from here, two main things are needed to be done.
      1) Fix overflow due to quantizer noise
      2) Generate a 16-bit version from the hbd txfm
      
      Change-Id: I35bb1fc0cbb78decad2570ff5826ed665f739752
      ad653a39
    • David Barker's avatar
      Fix inconsistency in compound-segment masks · fc256542
      David Barker authored
      The value of 'mask_base' passed to diffwtd_mask is currently
      38 for the lowbd path and 42 for the highbd path. Going off of
      the mode name (DIFFWTD_38), presumably these are both supposed
      to be 38, so change the highbd path accordingly.
      
      Change-Id: I5fb0099c4b8b3ca3c4f211562401b12012f5c002
      fc256542
    • Urvang Joshi's avatar
      FRAME_SUPERRES bugfix · 0b90540e
      Urvang Joshi authored
      encode_width was used where encode_height should have been used.
      
      Change-Id: I722c8e80f95366e9d07aacddc729fe30d3f5af48
      0b90540e
    • Tom Finegan's avatar
      Remove dead experiment flag: onthefly_bitpacking · 3bc237eb
      Tom Finegan authored
      CONFIG_ONTHEFLY_BITPACKING no longer guards any code. Remove
      the flag from the configure and CMake builds.
      
      Change-Id: Id5605155bdedbf540fe5b9cea3899e8de5ee1062
      3bc237eb
    • Tom Finegan's avatar
      Organize aom_config_defaults.cmake and update docstrings. · 745e5d02
      Tom Finegan authored
      Change-Id: Ibf73c7fa69adfe83f6d57546b7a8f9da67638048
      745e5d02
    • Yi Luo's avatar
      Setup frame/tile boundary when frame/tile geometry changes · 10e23004
      Yi Luo authored
      Change-Id: I44bc9d8887526a5ee92bf79730fa3ce6c73b160b
      10e23004
    • Angie Chiang's avatar
      Integrate convolve_round with chroma_sub8x8 · b9a822b4
      Angie Chiang authored
      Change-Id: I9a1b5b6016cd1afbc52cdac4469acb79c412e475
      b9a822b4
    • Zoe Liu's avatar
      Enable flex-refs by default when altref2 is on · 438b3ae7
      Zoe Liu authored
      Compared against baseline with default enabled tools (except for
      ext-tx and global-motion for speed concern):
      
                       altref2 -> altref2 + flex-refs
      lowres: avg_psnr -0.395% -> -0.460%
      midres: avg_psnr -0.418% -> -0.478%
      
      In particular, flex-refs improves the coding performance for the
      following 3 clips while no impact on all other clips:
      
      bowing_cif.y4m:    avg_psnr  0.023% -> -1.022%
      pamphlet_cif.y4m:  avg_psnr  0.454% -> -1.111%
      snow_mnt_480p.y4m: avg_psnr -0.162% -> -1.948%
      
      Change-Id: I612c1ae5feb1f07d8bd5aaf67e21a076445e10b9
      438b3ae7
    • Todd Nguyen's avatar
      Add gaussian model to bgsprite. · 7b581827
      Todd Nguyen authored
      Changes:
      - Add two new functions build_gaussian and build_mask to bgsprite.
      (Unused for now).
      
      Change-Id: I298be87d9d6833c39e944e447ad8fa121d7d83de
      7b581827
    • Todd Nguyen's avatar
      Refactor bgsprite. · 1fd99c2f
      Todd Nguyen authored
      Changes:
      - Refactored alignment and blending out of stitch_image function
      - Variable name changes in stitch_image to increase readability
      - Changes to temporal_filter (under CONFIG_BGSPRITE flag) in preparation
      for blending of bgsprite and temporal filtered arf.
      
      Change-Id: I3c4e76f26d6586684079ae7e666881b6ce14b2db
      1fd99c2f
    • Wei-Ting Lin's avatar
      Fill ncobmc mode and motion mode costs using cdf · 060f7f2c
      Wei-Ting Lin authored
      Also remove cost update in encodeframe.c as the cost
      is now updated through the function av1_fill_mode_rates
      in rd.c
      
      Change-Id: Ib670fd078320c706747429bb86e0265bc08356fd
      060f7f2c
    • Angie Chiang's avatar
      Use 10 bits to represent adapt_scan probabilities · a506eb61
      Angie Chiang authored
      The performance drop slightly by using 10 bit probabilities.
      lowres: -0.048%
      midres: 0.007
      hdres: -0.06
      
      Change-Id: I5ba7b5607802d084a599b779e5745f88b31e2cbe
      a506eb61
  4. 01 Aug, 2017 12 commits
    • Alex Converse's avatar
      googletest: suppress unsigned overflow in the LCG · 2aeff089
      Alex Converse authored
      Local application of:
      https://github.com/google/googletest/pull/1066
      
      Suppress unsigned overflow instrumentation in the LCG
      
      The rest of the (covered) codebase is already integer overflow clean.
      
      TESTED=gtest_shuffle_test goes from fail to pass with -fsanitize=integer
      
      Change-Id: I8a6db02a7c274160adb08b7dfd528b87b5b53050
      2aeff089
    • Tom Finegan's avatar
      Handle debug, msvc, and static config flags properly. · cd0b4935
      Tom Finegan authored
      - Turn CONFIG_DEBUG on for debug CMAKE_BUILD_TYPEs.
      - Turn CONFIG_MSVS on for MSVC builds.
      - Turn CONFIG_STATIC off for shared lib builds.
      
      Change-Id: If3537a9263ef85aa6bf76f00e8e008e5c93c9a33
      cd0b4935
    • Tom Finegan's avatar
      Sync CMake build with the configure build. · 4f948b31
      Tom Finegan authored
      Added: CONFIG_UV_LVL
      
      Change-Id: I1273ec5fa39cdfb9ac0e3caeb573ffe965ab76dd
      4f948b31
    • Urvang Joshi's avatar
      Rewrite some asserts to avoid visual studio errors. · d2269d8a
      Urvang Joshi authored
      Visual studio generates errors for a closing bracket on a line by
      itself.
      
      BUG=aomedia:671
      
      Change-Id: I69b0c06a4bf115d62b3625102dcd415708a2aafd
      d2269d8a
    • 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
    • Zoe Liu's avatar
      Add encoder support to ALTREF2 · e9b15e2b
      Zoe Liu authored
      This CL adds the use of ALTREF2_FRAME to both single / comp reference
      prediction at the encoder side. In particular, the encoder keeps the
      distant altref as ALTREF, and uses the internal extra altrefs to
      refresh ALTREF2.
      
      Compared with the baseline (ext_tx and global_motion disabled simply
      for speed concern):
      (a) lowres: avg_psnr -0.395% ovr_psnr -0.393% ssim -0.329%
      (b) midres: avg_psnr -0.419% ovr_psnr -0.431% ssim -0.444%
      (c) AWCY High Latency:
         PSNR | PSNR Cb | PSNR Cr | PSNR HVS |    SSIM | MS SSIM | CIEDE 2000
      -0.6661 | -0.5988 | -0.6669 |  -0.6993 | -0.6988 | -0.7303 | -0.6051
      (d) AWCY Low Latency:
        PSNR | PSNR Cb | PSNR Cr | PSNR HVS |   SSIM | MS SSIM | CIEDE 2000
      0.0720 | -0.0505 |  0.1501 |   0.0670 | 0.0842 |  0.0517 |     0.0158
      
      TODO list:
      (1) To have altref2 incorporated with ext-comp-refs;
      (2) To have altref2 fully work with new-multisymbol;
      (3) To re-collect the initial default probs/cdfs;
      (4) To tune the encoder gf group structure design for altref2.
      
      Change-Id: I6ad63fd65afa903d3bba20acdb68e3b67acf7fdf
      e9b15e2b
    • 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
      Make inspector work with superres · 2a52f291
      Rupert Swarbrick authored
      With superres enabled, mi_rows/mi_cols might not be constant across
      frames (the scaling factor might change). This patch fills in Nathan
      Egge's todo comment to do something useful if the current
      mi_rows/mi_cols size isn't what the calling code expected.
      
      Change-Id: I7edf8c6efc25ff182fc5b6a7eff7d56e2d9e86dc
      2a52f291
    • 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
    • Sarah Parker's avatar
      Fix mistake in cdf table for mrc_tx · 964cabf5
      Sarah Parker authored
      One set of values was not monotonic and was causing a mismatch.
      
      Change-Id: Ib599bd1bdee8a85d171b71d02b70549d9916f2b5
      964cabf5
    • Yaowu Xu's avatar
      correct an assertion · c5767327
      Yaowu Xu authored
      Change-Id: I876d55790c34904a23f103ada2a99b4956cabdb4
      c5767327
  5. 31 Jul, 2017 5 commits