1. 11 Oct, 2017 2 commits
  2. 10 Oct, 2017 35 commits
    • Ryan's avatar
      soft enable new_multisymbol · f0e39196
      Ryan authored
      enable new_multisymbol by default since it has been enabled.
      Change-Id: I6df662c6ae949ac9f834f788ff93b12a1a1eff28
    • Zoe Liu's avatar
      Clean up the debug code for frame_sign_bias · d38575f4
      Zoe Liu authored
      Change-Id: Ia4b25afaed5dbd48c8e68fe42a479d7ddb645876
    • Cheng Chen's avatar
      Loop filtering after each superblock · 5ad5b289
      Cheng Chen authored
      The patch is to enable loop filtering for intra block copy.
      Apply loop filtering right after each superblock is encoded.
      Use a constant filter level for now. In future updates, the filter
      level should be optimized by LPF_SB and better guess value.
      Change-Id: I0a5797b5ba5384c00044a8ec4a495dc75aa0f3fe
    • Hui Su's avatar
      Add function to control palette usage · e87fb237
      Hui Su authored
      Add av1_allow_palette() to control whether palette mode should be enabled.
      Change-Id: Iee24636451be42eb36093dc3453bc39c7e686276
    • Jingning Han's avatar
      Format clean-up av1_rtcd_defs.pl · 3ba27237
      Jingning Han authored
      Change-Id: I7a94cdef41e5e451247de939313feb58cd991e7f
    • Jingning Han's avatar
      Make inter mode context depend on nearest neighbor · abf6f284
      Jingning Han authored
      Reduce the inter mode context model dependency to be within the
      nearest neighbor search.
      Change-Id: I0b9e7d360919a809b5400f233040bb474ab56768
    • Jingning Han's avatar
      Disable all_zero_flag in opt-ref-mv · 426caba9
      Jingning Han authored
      This breaks the inter mode context dependency on the full spatial
      neighbor search.
      Change-Id: Ic27fb63531ce2c949756ea10752a7a8e7b7b1046
    • Jingning Han's avatar
      Reduce newmv context model dependency size · 8a8c50af
      Jingning Han authored
      Make the newmv context model dependent only on the nearest spatial
      neighbors reference motion vectors count and the newmv coded block
      Change-Id: I8db9ca453c4fefddafba5f3476ee0d733f87dfc0
    • Yi Luo's avatar
      Highbd D45E intrapred SSE2/AVX2 speedup · 56ad3dd3
      Yi Luo authored
      Function  SSE2 vs C  AVX2 vs C
      4x4       ~4.5x
      4x8       ~4.5x
      8x4       ~11.7x
      8x8       ~12.7x
      8x16      ~14.0x
      16x8                 ~21.7x
      16x16                ~24.0x
      16x32                ~28.7x
      32x16                ~20.5x
      32x32                ~24.4x
      Change-Id: Iaca49727d8df17b7f793b774a8d51a401ef8a8d1
    • Rupert Swarbrick's avatar
      Fix call to av1_get_rest_ntiles in restoration.c · 88f2d444
      Rupert Swarbrick authored
      This was getting the wrong count of restoration tiles for chroma
      planes with subsampling and a smaller restoration tilesize.
      Change-Id: I5c9c17ed4ad91111bcc6fa6205a9550b53f84a64
    • Yaowu Xu's avatar
      Reduce default lag-in-frames · 2b4c1781
      Yaowu Xu authored
      This is to reduce encoder meomory footprint, tests show no performance
      difference between 17 and 25, as the largest alt-ref group currently
      is 16.
      Change-Id: Ia629c30f93c5db33a2d2fae4b757c8b0d589eb4a
    • Urvang Joshi's avatar
      horzonly-frame-superres: Apply to superres only. · 69fde2eb
      Urvang Joshi authored
      Plain resize is now unaffected by this flag. That is, plain resizing is
      performed for both width and height always.
      Change-Id: I652204d68ca5266f0a1a413927828038aa5dfdf6
    • Urvang Joshi's avatar
      Make horzonly-frame-superres a config flag. · 3d8bcb2a
      Urvang Joshi authored
      This allows it to be enabled/disabled during configure/cmake and also
      allows us to specify dependencies.
      If 0: superres scaling happens for both width and height.
      If 1: superres scaling happens ONLY for width.
      Change-Id: Id00c2a9c9886b638e06c6b92de453b85bee1d8fa
    • Tom Finegan's avatar
      Correct the aom{dec,enc} output paths in CMake. · 938172c2
      Tom Finegan authored
      They're expected in the root of the config dir and not
      in the examples sub dir.
      Change-Id: I26e28e5a341f5bf8db4554269db198501172345e
    • Lester Lu's avatar
      lgt-from-pred: transforms based on prediction · 432012f6
      Lester Lu authored
      In this experiment, sharp image discontinuity in the predicted
      block is detected. Based on this discontinuity, we choose
      particular LGTs as row and column transforms.
      Bitstream syntax, entropy coding, and RD search for LGT are added.
      One binary symbol is used to signal whether LGT is used. This
      experiment can work independently with the lgt experiment.
      lowres: -0.414% for key frames, -0.151% overall
      midres: -0.413% for key frames, -0.161% overall
      Change-Id: Iaa2f2c2839c34ca4134fa55e77870dc3f1fa879f
    • Angie Chiang's avatar
      Turn off limit_nb_scan_distance() temporarily · 63647c02
      Angie Chiang authored
      Change-Id: Idb1a4bf4dd655bde22862d76f6fa70457381a770
    • Angie Chiang's avatar
      Add REDUCE_CONTEXT_DEPENDENCY flag · 4408aad9
      Angie Chiang authored
      This is flag will allow us to calculate the context indexes of
      any two consecutive non-zero binaries in parallel
      Moreover, we can set MIN_SCAN_IDX_REDUCE_CONTEXT_DEPENDENCY to X,
      which let first X coefficients be immune from the context
      dependency reduction act
      Change-Id: I75b71452996161ba06ec449021c7dea8e3899800
    • Angie Chiang's avatar
      Pass scan_idx and scan into get_nz_map_ctx · f9711f88
      Angie Chiang authored
      This aims at facilitate the experiment about reduce context
      Change-Id: I3d026bda1118cf613001efa32deed62997d5e3bb
    • Angie Chiang's avatar
      Add frame-level flag to turn on/off adapt_scan · 6dbffbf1
      Angie Chiang authored
      Change-Id: I7a73dbe72b618e795191cc31bc32e31ad99d8587
    • Yushin Cho's avatar
      Use pixel domain skip error if possible in var-tx · 952eae29
      Yushin Cho authored
      When early skipped in var-tx, distortion is set the same as sse.
      If so, use pixel domain sse (i.e. skip error) since is more accureate
      than sse from transform domain.
      Change-Id: Id3cbc66ea6318108c031413646f3d06250e75e7e
    • Hui Su's avatar
      intrabc: fix mismatch · 2b2ad0fa
      Hui Su authored
      The "txb_split_count" counter should be properly updated.
      Change-Id: I3fb34a818c3f474085c4a2980a2d3b68bd33fb12
    • Angie Chiang's avatar
      Refine do_adapt_scan's logic · fe533ec6
      Angie Chiang authored
      Change-Id: I6d68f03e3f9b1e40b05503f6bb4055e2fd870893
    • Yue Chen's avatar
      Process OBMC pred in max unit of 64x64 · 7eb7679d
      Yue Chen authored
      Make the codec account for the 64x64 processing unit constraint
      when generating secondary predictions and applying overlapped
      This issue was addressed in commit 440d4254 and 501294ce, but
      afterwards some features are not fully retained in an obmc
      refactoring commit.
      Change-Id: I6f16e6fccb966d45034d5b55447c9d9cb70e02cb
    • Yi Luo's avatar
      Migrate some vp9 highbd intrapred x86 speedup to av1 · 71b6e043
      Yi Luo authored
      Function speedup on i7-6700:
      D117   sse2   ssse3
      4x4    ~1.8x
      8x8           ~3.4x
      16x16         ~5.5x
      32x32         ~2.9x
      D135   sse2   ssse3
      4x4    ~1.9
      8x8           ~3.3x
      16x16         ~5.3x
      32x32         ~3.6x
      D153   sse2   ssse3
      4x4    ~1.9x
      8x8           ~2.8x
      16x16         ~5.5x
      32x32         ~3.6x
      Change-Id: I43ab5fa8dcbcfa51acbde554abf3e5d7d336f391
    • Debargha Mukherjee's avatar
      Fix conflicts between ext-partition & other expts · e30159ce
      Debargha Mukherjee authored
      Most of the fixes are related to replacing BLOCK_64X64 with
      Fixes the AV1/AqSegmentTest.TestNoMisMatchExtDeltaQ/* tests that
      were breaking before with ex-partition.
      Change-Id: I19d6045b422a93891b8cf4f8a929def97a595058
    • Rupert Swarbrick's avatar
      Avoid Visual Studio compile error in loopfilter · a1befa51
      Rupert Swarbrick authored
      If you have a structure, foo_t, with an alignment request then Visual
      Studio won't allow you to declare a function
        void use_foo(foo_t x);
      The reasoning is that x might be passed on the stack, and their ABI
      doesn't allow them to guarantee that x is aligned appropriately. More
      strangely, this isn't allowed either:
       void use_some_foos(foo_t x[10]);
      This is functionally equivalent to:
       void use_windows_foos(foo_t *x);
      (except that you can't tell how long the array should be from the
      function signature).
      Since Visual Studio is supposed to allow the latter form, use that
      Change-Id: Icd449fc1058606fa7e48a6f791091bbb42a73b2c
    • Rupert Swarbrick's avatar
      Tiny cleanup in cdef_test.cc · e5442928
      Rupert Swarbrick authored
      This was triggered by a visual studio compile warning:
        warning C4804: '>>': unsafe use of type 'bool' in operation
      However the code is rather hard to parse for humans too: when I first
      looked, I thought this was something to do with C++ templating...
      The new version is equivalent but defines max_pos in an outer
      loop (and a smaller indent).
      Change-Id: I0c5cabeee44d0839a7956a4ab1cf4ec5abfcc9ee
    • Yushin Cho's avatar
      Fix that sse is added twice during early skip in var-tx · 16efec40
      Yushin Cho authored
      The rd_stats->sse is already updated by
      "rd_stats->sse += tmp << 4;",
      which is measured by pixel_diff_dist(), i.e. in pixel domain and
      w/o quantization().
      Change-Id: I4dc20a7e80af9dd846aa5de4298cb56e7f0d8f7e
    • Debargha Mukherjee's avatar
      Turn on 32x64 and 64x32 transforms for real · cce6692a
      Debargha Mukherjee authored
      Change-Id: Ie4382b8a1c0f87ce50e9afefd1cef8ca55435c61
    • Hui Su's avatar
      Remove unused parameter in intra mode reader · aa2965e6
      Hui Su authored
      Change-Id: Ibea4c2c732b16851ad16b475ea40f021d5b5d5b3
    • Sarah Parker's avatar
      Compute global refmv candidate at center of current block · 0a5cc5fd
      Sarah Parker authored
      When a neighboring block uses global motion, use the mv
      computed at the center of the current block as the candidate vector
      rather than the mv computed at the center of the neighboring block.
      0.15% improvement on cam_lowres
      Change-Id: I79eff8bf27a7aa84ae4a6d56e4a10c41a4438fb9
    • Yaowu Xu's avatar
      Revert "soft enable CDEF-singlepass" · 1542157b
      Yaowu Xu authored
      Temporarily reverting this to allow investigation of a couple of BUGS
      BUG=aomedia:887 (merged into #881)
      This reverts commit b1d3eda9.
      Change-Id: I2605deb7b8fefa4236d78c8695025dc42316edd2
    • Rupert Swarbrick's avatar
      Don't trash memory in select_tx_type_yrd · de2ea94e
      Rupert Swarbrick authored
      This patch fixes a bug in select_tx_type_yrd. The function works by
      looping over possible transform types to find the best option (calling
      select_tx_size_fix_type for each). Whenever there's a new best
      candidate, the code copies information about the transform from the
      mbmi structure into stack-allocated "best candidate" structures. At
      the end, it copies the "best candidate" data back to mbmi.
      Before the patch, if ref_best_rd was small, each call to
      select_tx_size_fix_type might return INT64_MAX (because they don't
      find anything better than ref_best_rd) and so we'd never actually copy
      anything to the "best candidate" structures. Then, at the end of the
      function, we'd merrily overwrite mbmi with whatever happened to be on
      the stack, causing general mayhem when something tried to read the
      data from mbmi later.
      This patch exits early if no candidates were found. It also adds an
      assertion saying that if no candidates were found, ref_best_rd must
      have been less than INT64_MAX. This should hopefully catch any bugs
      where the continue keywords in the loop stop us ever actually calling
      Change-Id: I54b998148281dd80f98d1570f736964593dc753f
    • Rupert Swarbrick's avatar
      Add an SSE4.1 implementation of av1_highbd_convolve_2d_scale · 724d31eb
      Rupert Swarbrick authored
      For large blocks this is about 8x the speed of the C version. The code
      needs SSE 4.1 for the PMULLD instruction that we use to do SIMD 32-bit
      The patch uses av1_convolve_scale_test (written already to test the
      low bit depth path) to make sure the optimised code matches the C
      Change-Id: I9304d6bb3d2cb31390de93ed08ff1a852e3ace86
    • Rupert Swarbrick's avatar
      Add an SSE4.1 implementation of av1_convolve_2d_scale · 98dc22b8
      Rupert Swarbrick authored
      For large blocks this is almost 8x the speed of the C version. The
      code needs SSE 4.1 for the PMULLD instruction that we use to do SIMD
      32-bit multiplies.
      This patch also makes av1_convolve_scale_test actually test something,
      making sure the optimised code matches the C version. The slightly
      excessive generality in the test (all the templating) is because of a
      following patch, which is for the high bit depth path and can then use
      most of the same test code.
      Change-Id: I6732bc6b2378ffaadae5aa6441100cf660f7ee11
  3. 09 Oct, 2017 3 commits
    • Angie Chiang's avatar
      Avoid updating non-used transform · ca8016ef
      Angie Chiang authored
      Since 32x32 transform use DCT only, we can avoid update other
      types of transform
      Change-Id: I51dd8ec71975187d249d7e25130e994a48cac5c1
    • Sarah Parker's avatar
      Change rectangular vartx recursion depth to 2 · d25ef8c6
      Sarah Parker authored
      0.15% improvement on lowres set
      Change-Id: If16a8e07797c64508f9e2d9b26ae874ac53c57a4
    • Rupert Swarbrick's avatar
      Catch invalid block sizes in bitstream · 415c8f1f
      Rupert Swarbrick authored
      There's a bitstream conformance requirement that says that any block
      must subsample to a valid block size with the current subsampling
      mode. For example, this means that BLOCK_4X8 is illegal if there is
      subsampling in only the horizontal direction (since there is no
      This patch checks the bitstream is conformant as it reads partition
      information in decodeframe.c
      Change-Id: I18139aa76d6f965282402edbb0b68959478a46c3