1. 19 Oct, 2016 14 commits
    • Jingning Han's avatar
      Fix decodeframe.c format · 8f6eb189
      Jingning Han authored
      Change-Id: I2228a3d1778917ac760582fbec3c868be5d9ba1c
      8f6eb189
    • 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
    • Yaowu Xu's avatar
      Reorder includes · caf2023a
      Yaowu Xu authored
      Change-Id: I97487bf353471bf9d245cd620780adfb1d3fc2b1
      caf2023a
    • Michael Bebenita's avatar
      Bit accounting. · 6048d052
      Michael Bebenita authored
      This patch adds bit account infrastructure to the bit reader API.
      When configured with --enable-accounting, every bit reader API
      function records the number of bits necessary to decoding a symbol.
      Accounting symbol entries are collected in global accounting data
      structure, that can be used to understand exactly where bits are
      spent (http://aomanalyzer.org). The data structure is cleared and
      reused each frame to reduce memory usage. When configured without
      --enable-accounting, bit accounting does not incur any runtime
      overhead.
      
      All aom_read_xxx functions now have an additional string parameter
      that specifies the symbol name. By default, the ACCT_STR macro is
      used (which expands to __func__). For more precise accounting,
      these should be replaced with more descriptive names.
      
      Change-Id: Ia2e1343cb842c9391b12b77272587dfbe307a56d
      6048d052
    • Jingning Han's avatar
      Fix format in set_offsets() · 97d85483
      Jingning Han authored
      Change-Id: I371297e6ee000e6dc01ba1544763cbed429b0e5a
      97d85483
    • Brennan Shacklett's avatar
      Temporary fix for 4X8 block intra prediction. · 7523a7ec
      Brennan Shacklett authored
      Currently the RD loop traverses 4X8 blocks in inverted N order while
      the bitstream stores blocks smaller than 8x8 in Z order. This causes a
      discrepancy where the RD loop reads uninitialized data while
      performing intra prediction.  As a temporary fix simply disable the
      use of the extended right edge for 4X8 blocks, until the bitstream can
      be changed to match the logical structure of the blocks.
      
      Change-Id: I44a9e4fc1a15cd551a7b38c3c1227bc5dac77e9a
      7523a7ec
    • 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 16 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
    • Angie Chiang's avatar
      Add av1_fdct64_new and av1_idct64_new · 792519bd
      Angie Chiang authored
      Change-Id: If497816d7f6ee094d40872a2f988c91e90b78d7b
      792519bd
    • 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
    • Michael Bebenita's avatar
      Port aom_reader_tell() support · 868fc0b0
      Michael Bebenita authored
      This commit ports the following from aom/master:
      4c462788 Add aom_reader_tell() support.
      b9c99350 Remove an erroneous declaration.
      56c9c3bf Fix ANS build.
      
      Change-Id: I59bd910f58c218c649a1de2a7b5fae0397e13cb1
      868fc0b0
    • 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
    • Nathan E. Egge's avatar
      Create aom_cdf_prob type for 16-bit probabilities. · 9ac1f7d7
      Nathan E. Egge authored
      Change-Id: I33899eca44300037816c9f20c965aa8311a1ef52
      9ac1f7d7
  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 3 commits
    • Nathan E. Egge's avatar
      Move av1_indices_from_tree() to common code space. · 8abf8673
      Nathan E. Egge authored
      Move the av1_indices_from_tree() function from av1/encoder/treewriter.c
       to aom_dsp/prob.c so that it can be used by both the encoder and
       the decoder.
      
      Change-Id: Ie43c599f425c3503b1ff93f0c77b5033a05b1bb4
      8abf8673
    • Nathan E. Egge's avatar
      Add code to compute in-order mappings for tokens. · cfb02ddc
      Nathan E. Egge authored
      Add av1_indices_from_tree() function that computes a forward and inverse
       mapping of the tree leaf-node symbols to their in-order traversal.
      This is necessary because many of the aom_tree binary trees have their
       leaf nodes out of order (e.g., an in-order traversal of a tree with n
       nodes does not start at symbol 0 and go to symbol n - 1), but the CDFs
       created by tree_to_cdf() are indexed in-order.
      
      Change-Id: Icd0dbed4c171a67c9e84a634106c4fdb5b1b3488
      cfb02ddc
    • Nathan E. Egge's avatar
      Use Daala entropy coder to code bits. · 8043cc40
      Nathan E. Egge authored
      When building with --enable-daala_ec, calls to aom_write() and aom_read()
       use the daala entropy coder to write and read bits.
      When the probability is exactly 0.5 (128), then raw bits are used.
      
      ntt-short-1:
      
                MEDIUM (%) HIGH (%)
          PSNR -0.027556  -0.020114
       PSNRHVS -0.027401  -0.020169
          SSIM -0.027587  -0.020151
      FASTSSIM -0.027592  -0.020102
      
      subset1:
      
               RATE (%)  DSNR (dB)
          PSNR 0.03296  -0.00210
       PSNRHVS 0.03537  -0.00281
          SSIM 0.03299  -0.00161
      FASTSSIM 0.03458  -0.00111
      
      Change-Id: I48ad8eb40fc895d62d6e241ea8abc02820d573f7
      8043cc40