1. 03 Aug, 2017 3 commits
    • hui su's avatar
      Calculate coeff token cost from CDF · c0cf71df
      hui su authored
      AWCY results:
      PSNR	PSNR HVS  SSIM	CIEDE 2000
      -0.09	-0.04	  -0.02	  -0.03
      
      On Google testsets:
      lowres  -0.18%
      midres  -0.20%
      
      Above results are obtained with
      --disable-ext-refs --disable-dual-filter --disable-loop-restoration
      --disable-global-motion --disable-warped-motion
      
      Change-Id: Iba58d5e5ec9a65d0afba29609aa2e379a80d7236
      c0cf71df
    • Yaowu Xu's avatar
      Prevent redundant down converting operation · 9b0f7038
      Yaowu Xu authored
      Adds a flag "buf_8bit_valid" to indicate if buf_8bit is synchronized
      with HBD buffer, the flag is then used to avoid possible redundant
      operation in down conversion the hbd buffer to buf_8bit.
      
      Also this commit also moves the operation to prepare source frame for
      coding outside of recode loop to avoid duplicate operations there.
      
      Change-Id: I67a1eb408b75bb734bd8a16fe6ffbd58c93a230f
      9b0f7038
    • Yaowu Xu's avatar
      fix documentation inacuracy · 7d30b4a6
      Yaowu Xu authored
      BUG=aomedia:573
      
      Change-Id: I3989375bf97e344b422953833e853e66dcb07b23
      7d30b4a6
  2. 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
  3. 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
  4. 31 Jul, 2017 13 commits
    • Zoe Liu's avatar
      Fix a build error when ext-tx is off · 4508d880
      Zoe Liu authored
      Change-Id: I1cf27c41749c8f66eaa0ec828a1fd5d8ef7dd94e
      4508d880
    • Zoe Liu's avatar
      Fix build warnings when global_motion is off · bc030eea
      Zoe Liu authored
      Change-Id: I69f042e6da5a4b5e4a18853c5f15532dfef0204a
      bc030eea
    • Angie Chiang's avatar
      Fix w/h of av1_make_masked_inter_predictor · 9ee82650
      Angie Chiang authored
      Change-Id: Idaeb180392d6e96fedbd39f2e1ee0e4b9dba887e
      9ee82650
    • Cheng Chen's avatar
      Refactor paralles_deblocking · 61a12ef2
      Cheng Chen authored
      1.Change mix case variable names to underscore cases following
        Google C++ coding style guide:
        https://google.github.io/styleguide/cppguide.html#Variable_Names
      
      2.Reduce number of parameters to pass. Derive these parameters
        when needed inside functions.
      
      Change-Id: I17ca8aed20be2f83f9e46275e6a1f01c8f0ec510
      61a12ef2
    • Yue Chen's avatar
      Move mode costs that can be updated inside a frame to MACROBLOCK · b23d00a0
      Yue Chen authored
      It is a refactoring patch, which aims to make the code ready for
      implementation of in-frame mode cost update in RDO.
      Also add mode cost update per sb row, but it won't affect coding
      results because cdf update in RDO is not there.
      Mode cost arrays are moved to MACROBLOCK because in multi-thread
      coding, threads share the same AV1_COMP.
      
      This patch does not have impact on coding results.
      
      Change-Id: I2e8f7d7d066b23ebfbfc998269023781f359a6ff
      b23d00a0
    • 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
    • Rupert Swarbrick's avatar
      Fix build warning when compiling with warped motion · 3ab24050
      Rupert Swarbrick authored
      Since patch 52c5173e, update_stats() calls set_ref_ptrs on its local
      xd variable, which updates xd->block_refs. This means xd should not be
      const.
      
      Change-Id: Ia7b8e062e81497653d77f539e4aa403870c4fbb0
      3ab24050
    • Peter de Rivaz's avatar
      Unified warp_affine and warp_affine_post_round · b6a31753
      Peter de Rivaz authored
      This patch removes the need for a separate warp_affine_post_round
      function by adding the functionality to the warp_affine function.
      
      The encoded output should remain unchanged, but the encoder/decoder
      should operate faster because the sse2 and ssse3 warp implementation
      can now be used when post_rounding is being used.
      
      Change-Id: Ide52cae55de59a9da9c27c5793e17390f6d2c03e
      b6a31753
    • Yaowu Xu's avatar
      Move buffer allocation to aom_scale · 43778572
      Yaowu Xu authored
      This commit moves the allocation of the 8bit frame buffer used in
      global motion estimation to where other frame buffers are allocated.
      
      Change-Id: Id3c0a0cb33dab7225629ce6f2d7904767f647d4c
      43778572
    • Angie Chiang's avatar
      Turn on convolve_round by default · 71ef7c27
      Angie Chiang authored
      The performance on default experiment is
      lowres: 0.812%
      
      midres/hdres and AWCY tests are still running
      
      Change-Id: Id2209c79df6517732dd06c2712a7bdefde118ead
      71ef7c27
    • Rupert Swarbrick's avatar
      Fix compiler warning in bitstream.c · 223f0489
      Rupert Swarbrick authored
      The write_motion_mode function only uses its "cm" parameter if it
      needs to write out global motion information or distinguish between
      motion_var and warped_motion. When these are disabled, you get a
      compiler warning which this patch silences.
      
      Change-Id: I64d06a150751cd72cf4b50799432f3161ee87938
      223f0489
    • Rupert Swarbrick's avatar
      Fix build of encodeframe.c without motion-var or warped-motion · bf828f93
      Rupert Swarbrick authored
      This patch surrounds two uses of motion_mode_cost and motion_mode_cdf
      with preprocessor #if lines.
      
      Both uses were added by commit bdc8dab2.
      
      Change-Id: I7e4a74e97b9179e42bae6ee17e9b2094acb992f2
      bf828f93
    • Rupert Swarbrick's avatar
      Fix unused parameter warning in decodemv.c · 766c9d59
      Rupert Swarbrick authored
      This warning only comes up if none of the experiments ext-intra,
      palette and filter-intra are enabled.
      
      Change-Id: Ic58863d8d845034aa52230bf52a3c5def8d3ac0f
      766c9d59