1. 19 Oct, 2016 9 commits
    • Arild Fuldseth's avatar
      Always send frame size explicitly · 842e9b03
      Arild Fuldseth authored
      This commit changes to send frame size explicitly when
      error_resilient_mode=1. Purpose is to allow parsing of bitstream
      after a packet loss.
      
      Change-Id: I7d1c010a465aa18914762cc1a3e61db377304c08
      842e9b03
    • Yaowu Xu's avatar
      Fix build issues when --enable-aom-qm · 0dd04637
      Yaowu Xu authored
      Change-Id: I1a462675c06c4b2a5f8b4b347f23fec67feccdd0
      0dd04637
    • Urvang Joshi's avatar
      Fix warnings reported by -Wshadow: Part4: main directory · 4145bf05
      Urvang Joshi authored
      Now that all warnings are taken care of, add warning flag -Wshadow to
      configure.
      
      Note: Enabling this flag for C++ generates some useless warnings about
      some function parameters shadowing class member function names. So, only
      enabling this warning for C code.
      
      Cherry-picked from aomedia/master: b96cbc44
      
      Change-Id: I3922dea2e6976b16519c4aa4d1bd395c198134f1
      4145bf05
    • Peter de Rivaz's avatar
      Fix for var_tx context update · 74d0ad84
      Peter de Rivaz authored
      The tx_partition_set_contexts function changes tx_size even
      for blocks coded with a rectangular transform.
      This causes an internal rd inconsistency when using all of
      CONFIG_VAR_TX, CONFIG_RECT_TX, CONFIG_EXT_TX.
      
      Change-Id: Ia45d4a8893b0961534219bb96d9652719038c7a1
      74d0ad84
    • Urvang Joshi's avatar
      Fix warnings reported by -Wshadow: Part2b: more from av1 directory · 368fbc95
      Urvang Joshi authored
      From code only part of nextgenv2 (and not aomedia)
      
      Change-Id: I21f7478a59d525dff23747efe5238ded16b743d2
      368fbc95
    • Urvang Joshi's avatar
      Fix warnings reported by -Wshadow: Part2: av1 directory · 454280da
      Urvang Joshi authored
      While we are at it:
      - Rename some variables to more meaningful names
      - Reuse some common consts from a header instead of redefining them.
      
      Cherry-picked from aomedia/master: 863b0499
      
      Change-Id: Ida5de713156dc0126a27f90fdd36d29a398a3c88
      454280da
    • Urvang Joshi's avatar
      Fix warnings reported by -Wshadow: Part1b: scan_order struct and variable · 03f6fdcf
      Urvang Joshi authored
      - Change struct name to all caps SCAN_ORDER to be locally consistent.
      - Rename struct pointers to 'scan_order' instead of hard to read short
        names 'so' and 'sc'.
      
      Cherry-picked from aomedia/master: 30abc082
      
      Change-Id: Ib9f0eefe28fa97d23d642b77d7dc8e5f8613177d
      03f6fdcf
    • Urvang Joshi's avatar
      Move STAT_TYPE enum to source file. · b5ed3500
      Urvang Joshi authored
      In the header, all we need is number of stat types, not the names for actual
      types.
      
      Removing it avoids names like 'Y', 'U', 'V' and 'ALL' being visible
      in all files that include the encoder.h header.
      
      Change-Id: I874a73a3cfe6bcb29aedea102077a52addc49af6
      b5ed3500
    • Urvang Joshi's avatar
      Code cleanup: mainly rd_pick_partition and methods called from there. · 52648448
      Urvang Joshi authored
      - Const correctness
      - Refactoring
      - Make variables local when possible etc
      - Remove -Wcast-qual to allow explicitly casting away const.
      
      Cherry-picked from aomedia/master: c27fcccc
      And then a number of more const correctness changes to make sure other
      experiments build OK.
      
      Change-Id: I77c18d99d21218fbdc9b186d7ed3792dc401a0a0
      52648448
  2. 18 Oct, 2016 13 commits
    • Nathan E. Egge's avatar
      Update segment tree_cdf per frame. · f627e58e
      Nathan E. Egge authored
      Move computing the segmentation_probs.tree_cdf table per symbol to
       computing it only when the probabilities are updated.
      
      Change-Id: I3826418094bbaca4ded87de5ff04d4b27c85e35a
      f627e58e
    • Sarah Parker's avatar
      Add clamping to parameter search · 081783dc
      Sarah Parker authored
      This fixes mismatches due to overflowing low precision parameters.
      
      Change-Id: If34e39ca7ab0adc9688d46b0e8ed62cbb6fdaff0
      081783dc
    • Sarah Parker's avatar
      Adjust gm costing so GLOBAL_ZERO is treated as regular zeromv · ae51dd82
      Sarah Parker authored
      Change-Id: I1b41146ae844c985566f5f9fdaeb5d4a4a5927b6
      ae51dd82
    • Sarah Parker's avatar
      Fix ransac random generator seeding · efa65822
      Sarah Parker authored
      Ransac's get_rand_indices originally used rand_r seeded with the
      same value every time, producing the same random sequence at every
      iteration. This causes the global motion parameters to be slightly
      less accurate because ransac cannot improve the model fit after
      the first attempt.
      
      Change-Id: Idca2f88468ea21d19ba41ab66e5a2744ee33aade
      efa65822
    • Guillaume Martres's avatar
      Remove rd_variance_adjustment · 470efbcf
      Guillaume Martres authored
      This function is called after `super_block_yrd` and assumes that the dst
      buffer is correct but that is no longer always the case after
      daf841b4 since we don't call
      `txfm_rd_in_plane` after the RDO loop in `choose_tx_size_from_rd`.
      We could fix this by always saving and restoring the dst buffer but
      removing `rd_variance_adjustment` is a better solution:
      - Getting the dst buffer always right is tricky as demonstrated by the
        fact that it is wrong now, even if we fix it now we could break it later
        and not notice
      - Perceptual weighting is a good idea but `rd_variance_adjustment` is the
        wrong approach as it weights both the rate and the distortion:
        to get meaningful units you should only weight the distortion,
        weighting rate means that we pretend some bits cost less than other
        bits, this is not the case. The distortion weighting approach is
        implemented by Daala in `od_compute_dist` and we plan to experiment
        with this in AV1 too.
      - Removing `rd_variance_adjustment` improves coding efficiency on all
        metrics, here are the results for objective-1-fast using the Low
        Latency settings:
      
            PSNR Y:     -0.14%
           PSNRHVS:     -0.17%
              SSIM:     -0.12%
            MSSSIM:     -0.12%
         CIEDE2000:     -0.07%
      
      Change-Id: I74b26b568ee65f56521646b8f30dd53bcd29fce3
      470efbcf
    • Yushin Cho's avatar
      Remove unused PICK_MODE_CONTEXT::is_coded. · 40f1d487
      Yushin Cho authored
      Change-Id: Ibc73b4066dcdee45d32355144124762d26a16a28
      40f1d487
    • Urvang Joshi's avatar
      Remove unused array 'last_frame_seg_map_copy'. · 8a02d76a
      Urvang Joshi authored
      This array was allocated and used to save and restore segmentation map,
      however the original segmentation map was never modified between the
      calls to save and restore.
      
      Change-Id: Iaf0fbfed733c097e84cf44d2aa6b8f35d2fb456b
      8a02d76a
    • Yushin Cho's avatar
      Remove macroblock::skip_optimize. · e2b403b9
      Yushin Cho authored
      This is not used since the commint 00cd5de5,
      "Remove skip_recode speed feature".
      
      Change-Id: Ic03da6c0095f6285a3889d5d22e8aaa2e6cbfd79
      e2b403b9
    • Hui Su's avatar
      Skip 4x4 transform if maximum possible transform is 32x32 · eafb2e62
      Hui Su authored
      On average no compression performance changes. Encoding speed is
      increased by 10~20% on some test clips in the derf set.
      
      Change-Id: I9856caaa260303f6f6259686671bed7d51012277
      eafb2e62
    • Jingning Han's avatar
      Take out some early termination speed features · 3f16725f
      Jingning Han authored
      Drop some speed features used in speed 2 and above, during the
      algorithm development process. This helps simplify the codebase.
      
      Change-Id: I3b2f5560d90b00d2d8fd57c2cb36f6ddd3f228e4
      3f16725f
    • Yaowu Xu's avatar
      Move a statement to match order in aom/master · ee775b13
      Yaowu Xu authored
      Change-Id: Ic11eae36c9c62a20699197847aa3ef9562d4ad7e
      ee775b13
    • Peter de Rivaz's avatar
      Fix for var_tx entropy context with rect_tx · 46fcb05f
      Peter de Rivaz authored
      This computation should match the code in encode_block
      to increase the accuracy of the rd optimization.
      
      Change-Id: Ibc9d9ab6d88d0c0f3af62e9cc233216aba48a57e
      46fcb05f
    • Peter de Rivaz's avatar
      Correction to costing rect_tx · b85a5a7e
      Peter de Rivaz authored
      When built with var_tx and ext_tx, select_tx_size_fix_type is used
      to compute the cost for using a particular tx_type.
      The code indexes the array inter_tx_type_costs at the wrong location
      resulting in a zero cost for signalling tx_type for rect_tx blocks.
      
      Change-Id: Iba38be3a0d822109f778f0600b242dfb40359766
      b85a5a7e
  3. 17 Oct, 2016 7 commits
    • Yue Chen's avatar
      Refactor motion estimation in MOTION_VAR experiment · e9638ccf
      Yue Chen authored
      To get ready for pulling AV1 to nextgenv2. Refactoring is done to
      make the code structures similar, especially for the motion search
      part.
      
      Change-Id: I5d7636394408d97de55394d668540f5627827983
      e9638ccf
    • Nathan E. Egge's avatar
      Rename aom_write_tree_cdf() to aom_write_symbol(). · 56eeaa5d
      Nathan E. Egge authored
      Change-Id: I7c088c55f1c461063976d5bd84ff2026c4f3bc69
      56eeaa5d
    • Yushin Cho's avatar
      Bug fix in super_block_uvrd(). · 09de28b4
      Yushin Cho authored
      In super_block_uvrd(),if is_cost_valid == 0, all return parameters,
      i.e. rate, distortion, skippable, and sse, are reset.
      So, should not call txfm_rd_in_plane() if is_cost_valid == 0.
      Also, the bug causes av1_xform_quant() to see invalid diff signal
      since av1_subtract_plane() is not called in super_block_uvrd().
      
      Change-Id: Iaa06061e2e9aa8876b4611a54f4ae6b8d499332b
      09de28b4
    • Nathan E. Egge's avatar
      Update partition_cdf per frame. · fba2be69
      Nathan E. Egge authored
      Move computing the partition_cdf tables per symbol to
       computing them only when the probabilities are updated.
      
      Change-Id: I442f9230ba00be7f5d0558d7c38d7324ad009ee8
      fba2be69
    • Nathan E. Egge's avatar
      Update inter_ext_tx_cdf per frame. · 93878c42
      Nathan E. Egge authored
      Move computing the inter_ext_tx_cdf tables per symbol to
       computing them only when the probabilities are updated.
      
      Change-Id: I5e1e62f8eae8f6b2edbbd378beeb786649502c10
      93878c42
    • Nathan E. Egge's avatar
      Update intra_ext_tx_cdf per frame. · 7c5b4c16
      Nathan E. Egge authored
      Move computing the intra_ext_tx_cdf tables per symbol to
       computing them only when the probabilities are updated.
      
      Change-Id: I26d5e419e103093e98a7d896c196176305b50fc9
      7c5b4c16
    • Nathan E. Egge's avatar
      Update switchable_interp_cdf once per frame. · 4947c296
      Nathan E. Egge authored
      Move from computing the switchable_interp_cdf per symbol to
       computing once per frame when the probabilities are adapted.
      
      Change-Id: I6571126239f0327e22bb09ee8bad94114291683e
      4947c296
  4. 14 Oct, 2016 8 commits
  5. 13 Oct, 2016 3 commits
    • Steinar Midtskogen's avatar
      Move CLPF block signals from frame to SB level. · 97535038
      Steinar Midtskogen authored
      These signals were in the uncompressed frame header (as a temporary
      hack), which caused two problems:
      
      * We don't want that header to be duplicated in the slice header
      * It was necessary to signal the number of bits to transmit up front
      
      However, the filter size can be 128x128 which is greater than the SB
      size, and a decoder wouldn't be able to know whether to read a bit or
      not until the final SB of that 128x128 block has been decoded
      (depending on whether the 128x128 is all skip or not).  Therefore the
      signalling was changed for 128x128 blocks so that every top left SB of
      a 128x128 filter block contains a signal regardless of whether the
      block is all skip or not.  Also, all the MB's of 128x128 block are
      filtered even if they are skip MB's.  This gives the signal a purpose
      even when the 128x128 block is all skip, and it also gives a slight
      coding gain as it leaves a way to filter skip blocks, which was
      previously forbidden.
      
      Low latency:
      PSNR YCbCr:     -0.19%     -0.14%     -0.06%
         PSNRHVS:     -0.15%
            SSIM:     -0.13%
          MSSSIM:     -0.15%
       CIEDE2000:     -0.19%
      
      High latency:
      PSNR YCbCr:     -0.03%     -0.01%     -0.09%
         PSNRHVS:      0.04%
            SSIM:      0.00%
          MSSSIM:      0.02%
       CIEDE2000:     -0.02%
      
      Change-Id: I69ba7144d07d388b4f0968f6a53558f480979171
      97535038
    • Yue Chen's avatar
      Renamings for OBMC experiment · cb60b185
      Yue Chen authored
      To get ready for pulling AV1 to nextgenv2
      Replace the experimental flag by MOTION_VAR. Rename major variables.
      
      Change-Id: If6cf4f37b9319c46d8f90df551cc7295d66ca205
      cb60b185
    • Jean-Marc Valin's avatar
      Fix deringing level choice for 10-bit and 12-bit · 209f830d
      Jean-Marc Valin authored
      Making sure we never exceed a base level of 63
      
      Change-Id: I821254b8d970446bd40fdd6e4d7073c69760a86d
      209f830d